Bug 792188: Import SIPCC into media/webrtc/signaling rs=jesup r=gerv
authorEKR <ekr@rtfm.com>
Tue, 13 Mar 2012 11:22:14 -0700
changeset 109551 f1b524d51e6b055a5e8fd1c07d37ddc4805c4a03
parent 109550 50005364bca4b2b28c6373aa01e82dadc1affd74
child 109552 4bea9e9d2e2c0cbd23c59cb12ac97b0c8cc26e17
push id23632
push userphilringnalda@gmail.com
push dateSun, 07 Oct 2012 19:14:37 +0000
treeherdermozilla-central@83d38854c21e [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersjesup, gerv
bugs792188
milestone18.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 792188: Import SIPCC into media/webrtc/signaling rs=jesup r=gerv
media/webrtc/signaling/include/CC_Call.h
media/webrtc/signaling/include/CC_CallInfo.h
media/webrtc/signaling/include/CC_CallServerInfo.h
media/webrtc/signaling/include/CC_CallTypes.h
media/webrtc/signaling/include/CC_Common.h
media/webrtc/signaling/include/CC_Device.h
media/webrtc/signaling/include/CC_DeviceInfo.h
media/webrtc/signaling/include/CC_FeatureInfo.h
media/webrtc/signaling/include/CC_Line.h
media/webrtc/signaling/include/CC_LineInfo.h
media/webrtc/signaling/include/CC_Observer.h
media/webrtc/signaling/include/CC_Service.h
media/webrtc/signaling/include/CSFAudioControl.h
media/webrtc/signaling/include/CSFVideoControl.h
media/webrtc/signaling/include/CallControlManager.h
media/webrtc/signaling/include/ECC_Observer.h
media/webrtc/signaling/include/ECC_Types.h
media/webrtc/signaling/include/PhoneDetails.h
media/webrtc/signaling/include/SharedPtr.h
media/webrtc/signaling/include/debug-psipcc-types.h
media/webrtc/signaling/signaling.gyp
media/webrtc/signaling/src/callcontrol/CC_CallTypes.cpp
media/webrtc/signaling/src/callcontrol/CallControlManager.cpp
media/webrtc/signaling/src/callcontrol/CallControlManagerImpl.cpp
media/webrtc/signaling/src/callcontrol/CallControlManagerImpl.h
media/webrtc/signaling/src/callcontrol/ECC_Types.cpp
media/webrtc/signaling/src/callcontrol/PhoneDetailsImpl.cpp
media/webrtc/signaling/src/callcontrol/PhoneDetailsImpl.h
media/webrtc/signaling/src/callcontrol/debug-psipcc-types.cpp
media/webrtc/signaling/src/common/CommonTypes.h
media/webrtc/signaling/src/common/NullDeleter.h
media/webrtc/signaling/src/common/Wrapper.h
media/webrtc/signaling/src/common/browser_logging/CSFLog.cpp
media/webrtc/signaling/src/common/browser_logging/CSFLog.h
media/webrtc/signaling/src/common/browser_logging/CSFLogStream.h
media/webrtc/signaling/src/common/csf_common.h
media/webrtc/signaling/src/media/CSFAudioControlWrapper.cpp
media/webrtc/signaling/src/media/CSFAudioControlWrapper.h
media/webrtc/signaling/src/media/CSFAudioTermination.h
media/webrtc/signaling/src/media/CSFMediaProvider.h
media/webrtc/signaling/src/media/CSFMediaTermination.h
media/webrtc/signaling/src/media/CSFToneDefinitions.h
media/webrtc/signaling/src/media/CSFVideoCallMediaControl.h
media/webrtc/signaling/src/media/CSFVideoControlWrapper.cpp
media/webrtc/signaling/src/media/CSFVideoControlWrapper.h
media/webrtc/signaling/src/media/CSFVideoTermination.h
media/webrtc/signaling/src/media/VcmSIPCCBinding.cpp
media/webrtc/signaling/src/media/VcmSIPCCBinding.h
media/webrtc/signaling/src/media/cip_Sipcc_CodecMask.h
media/webrtc/signaling/src/media/cip_mmgr_mediadefinitions.h
media/webrtc/signaling/src/media/webrtc/WebrtcAudioCodecSelector.cpp
media/webrtc/signaling/src/media/webrtc/WebrtcAudioCodecSelector.h
media/webrtc/signaling/src/media/webrtc/WebrtcAudioProvider.cpp
media/webrtc/signaling/src/media/webrtc/WebrtcAudioProvider.h
media/webrtc/signaling/src/media/webrtc/WebrtcLogging.h
media/webrtc/signaling/src/media/webrtc/WebrtcMediaProvider.cpp
media/webrtc/signaling/src/media/webrtc/WebrtcMediaProvider.h
media/webrtc/signaling/src/media/webrtc/WebrtcRingGenerator.cpp
media/webrtc/signaling/src/media/webrtc/WebrtcRingGenerator.h
media/webrtc/signaling/src/media/webrtc/WebrtcToneGenerator.cpp
media/webrtc/signaling/src/media/webrtc/WebrtcToneGenerator.h
media/webrtc/signaling/src/media/webrtc/WebrtcVideoProvider.cpp
media/webrtc/signaling/src/media/webrtc/WebrtcVideoProvider.h
media/webrtc/signaling/src/sipcc/core/ccapp/CCProvider.h
media/webrtc/signaling/src/sipcc/core/ccapp/call_logger.c
media/webrtc/signaling/src/sipcc/core/ccapp/call_logger.h
media/webrtc/signaling/src/sipcc/core/ccapp/capability_set.c
media/webrtc/signaling/src/sipcc/core/ccapp/capability_set.h
media/webrtc/signaling/src/sipcc/core/ccapp/cc_blf.c
media/webrtc/signaling/src/sipcc/core/ccapp/cc_call_feature.c
media/webrtc/signaling/src/sipcc/core/ccapp/cc_config.c
media/webrtc/signaling/src/sipcc/core/ccapp/cc_device_feature.c
media/webrtc/signaling/src/sipcc/core/ccapp/cc_device_manager.c
media/webrtc/signaling/src/sipcc/core/ccapp/cc_device_manager.h
media/webrtc/signaling/src/sipcc/core/ccapp/cc_info.c
media/webrtc/signaling/src/sipcc/core/ccapp/cc_service.c
media/webrtc/signaling/src/sipcc/core/ccapp/ccapi_call.c
media/webrtc/signaling/src/sipcc/core/ccapp/ccapi_call_info.c
media/webrtc/signaling/src/sipcc/core/ccapp/ccapi_config.c
media/webrtc/signaling/src/sipcc/core/ccapp/ccapi_device.c
media/webrtc/signaling/src/sipcc/core/ccapp/ccapi_device_info.c
media/webrtc/signaling/src/sipcc/core/ccapp/ccapi_feature_info.c
media/webrtc/signaling/src/sipcc/core/ccapp/ccapi_line.c
media/webrtc/signaling/src/sipcc/core/ccapp/ccapi_line_info.c
media/webrtc/signaling/src/sipcc/core/ccapp/ccapi_service.c
media/webrtc/signaling/src/sipcc/core/ccapp/ccapi_snapshot.c
media/webrtc/signaling/src/sipcc/core/ccapp/ccapi_snapshot.h
media/webrtc/signaling/src/sipcc/core/ccapp/ccapp_task.c
media/webrtc/signaling/src/sipcc/core/ccapp/ccapp_task.h
media/webrtc/signaling/src/sipcc/core/ccapp/ccprovider.c
media/webrtc/signaling/src/sipcc/core/ccapp/conf_roster.c
media/webrtc/signaling/src/sipcc/core/ccapp/conf_roster.h
media/webrtc/signaling/src/sipcc/core/ccapp/sessionHash.c
media/webrtc/signaling/src/sipcc/core/ccapp/sessionHash.h
media/webrtc/signaling/src/sipcc/core/common/cfgfile_utils.c
media/webrtc/signaling/src/sipcc/core/common/cfgfile_utils.h
media/webrtc/signaling/src/sipcc/core/common/config_api.c
media/webrtc/signaling/src/sipcc/core/common/config_parser.c
media/webrtc/signaling/src/sipcc/core/common/config_parser.h
media/webrtc/signaling/src/sipcc/core/common/init.c
media/webrtc/signaling/src/sipcc/core/common/logger.c
media/webrtc/signaling/src/sipcc/core/common/logger.h
media/webrtc/signaling/src/sipcc/core/common/logmsg.h
media/webrtc/signaling/src/sipcc/core/common/misc.c
media/webrtc/signaling/src/sipcc/core/common/plat.c
media/webrtc/signaling/src/sipcc/core/common/platform_api.c
media/webrtc/signaling/src/sipcc/core/common/prot_cfgmgr_private.h
media/webrtc/signaling/src/sipcc/core/common/prot_configmgr.c
media/webrtc/signaling/src/sipcc/core/common/prot_configmgr.h
media/webrtc/signaling/src/sipcc/core/common/resource_manager.c
media/webrtc/signaling/src/sipcc/core/common/resource_manager.h
media/webrtc/signaling/src/sipcc/core/common/sip_socket_api.c
media/webrtc/signaling/src/sipcc/core/common/subscription_handler.c
media/webrtc/signaling/src/sipcc/core/common/subscription_handler.h
media/webrtc/signaling/src/sipcc/core/common/text_strings.c
media/webrtc/signaling/src/sipcc/core/common/text_strings.h
media/webrtc/signaling/src/sipcc/core/common/ui.c
media/webrtc/signaling/src/sipcc/core/common/vcm_util.c
media/webrtc/signaling/src/sipcc/core/common/xml_util.c
media/webrtc/signaling/src/sipcc/core/gsm/ccapi.c
media/webrtc/signaling/src/sipcc/core/gsm/ccapi_strings.c
media/webrtc/signaling/src/sipcc/core/gsm/dcsm.c
media/webrtc/signaling/src/sipcc/core/gsm/fim.c
media/webrtc/signaling/src/sipcc/core/gsm/fsm.c
media/webrtc/signaling/src/sipcc/core/gsm/fsmb2bcnf.c
media/webrtc/signaling/src/sipcc/core/gsm/fsmcac.c
media/webrtc/signaling/src/sipcc/core/gsm/fsmcnf.c
media/webrtc/signaling/src/sipcc/core/gsm/fsmdef.c
media/webrtc/signaling/src/sipcc/core/gsm/fsmxfr.c
media/webrtc/signaling/src/sipcc/core/gsm/gsm.c
media/webrtc/signaling/src/sipcc/core/gsm/gsm_sdp.c
media/webrtc/signaling/src/sipcc/core/gsm/gsm_sdp_crypto.c
media/webrtc/signaling/src/sipcc/core/gsm/h/fim.h
media/webrtc/signaling/src/sipcc/core/gsm/h/fsm.h
media/webrtc/signaling/src/sipcc/core/gsm/h/gsm.h
media/webrtc/signaling/src/sipcc/core/gsm/h/gsm_sdp.h
media/webrtc/signaling/src/sipcc/core/gsm/h/lsm.h
media/webrtc/signaling/src/sipcc/core/gsm/h/lsm_private.h
media/webrtc/signaling/src/sipcc/core/gsm/h/sm.h
media/webrtc/signaling/src/sipcc/core/gsm/lsm.c
media/webrtc/signaling/src/sipcc/core/gsm/media_cap_tbl.c
media/webrtc/signaling/src/sipcc/core/gsm/sm.c
media/webrtc/signaling/src/sipcc/core/gsm/subapi.c
media/webrtc/signaling/src/sipcc/core/includes/ccSession.h
media/webrtc/signaling/src/sipcc/core/includes/ccapi.h
media/webrtc/signaling/src/sipcc/core/includes/check_sync.h
media/webrtc/signaling/src/sipcc/core/includes/ci.h
media/webrtc/signaling/src/sipcc/core/includes/config.h
media/webrtc/signaling/src/sipcc/core/includes/configapp.h
media/webrtc/signaling/src/sipcc/core/includes/configmgr.h
media/webrtc/signaling/src/sipcc/core/includes/debug.h
media/webrtc/signaling/src/sipcc/core/includes/dialplan.h
media/webrtc/signaling/src/sipcc/core/includes/dialplanint.h
media/webrtc/signaling/src/sipcc/core/includes/digcalc.h
media/webrtc/signaling/src/sipcc/core/includes/dns_utils.h
media/webrtc/signaling/src/sipcc/core/includes/dtmf.h
media/webrtc/signaling/src/sipcc/core/includes/embedded.h
media/webrtc/signaling/src/sipcc/core/includes/intelpentiumtypes.h
media/webrtc/signaling/src/sipcc/core/includes/kpml_common_util.h
media/webrtc/signaling/src/sipcc/core/includes/kpmlmap.h
media/webrtc/signaling/src/sipcc/core/includes/md5.h
media/webrtc/signaling/src/sipcc/core/includes/memory.h
media/webrtc/signaling/src/sipcc/core/includes/misc_apps_task.h
media/webrtc/signaling/src/sipcc/core/includes/misc_util.h
media/webrtc/signaling/src/sipcc/core/includes/phntask.h
media/webrtc/signaling/src/sipcc/core/includes/phone.h
media/webrtc/signaling/src/sipcc/core/includes/phone_debug.h
media/webrtc/signaling/src/sipcc/core/includes/phone_platform_constants.h
media/webrtc/signaling/src/sipcc/core/includes/phone_types.h
media/webrtc/signaling/src/sipcc/core/includes/platform_api.h
media/webrtc/signaling/src/sipcc/core/includes/pres_sub_not_handler.h
media/webrtc/signaling/src/sipcc/core/includes/publish_int.h
media/webrtc/signaling/src/sipcc/core/includes/rcc_int_types.h
media/webrtc/signaling/src/sipcc/core/includes/regexp.h
media/webrtc/signaling/src/sipcc/core/includes/ringlist.h
media/webrtc/signaling/src/sipcc/core/includes/rtp_defs.h
media/webrtc/signaling/src/sipcc/core/includes/scSession.h
media/webrtc/signaling/src/sipcc/core/includes/session.h
media/webrtc/signaling/src/sipcc/core/includes/sessionConstants.h
media/webrtc/signaling/src/sipcc/core/includes/sessionTypes.h
media/webrtc/signaling/src/sipcc/core/includes/sessuri.h
media/webrtc/signaling/src/sipcc/core/includes/singly_link_list.h
media/webrtc/signaling/src/sipcc/core/includes/sip_socket_api.h
media/webrtc/signaling/src/sipcc/core/includes/sntp.h
media/webrtc/signaling/src/sipcc/core/includes/string_lib.h
media/webrtc/signaling/src/sipcc/core/includes/subapi.h
media/webrtc/signaling/src/sipcc/core/includes/task.h
media/webrtc/signaling/src/sipcc/core/includes/time2.h
media/webrtc/signaling/src/sipcc/core/includes/timer.h
media/webrtc/signaling/src/sipcc/core/includes/tnpphone.h
media/webrtc/signaling/src/sipcc/core/includes/uart.h
media/webrtc/signaling/src/sipcc/core/includes/uiapi.h
media/webrtc/signaling/src/sipcc/core/includes/upgrade.h
media/webrtc/signaling/src/sipcc/core/includes/util_ios_queue.h
media/webrtc/signaling/src/sipcc/core/includes/util_parse.h
media/webrtc/signaling/src/sipcc/core/includes/util_string.h
media/webrtc/signaling/src/sipcc/core/includes/vcm_util.h
media/webrtc/signaling/src/sipcc/core/includes/www.h
media/webrtc/signaling/src/sipcc/core/includes/xml_defs.h
media/webrtc/signaling/src/sipcc/core/includes/xml_util.h
media/webrtc/signaling/src/sipcc/core/sdp/ccsdp.c
media/webrtc/signaling/src/sipcc/core/sdp/sdp.h
media/webrtc/signaling/src/sipcc/core/sdp/sdp_access.c
media/webrtc/signaling/src/sipcc/core/sdp/sdp_attr.c
media/webrtc/signaling/src/sipcc/core/sdp/sdp_attr_access.c
media/webrtc/signaling/src/sipcc/core/sdp/sdp_base64.c
media/webrtc/signaling/src/sipcc/core/sdp/sdp_base64.h
media/webrtc/signaling/src/sipcc/core/sdp/sdp_config.c
media/webrtc/signaling/src/sipcc/core/sdp/sdp_main.c
media/webrtc/signaling/src/sipcc/core/sdp/sdp_os_defs.h
media/webrtc/signaling/src/sipcc/core/sdp/sdp_private.h
media/webrtc/signaling/src/sipcc/core/sdp/sdp_services_unix.c
media/webrtc/signaling/src/sipcc/core/sdp/sdp_services_win32.c
media/webrtc/signaling/src/sipcc/core/sdp/sdp_token.c
media/webrtc/signaling/src/sipcc/core/sdp/sdp_utils.c
media/webrtc/signaling/src/sipcc/core/sipstack/ccsip_callinfo.c
media/webrtc/signaling/src/sipcc/core/sipstack/ccsip_cc.c
media/webrtc/signaling/src/sipcc/core/sipstack/ccsip_common_util.c
media/webrtc/signaling/src/sipcc/core/sipstack/ccsip_core.c
media/webrtc/signaling/src/sipcc/core/sipstack/ccsip_debug.c
media/webrtc/signaling/src/sipcc/core/sipstack/ccsip_info.c
media/webrtc/signaling/src/sipcc/core/sipstack/ccsip_messaging.c
media/webrtc/signaling/src/sipcc/core/sipstack/ccsip_platform.c
media/webrtc/signaling/src/sipcc/core/sipstack/ccsip_platform_tcp.c
media/webrtc/signaling/src/sipcc/core/sipstack/ccsip_platform_timers.c
media/webrtc/signaling/src/sipcc/core/sipstack/ccsip_platform_tls.c
media/webrtc/signaling/src/sipcc/core/sipstack/ccsip_platform_udp.c
media/webrtc/signaling/src/sipcc/core/sipstack/ccsip_pmh.c
media/webrtc/signaling/src/sipcc/core/sipstack/ccsip_publish.c
media/webrtc/signaling/src/sipcc/core/sipstack/ccsip_register.c
media/webrtc/signaling/src/sipcc/core/sipstack/ccsip_reldev.c
media/webrtc/signaling/src/sipcc/core/sipstack/ccsip_sdp.c
media/webrtc/signaling/src/sipcc/core/sipstack/ccsip_spi_utils.c
media/webrtc/signaling/src/sipcc/core/sipstack/ccsip_subsmanager.c
media/webrtc/signaling/src/sipcc/core/sipstack/ccsip_task.c
media/webrtc/signaling/src/sipcc/core/sipstack/h/ccsip_callinfo.h
media/webrtc/signaling/src/sipcc/core/sipstack/h/ccsip_cc.h
media/webrtc/signaling/src/sipcc/core/sipstack/h/ccsip_common_cb.h
media/webrtc/signaling/src/sipcc/core/sipstack/h/ccsip_core.h
media/webrtc/signaling/src/sipcc/core/sipstack/h/ccsip_credentials.h
media/webrtc/signaling/src/sipcc/core/sipstack/h/ccsip_macros.h
media/webrtc/signaling/src/sipcc/core/sipstack/h/ccsip_messaging.h
media/webrtc/signaling/src/sipcc/core/sipstack/h/ccsip_platform.h
media/webrtc/signaling/src/sipcc/core/sipstack/h/ccsip_platform_tcp.h
media/webrtc/signaling/src/sipcc/core/sipstack/h/ccsip_platform_timers.h
media/webrtc/signaling/src/sipcc/core/sipstack/h/ccsip_platform_tls.h
media/webrtc/signaling/src/sipcc/core/sipstack/h/ccsip_platform_udp.h
media/webrtc/signaling/src/sipcc/core/sipstack/h/ccsip_pmh.h
media/webrtc/signaling/src/sipcc/core/sipstack/h/ccsip_protocol.h
media/webrtc/signaling/src/sipcc/core/sipstack/h/ccsip_publish.h
media/webrtc/signaling/src/sipcc/core/sipstack/h/ccsip_register.h
media/webrtc/signaling/src/sipcc/core/sipstack/h/ccsip_reldev.h
media/webrtc/signaling/src/sipcc/core/sipstack/h/ccsip_sdp.h
media/webrtc/signaling/src/sipcc/core/sipstack/h/ccsip_sim.h
media/webrtc/signaling/src/sipcc/core/sipstack/h/ccsip_spi_utils.h
media/webrtc/signaling/src/sipcc/core/sipstack/h/ccsip_subsmanager.h
media/webrtc/signaling/src/sipcc/core/sipstack/h/ccsip_task.h
media/webrtc/signaling/src/sipcc/core/sipstack/h/httpish.h
media/webrtc/signaling/src/sipcc/core/sipstack/h/httpish_protocol.h
media/webrtc/signaling/src/sipcc/core/sipstack/h/pmhdefs.h
media/webrtc/signaling/src/sipcc/core/sipstack/h/pmhutils.h
media/webrtc/signaling/src/sipcc/core/sipstack/h/regmgrapi.h
media/webrtc/signaling/src/sipcc/core/sipstack/h/sip_ccm_transport.h
media/webrtc/signaling/src/sipcc/core/sipstack/h/sip_common_regmgr.h
media/webrtc/signaling/src/sipcc/core/sipstack/h/sip_common_transport.h
media/webrtc/signaling/src/sipcc/core/sipstack/h/sip_csps_transport.h
media/webrtc/signaling/src/sipcc/core/sipstack/h/sip_interface_regmgr.h
media/webrtc/signaling/src/sipcc/core/sipstack/h/sip_platform_task.h
media/webrtc/signaling/src/sipcc/core/sipstack/httpish.c
media/webrtc/signaling/src/sipcc/core/sipstack/pmhutils.c
media/webrtc/signaling/src/sipcc/core/sipstack/sip_common_regmgr.c
media/webrtc/signaling/src/sipcc/core/sipstack/sip_common_transport.c
media/webrtc/signaling/src/sipcc/core/sipstack/sip_csps_transport.c
media/webrtc/signaling/src/sipcc/core/sipstack/sip_interface_regmgr.c
media/webrtc/signaling/src/sipcc/core/sipstack/sip_platform_task.c
media/webrtc/signaling/src/sipcc/core/sipstack/sip_platform_win32_task.c
media/webrtc/signaling/src/sipcc/core/src-common/configapp.c
media/webrtc/signaling/src/sipcc/core/src-common/dialplan.c
media/webrtc/signaling/src/sipcc/core/src-common/dialplanint.c
media/webrtc/signaling/src/sipcc/core/src-common/digcalc.c
media/webrtc/signaling/src/sipcc/core/src-common/kpml_common_util.c
media/webrtc/signaling/src/sipcc/core/src-common/kpmlmap.c
media/webrtc/signaling/src/sipcc/core/src-common/md5.c
media/webrtc/signaling/src/sipcc/core/src-common/misc_apps_task.c
media/webrtc/signaling/src/sipcc/core/src-common/pres_sub_not_handler.c
media/webrtc/signaling/src/sipcc/core/src-common/publish_int.c
media/webrtc/signaling/src/sipcc/core/src-common/singly_link_list.c
media/webrtc/signaling/src/sipcc/core/src-common/sll_lite.c
media/webrtc/signaling/src/sipcc/core/src-common/string_lib.c
media/webrtc/signaling/src/sipcc/core/src-common/util_ios_queue.c
media/webrtc/signaling/src/sipcc/core/src-common/util_parse.c
media/webrtc/signaling/src/sipcc/core/src-common/util_string.c
media/webrtc/signaling/src/sipcc/cpr/darwin/cpr_darwin_align.h
media/webrtc/signaling/src/sipcc/cpr/darwin/cpr_darwin_assert.h
media/webrtc/signaling/src/sipcc/cpr/darwin/cpr_darwin_chunk.c
media/webrtc/signaling/src/sipcc/cpr/darwin/cpr_darwin_chunk.h
media/webrtc/signaling/src/sipcc/cpr/darwin/cpr_darwin_errno.c
media/webrtc/signaling/src/sipcc/cpr/darwin/cpr_darwin_errno.h
media/webrtc/signaling/src/sipcc/cpr/darwin/cpr_darwin_in.h
media/webrtc/signaling/src/sipcc/cpr/darwin/cpr_darwin_init.c
media/webrtc/signaling/src/sipcc/cpr/darwin/cpr_darwin_ipc.c
media/webrtc/signaling/src/sipcc/cpr/darwin/cpr_darwin_ipc.h
media/webrtc/signaling/src/sipcc/cpr/darwin/cpr_darwin_locks.c
media/webrtc/signaling/src/sipcc/cpr/darwin/cpr_darwin_locks.h
media/webrtc/signaling/src/sipcc/cpr/darwin/cpr_darwin_memory.c
media/webrtc/signaling/src/sipcc/cpr/darwin/cpr_darwin_memory.h
media/webrtc/signaling/src/sipcc/cpr/darwin/cpr_darwin_memory_api.h
media/webrtc/signaling/src/sipcc/cpr/darwin/cpr_darwin_private.h
media/webrtc/signaling/src/sipcc/cpr/darwin/cpr_darwin_rand.h
media/webrtc/signaling/src/sipcc/cpr/darwin/cpr_darwin_socket.c
media/webrtc/signaling/src/sipcc/cpr/darwin/cpr_darwin_socket.h
media/webrtc/signaling/src/sipcc/cpr/darwin/cpr_darwin_stdio.c
media/webrtc/signaling/src/sipcc/cpr/darwin/cpr_darwin_stdio.h
media/webrtc/signaling/src/sipcc/cpr/darwin/cpr_darwin_stdlib.c
media/webrtc/signaling/src/sipcc/cpr/darwin/cpr_darwin_stdlib.h
media/webrtc/signaling/src/sipcc/cpr/darwin/cpr_darwin_string.c
media/webrtc/signaling/src/sipcc/cpr/darwin/cpr_darwin_string.h
media/webrtc/signaling/src/sipcc/cpr/darwin/cpr_darwin_strings.h
media/webrtc/signaling/src/sipcc/cpr/darwin/cpr_darwin_threads.c
media/webrtc/signaling/src/sipcc/cpr/darwin/cpr_darwin_time.h
media/webrtc/signaling/src/sipcc/cpr/darwin/cpr_darwin_timers.h
media/webrtc/signaling/src/sipcc/cpr/darwin/cpr_darwin_timers_using_select.c
media/webrtc/signaling/src/sipcc/cpr/darwin/cpr_darwin_tst.h
media/webrtc/signaling/src/sipcc/cpr/darwin/cpr_darwin_types.h
media/webrtc/signaling/src/sipcc/cpr/include/cpr.h
media/webrtc/signaling/src/sipcc/cpr/include/cpr_assert.h
media/webrtc/signaling/src/sipcc/cpr/include/cpr_debug.h
media/webrtc/signaling/src/sipcc/cpr/include/cpr_errno.h
media/webrtc/signaling/src/sipcc/cpr/include/cpr_in.h
media/webrtc/signaling/src/sipcc/cpr/include/cpr_ipc.h
media/webrtc/signaling/src/sipcc/cpr/include/cpr_locks.h
media/webrtc/signaling/src/sipcc/cpr/include/cpr_memory.h
media/webrtc/signaling/src/sipcc/cpr/include/cpr_rand.h
media/webrtc/signaling/src/sipcc/cpr/include/cpr_socket.h
media/webrtc/signaling/src/sipcc/cpr/include/cpr_stddef.h
media/webrtc/signaling/src/sipcc/cpr/include/cpr_stdio.h
media/webrtc/signaling/src/sipcc/cpr/include/cpr_stdlib.h
media/webrtc/signaling/src/sipcc/cpr/include/cpr_string.h
media/webrtc/signaling/src/sipcc/cpr/include/cpr_strings.h
media/webrtc/signaling/src/sipcc/cpr/include/cpr_threads.h
media/webrtc/signaling/src/sipcc/cpr/include/cpr_time.h
media/webrtc/signaling/src/sipcc/cpr/include/cpr_timers.h
media/webrtc/signaling/src/sipcc/cpr/include/cpr_types.h
media/webrtc/signaling/src/sipcc/cpr/linux/cpr_linux_align.h
media/webrtc/signaling/src/sipcc/cpr/linux/cpr_linux_assert.h
media/webrtc/signaling/src/sipcc/cpr/linux/cpr_linux_chunk.c
media/webrtc/signaling/src/sipcc/cpr/linux/cpr_linux_chunk.h
media/webrtc/signaling/src/sipcc/cpr/linux/cpr_linux_errno.c
media/webrtc/signaling/src/sipcc/cpr/linux/cpr_linux_errno.h
media/webrtc/signaling/src/sipcc/cpr/linux/cpr_linux_in.h
media/webrtc/signaling/src/sipcc/cpr/linux/cpr_linux_init.c
media/webrtc/signaling/src/sipcc/cpr/linux/cpr_linux_ipc.c
media/webrtc/signaling/src/sipcc/cpr/linux/cpr_linux_ipc.h
media/webrtc/signaling/src/sipcc/cpr/linux/cpr_linux_locks.c
media/webrtc/signaling/src/sipcc/cpr/linux/cpr_linux_locks.h
media/webrtc/signaling/src/sipcc/cpr/linux/cpr_linux_memory.c
media/webrtc/signaling/src/sipcc/cpr/linux/cpr_linux_memory.h
media/webrtc/signaling/src/sipcc/cpr/linux/cpr_linux_memory_api.h
media/webrtc/signaling/src/sipcc/cpr/linux/cpr_linux_private.h
media/webrtc/signaling/src/sipcc/cpr/linux/cpr_linux_rand.h
media/webrtc/signaling/src/sipcc/cpr/linux/cpr_linux_socket.c
media/webrtc/signaling/src/sipcc/cpr/linux/cpr_linux_socket.h
media/webrtc/signaling/src/sipcc/cpr/linux/cpr_linux_stdio.c
media/webrtc/signaling/src/sipcc/cpr/linux/cpr_linux_stdio.h
media/webrtc/signaling/src/sipcc/cpr/linux/cpr_linux_stdlib.c
media/webrtc/signaling/src/sipcc/cpr/linux/cpr_linux_stdlib.h
media/webrtc/signaling/src/sipcc/cpr/linux/cpr_linux_string.c
media/webrtc/signaling/src/sipcc/cpr/linux/cpr_linux_string.h
media/webrtc/signaling/src/sipcc/cpr/linux/cpr_linux_strings.h
media/webrtc/signaling/src/sipcc/cpr/linux/cpr_linux_threads.c
media/webrtc/signaling/src/sipcc/cpr/linux/cpr_linux_time.h
media/webrtc/signaling/src/sipcc/cpr/linux/cpr_linux_timers.h
media/webrtc/signaling/src/sipcc/cpr/linux/cpr_linux_timers_using_select.c
media/webrtc/signaling/src/sipcc/cpr/linux/cpr_linux_tst.c
media/webrtc/signaling/src/sipcc/cpr/linux/cpr_linux_tst.h
media/webrtc/signaling/src/sipcc/cpr/linux/cpr_linux_types.h
media/webrtc/signaling/src/sipcc/cpr/win32/cpr_win_assert.h
media/webrtc/signaling/src/sipcc/cpr/win32/cpr_win_debug.c
media/webrtc/signaling/src/sipcc/cpr/win32/cpr_win_debug.h
media/webrtc/signaling/src/sipcc/cpr/win32/cpr_win_defines.h
media/webrtc/signaling/src/sipcc/cpr/win32/cpr_win_errno.c
media/webrtc/signaling/src/sipcc/cpr/win32/cpr_win_errno.h
media/webrtc/signaling/src/sipcc/cpr/win32/cpr_win_in.h
media/webrtc/signaling/src/sipcc/cpr/win32/cpr_win_init.c
media/webrtc/signaling/src/sipcc/cpr/win32/cpr_win_ipc.c
media/webrtc/signaling/src/sipcc/cpr/win32/cpr_win_ipc.h
media/webrtc/signaling/src/sipcc/cpr/win32/cpr_win_locks.c
media/webrtc/signaling/src/sipcc/cpr/win32/cpr_win_locks.h
media/webrtc/signaling/src/sipcc/cpr/win32/cpr_win_memory.c
media/webrtc/signaling/src/sipcc/cpr/win32/cpr_win_memory.h
media/webrtc/signaling/src/sipcc/cpr/win32/cpr_win_rand.c
media/webrtc/signaling/src/sipcc/cpr/win32/cpr_win_rand.h
media/webrtc/signaling/src/sipcc/cpr/win32/cpr_win_socket.c
media/webrtc/signaling/src/sipcc/cpr/win32/cpr_win_socket.h
media/webrtc/signaling/src/sipcc/cpr/win32/cpr_win_stdio.c
media/webrtc/signaling/src/sipcc/cpr/win32/cpr_win_stdio.h
media/webrtc/signaling/src/sipcc/cpr/win32/cpr_win_stdlib.c
media/webrtc/signaling/src/sipcc/cpr/win32/cpr_win_stdlib.h
media/webrtc/signaling/src/sipcc/cpr/win32/cpr_win_string.c
media/webrtc/signaling/src/sipcc/cpr/win32/cpr_win_string.h
media/webrtc/signaling/src/sipcc/cpr/win32/cpr_win_strings.h
media/webrtc/signaling/src/sipcc/cpr/win32/cpr_win_threads.c
media/webrtc/signaling/src/sipcc/cpr/win32/cpr_win_threads.cpp
media/webrtc/signaling/src/sipcc/cpr/win32/cpr_win_time.h
media/webrtc/signaling/src/sipcc/cpr/win32/cpr_win_timers.c
media/webrtc/signaling/src/sipcc/cpr/win32/cpr_win_timers.h
media/webrtc/signaling/src/sipcc/cpr/win32/cpr_win_types.h
media/webrtc/signaling/src/sipcc/include/cc_blf.h
media/webrtc/signaling/src/sipcc/include/cc_blf_listener.h
media/webrtc/signaling/src/sipcc/include/cc_call_feature.h
media/webrtc/signaling/src/sipcc/include/cc_call_listener.h
media/webrtc/signaling/src/sipcc/include/cc_config.h
media/webrtc/signaling/src/sipcc/include/cc_constants.h
media/webrtc/signaling/src/sipcc/include/cc_debug.h
media/webrtc/signaling/src/sipcc/include/cc_device_feature.h
media/webrtc/signaling/src/sipcc/include/cc_device_listener.h
media/webrtc/signaling/src/sipcc/include/cc_info.h
media/webrtc/signaling/src/sipcc/include/cc_info_listener.h
media/webrtc/signaling/src/sipcc/include/cc_service.h
media/webrtc/signaling/src/sipcc/include/cc_service_listener.h
media/webrtc/signaling/src/sipcc/include/cc_types.h
media/webrtc/signaling/src/sipcc/include/ccapi_call.h
media/webrtc/signaling/src/sipcc/include/ccapi_call_info.h
media/webrtc/signaling/src/sipcc/include/ccapi_call_listener.h
media/webrtc/signaling/src/sipcc/include/ccapi_calllog.h
media/webrtc/signaling/src/sipcc/include/ccapi_conf_roster.h
media/webrtc/signaling/src/sipcc/include/ccapi_device.h
media/webrtc/signaling/src/sipcc/include/ccapi_device_info.h
media/webrtc/signaling/src/sipcc/include/ccapi_device_listener.h
media/webrtc/signaling/src/sipcc/include/ccapi_feature_info.h
media/webrtc/signaling/src/sipcc/include/ccapi_line.h
media/webrtc/signaling/src/sipcc/include/ccapi_line_info.h
media/webrtc/signaling/src/sipcc/include/ccapi_line_listener.h
media/webrtc/signaling/src/sipcc/include/ccapi_service.h
media/webrtc/signaling/src/sipcc/include/ccapi_types.h
media/webrtc/signaling/src/sipcc/include/ccsdp.h
media/webrtc/signaling/src/sipcc/include/config_api.h
media/webrtc/signaling/src/sipcc/include/dns_util.h
media/webrtc/signaling/src/sipcc/include/plat_api.h
media/webrtc/signaling/src/sipcc/include/reset_api.h
media/webrtc/signaling/src/sipcc/include/sll_lite.h
media/webrtc/signaling/src/sipcc/include/vcm.h
media/webrtc/signaling/src/sipcc/include/xml_parser.h
media/webrtc/signaling/src/sipcc/include/xml_parser_defines.h
media/webrtc/signaling/src/sipcc/plat/common/dns_utils.c
media/webrtc/signaling/src/sipcc/plat/common/libxml_parser.c
media/webrtc/signaling/src/sipcc/plat/common/plat_debug.h
media/webrtc/signaling/src/sipcc/plat/common/plat_sec_api.c
media/webrtc/signaling/src/sipcc/plat/common/tnp_blf.h
media/webrtc/signaling/src/sipcc/plat/csf2g/model.c
media/webrtc/signaling/src/sipcc/plat/csf2g/reset_api.c
media/webrtc/signaling/src/sipcc/plat/darwin/netif.c
media/webrtc/signaling/src/sipcc/plat/darwin/plat_api_stub.c
media/webrtc/signaling/src/sipcc/plat/linux/plat_api_stub.c
media/webrtc/signaling/src/sipcc/plat/unix-common/random.c
media/webrtc/signaling/src/sipcc/plat/win32/dns_utils.c
media/webrtc/signaling/src/sipcc/plat/win32/mystub.c
media/webrtc/signaling/src/sipcc/plat/win32/plat_api_stub.c
media/webrtc/signaling/src/sipcc/plat/win32/plat_api_win.c
media/webrtc/signaling/src/sipcc/stub/cc_blf_stub.c
media/webrtc/signaling/src/sipcc/stub/vcm_stub.c
media/webrtc/signaling/src/softphonewrapper/CC_SIPCCCall.cpp
media/webrtc/signaling/src/softphonewrapper/CC_SIPCCCall.h
media/webrtc/signaling/src/softphonewrapper/CC_SIPCCCallInfo.cpp
media/webrtc/signaling/src/softphonewrapper/CC_SIPCCCallInfo.h
media/webrtc/signaling/src/softphonewrapper/CC_SIPCCCallServerInfo.cpp
media/webrtc/signaling/src/softphonewrapper/CC_SIPCCCallServerInfo.h
media/webrtc/signaling/src/softphonewrapper/CC_SIPCCDevice.cpp
media/webrtc/signaling/src/softphonewrapper/CC_SIPCCDevice.h
media/webrtc/signaling/src/softphonewrapper/CC_SIPCCDeviceInfo.cpp
media/webrtc/signaling/src/softphonewrapper/CC_SIPCCDeviceInfo.h
media/webrtc/signaling/src/softphonewrapper/CC_SIPCCFeatureInfo.cpp
media/webrtc/signaling/src/softphonewrapper/CC_SIPCCFeatureInfo.h
media/webrtc/signaling/src/softphonewrapper/CC_SIPCCLine.cpp
media/webrtc/signaling/src/softphonewrapper/CC_SIPCCLine.h
media/webrtc/signaling/src/softphonewrapper/CC_SIPCCLineInfo.cpp
media/webrtc/signaling/src/softphonewrapper/CC_SIPCCLineInfo.h
media/webrtc/signaling/src/softphonewrapper/CC_SIPCCService.cpp
media/webrtc/signaling/src/softphonewrapper/CC_SIPCCService.h
media/webrtc/signaling/src/softphonewrapper/ccapi_plat_api_impl.cpp
new file mode 100644
--- /dev/null
+++ b/media/webrtc/signaling/include/CC_Call.h
@@ -0,0 +1,307 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (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.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is the Cisco Systems SIP Stack.
+ *
+ * The Initial Developer of the Original Code is
+ * Cisco Systems (CSCO).
+ * Portions created by the Initial Developer are Copyright (C) 2002
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *  Enda Mannion <emannion@cisco.com>
+ *  Suhas Nandakumar <snandaku@cisco.com>
+ *  Ethan Hugg <ehugg@cisco.com>
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+#pragma once
+
+#include "CC_Common.h"
+#include "ECC_Types.h"
+
+extern "C"
+{
+#include "ccapi_types.h"
+}
+
+namespace CSF
+{
+    class ECC_API CC_Call
+    {
+    protected:
+        CC_Call () { }
+
+    public:
+        virtual ~CC_Call () {};
+
+		virtual void setRemoteWindow (VideoWindowHandle window) = 0;
+
+		virtual int setExternalRenderer(VideoFormat videoFormat, ExternalRendererHandle renderer) = 0;
+
+		virtual void sendIFrame	() = 0;
+
+        virtual CC_CallInfoPtr getCallInfo () = 0;
+
+        virtual std::string toString() = 0;
+
+        /**
+           Originate call - API to go offhook and dial specified digits on a given call
+
+           @param [in] video_pref - video direction desired on call
+           @param [in] digits - digits to be dialed. can be empty then this API simply goes offhook
+
+           @return true or false.
+         */
+        virtual bool originateCall (cc_sdp_direction_t video_pref, const std::string & digits, char* sdp, int audioPort, int videoPort) = 0;
+
+        /**
+           Use this function to answer an incoming call.
+
+           @param[in] video_pref - video direction desired on call
+
+           @return true or false.
+         */
+        virtual bool answerCall (cc_sdp_direction_t video_pref) = 0;
+
+        /**
+           Use this function to put an active call on hold.
+
+           @param[in] reason - If the user chooses to put the call on hold then
+                               CC_HOLD_REASON_NONE should be the value passed in here.
+
+           @return true or false. If it's not appropriate to put this call on
+                   hold at the moment then this function will return false.
+         */
+        virtual bool hold (cc_hold_reason_t reason) = 0;
+
+        /**
+           Use this function to resume a call that is currently on hold.
+
+           @param [in] video_pref - video direction desired on call
+
+           @return true or false
+         */
+        virtual bool resume (cc_sdp_direction_t video_pref) = 0;
+
+        /**
+           Use this function to end an active call.
+
+           @return true or false
+         */
+        virtual bool endCall() = 0;
+        
+        /**
+           Send digits on the call - can be invoked either to dial additional digits or send DTMF
+
+           @param [in] digit - digit to be dialed
+
+           @return true or false
+         */
+        virtual bool sendDigit (cc_digit_t digit) = 0;
+
+        /**
+           Send Backspace - Delete last digit dialed.
+
+           @return true or false
+         */
+        virtual bool backspace() = 0;
+
+        /**
+           Redial
+
+           @param [in] video_pref - video direction desired on call
+           @return true or false
+         */
+        virtual bool redial (cc_sdp_direction_t video_pref) = 0;
+
+        /**
+           Initiate Call Forward All 
+
+           @return true or false
+         */
+        virtual bool initiateCallForwardAll() = 0;
+
+        /**
+           end Consult leg - used to end consult leg when the user picks active calls list for xfer/conf
+
+           @return true or false
+         */
+        virtual bool endConsultativeCall() = 0;
+
+        /**
+           Initiate a conference
+
+           @param [in] video_pref - video direction desired on consult call
+
+           @return true or false
+         */
+        virtual bool conferenceStart (cc_sdp_direction_t video_pref) = 0;
+
+        /**
+           complete conference
+
+           @param [in] otherCall - CC_CallPtr of the other leg
+           @param [in] video_pref - video direction desired on consult call
+
+           @return true or false
+         */
+        virtual bool conferenceComplete (CC_CallPtr otherLog, cc_sdp_direction_t video_pref) = 0;
+
+        /**
+           start transfer
+
+           @param [in] video_pref - video direction desired on consult call
+
+           @return true or false
+         */
+        virtual bool transferStart (cc_sdp_direction_t video_pref) = 0;
+
+        /**
+           complete transfer
+
+           @param [in] otherLeg - CC_CallPtr of the other leg
+           @param [in] video_pref - video direction desired on consult call
+
+           @return true or false
+         */
+        virtual bool transferComplete (CC_CallPtr otherLeg, 
+                                       cc_sdp_direction_t video_pref) = 0;
+
+        /**
+           cancel conference or transfer
+
+           @return true or false
+         */
+        virtual bool cancelTransferOrConferenceFeature() = 0;
+
+        /**
+           direct Transfer
+
+           @param [in] target - call handle for transfer target call
+           @return true or false
+         */
+        virtual bool directTransfer (CC_CallPtr target) = 0;
+
+        /**
+           Join Across line
+
+           @param [in] target - join target
+           @return true or false
+         */
+        virtual bool joinAcrossLine (CC_CallPtr target) = 0;
+
+        /**
+           BLF Call Pickup
+
+           @param [in] video_pref - video direction preference
+           @param [in] speed - speedDial Number
+           @return true or false
+         */
+        virtual bool blfCallPickup (cc_sdp_direction_t video_pref, const std::string & speed) = 0;
+
+        /**
+           Select a call
+
+           @return true or false
+         */
+        virtual bool select() = 0;
+
+        /**
+           Update Video Media Cap for the call
+
+           @param [in] video_pref - video direction desired on call
+           @return true or false
+         */
+        virtual bool updateVideoMediaCap (cc_sdp_direction_t video_pref) = 0;
+
+        /**
+           send INFO method for the call
+           @param [in] handle - call handle
+           @param [in] infopackage - Info-Package header value
+           @param [in] infotype - Content-Type header val
+           @param [in] infobody - Body of the INFO message
+           @return true or false
+         */
+        virtual bool sendInfo (const std::string & infopackage, const std::string & infotype, const std::string & infobody) = 0;
+
+        /**
+           API to mute audio
+
+           @return true if the operation succeeded
+
+           NOTE: The mute state is persisted within the stack and shall be remembered across hold/resume.
+         */
+        virtual bool muteAudio(void) = 0;
+        
+        
+        /**
+           API to unmute audio
+
+           @return true if the operation succeeded
+
+           NOTE: The mute state is persisted within the stack and shall be remembered across hold/resume.
+         */
+        virtual bool unmuteAudio(void) = 0;
+        /**
+           API to mute video
+
+           @return true if the operation succeeded
+
+           NOTE: The mute state is persisted within the stack and shall be remembered across hold/resume.
+         */
+        virtual bool muteVideo(void) = 0;
+        
+        
+        /**
+           API to unmute video
+
+           @return true if the operation succeeded
+
+           NOTE: The mute state is persisted within the stack and shall be remembered across hold/resume.
+         */
+        virtual bool unmuteVideo(void) = 0;
+
+
+        /**
+        API to set the call volume, acceptable values are 0 - 100
+        @return true if volume set successfully, false if value out of range or change failed
+        */
+        virtual bool setVolume(int volume) = 0;
+
+
+        /**
+           Originate P2P call - API to go offhook and dial specified digits\user on a given call
+
+           @param [in] video_pref - video direction desired on call
+           @param [in] digits - digits to be dialed. can be empty then this API simply goes offhook
+           @param [in] ip address - the ip address of the peer to call
+
+           @return true or false.
+         */
+        virtual bool originateP2PCall (cc_sdp_direction_t video_pref, const std::string & digits, const std::string & ip) = 0;
+
+    };
+};
new file mode 100644
--- /dev/null
+++ b/media/webrtc/signaling/include/CC_CallInfo.h
@@ -0,0 +1,334 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (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.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is the Cisco Systems SIP Stack.
+ *
+ * The Initial Developer of the Original Code is
+ * Cisco Systems (CSCO).
+ * Portions created by the Initial Developer are Copyright (C) 2002
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *  Enda Mannion <emannion@cisco.com>
+ *  Suhas Nandakumar <snandaku@cisco.com>
+ *  Ethan Hugg <ehugg@cisco.com>
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+#pragma once
+
+#include <set>
+
+extern "C"
+{
+#include "ccapi_types.h"
+}
+
+#include "CC_Common.h"
+#include "CC_CallTypes.h"
+
+namespace CSF
+{
+
+	class ECC_API CC_CallInfo
+    {
+    protected:
+        CC_CallInfo() { }
+
+    public:
+        //Base class needs dtor to be declared as virtual
+        virtual ~CC_CallInfo() {};
+
+        /**
+           Get the line object associated with this call.
+
+           @return CC_LinePtr - line ID
+         */
+        virtual CC_LinePtr getline () = 0;
+
+        /**
+           get Call state
+           @param [in] handle - call info handle
+           @return call state
+         */
+        virtual cc_call_state_t getCallState () = 0;
+
+        /**
+           Get ringer state.
+
+           @return bool ringer state.
+         */
+        virtual bool getRingerState() = 0;
+
+        /**
+           Get call attributes
+
+           @return cc_call_attr_t.
+         */
+        virtual cc_call_attr_t getCallAttr() = 0;
+
+        /**
+           Get the call type
+
+           @return cc_call_type_t for this call. Supported values inlude:
+                   CC_CALL_TYPE_INCOMING, CC_CALL_TYPE_OUTGOING and CC_CALL_TYPE_FORWARDED.
+         */
+        virtual cc_call_type_t getCallType() = 0;
+
+        /**
+           Get called party name
+
+           @return called party name
+         */
+        virtual std::string getCalledPartyName() = 0;
+
+        /**
+           Get called party number
+
+           @return called party number as a string.
+         */
+        virtual std::string getCalledPartyNumber() = 0;
+
+        /**
+           Get calling party name
+
+           @return calling party name
+         */
+        virtual std::string getCallingPartyName() = 0;
+
+        /**
+           Get calling party number
+           @return calling party number as a string
+                   Note: this is a const reference to a string that's owned by the 
+          */
+        virtual std::string getCallingPartyNumber() = 0;
+
+        /**
+           Get alternate number
+
+           @return calling party number as a string.
+         */
+        virtual std::string getAlternateNumber() = 0;
+
+        /**
+           This function is used to check if a given capability is supported
+           based on the information in this CC_CallInfo object.
+
+           @param [in] capability - the capability that is to be checked for availability.
+           @return boolean - returns true if the given capability is available, false otherwise.
+         */
+        virtual bool hasCapability (CC_CallCapabilityEnum::CC_CallCapability capability) = 0;
+
+        /**
+           If you need the complete set of capabilities 
+
+           @return cc_return_t - set of Call Capabilities.
+         */
+        virtual std::set<CC_CallCapabilityEnum::CC_CallCapability> getCapabilitySet() = 0;
+
+        /**
+           get Original Called party name
+           @param [in] handle - call info handle
+           @return original called party name
+         */
+        virtual std::string getOriginalCalledPartyName() = 0;
+
+        /**
+           get Original Called party number
+           @param [in] handle - call info handle
+           @return original called party number
+         */
+        virtual std::string getOriginalCalledPartyNumber() = 0;
+
+        /**
+           get last redirecting party name
+           @param [in] handle - call info handle
+           @return last redirecting party name
+         */
+        virtual std::string getLastRedirectingPartyName() = 0;
+
+        /**
+           get past redirecting party number
+           @param [in] handle - call info handle
+           @return last redirecting party number
+         */
+        virtual std::string getLastRedirectingPartyNumber() = 0;
+
+        /**
+           get placed call party name
+           @param [in] handle - call info handle
+           @return placed party name
+         */
+        virtual std::string getPlacedCallPartyName() = 0;
+
+        /**
+           get placed call party number
+           @param [in] handle - call info handle
+           @return placed party number
+         */
+        virtual std::string getPlacedCallPartyNumber() = 0;
+
+        /**
+           get call instance number
+           @param [in] handle - call info handle
+           @return 
+         */
+        virtual cc_int32_t getCallInstance() = 0;
+
+        /**
+           get call status prompt
+           @param [in] handle - call info handle
+           @return call status
+         */
+        virtual std::string getStatus() = 0;
+
+        /**
+           get call security   // TODO XLS has callagent security and endtoend security on call?
+           @param [in] handle - call info handle
+           @return call security status
+         */
+        virtual cc_call_security_t getSecurity() = 0;
+
+        /**
+           get Call Selection Status
+           @param [in] handle - call info handle
+           @return bool - TRUE => selected
+         */
+        virtual cc_int32_t getSelectionStatus() = 0;
+
+        /**
+           get GCID
+           @param [in] handle - call info handle
+           @return GCID
+         */
+        virtual std::string getGCID() = 0;
+
+        /**
+           get ringer loop count
+           @param handle - call handle
+           @return once Vs continuous
+         */
+        virtual bool getIsRingOnce() = 0;
+
+        /**
+           get ringer mode
+           @param handle - call handle
+           @return ringer mode
+         */
+        virtual int getRingerMode() = 0;
+
+        /**
+           get onhook reason
+           @param [in] handle - call info handle
+           @return onhook reason
+         */
+        virtual cc_int32_t getOnhookReason() = 0;
+
+        /**
+           is Conference Call?
+           @param [in] handle - call info handle
+           @return boolean - is Conference
+         */
+        virtual bool getIsConference() = 0;
+
+        /**
+           getStream Statistics
+           @param [in] handle - call info handle
+           @param [in,out] stats - Array to get the stats
+           @param [in,out] count - in len of stats arraysize of stats / out stats copied
+           @return cc_return_t - CC_SUCCESS or CC_FAILURE
+         */
+        virtual std::set<cc_int32_t> getStreamStatistics() = 0;
+
+        /**
+           Call selection status
+           @param [in] handle - call info handle
+           @return bool - selection status
+         */
+        virtual bool isCallSelected() = 0;
+
+        /**
+           INFO Package for RECEIVED_INFO event
+           @param [in] handle - call info handle
+           @return string - Info package header
+         */
+        virtual std::string getINFOPack() = 0;
+
+        /**
+           INFO type for RECEIVED_INFO event
+
+           @return string - content-type  header
+         */
+        virtual std::string getINFOType() = 0;
+
+        /**
+           INFO body for RECEIVED_INFO event
+
+           @return string - INFO body
+         */
+        virtual std::string getINFOBody() = 0;
+
+        /**
+           Get the call log reference
+
+           //TODO NEED TO DO SOMETHING WRAP CALL LOG REF.
+           @return string - INFO body
+           NOTE: Memory associated with the call log is tied to the  
+           this would be freed when the callinfo ref is freed.
+         */
+        virtual cc_calllog_ref_t  getCallLogRef() = 0;
+
+        /**
+           returns the negotiated video direction for this call
+
+           @return cc_sdp_direction_t - video direction
+         */
+        virtual cc_sdp_direction_t getVideoDirection() = 0;
+
+         /**
+           Find out if this call is capable of querying the media state, which includes mute state and video direction
+           @return  bool  
+          */       
+        virtual bool isMediaStateAvailable() = 0;
+        
+        /**
+           Get the audio mute state if available (check availability with isMediaStateAvailable())
+           @return  bool  - the current audio state of the call
+          */
+        virtual bool isAudioMuted(void) = 0;
+        
+         /**
+           Get the video mute state if available (check availability with isMediaStateAvailable())
+           @return  bool  - the current video state of the call
+          */
+        virtual bool isVideoMuted(void) = 0;
+
+        /**
+          Get the current call volume level
+          @return int - the current call volume level, or -1 if it cannot be determined
+        */
+        virtual int getVolume() = 0;
+    };
+};
new file mode 100644
--- /dev/null
+++ b/media/webrtc/signaling/include/CC_CallServerInfo.h
@@ -0,0 +1,83 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (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.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is the Cisco Systems SIP Stack.
+ *
+ * The Initial Developer of the Original Code is
+ * Cisco Systems (CSCO).
+ * Portions created by the Initial Developer are Copyright (C) 2002
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *  Enda Mannion <emannion@cisco.com>
+ *  Suhas Nandakumar <snandaku@cisco.com>
+ *  Ethan Hugg <ehugg@cisco.com>
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+#pragma once
+
+#include "CC_Common.h"
+
+#include <vector>
+
+extern "C"
+{
+#include "ccapi_types.h"
+}
+
+namespace CSF
+{
+    class ECC_API CC_CallServerInfo
+    {
+    protected:
+        CC_CallServerInfo() { }
+
+    public:
+        //Base class needs dtor to be declared as virtual
+        virtual ~CC_CallServerInfo() {};
+
+        /**
+           gets call server name
+
+           @returns name of the call server
+         */
+        virtual std::string getCallServerName() = 0;
+
+        /**
+           gets call server mode
+
+           @returns - mode of the call server
+         */
+        virtual cc_cucm_mode_t getCallServerMode() = 0;
+
+        /**
+           gets calls erver name
+
+           @returns status of the call server
+         */
+        virtual cc_ccm_status_t getCallServerStatus() = 0;
+    };
+};
new file mode 100644
--- /dev/null
+++ b/media/webrtc/signaling/include/CC_CallTypes.h
@@ -0,0 +1,85 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (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.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is the Cisco Systems SIP Stack.
+ *
+ * The Initial Developer of the Original Code is
+ * Cisco Systems (CSCO).
+ * Portions created by the Initial Developer are Copyright (C) 2002
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *  Enda Mannion <emannion@cisco.com>
+ *  Suhas Nandakumar <snandaku@cisco.com>
+ *  Ethan Hugg <ehugg@cisco.com>
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+#pragma once
+
+#include "CC_Common.h"
+#include <string>
+#include <set>
+
+namespace CSF
+{
+	namespace CC_CallCapabilityEnum
+	{
+		typedef enum
+		{
+			canSetRemoteWindow,
+			canSetLocalWindow,
+			canSendIFrame,
+			canOriginateCall,
+			canAnswerCall,
+			canHold,
+			canResume,
+			canEndCall,
+			canSendDigit,
+			canBackspace,
+			canRedial,
+			canInitiateCallForwardAll,
+			canEndConsultativeCall,
+			canConferenceStart,
+			canConferenceComplete,
+			canTransferStart,
+			canTransferComplete,
+			canCancelTransferOrConferenceFeature,
+			canDirectTransfer,
+			canJoinAcrossLine,
+			canBlfCallPickup,
+			canSelect,
+			canUpdateVideoMediaCap,
+			canSendInfo,
+			canMuteAudio,
+			canUnmuteAudio,
+			canMuteVideo,
+			canUnmuteVideo,
+			canSetVolume
+		} CC_CallCapability;
+		std::string ECC_API toString(CC_CallCapability cap);
+		std::string ECC_API toString(std::set<CC_CallCapability>& caps);
+	};
+};
new file mode 100644
--- /dev/null
+++ b/media/webrtc/signaling/include/CC_Common.h
@@ -0,0 +1,69 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (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.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is the Cisco Systems SIP Stack.
+ *
+ * The Initial Developer of the Original Code is
+ * Cisco Systems (CSCO).
+ * Portions created by the Initial Developer are Copyright (C) 2002
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *  Enda Mannion <emannion@cisco.com>
+ *  Suhas Nandakumar <snandaku@cisco.com>
+ *  Ethan Hugg <ehugg@cisco.com>
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+#pragma once
+
+#include "SharedPtr.h"
+
+#ifndef ECC_API
+#ifdef ECC_EXPORT
+#define ECC_API _declspec(dllexport)
+#elif ECC_IMPORT
+#define ECC_API _declspec(dllimport)
+#else
+#define ECC_API
+#endif
+#endif
+
+namespace CSF
+{
+	DECLARE_PTR(CallControlManager);
+	DECLARE_PTR_VECTOR(PhoneDetails);
+    DECLARE_PTR(CC_Service);
+    DECLARE_PTR(VideoControl);
+    DECLARE_PTR(AudioControl);
+    DECLARE_PTR_VECTOR(CC_Device);
+    DECLARE_PTR(CC_DeviceInfo);
+    DECLARE_PTR(CC_CallServerInfo);
+    DECLARE_PTR(CC_FeatureInfo);
+    DECLARE_PTR_VECTOR(CC_Line);
+    DECLARE_PTR(CC_LineInfo);
+	DECLARE_PTR_VECTOR(CC_Call);
+    DECLARE_PTR(CC_CallInfo);
+}
new file mode 100644
--- /dev/null
+++ b/media/webrtc/signaling/include/CC_Device.h
@@ -0,0 +1,83 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (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.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is the Cisco Systems SIP Stack.
+ *
+ * The Initial Developer of the Original Code is
+ * Cisco Systems (CSCO).
+ * Portions created by the Initial Developer are Copyright (C) 2002
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *  Enda Mannion <emannion@cisco.com>
+ *  Suhas Nandakumar <snandaku@cisco.com>
+ *  Ethan Hugg <ehugg@cisco.com>
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+#pragma once
+
+#include "CC_Common.h"
+
+extern "C"
+{
+#include "ccapi_types.h"
+}
+
+namespace CSF
+{
+
+    class ECC_API CC_Device
+    {
+    protected:
+        CC_Device() {}
+
+    public:
+        virtual ~CC_Device() {};
+
+        virtual std::string toString() = 0;
+
+        virtual CC_DeviceInfoPtr getDeviceInfo () = 0;
+
+        /**
+           Create a call on the device. Line selection is on the first available line.
+           Lines that have their MNC reached will be skipped. If you have a specific line
+           you want to make a call on (assuming the device has more than available) then
+           you should use CC_Line::createCall() to do that.
+
+           @return CC_CallPtr - the created call object wrapped in a smart_ptr.
+         */
+        virtual CC_CallPtr createCall() = 0;
+
+        virtual void enableVideo(bool enable) = 0;
+        virtual void enableCamera(bool enable) = 0;    
+		virtual void setDigestNamePasswd (char *name, char *pw) = 0;
+
+    private:
+		// Cannot copy - clients should be passing the pointer not the object.
+		CC_Device& operator=(const CC_Device& rhs);
+		CC_Device(const CC_Device&);
+    };
+};
new file mode 100644
--- /dev/null
+++ b/media/webrtc/signaling/include/CC_DeviceInfo.h
@@ -0,0 +1,169 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (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.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is the Cisco Systems SIP Stack.
+ *
+ * The Initial Developer of the Original Code is
+ * Cisco Systems (CSCO).
+ * Portions created by the Initial Developer are Copyright (C) 2002
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *  Enda Mannion <emannion@cisco.com>
+ *  Suhas Nandakumar <snandaku@cisco.com>
+ *  Ethan Hugg <ehugg@cisco.com>
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+#pragma once
+
+#include "CC_Common.h"
+
+#include <vector>
+
+extern "C"
+{
+#include "ccapi_types.h"
+}
+
+namespace CSF
+{
+    class ECC_API CC_DeviceInfo
+    {
+    protected:
+        CC_DeviceInfo() { }
+
+    public:
+        //Base class needs dtor to be declared as virtual
+        virtual ~CC_DeviceInfo() {};
+
+        /**
+           gets the device name
+           @returns - the device name as an std::string
+         */
+        virtual std::string getDeviceName() = 0;
+
+        /**
+           gets the service state
+           @param [in] handle - reference to device info 
+           @returns cc_service_state_t - INS/OOS 
+         */
+        virtual cc_service_state_t getServiceState() = 0;
+
+        /**
+           gets the service cause
+           @param [in] handle - reference to device info 
+           @returns cc_service_cause_t - reason for service state
+         */
+        virtual cc_service_cause_t getServiceCause() = 0;
+
+        /**
+           gets vector of CC_CallPtr from this CC_DeviceInfo
+
+           @returns vector<CC_CallPtr> containing the CC_CallPtrs
+         */
+        virtual std::vector<CC_CallPtr> getCalls () = 0;
+
+        /**
+           gets list of handles to calls on the device by state
+           @param [in] handle - reference to device info
+           @param [in] state - call state for which the calls are requested
+           @param [out] handles - array of call handle to be returned
+           @param [in,out] count number allocated in array/elements returned
+           @returns
+         */
+//        void getCallsByState (cc_call_state_t state,
+//                              cc_call_handle_t handles[], cc_uint16_t *count);
+
+        /**
+           gets vector of CC_LinePtr from this CC_DeviceInfo
+
+           @returns vector<CC_LinePtr> containing the CC_LinePtrs
+         */
+        virtual std::vector<CC_LinePtr> getLines () = 0;
+
+        /**
+           gets vector of features on the device
+
+           @returns
+         */
+        virtual std::vector<CC_FeatureInfoPtr> getFeatures () = 0;
+
+        /**
+           gets handles of call agent servers
+
+           @returns 
+         */
+        virtual std::vector<CC_CallServerInfoPtr> getCallServers () = 0;
+
+        /**
+           gets call server name
+           @param [in] handle - handle of call server
+           @returns name of the call server
+           NOTE: The memory for return string doesn't need to be freed it will be freed when the info reference is freed
+         */
+//        cc_string_t getCallServerName (cc_callserver_ref_t handle);
+
+        /**
+           gets call server mode
+           @param [in] handle - handle of call server
+           @returns - mode of the call server
+         */
+//        cc_cucm_mode_t getCallServerMode (cc_callserver_ref_t handle);
+
+        /**
+           gets calls erver name
+           @param [in] handle - handle of call server
+           @returns status of the call server
+         */
+//        cc_ccm_status_t getCallServerStatus (cc_callserver_ref_t handle);
+
+        /**
+           get the NOTIFICATION PROMPT
+           @param [in] handle - reference to device info
+           @returns
+         */
+//        cc_string_t getNotifyPrompt ();
+
+        /**
+           get the NOTIFICATION PROMPT PRIORITY
+           @param [in] handle - reference to device info
+           @returns
+         */
+//        cc_uint32_t getNotifyPromptPriority ();
+
+        /**
+           get the NOTIFICATION PROMPT Progress
+           @param [in] handle - reference to device info
+           @returns
+         */
+//        cc_uint32_t getNotifyPromptProgress ();
+
+    private:
+		// Cannot copy - clients should be passing the pointer not the object.
+		CC_DeviceInfo& operator=(const CC_DeviceInfo& rhs);
+		CC_DeviceInfo(const CC_DeviceInfo&);
+    };
+};
new file mode 100644
--- /dev/null
+++ b/media/webrtc/signaling/include/CC_FeatureInfo.h
@@ -0,0 +1,109 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (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.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is the Cisco Systems SIP Stack.
+ *
+ * The Initial Developer of the Original Code is
+ * Cisco Systems (CSCO).
+ * Portions created by the Initial Developer are Copyright (C) 2002
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *  Enda Mannion <emannion@cisco.com>
+ *  Suhas Nandakumar <snandaku@cisco.com>
+ *  Ethan Hugg <ehugg@cisco.com>
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+#pragma once
+
+#include "CC_Common.h"
+
+extern "C"
+{
+#include "ccapi_types.h"
+}
+
+namespace CSF
+{
+    class ECC_API CC_FeatureInfo
+    {
+    protected:
+        CC_FeatureInfo() { }
+
+    public:
+        //Base class needs dtor to be declared as virtual
+        virtual ~CC_FeatureInfo() {};
+
+        /**
+           Get the physical button number on which this feature is configured
+
+           @return cc_int32_t - button assgn to the feature
+         */
+        virtual cc_int32_t getButton() = 0;
+
+        /**
+           Get the featureID
+
+           @return cc_int32_t - button assgn to the feature
+         */
+        virtual cc_int32_t getFeatureID() = 0;
+
+        /**
+           Get the feature Name
+
+           @return string - handle of the feature created
+         */
+        virtual std::string getDisplayName() = 0;
+
+        /**
+           Get the speeddial Number
+
+           @return string - handle of the feature created
+         */
+        virtual std::string getSpeedDialNumber() = 0;
+
+        /**
+           Get the contact
+
+           @return string - handle of the feature created
+         */
+        virtual std::string getContact() = 0;
+
+        /**
+           Get the retrieval prefix
+
+           @return string - handle of the feature created
+         */
+        virtual std::string getRetrievalPrefix() = 0;
+
+        /**
+           Get the feature option mask
+
+           @return cc_int32_t - button assgn to the feature
+         */
+        virtual cc_int32_t getFeatureOptionMask() = 0;
+    };
+};
new file mode 100644
--- /dev/null
+++ b/media/webrtc/signaling/include/CC_Line.h
@@ -0,0 +1,65 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (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.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is the Cisco Systems SIP Stack.
+ *
+ * The Initial Developer of the Original Code is
+ * Cisco Systems (CSCO).
+ * Portions created by the Initial Developer are Copyright (C) 2002
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *  Enda Mannion <emannion@cisco.com>
+ *  Suhas Nandakumar <snandaku@cisco.com>
+ *  Ethan Hugg <ehugg@cisco.com>
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+#pragma once
+
+#include "CC_Common.h"
+
+extern "C"
+{
+#include "ccapi_types.h"
+}
+
+namespace CSF
+{
+    class ECC_API CC_Line
+    {
+    protected:
+        CC_Line () { }
+
+    public:
+        virtual ~CC_Line () {};
+
+        virtual std::string toString() = 0;
+
+        virtual cc_lineid_t getID() = 0;
+        virtual CC_LineInfoPtr getLineInfo () = 0;
+        virtual CC_CallPtr createCall () = 0;
+    };
+};
new file mode 100644
--- /dev/null
+++ b/media/webrtc/signaling/include/CC_LineInfo.h
@@ -0,0 +1,185 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (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.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is the Cisco Systems SIP Stack.
+ *
+ * The Initial Developer of the Original Code is
+ * Cisco Systems (CSCO).
+ * Portions created by the Initial Developer are Copyright (C) 2002
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *  Enda Mannion <emannion@cisco.com>
+ *  Suhas Nandakumar <snandaku@cisco.com>
+ *  Ethan Hugg <ehugg@cisco.com>
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+#pragma once
+
+#include "CC_Common.h"
+#include <bitset>
+#include <set>
+#include <vector>
+
+extern "C"
+{
+#include "ccapi_types.h"
+}
+
+namespace CSF
+{
+    class ECC_API CC_LineInfo
+    {
+    protected:
+        CC_LineInfo() { }
+
+    public:
+        //Base class needs dtor to be declared as virtual
+        virtual ~CC_LineInfo() {};
+
+        /**
+           Get the line Name
+
+           @return string - line Name
+         */
+        virtual std::string getName() = 0;
+
+        /**
+           Get the line DN Number
+           @return string - line DN
+         */
+        virtual std::string getNumber() = 0;
+
+        /**
+           Get the physical button number on which this line is configured
+
+           @return cc_uint32_t - button number
+         */
+        virtual cc_uint32_t getButton() = 0;
+
+        /**
+           Get the Line Type
+
+           @return cc_line_feature_t - line featureID ( Line )
+         */
+        virtual cc_line_feature_t getLineType() = 0;
+
+        /**
+
+           @return bool - true if phone is currently registered with CM.
+         */
+        virtual bool getRegState() = 0;
+
+        /**
+           Get the CFWDAll status for the line
+
+           @return bool - isForwarded
+         */
+        virtual bool isCFWDActive() = 0;
+
+        /**
+           Get the CFWDAll destination
+
+           @return string - cfwd target
+         */
+        virtual std::string getCFWDName() = 0;
+
+        /**
+           Get calls on line
+           
+           @param [in] line - line
+           @return vector<CC_CallPtr>
+         */
+        virtual std::vector<CC_CallPtr> getCalls (CC_LinePtr linePtr) = 0;
+
+        /**
+           Get calls on line by state
+
+           @param [in] line - line
+           @param [in] state - state
+           
+           @return vector<CC_CallPtr>
+         */
+        virtual std::vector<CC_CallPtr> getCallsByState (CC_LinePtr linePtr, cc_call_state_t state) = 0;
+
+        /**
+           Get the MWI Status
+
+           @return cc_uint32_t - MWI status (boolean 0 => no MWI)
+         */
+        virtual bool getMWIStatus() = 0;
+
+        /**
+           Get the MWI Type
+           
+           @return cc_uint32_t - MWI Type
+         */
+        virtual cc_uint32_t getMWIType() = 0;
+
+        /**
+           Get the MWI new msg count
+
+           @return cc_uint32_t - MWI new msg count
+         */
+        virtual cc_uint32_t getMWINewMsgCount() = 0;
+
+        /**
+           Get the MWI old msg count
+           
+           @return cc_uint32_t - MWI old msg count
+         */
+        virtual cc_uint32_t getMWIOldMsgCount() = 0;
+
+        /**
+           Get the MWI high priority new msg count
+           
+           @return cc_uint32_t - MWI new msg count
+         */
+        virtual cc_uint32_t getMWIPrioNewMsgCount() = 0;
+
+        /**
+           Get the MWI high priority old msg count
+
+           @return cc_uint32_t - MWI old msg count
+         */
+        virtual cc_uint32_t getMWIPrioOldMsgCount() = 0;
+
+        /**
+           has capability - is the feature allowed
+
+           @param [in] capability - capability being queried to see if it's available
+           @return bool - is Allowed
+         */
+        virtual bool hasCapability(ccapi_call_capability_e capability) = 0;
+
+        /**
+           get Allowed Feature set
+
+           @return cc_return_t - bitset of Line Capabilities.
+         */
+        virtual std::bitset<CCAPI_CALL_CAP_MAX> getCapabilitySet() = 0;
+    };
+};
new file mode 100644
--- /dev/null
+++ b/media/webrtc/signaling/include/CC_Observer.h
@@ -0,0 +1,63 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (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.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is the Cisco Systems SIP Stack.
+ *
+ * The Initial Developer of the Original Code is
+ * Cisco Systems (CSCO).
+ * Portions created by the Initial Developer are Copyright (C) 2002
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *  Enda Mannion <emannion@cisco.com>
+ *  Suhas Nandakumar <snandaku@cisco.com>
+ *  Ethan Hugg <ehugg@cisco.com>
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+#pragma once
+
+#include "CC_Common.h"
+
+extern "C"
+{
+#include "ccapi_types.h"
+}
+
+namespace CSF
+{
+	/**
+	 * These callbacks relate to the "core" Call Control API objects CC_Device, CC_Line and CC_Call.
+	 */
+    class ECC_API CC_Observer
+    {
+    public:
+        virtual void onDeviceEvent  ( ccapi_device_event_e deviceEvent, CC_DevicePtr device, CC_DeviceInfoPtr info ) = 0;
+        virtual void onFeatureEvent ( ccapi_device_event_e deviceEvent, CC_DevicePtr device, CC_FeatureInfoPtr feature_info) = 0;
+        virtual void onLineEvent    ( ccapi_line_event_e lineEvent,     CC_LinePtr line,     CC_LineInfoPtr info ) = 0;
+        virtual void onCallEvent    ( ccapi_call_event_e callEvent,     CC_CallPtr call,     CC_CallInfoPtr infog, char* sdp ) = 0;
+    };
+
+}
new file mode 100644
--- /dev/null
+++ b/media/webrtc/signaling/include/CC_Service.h
@@ -0,0 +1,122 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (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.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is the Cisco Systems SIP Stack.
+ *
+ * The Initial Developer of the Original Code is
+ * Cisco Systems (CSCO).
+ * Portions created by the Initial Developer are Copyright (C) 2002
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *  Enda Mannion <emannion@cisco.com>
+ *  Suhas Nandakumar <snandaku@cisco.com>
+ *  Ethan Hugg <ehugg@cisco.com>
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+#pragma once
+
+#include "CC_Common.h"
+#include "CC_Observer.h"
+
+#include <vector>
+
+extern "C"
+{
+#include "ccapi_types.h"
+#include "ccapi_service.h"
+}
+
+namespace CSF
+{
+    class ECC_API CC_Service
+    {
+    protected:
+    	CC_Service() {}
+    public:
+        virtual ~CC_Service() {};
+
+    public:
+        /**
+         * Clients use CC_Observer to receive CCAPI events (Device, Line, Call) from the service.
+         */
+        virtual void addCCObserver ( CC_Observer * observer ) = 0;
+        virtual void removeCCObserver ( CC_Observer * observer ) = 0;
+
+        /**
+         * Use init() immediately on creating the service, and destroy() when finished with it.
+         * password is required for Asterisk not CUCM.
+         * deviceName is required for CUCM not Asterisk.
+         */
+        virtual bool init(const std::string& user, const std::string& password, const std::string& domain, const std::string& deviceName) = 0;
+        virtual void destroy() = 0;
+
+        /**
+         * TODO: Set config parameters prior to starting the service.
+         *		 Need to design a nice abstraction for this accommodating SIPCC and CTI.
+         */
+
+        /**
+         * Use start() to attempt to register for a device and stop() to cancel a current
+         * registration (or registration attempt).
+         */
+        virtual bool startService() = 0;
+        virtual void stop() = 0;
+
+
+        /**
+         * Check on the current status/health of the service.
+         */
+        virtual bool isStarted() = 0;
+
+        /**
+         * Obtain the currently selected Device.
+         * If multiple devices are discoverable (i.e. in CTI), all known devices will appear
+         *   in getDevices(), but only the ActiveDevice will be controllable at any given time.
+         */
+        virtual CC_DevicePtr getActiveDevice() = 0;
+        virtual std::vector<CC_DevicePtr> getDevices() = 0;
+
+        /**
+         * Global settings for audio and video control.  Return NULL if Media control is not
+         * available in this implementation.  Return NULL in any case if media is not yet
+         * initialized.
+         * TODO: Assuming for now that media init aligns with init/destroy.
+         */
+        virtual AudioControlPtr getAudioControl() = 0;
+        virtual VideoControlPtr getVideoControl() = 0;
+
+        virtual bool setLocalVoipPort(int port) = 0;
+        virtual bool setRemoteVoipPort(int port) = 0;
+        virtual bool setP2PMode(bool mode) = 0;
+        virtual bool setROAPProxyMode(bool mode) = 0;
+        virtual bool setROAPClientMode(bool mode) = 0;
+
+    private:
+        CC_Service(const CC_Service& rhs);
+        CC_Service& operator=(const CC_Service& rhs);
+    };
+}
new file mode 100644
--- /dev/null
+++ b/media/webrtc/signaling/include/CSFAudioControl.h
@@ -0,0 +1,69 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (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.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is the Cisco Systems SIP Stack.
+ *
+ * The Initial Developer of the Original Code is
+ * Cisco Systems (CSCO).
+ * Portions created by the Initial Developer are Copyright (C) 2002
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *  Enda Mannion <emannion@cisco.com>
+ *  Suhas Nandakumar <snandaku@cisco.com>
+ *  Ethan Hugg <ehugg@cisco.com>
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+#pragma once
+
+#include "CC_Common.h"
+
+namespace CSF
+{
+	DECLARE_PTR(AudioControl);
+	class ECC_API AudioControl
+	{
+	public:
+		// device names are in UTF-8 encoding
+
+		virtual std::vector<std::string> getRecordingDevices() = 0;
+		virtual std::vector<std::string> getPlayoutDevices() = 0;
+
+		virtual std::string getRecordingDevice() = 0;
+		virtual std::string getPlayoutDevice() = 0;
+
+		virtual bool setRecordingDevice( const std::string& name ) = 0;
+		virtual bool setPlayoutDevice( const std::string& name ) = 0;
+
+        virtual bool setDefaultVolume( int ) = 0;
+        virtual int getDefaultVolume() = 0;
+
+        virtual bool setRingerVolume( int ) = 0;
+        virtual int getRingerVolume() = 0;
+
+        virtual ~AudioControl(){};
+	};
+};
new file mode 100644
--- /dev/null
+++ b/media/webrtc/signaling/include/CSFVideoControl.h
@@ -0,0 +1,67 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (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.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is the Cisco Systems SIP Stack.
+ *
+ * The Initial Developer of the Original Code is
+ * Cisco Systems (CSCO).
+ * Portions created by the Initial Developer are Copyright (C) 2002
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *  Enda Mannion <emannion@cisco.com>
+ *  Suhas Nandakumar <snandaku@cisco.com>
+ *  Ethan Hugg <ehugg@cisco.com>
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+#pragma once
+
+#include "CC_Common.h"
+#include "ECC_Types.h"
+
+#include <string>
+#include <vector>
+
+namespace CSF
+{
+	DECLARE_PTR(VideoControl);
+	class ECC_API VideoControl
+	{
+	public:
+		virtual void setVideoMode( bool enable ) = 0;
+
+		// window type is platform-specific
+		virtual void setPreviewWindow( VideoWindowHandle window, int top, int left, int bottom, int right, RenderScaling style ) = 0;
+		virtual void showPreviewWindow( bool show ) = 0;
+
+		// device names are in UTF-8 encoding
+		virtual std::vector<std::string> getCaptureDevices() = 0;
+
+		virtual std::string getCaptureDevice() = 0;
+		virtual bool setCaptureDevice( const std::string& name ) = 0;
+	};
+
+}; // namespace
new file mode 100755
--- /dev/null
+++ b/media/webrtc/signaling/include/CallControlManager.h
@@ -0,0 +1,167 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (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.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is the Cisco Systems SIP Stack.
+ *
+ * The Initial Developer of the Original Code is
+ * Cisco Systems (CSCO).
+ * Portions created by the Initial Developer are Copyright (C) 2002
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *  Enda Mannion <emannion@cisco.com>
+ *  Suhas Nandakumar <snandaku@cisco.com>
+ *  Ethan Hugg <ehugg@cisco.com>
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+#pragma once
+
+#include "CC_Common.h"
+
+#include "CC_Observer.h"
+#include "ECC_Observer.h"
+#include "ECC_Types.h"
+
+#include <string>
+#include <vector>
+
+/**
+ *  @mainpage Enhanced Call Control
+ *
+ *  @section intro_sec Introduction
+ *  This wraps and aggregates the SIPCC and CTI call control stacks, media stacks, and various additional
+ *  components and glue necessary to start, configure and run them, and presents a high-level C++ API
+ *  for connection, device selection and status, and call control.
+ *
+ *  @section main_outline Outline
+ *  @li The main entry point is CSF::CallControlManager, which is used to configure and start a
+ *  	call control stack.
+ *  @li Configuration and events are raised to the CSF::ECC_Observer interface.
+ *  @li Call Control is performed via CSF::CC_Device, CSF::CC_Line and CSF::CC_Call.
+ *  @li Call Control events are raised to the CSF::CC_Observer interface.
+ *  @li Audio/Video device selection and global media configuration is performed via CSF::AudioControl
+ *      and CSF::VideoControl.  Per-call media operations (mute, volume, etc) are integrated onto
+ *      the CSF::CC_Call and CSF::CC_CallInfo interfaces.
+ */
+
+namespace CSF
+{
+	DECLARE_PTR(CallControlManager);
+	/**
+	 * CallControlManager
+	 *
+	 * The class is partitioned into several blocks of functionality:
+	 * - Create/Destroy - Initialisation and clean shutdown.
+	 * 					  Destroy is optional if the destructor is used properly.
+	 * - Observer - Register for events when any state changes.  Optional but strongly advised.
+	 *
+	 * Methods are generally synchronous (at present).
+	 */
+    class ECC_API CallControlManager
+    {
+    public:
+		/**
+		 *  Use create() to create a CallControlManager instance.
+		 *
+		 *  CallControlManager cleans up its resources in its destructor, implicitly disconnect()in if required.
+		 *  Use the destroy() method if you need to force a cleanup earlier.  It is a bad idea to continue using
+		 *  CallControlManager or any of its related objects after destroy().
+		 */
+        static CallControlManagerPtr create();
+        virtual bool destroy() = 0;
+
+        virtual ~CallControlManager();
+
+        /**
+           CC_Observer is for core call control events (on CC_Device, CC_Line and CC_Call).
+           ECC_Observer is for "value add" features of CallControlManager.
+
+           Client can add multiple observers if they have different Observer objects that handle
+           different event scenarios, but generally it's probably sufficient to only register one observer.
+
+           @param[in] observer - This is a pointer to a CC_Observer-derived class that the client
+                                 must instantiate to receive notifications on this client object.
+         */
+        virtual void addCCObserver ( CC_Observer * observer ) = 0;
+        virtual void removeCCObserver ( CC_Observer * observer ) = 0;
+
+        virtual void addECCObserver ( ECC_Observer * observer ) = 0;
+        virtual void removeECCObserver ( ECC_Observer * observer ) = 0;
+
+        virtual void setMultiClusterMode(bool allowMultipleClusters) = 0;
+        virtual void setSIPCCLoggingMask(const cc_int32_t mask) = 0;
+        virtual void setAuthenticationString(const std::string &authString) = 0;
+        virtual void setSecureCachePath(const std::string &secureCachePath) = 0;
+
+        /**
+         * For now, recovery is not implemented.
+         * setLocalIpAddressAndGateway must be called before connect()ing in softphone mode.
+         */
+        virtual void setLocalIpAddressAndGateway(const std::string& localIpAddress, const std::string& defaultGW) = 0;
+
+        virtual bool registerUser(const std::string& deviceName, const std::string& user, const std::string& password, const std::string& domain) = 0;
+        virtual bool disconnect() = 0;
+        virtual std::string getPreferredDeviceName() = 0;
+        virtual std::string getPreferredLineDN() = 0;
+        virtual ConnectionStatusEnum::ConnectionStatus getConnectionStatus() = 0;
+        virtual std::string getCurrentServer() = 0;
+
+        /* P2P API */
+        virtual bool startP2PMode(const std::string& user) = 0;
+
+        /* ROAP Proxy Mode */
+        virtual bool startROAPProxy( const std::string& deviceName, const std::string& user, const std::string& password, const std::string& domain ) = 0;
+
+        /**
+         * Obtain the device object, from which call control can be done.
+         * getAvailablePhoneDetails lists all known devices which the user is likely to be able to control.
+         */
+        virtual CC_DevicePtr getActiveDevice() = 0;
+        virtual PhoneDetailsVtrPtr getAvailablePhoneDetails() = 0;
+        virtual PhoneDetailsPtr getAvailablePhoneDetails(const std::string& deviceName) = 0;
+
+        /**
+         * Obtain the audio/video object, from which video setup can be done.
+         * This relates to global tuning, device selection, preview window positioning, etc, not to
+         * per-call settings or control.
+         *
+         * These objects are unavailable except while in softphone mode.
+         */
+        virtual VideoControlPtr getVideoControl() = 0;
+        virtual AudioControlPtr getAudioControl() = 0;
+
+        virtual bool setProperty(ConfigPropertyKeysEnum::ConfigPropertyKeys key, std::string& value) = 0;
+        virtual std::string getProperty(ConfigPropertyKeysEnum::ConfigPropertyKeys key) = 0;
+
+    protected:
+        CallControlManager() {}
+    private:
+        CallControlManager(const CallControlManager&);
+        CallControlManager& operator=(const CallControlManager&);
+    };
+
+
+};//end namespace CSF
new file mode 100644
--- /dev/null
+++ b/media/webrtc/signaling/include/ECC_Observer.h
@@ -0,0 +1,62 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (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.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is the Cisco Systems SIP Stack.
+ *
+ * The Initial Developer of the Original Code is
+ * Cisco Systems (CSCO).
+ * Portions created by the Initial Developer are Copyright (C) 2002
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *  Enda Mannion <emannion@cisco.com>
+ *  Suhas Nandakumar <snandaku@cisco.com>
+ *  Ethan Hugg <ehugg@cisco.com>
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+#pragma once
+
+#include "CC_Common.h"
+#include "ECC_Types.h"
+
+namespace CSF
+{
+	/**
+	 * These callbacks relate to CallControlManager's "value add" features relating to authentication,
+	 * configuration, setup, service health and management of SIP.
+	 *
+	 * They do not relate to call control - see also CC_Observer.
+	 */
+	class ECC_API ECC_Observer
+	{
+	public:
+		virtual void onAvailablePhoneEvent (AvailablePhoneEventType::AvailablePhoneEvent event,
+											const PhoneDetailsPtr availablePhoneDetails) = 0;
+
+		virtual void onAuthenticationStatusChange (AuthenticationStatusEnum::AuthenticationStatus) = 0;
+		virtual void onConnectionStatusChange(ConnectionStatusEnum::ConnectionStatus status) = 0;
+	};
+};
new file mode 100755
--- /dev/null
+++ b/media/webrtc/signaling/include/ECC_Types.h
@@ -0,0 +1,186 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (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.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is the Cisco Systems SIP Stack.
+ *
+ * The Initial Developer of the Original Code is
+ * Cisco Systems (CSCO).
+ * Portions created by the Initial Developer are Copyright (C) 2002
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *  Enda Mannion <emannion@cisco.com>
+ *  Suhas Nandakumar <snandaku@cisco.com>
+ *  Ethan Hugg <ehugg@cisco.com>
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+#pragma once
+
+#include "CC_Common.h"
+
+/*
+  These #defines are for use with CallControlManager::createSoftphone(..., const cc_int32_t mask) parameter as follows:
+
+  CallControlManager::createSoftphone(..., GSM_DEBUG_BIT | FIM_DEBUG_BIT | LSM_DEBUG_BIT );
+
+  This turns on debugging for the three areas (and disables logging in all other areas) of pSIPCC logging specified.
+
+*/
+
+#define SIP_DEBUG_MSG_BIT         (1 <<  0) // Bit 0
+#define SIP_DEBUG_STATE_BIT       (1 <<  1) // Bit 1
+#define SIP_DEBUG_TASK_BIT        (1 <<  2) // Bit 2
+#define SIP_DEBUG_REG_STATE_BIT   (1 <<  3) // Bit 3
+#define GSM_DEBUG_BIT             (1 <<  4) // Bit 4
+#define FIM_DEBUG_BIT             (1 <<  5) // Bit 5
+#define LSM_DEBUG_BIT             (1 <<  6) // Bit 6
+#define FSM_DEBUG_SM_BIT          (1 <<  7) // Bit 7
+#define CSM_DEBUG_SM_BIT          (1 <<  8) // Bit 8
+#define CC_DEBUG_BIT              (1 <<  9) // Bit 9
+#define CC_DEBUG_MSG_BIT          (1 << 10) // Bit 10
+#define AUTH_DEBUG_BIT            (1 << 11) // Bit 11
+#define CONFIG_DEBUG_BIT          (1 << 12) // Bit 12
+#define DPINT_DEBUG_BIT           (1 << 13) // Bit 13
+#define KPML_DEBUG_BIT            (1 << 15) // Bit 15
+#define VCM_DEBUG_BIT             (1 << 17) // Bit 17
+#define CC_APP_DEBUG_BIT          (1 << 18) // Bit 18
+#define CC_LOG_DEBUG_BIT          (1 << 19) // Bit 19
+#define TNP_DEBUG_BIT             (1 << 20) // Bit 20
+
+namespace CSFUnified
+{
+    DECLARE_PTR(DeviceInfo);
+};
+
+namespace CSF
+{
+	namespace AuthenticationFailureCodeType
+	{
+		typedef enum {
+			eNoError,
+			eNoServersConfigured,
+			eNoCredentialsConfigured,
+			eCouldNotConnect,
+			eServerCertificateRejected,
+			eCredentialsRejected,
+			eResponseEmpty,
+			eResponseInvalid
+		} AuthenticationFailureCode;
+		std::string ECC_API toString(AuthenticationFailureCode value);
+	}
+
+	namespace AuthenticationStatusEnum
+	{
+		typedef enum {
+			eNotAuthenticated,
+			eInProgress,
+			eAuthenticated,
+			eFailed
+		} AuthenticationStatus;
+		std::string ECC_API toString(AuthenticationStatus value);
+	}
+
+	namespace DeviceRetrievalFailureCodeType
+	{
+		typedef enum {
+			eNoError,
+			eNoServersConfigured,
+			eNoDeviceNameConfigured,
+			eCouldNotConnect,
+			eFileNotFound,
+			eFileEmpty,
+			eFileInvalid
+		} DeviceRetrievalFailureCode;
+		std::string ECC_API toString(DeviceRetrievalFailureCode value);
+	};
+
+    namespace ConnectionStatusEnum
+    {
+    	typedef enum {
+    		eIdle,
+    		eNone,
+    		eFetchingDeviceConfig,
+    		eRegistering,
+    		eReady,
+    		eConnectedButNoDeviceReady,
+    		eRetrying,
+    		eFailed
+    	} ConnectionStatus;
+		std::string ECC_API toString(ConnectionStatus value);
+    };
+
+	namespace ServiceStateType {
+		typedef enum
+		{
+			eUnknown,
+			eInService,
+			eOutOfService
+		} ServiceState;
+		std::string ECC_API toString(ServiceState value);
+	};
+
+	namespace AvailablePhoneEventType
+	{
+		typedef enum {
+			eFound,		// New Phone device discovered and added to the Available list.
+			eUpdated,	// Change to an existing Phone details record in the Available list.
+			eLost		// Phone device removed from the Available list.
+		} AvailablePhoneEvent;
+		std::string ECC_API toString(AvailablePhoneEvent value);
+	};
+
+	namespace ConfigPropertyKeysEnum
+	{
+		typedef enum {
+			eLocalVoipPort,
+			eRemoteVoipPort,
+			eVersion,
+			eTransport
+		} ConfigPropertyKeys;
+	}
+
+	typedef enum
+	{
+		VideoEnableMode_DISABLED,
+		VideoEnableMode_SENDONLY,
+		VideoEnableMode_RECVONLY,
+		VideoEnableMode_SENDRECV
+
+	} VideoEnableMode;
+
+	typedef enum				// scaling from codec size to render window size
+	{
+		RenderScaling_NONE,		// 1:1 actual pixels, crop and/or fill
+		RenderScaling_TO_FIT,	// scale to fit, without preserving aspect ratio
+		RenderScaling_BORDER,	// scale to fit, fill without cropping
+		RenderScaling_CROP		// scale to fit, crop without filling
+
+	} RenderScaling;
+
+    typedef void *VideoWindowHandle;
+	typedef void* ExternalRendererHandle;
+	typedef unsigned int VideoFormat;	
+};
new file mode 100644
--- /dev/null
+++ b/media/webrtc/signaling/include/PhoneDetails.h
@@ -0,0 +1,93 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (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.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is the Cisco Systems SIP Stack.
+ *
+ * The Initial Developer of the Original Code is
+ * Cisco Systems (CSCO).
+ * Portions created by the Initial Developer are Copyright (C) 2002
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *  Enda Mannion <emannion@cisco.com>
+ *  Suhas Nandakumar <snandaku@cisco.com>
+ *  Ethan Hugg <ehugg@cisco.com>
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+#pragma once
+
+#include <string>
+
+#include "CC_Common.h"
+#include "ECC_Types.h"
+
+namespace CSF
+{
+	DECLARE_PTR_VECTOR(PhoneDetails);
+	class ECC_API PhoneDetails
+	{
+	public:
+		virtual ~PhoneDetails() {}
+		/**
+		 * Get the device name (the CUCM device name) and the free text description.
+		 */
+		virtual std::string getName() const = 0;
+		virtual std::string getDescription() const = 0;
+
+		/**
+		 * Get the model number (the internal CUCM number, not the number printed on the phone)
+		 * and the corresponding description (which normally does include the number printed on the phone).
+		 * Returns -1, "" if unknown
+		 */
+		virtual int getModel() const = 0;
+		virtual std::string getModelDescription() const = 0;
+
+		virtual bool isSoftPhone() = 0;
+
+		/**
+		 * List the known directory numbers of lines associated with the device.
+		 * Empty list if unknown.
+		 */
+		virtual std::vector<std::string> getLineDNs() const = 0;
+
+		/**
+		 * Current status of the device, if known.
+		 */
+		virtual ServiceStateType::ServiceState getServiceState() const = 0;
+
+		/**
+		 * TFTP config of device, and freshness of the config.
+		 */
+		virtual std::string getConfig() const = 0;
+
+	protected:
+		PhoneDetails() {}
+
+	private:
+		PhoneDetails(const PhoneDetails&);
+		PhoneDetails& operator=(const PhoneDetails&);
+	};
+};
new file mode 100644
--- /dev/null
+++ b/media/webrtc/signaling/include/SharedPtr.h
@@ -0,0 +1,63 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (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.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is the Cisco Systems SIP Stack.
+ *
+ * The Initial Developer of the Original Code is
+ * Cisco Systems (CSCO).
+ * Portions created by the Initial Developer are Copyright (C) 2002
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *  Enda Mannion <emannion@cisco.com>
+ *  Suhas Nandakumar <snandaku@cisco.com>
+ *  Ethan Hugg <ehugg@cisco.com>
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+#pragma once
+
+#include <vector>
+#include "base/linked_ptr.h"
+
+
+#ifndef DECLARE_PTR
+#define DECLARE_PTR(className)\
+    class className;\
+    typedef linked_ptr<className> className##Ptr;
+#endif
+
+
+#ifndef DECLARE_PTR_VECTOR
+#define DECLARE_PTR_VECTOR(className)\
+    DECLARE_PTR(className);\
+    typedef std::vector<className##Ptr> className##Vtr;\
+    typedef linked_ptr<className##Vtr> className##Vtr##Ptr
+#endif
+
+
+#ifndef NULL_PTR
+#define NULL_PTR(className) linked_ptr<className>()
+#endif
new file mode 100644
--- /dev/null
+++ b/media/webrtc/signaling/include/debug-psipcc-types.h
@@ -0,0 +1,88 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (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.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is the Cisco Systems SIP Stack.
+ *
+ * The Initial Developer of the Original Code is
+ * Cisco Systems (CSCO).
+ * Portions created by the Initial Developer are Copyright (C) 2002
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *  Enda Mannion <emannion@cisco.com>
+ *  Suhas Nandakumar <snandaku@cisco.com>
+ *  Ethan Hugg <ehugg@cisco.com>
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+#ifndef T1_DEBUG_H
+#define T1_DEBUG_H
+
+#include "CC_Common.h"
+
+extern "C"
+{
+#include <ccapi_service.h>
+#include "ccapi_types.h"
+
+ECC_API cc_string_t device_event_getname(ccapi_device_event_e);
+ECC_API cc_string_t call_event_getname(ccapi_call_event_e);
+ECC_API cc_string_t line_event_getname(ccapi_line_event_e);
+
+ECC_API cc_string_t digit_getname(cc_digit_t);
+ECC_API cc_string_t cucm_mode_getname(cc_cucm_mode_t);
+ECC_API cc_string_t line_feature_getname(cc_line_feature_t);
+ECC_API cc_string_t feature_option_mask_getname(cc_feature_option_mask_t);
+ECC_API cc_string_t service_cause_getname(cc_service_cause_t);
+ECC_API cc_string_t service_state_getname(cc_service_state_t);
+ECC_API cc_string_t ccm_status_getname(cc_ccm_status_t);
+ECC_API cc_string_t line_reg_state_getname(cc_line_reg_state_t);
+ECC_API cc_string_t shutdown_reason_getname(cc_shutdown_reason_t);
+ECC_API cc_string_t kpml_config_getname(cc_kpml_config_t);
+ECC_API cc_string_t upgrade_getname(cc_upgrade_t);
+ECC_API cc_string_t sdp_direction_getname(cc_sdp_direction_t);
+ECC_API cc_string_t blf_state_getname(cc_blf_state_t);
+ECC_API cc_string_t blf_feature_mask_getname(cc_blf_feature_mask_t);
+ECC_API cc_string_t call_state_getname(cc_call_state_t);
+ECC_API cc_string_t call_attr_getname(cc_call_attr_t);
+ECC_API cc_string_t hold_reason_getname(cc_hold_reason_t);
+ECC_API cc_string_t call_type_getname(cc_call_type_t);
+ECC_API cc_string_t call_security_getname(cc_call_security_t);
+ECC_API cc_string_t call_policy_getname(cc_call_policy_t);
+ECC_API cc_string_t log_disposition_getname(cc_log_disposition_t);
+ECC_API cc_string_t call_priority_getname(cc_call_priority_t);
+ECC_API cc_string_t call_selection_getname(cc_call_selection_t);
+ECC_API cc_string_t call_capability_getname(ccapi_call_capability_e);
+ECC_API cc_string_t srv_ctrl_req_getname(cc_srv_ctrl_req_t);
+ECC_API cc_string_t srv_ctrl_cmd_getname(cc_srv_ctrl_cmd_t);
+ECC_API cc_string_t message_type_getname(cc_message_type_t);
+ECC_API cc_string_t lamp_state_getname(cc_lamp_state_t);
+ECC_API cc_string_t cause_getname(cc_cause_t);
+ECC_API cc_string_t subscriptions_ext_getname(cc_subscriptions_ext_t);
+ECC_API cc_string_t apply_config_result_getname(cc_apply_config_result_t);
+
+}
+
+#endif /* T1_DEBUG_H */
new file mode 100644
--- /dev/null
+++ b/media/webrtc/signaling/signaling.gyp
@@ -0,0 +1,767 @@
+# Copyright (c) 2011 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+#
+# Indent 2 spaces, no tabs.
+#
+#
+# sip.gyp - a library for SIP
+#
+
+{
+  'variables': {
+    'chromium_code': 1,
+  },
+  
+  'targets': [
+  
+    #
+    # ECC
+    #
+    {
+      'target_name': 'ecc',
+      'type': 'static_library',
+
+      #
+      # INCLUDES
+      #
+      'include_dirs': [
+        '..',
+        './src',
+        './src/callcontrol',
+        './src/common',
+        './src/common/browser_logging',
+        './src/media',
+        './src/softphonewrapper',
+        './include',
+        './src/sipcc/include',
+        './src/sipcc/cpr/include',
+        '../../../nsprpub/pr/include',
+        '../../../ipc/chromium/src',
+        '../../../ipc/chromium/src/base/third_party/nspr',
+        '../../../xpcom/base',
+        '$(DEPTH)/dist/include',
+        '../trunk/src',
+        '../trunk/src/video_engine/include',
+        '../trunk/src/voice_engine/main/interface',
+      ],	
+	  
+      #
+      # DEPENDENCIES
+      #
+      'dependencies': [
+      ],
+
+      'export_dependent_settings': [
+      ],
+      
+      
+      #
+      # SOURCES
+      #
+      'sources': [
+        # Common
+        './src/common/CommonTypes.h',
+        './src/common/csf_common.h',
+        './src/common/NullDeleter.h',
+        './src/common/Wrapper.h',
+        # Browser Logging
+        './src/common/browser_logging/CSFLog.cpp',
+        './src/common/browser_logging/CSFLog.h',
+        # Call Control
+        './src/callcontrol/CC_CallTypes.cpp',
+        './src/callcontrol/CallControlManager.cpp',
+        './src/callcontrol/CallControlManagerImpl.cpp',
+        './src/callcontrol/ECC_Types.cpp',
+        './src/callcontrol/PhoneDetailsImpl.cpp',
+        './src/callcontrol/debug-psipcc-types.cpp',
+        './src/callcontrol/CallControlManagerImpl.h',
+        './src/callcontrol/PhoneDetailsImpl.h',
+        # Media
+        './src/media/CSFAudioControlWrapper.cpp',
+        './src/media/CSFVideoControlWrapper.cpp',
+        './src/media/VcmSIPCCBinding.cpp',
+        './src/media/cip_mmgr_mediadefinitions.h',
+        './src/media/cip_Sipcc_CodecMask.h',
+        './src/media/CSFAudioControlWrapper.h',
+        './src/media/CSFAudioTermination.h',
+        './src/media/CSFMediaProvider.h',
+        './src/media/CSFMediaTermination.h',
+        './src/media/CSFToneDefinitions.h',
+        './src/media/CSFVideoCallMediaControl.h',
+        './src/media/CSFVideoControlWrapper.h',
+        './src/media/CSFVideoTermination.h',
+        './src/media/webrtc/WebrtcAudioCodecSelector.cpp',
+        './src/media/webrtc/WebrtcAudioProvider.cpp',
+        './src/media/webrtc/WebrtcMediaProvider.cpp',
+        './src/media/webrtc/WebrtcRingGenerator.cpp',
+        './src/media/webrtc/WebrtcToneGenerator.cpp',
+        './src/media/webrtc/WebrtcVideoProvider.cpp',
+        './src/media/webrtc/WebrtcAudioCodecSelector.h',
+        './src/media/webrtc/WebrtcAudioProvider.h',
+        './src/media/webrtc/WebrtcMediaProvider.h',
+        './src/media/webrtc/WebrtcRingGenerator.h',
+        './src/media/webrtc/WebrtcToneGenerator.h',
+        './src/media/webrtc/WebrtcVideoProvider.h',
+        './src/media/webrtc/WebrtcLogging.h',
+        './src/media/VcmSIPCCBinding.h',
+        # SoftPhoneWrapper
+        './src/softphonewrapper/CC_SIPCCCall.cpp',
+        './src/softphonewrapper/CC_SIPCCCallInfo.cpp',
+        './src/softphonewrapper/CC_SIPCCCallServerInfo.cpp',
+        './src/softphonewrapper/CC_SIPCCDevice.cpp',
+        './src/softphonewrapper/CC_SIPCCDeviceInfo.cpp',
+        './src/softphonewrapper/CC_SIPCCFeatureInfo.cpp',
+        './src/softphonewrapper/CC_SIPCCLine.cpp',
+        './src/softphonewrapper/CC_SIPCCLineInfo.cpp',
+        './src/softphonewrapper/CC_SIPCCService.cpp',
+        './src/softphonewrapper/ccapi_plat_api_impl.cpp',
+        './src/softphonewrapper/CC_SIPCCCall.h',
+        './src/softphonewrapper/CC_SIPCCCallInfo.h',
+        './src/softphonewrapper/CC_SIPCCCallServerInfo.h',
+        './src/softphonewrapper/CC_SIPCCDevice.h',
+        './src/softphonewrapper/CC_SIPCCDeviceInfo.h',
+        './src/softphonewrapper/CC_SIPCCFeatureInfo.h',
+        './src/softphonewrapper/CC_SIPCCLine.h',
+        './src/softphonewrapper/CC_SIPCCLineInfo.h',
+        './src/softphonewrapper/CC_SIPCCService.h',
+
+      ],
+    
+      #
+      # DEFINES
+      #
+      
+      'defines' : [
+        'LOG4CXX_STATIC', 
+        '_NO_LOG4CXX', 
+        'USE_SSLEAY', 
+        'LIBXML_STATIC', 
+        '_CPR_USE_EXTERNAL_LOGGER',
+   	'WEBRTC_RELATIVE_PATH',
+      	'HAVE_WEBRTC_VIDEO',
+        'HAVE_WEBRTC_VOICE',
+      ],
+
+      #
+      # OS SPECIFIC
+      #      
+      'conditions': [
+        ['OS=="linux"', {
+          'include_dirs': [
+          ],
+
+          'defines': [
+            'SIP_OS_LINUX',
+            '_GNU_SOURCE',
+            'LINUX', 
+            'GIPS_VER=3510', 
+            'SECLIB_OPENSSL',
+          ],
+          
+          'cflags': [
+            '-fexceptions',
+            '-fno-common',
+          ],
+        }],
+        ['OS=="win"', {
+          'include_dirs': [
+          ],		
+          'defines': [
+            'SIP_OS_WINDOWS',
+            'WIN32', 
+            'GIPS_VER=3480',
+            'SIPCC_BUILD'
+          ],
+          
+          'cflags': [
+          ],
+        }],
+        ['OS=="mac"', {
+          'include_dirs': [
+          ],
+          'defines': [
+            'SIP_OS_OSX',
+            'OSX', 
+            '_FORTIFY_SOURCE=2',
+          ],
+          
+          'cflags': [
+            '-fexceptions',
+            '-fno-common'
+          ],
+        }],
+      ],
+    },
+  
+    #
+    # SIPCC
+    #
+    {
+      'target_name': 'sipcc',
+      'type': 'static_library',
+    
+      #
+      # INCLUDES
+      #
+      'include_dirs': [
+        './src/common/browser_logging',
+        './src/sipcc/include',
+        './src/sipcc/core/includes',
+        './src/sipcc/cpr/include',
+        './src/sipcc/core/common',
+        './src/sipcc/core/sipstack/h',
+        './src/sipcc/core/ccapp',
+        './src/sipcc/core/sdp',
+        './src/sipcc/core/gsm/h',
+        './src/sipcc/plat/common',
+        '../../../nsprpub/pr/include',
+      ],
+      
+      #
+      # DEPENDENCIES
+      #
+      'dependencies': [
+      ],
+      
+      
+      'export_dependent_settings': [
+      ],
+      
+      
+      #
+      # SOURCES
+      #
+      'sources': [
+        # CCAPP
+        './src/sipcc/core/ccapp/call_logger.c',
+        './src/sipcc/core/ccapp/call_logger.h',
+        './src/sipcc/core/ccapp/capability_set.c',  
+        './src/sipcc/core/ccapp/capability_set.h',
+        './src/sipcc/core/ccapp/cc_blf.c',
+        './src/sipcc/core/ccapp/cc_call_feature.c',
+        './src/sipcc/core/ccapp/cc_config.c',
+        './src/sipcc/core/ccapp/cc_device_feature.c',
+        './src/sipcc/core/ccapp/cc_device_manager.c',
+        './src/sipcc/core/ccapp/cc_device_manager.h',
+        './src/sipcc/core/ccapp/cc_info.c',
+        './src/sipcc/core/ccapp/cc_service.c',
+        './src/sipcc/core/ccapp/ccapi_call.c',
+        './src/sipcc/core/ccapp/ccapi_call_info.c',
+        './src/sipcc/core/ccapp/ccapi_config.c',
+        './src/sipcc/core/ccapp/ccapi_device.c',
+        './src/sipcc/core/ccapp/ccapi_device_info.c',
+        './src/sipcc/core/ccapp/ccapi_feature_info.c',
+        './src/sipcc/core/ccapp/ccapi_line.c',
+        './src/sipcc/core/ccapp/ccapi_line_info.c',
+        './src/sipcc/core/ccapp/ccapi_service.c',
+        './src/sipcc/core/ccapp/ccapi_snapshot.c',
+        './src/sipcc/core/ccapp/ccapi_snapshot.h',
+        './src/sipcc/core/ccapp/ccapp_task.c',
+        './src/sipcc/core/ccapp/ccapp_task.h',
+        './src/sipcc/core/ccapp/ccprovider.c',
+        './src/sipcc/core/ccapp/CCProvider.h',
+        './src/sipcc/core/ccapp/conf_roster.c',
+        './src/sipcc/core/ccapp/conf_roster.h',
+        './src/sipcc/core/ccapp/sessionHash.c',
+        './src/sipcc/core/ccapp/sessionHash.h',
+        # COMMON
+        './src/sipcc/core/common/cfgfile_utils.c',
+        './src/sipcc/core/common/cfgfile_utils.h',
+        './src/sipcc/core/common/config_api.c',
+        './src/sipcc/core/common/config_parser.c',
+        './src/sipcc/core/common/config_parser.h',
+        './src/sipcc/core/common/init.c',
+        './src/sipcc/core/common/logger.c',
+        './src/sipcc/core/common/logger.h',
+        './src/sipcc/core/common/logmsg.h',
+        './src/sipcc/core/common/misc.c',
+        './src/sipcc/core/common/plat.c',
+        './src/sipcc/core/common/platform_api.c',
+        './src/sipcc/core/common/prot_cfgmgr_private.h',
+        './src/sipcc/core/common/prot_configmgr.c',
+        './src/sipcc/core/common/prot_configmgr.h',
+        './src/sipcc/core/common/resource_manager.c',
+        './src/sipcc/core/common/resource_manager.h',
+        './src/sipcc/core/common/sip_socket_api.c',
+        './src/sipcc/core/common/subscription_handler.c',
+        './src/sipcc/core/common/subscription_handler.h',
+        './src/sipcc/core/common/text_strings.c',
+        './src/sipcc/core/common/text_strings.h',
+        './src/sipcc/core/common/ui.c',
+        './src/sipcc/core/common/vcm_util.c',
+        './src/sipcc/core/common/xml_util.c',
+        # GSM
+        './src/sipcc/core/gsm/ccapi.c',
+        './src/sipcc/core/gsm/ccapi_strings.c',
+        './src/sipcc/core/gsm/dcsm.c',
+        './src/sipcc/core/gsm/fim.c',
+        './src/sipcc/core/gsm/fsm.c',
+        './src/sipcc/core/gsm/fsmb2bcnf.c',
+        './src/sipcc/core/gsm/fsmcac.c',
+        './src/sipcc/core/gsm/fsmcnf.c',
+        './src/sipcc/core/gsm/fsmdef.c',
+        './src/sipcc/core/gsm/fsmxfr.c',
+        './src/sipcc/core/gsm/gsm.c',
+        './src/sipcc/core/gsm/gsm_sdp.c',
+        './src/sipcc/core/gsm/gsm_sdp_crypto.c',
+        './src/sipcc/core/gsm/lsm.c',
+        './src/sipcc/core/gsm/media_cap_tbl.c',
+        './src/sipcc/core/gsm/sm.c',
+        './src/sipcc/core/gsm/subapi.c',
+        './src/sipcc/core/gsm/h/fim.h',
+        './src/sipcc/core/gsm/h/fsm.h',
+        './src/sipcc/core/gsm/h/gsm.h',
+        './src/sipcc/core/gsm/h/gsm_sdp.h',
+        './src/sipcc/core/gsm/h/lsm.h',
+        './src/sipcc/core/gsm/h/lsm_private.h',
+        './src/sipcc/core/gsm/h/sm.h',
+        # CORE INCLUDES
+        './src/sipcc/core/includes/ccSesion.h',
+        './src/sipcc/core/includes/ccapi.h',
+        './src/sipcc/core/includes/check_sync.h',
+        './src/sipcc/core/includes/ci.h',
+        './src/sipcc/core/includes/codec_mask.h',
+        './src/sipcc/core/includes/config.h',
+        './src/sipcc/core/includes/configapp.h',
+        './src/sipcc/core/includes/configmgr.h',
+        './src/sipcc/core/includes/debug.h',
+        './src/sipcc/core/includes/dialplan.h',
+        './src/sipcc/core/includes/dialplanint.h',
+        './src/sipcc/core/includes/digcalc.h',
+        './src/sipcc/core/includes/dns_utils.h',
+        './src/sipcc/core/includes/dtmf.h',
+        './src/sipcc/core/includes/embedded.h',
+        './src/sipcc/core/includes/intelpentiumtypes.h',
+        './src/sipcc/core/includes/kpml_common_util.h',
+        './src/sipcc/core/includes/kpmlmap.h',
+        './src/sipcc/core/includes/md5.h',
+        './src/sipcc/core/includes/memory.h',
+        './src/sipcc/core/includes/misc_apps_task.h',
+        './src/sipcc/core/includes/misc_util.h',
+        './src/sipcc/core/includes/phntask.h',
+        './src/sipcc/core/includes/phone.h',
+        './src/sipcc/core/includes/phone_debug.h',
+        './src/sipcc/core/includes/phone_platform_constants.h',
+        './src/sipcc/core/includes/phone_types.h',
+        './src/sipcc/core/includes/platform_api.h',
+        './src/sipcc/core/includes/pres_sub_not_handler.h',
+        './src/sipcc/core/includes/publish_int.h',
+        './src/sipcc/core/includes/regexp.h',
+        './src/sipcc/core/includes/ringlist.h',
+        './src/sipcc/core/includes/rtp_defs.h',
+        './src/sipcc/core/includes/session.h',
+        './src/sipcc/core/includes/sessionConstants.h',
+        './src/sipcc/core/includes/sessionTypes.h',
+        './src/sipcc/core/includes/sessuri.h',
+        './src/sipcc/core/includes/singly_link_list.h',
+        './src/sipcc/core/includes/sip_socket_api.h',
+        './src/sipcc/core/includes/sntp.h',
+        './src/sipcc/core/includes/string_lib.h',
+        './src/sipcc/core/includes/subapi.h',
+        './src/sipcc/core/includes/task.h',
+        './src/sipcc/core/includes/time2.h',
+        './src/sipcc/core/includes/timer.h',
+        './src/sipcc/core/includes/tnpphone.h',
+        './src/sipcc/core/includes/uart.h',
+        './src/sipcc/core/includes/uiapi.h',
+        './src/sipcc/core/includes/upgrade.h',
+        './src/sipcc/core/includes/util_ios_queue.h',
+        './src/sipcc/core/includes/util_parse.h',
+        './src/sipcc/core/includes/util_string.h',
+        './src/sipcc/core/includes/vcm_util.h',
+        './src/sipcc/core/includes/www.h',
+        './src/sipcc/core/includes/xml_defs.h',
+        './src/sipcc/core/includes/xml_util.h',
+        # SDP
+        './src/sipcc/core/sdp/ccsdp.c',
+        './src/sipcc/core/sdp/sdp_access.c',
+        './src/sipcc/core/sdp/sdp_attr.c',
+        './src/sipcc/core/sdp/sdp_attr_access.c',
+        './src/sipcc/core/sdp/sdp_base64.c',
+        './src/sipcc/core/sdp/sdp_config.c',
+        './src/sipcc/core/sdp/sdp_main.c',
+        './src/sipcc/core/sdp/sdp_token.c',
+        './src/sipcc/core/sdp/sdp.h',
+        './src/sipcc/core/sdp/sdp_base64.h',
+        './src/sipcc/core/sdp/sdp_os_defs.h',
+        './src/sipcc/core/sdp/sdp_private.h',
+        './src/sipcc/core/sdp/sdp_utils.c',
+        './src/sipcc/core/sdp/sdp_services_unix.c',
+        # SIPSTACK
+        './src/sipcc/core/sipstack/ccsip_callinfo.c',
+        './src/sipcc/core/sipstack/ccsip_cc.c',
+        './src/sipcc/core/sipstack/ccsip_common_util.c',
+        './src/sipcc/core/sipstack/ccsip_core.c',
+        './src/sipcc/core/sipstack/ccsip_debug.c',
+        './src/sipcc/core/sipstack/ccsip_info.c',
+        './src/sipcc/core/sipstack/ccsip_messaging.c',
+        './src/sipcc/core/sipstack/ccsip_platform.c',
+        './src/sipcc/core/sipstack/ccsip_platform_tcp.c',
+        './src/sipcc/core/sipstack/ccsip_platform_timers.c',
+        './src/sipcc/core/sipstack/ccsip_platform_tls.c',
+        './src/sipcc/core/sipstack/ccsip_platform_udp.c',
+        './src/sipcc/core/sipstack/ccsip_pmh.c',
+        './src/sipcc/core/sipstack/ccsip_publish.c',
+        './src/sipcc/core/sipstack/ccsip_register.c',
+        './src/sipcc/core/sipstack/ccsip_reldev.c',
+        './src/sipcc/core/sipstack/ccsip_sdp.c',
+        './src/sipcc/core/sipstack/ccsip_spi_utils.c',
+        './src/sipcc/core/sipstack/ccsip_subsmanager.c',
+        './src/sipcc/core/sipstack/ccsip_task.c',
+        './src/sipcc/core/sipstack/httpish.c',
+        './src/sipcc/core/sipstack/pmhutils.c',
+        './src/sipcc/core/sipstack/sip_common_regmgr.c',
+        './src/sipcc/core/sipstack/sip_common_transport.c',
+        './src/sipcc/core/sipstack/sip_csps_transport.c',
+        './src/sipcc/core/sipstack/sip_interface_regmgr.c',
+        './src/sipcc/core/sipstack/h/ccsip_callinfo.h',
+        './src/sipcc/core/sipstack/h/ccsip_cc.h',
+        './src/sipcc/core/sipstack/h/ccsip_common_cb.h',
+        './src/sipcc/core/sipstack/h/ccsip_core.h',
+        './src/sipcc/core/sipstack/h/ccsip_credentials.h',
+        './src/sipcc/core/sipstack/h/ccsip_macros.h',
+        './src/sipcc/core/sipstack/h/ccsip_messaging.h',
+        './src/sipcc/core/sipstack/h/ccsip_platform.h',
+        './src/sipcc/core/sipstack/h/ccsip_platform_tcp.h',
+        './src/sipcc/core/sipstack/h/ccsip_platform_timers.h',
+        './src/sipcc/core/sipstack/h/ccsip_platform_tls.h',
+        './src/sipcc/core/sipstack/h/ccsip_platform_udp.h',
+        './src/sipcc/core/sipstack/h/ccsip_pmh.h',
+        './src/sipcc/core/sipstack/h/ccsip_protocol.h',
+        './src/sipcc/core/sipstack/h/ccsip_publish.h',
+        './src/sipcc/core/sipstack/h/ccsip_register.h',
+        './src/sipcc/core/sipstack/h/ccsip_reldev.h',
+        './src/sipcc/core/sipstack/h/ccsip_sdp.h',
+        './src/sipcc/core/sipstack/h/ccsip_sim.h',
+        './src/sipcc/core/sipstack/h/ccsip_spi_utils.h',
+        './src/sipcc/core/sipstack/h/ccsip_subsmanager.h',
+        './src/sipcc/core/sipstack/h/ccsip_task.h',
+        './src/sipcc/core/sipstack/h/httpish.h',
+        './src/sipcc/core/sipstack/h/httpish_protocol.h',
+        './src/sipcc/core/sipstack/h/pmhdefs.h',
+        './src/sipcc/core/sipstack/h/pmhutils.h',
+        './src/sipcc/core/sipstack/h/regmgrapi.h',
+        './src/sipcc/core/sipstack/h/sip_ccm_transport.h',
+        './src/sipcc/core/sipstack/h/sip_common_regmgr.h',
+        './src/sipcc/core/sipstack/h/sip_common_transport.h',
+        './src/sipcc/core/sipstack/h/sip_csps_transport.h',
+        './src/sipcc/core/sipstack/h/sip_interface_regmgr.h',
+        './src/sipcc/core/sipstack/h/sip_platform_task.h',
+        # SRC-COMMON
+        './src/sipcc/core/src-common/configapp.c',
+        './src/sipcc/core/src-common/dialplan.c',
+        './src/sipcc/core/src-common/dialplanint.c',
+        './src/sipcc/core/src-common/digcalc.c',
+        './src/sipcc/core/src-common/kpml_common_util.c',
+        './src/sipcc/core/src-common/kpmlmap.c',
+        './src/sipcc/core/src-common/md5.c',
+        './src/sipcc/core/src-common/misc_apps_task.c',
+        './src/sipcc/core/src-common/pres_sub_not_handler.c',
+        './src/sipcc/core/src-common/publish_int.c',
+        './src/sipcc/core/src-common/singly_link_list.c',
+        './src/sipcc/core/src-common/sll_lite.c',
+        './src/sipcc/core/src-common/string_lib.c',
+        './src/sipcc/core/src-common/util_ios_queue.c',
+        './src/sipcc/core/src-common/util_parse.c',
+        './src/sipcc/core/src-common/util_string.c',
+        # CPR
+        './src/sipcc/cpr/include/cpr.h',
+        './src/sipcc/cpr/include/cpr_assert.h',
+        './src/sipcc/cpr/include/cpr_debug.h',
+        './src/sipcc/cpr/include/cpr_errno.h',
+        './src/sipcc/cpr/include/cpr_in.h',
+        './src/sipcc/cpr/include/cpr_ipc.h',
+        './src/sipcc/cpr/include/cpr_locks.h',
+        './src/sipcc/cpr/include/cpr_memory.h',
+        './src/sipcc/cpr/include/cpr_rand.h',
+        './src/sipcc/cpr/include/cpr_socket.h',
+        './src/sipcc/cpr/include/cpr_stddef.h',
+        './src/sipcc/cpr/include/cpr_stdio.h',
+        './src/sipcc/cpr/include/cpr_stdlib.h',
+        './src/sipcc/cpr/include/cpr_string.h',
+        './src/sipcc/cpr/include/cpr_strings.h',
+        './src/sipcc/cpr/include/cpr_threads.h',
+        './src/sipcc/cpr/include/cpr_time.h',
+        './src/sipcc/cpr/include/cpr_timers.h',
+        './src/sipcc/cpr/include/cpr_types.h',
+        # INCLUDE
+        './src/sipcc/include/cc_blf.h',
+        './src/sipcc/include/cc_blf_listener.h',
+        './src/sipcc/include/cc_call_feature.h',
+        './src/sipcc/include/cc_call_listener.h',
+        './src/sipcc/include/cc_config.h',
+        './src/sipcc/include/cc_constants.h',
+        './src/sipcc/include/cc_debug.h',
+        './src/sipcc/include/cc_device_feature.h',
+        './src/sipcc/include/cc_device_listener.h',
+        './src/sipcc/include/cc_info.h',
+        './src/sipcc/include/cc_info_listener.h',
+        './src/sipcc/include/cc_service.h',
+        './src/sipcc/include/cc_service_listener.h',
+        './src/sipcc/include/cc_types.h',
+        './src/sipcc/include/ccapi_call.h',
+        './src/sipcc/include/ccapi_call_info.h',
+        './src/sipcc/include/ccapi_call_listener.h',
+        './src/sipcc/include/ccapi_calllog.h',
+        './src/sipcc/include/ccapi_conf_roster.h',
+        './src/sipcc/include/ccapi_device.h',
+        './src/sipcc/include/ccapi_device_info.h',
+        './src/sipcc/include/ccapi_device_listener.h',
+        './src/sipcc/include/ccapi_feature_info.h',
+        './src/sipcc/include/ccapi_line.h',
+        './src/sipcc/include/ccapi_line_info.h',
+        './src/sipcc/include/ccapi_line_listener.h',
+        './src/sipcc/include/ccapi_service.h',
+        './src/sipcc/include/ccapi_types.h',
+        './src/sipcc/include/ccsdp.h',
+        './src/sipcc/include/config_api.h',
+        './src/sipcc/include/dns_util.h',
+        './src/sipcc/include/plat_api.h',
+        './src/sipcc/include/reset_api.h',
+        './src/sipcc/include/sll_lite.h',
+        './src/sipcc/include/vcm.h',
+        './src/sipcc/include/xml_parser.h',
+        './src/sipcc/include/xml_parser_defines.h',
+
+        # PLAT
+        # './src/sipcc/plat/common/plat_sec_api.c',
+        './src/sipcc/plat/common/libxml_parser.c',
+        './src/sipcc/plat/csf2g/model.c',
+        './src/sipcc/plat/csf2g/reset_api.c',
+        # 
+        # './src/sipcc/plat/common/plat_debug.h',
+        # './src/sipcc/plat/common/tnp_blf.h',
+
+        # STUB
+        #'./src/sipcc/stub/cc_blf_stub.c',
+        #'./src/sipcc/stub/vcm_stub.c',
+
+      ],
+
+      #
+      # DEFINES
+      #
+      
+      'defines' : [
+      ],
+
+      #
+      # OS SPECIFIC
+      #      
+      'conditions': [
+        ['OS=="linux"', {
+          'include_dirs': [
+            '/usr/include/libxml2',
+          ],
+
+          'sources': [
+            # SIPSTACK
+            './src/sipcc/core/sipstack/sip_platform_task.c',
+
+            # PLAT
+            './src/sipcc/plat/common/dns_utils.c',
+            './src/sipcc/plat/unix-common/random.c',
+            './src/sipcc/plat/linux/plat_api_stub.c',
+
+            # CPR
+            './src/sipcc/cpr/linux/cpr_linux_chunk.c',
+            './src/sipcc/cpr/linux/cpr_linux_errno.c',
+            './src/sipcc/cpr/linux/cpr_linux_init.c',
+            './src/sipcc/cpr/linux/cpr_linux_ipc.c',
+            './src/sipcc/cpr/linux/cpr_linux_locks.c',
+            './src/sipcc/cpr/linux/cpr_linux_memory.c',
+            './src/sipcc/cpr/linux/cpr_linux_socket.c',
+            './src/sipcc/cpr/linux/cpr_linux_stdio.c',
+            './src/sipcc/cpr/linux/cpr_linux_stdlib.c',
+            './src/sipcc/cpr/linux/cpr_linux_string.c',
+            './src/sipcc/cpr/linux/cpr_linux_threads.c',
+            './src/sipcc/cpr/linux/cpr_linux_timers_using_select.c', 
+        
+            './src/sipcc/cpr/linux/cpr_assert.h',
+            './src/sipcc/cpr/linux/cpr_linux_align.h',
+            './src/sipcc/cpr/linux/cpr_linux_assert.h',
+            './src/sipcc/cpr/linux/cpr_linux_chunk.h',
+            './src/sipcc/cpr/linux/cpr_linux_errno.h',
+            './src/sipcc/cpr/linux/cpr_linux_in.h',
+            './src/sipcc/cpr/linux/cpr_linux_ipc.h',
+            './src/sipcc/cpr/linux/cpr_linux_locks.h',
+            './src/sipcc/cpr/linux/cpr_linux_memory_api.h',
+            './src/sipcc/cpr/linux/cpr_linux_memory.h',
+            './src/sipcc/cpr/linux/cpr_linux_private.h',
+            './src/sipcc/cpr/linux/cpr_linux_rand.h',
+            './src/sipcc/cpr/linux/cpr_linux_socket.h',
+            './src/sipcc/cpr/linux/cpr_linux_stdio.h',
+            './src/sipcc/cpr/linux/cpr_linux_stdlib.h',
+            './src/sipcc/cpr/linux/cpr_linux_string.h',
+            './src/sipcc/cpr/linux/cpr_linux_strings.h',
+            './src/sipcc/cpr/linux/cpr_linux_time.h',
+            './src/sipcc/cpr/linux/cpr_linux_timers.h',
+            './src/sipcc/cpr/linux/cpr_linux_tst.h',
+            './src/sipcc/cpr/linux/cpr_linux_types.h',
+        
+          ],
+
+          'defines' : [
+            'SIP_OS_LINUX',
+            '_GNU_SOURCE',
+            'CPR_MEMORY_LITTLE_ENDIAN',
+            'NO_SOCKET_POLLING',
+            'USE_TIMER_SELECT_BASED',
+            'FULL_BUILD',
+            'STUBBED_OUT',
+            'USE_PRINTF'
+            'LINUX',
+          ],
+
+          'cflags': [
+            '-g',
+          ],
+        }],
+        ['OS=="win"', {
+          'include_dirs': [
+            './third_party/libxml2/include',
+          ],
+          
+          'sources': [
+            # SIPSTACK
+            './src/sipcc/core/sipstack/sip_platform_win32_task.c',
+            
+            # PLAT
+            './src/sipcc/plat/win32/dns_utils.c',
+            './src/sipcc/plat/win32/mystub.c',
+            './src/sipcc/plat/win32/plat_api_stub.c',
+            './src/sipcc/plat/win32/plat_api_win.c',
+            './src/sipcc/plat/win32/StdAfx.h',
+            
+            # CPR
+            './src/sipcc/cpr/win32/cpr_win_assert.h',
+            './src/sipcc/cpr/win32/cpr_win_debug.c',
+            './src/sipcc/cpr/win32/cpr_win_debug.h',
+            './src/sipcc/cpr/win32/cpr_win_defines.h',
+            './src/sipcc/cpr/win32/cpr_win_errno.c',
+            './src/sipcc/cpr/win32/cpr_win_errno.h',
+            './src/sipcc/cpr/win32/cpr_win_in.h',
+            './src/sipcc/cpr/win32/cpr_win_init.c',
+            './src/sipcc/cpr/win32/cpr_win_ipc.c',
+            './src/sipcc/cpr/win32/cpr_win_ipc.h',
+            './src/sipcc/cpr/win32/cpr_win_locks.c',
+            './src/sipcc/cpr/win32/cpr_win_locks.h',
+            './src/sipcc/cpr/win32/cpr_win_memory.c',
+            './src/sipcc/cpr/win32/cpr_win_memory.h',
+            './src/sipcc/cpr/win32/cpr_win_rand.c',
+            './src/sipcc/cpr/win32/cpr_win_rand.h',
+            './src/sipcc/cpr/win32/cpr_win_socket.c',
+            './src/sipcc/cpr/win32/cpr_win_socket.h',
+            './src/sipcc/cpr/win32/cpr_win_stdio.c',
+            './src/sipcc/cpr/win32/cpr_win_stdio.h',
+            './src/sipcc/cpr/win32/cpr_win_stdlib.c',
+            './src/sipcc/cpr/win32/cpr_win_stdlib.h',
+            './src/sipcc/cpr/win32/cpr_win_string.c',
+            './src/sipcc/cpr/win32/cpr_win_string.h',
+            './src/sipcc/cpr/win32/cpr_win_strings.h',
+            './src/sipcc/cpr/win32/cpr_win_threads.c',
+            './src/sipcc/cpr/win32/cpr_win_time.h',
+            './src/sipcc/cpr/win32/cpr_win_timers.c',
+            './src/sipcc/cpr/win32/cpr_win_timers.h',
+            './src/sipcc/cpr/win32/cpr_win_types.h',
+
+          ],
+          
+          'defines' : [
+            'SIP_OS_WINDOWS',
+            'WIN32', 
+            'SIPCC_BUILD',
+            'SDP_WIN32',
+            'STUBBED_OUT',
+            'EXTERNAL_TICK_REQUIRED',
+            'GIPS_VER=3480',
+          ],
+          
+          'cflags': [
+          ],
+          
+        }],
+        ['OS=="mac"', {
+
+          'include_dirs': [
+            '/usr/include/libxml2',
+          ],
+          
+          'sources': [
+            # SIPSTACK
+            './src/sipcc/core/sipstack/sip_platform_task.c',
+            
+            # PLAT
+            './src/sipcc/plat/common/dns_utils.c',
+            #'./src/sipcc/plat/darwin/netif.c',
+            './src/sipcc/plat/darwin/plat_api_stub.c',
+            #'./src/sipcc/plat/unix-common/random.c',
+            
+            # CPR
+            './src/sipcc/cpr/darwin/cpr_darwin_assert.h',
+            './src/sipcc/cpr/darwin/cpr_darwin_chunk.c',
+            './src/sipcc/cpr/darwin/cpr_darwin_chunk.h',
+            './src/sipcc/cpr/darwin/cpr_darwin_errno.c',
+            './src/sipcc/cpr/darwin/cpr_darwin_errno.h',
+            './src/sipcc/cpr/darwin/cpr_darwin_in.h',
+            './src/sipcc/cpr/darwin/cpr_darwin_init.c',
+            './src/sipcc/cpr/darwin/cpr_darwin_ipc.c',
+            './src/sipcc/cpr/darwin/cpr_darwin_ipc.h',
+            './src/sipcc/cpr/darwin/cpr_darwin_locks.c',
+            './src/sipcc/cpr/darwin/cpr_darwin_locks.h',
+            './src/sipcc/cpr/darwin/cpr_darwin_memory.c',
+            './src/sipcc/cpr/darwin/cpr_darwin_memory.h',
+            './src/sipcc/cpr/darwin/cpr_darwin_memory_api.h',
+            './src/sipcc/cpr/darwin/cpr_darwin_private.h',
+            './src/sipcc/cpr/darwin/cpr_darwin_rand.h',
+            './src/sipcc/cpr/darwin/cpr_darwin_socket.c',
+            './src/sipcc/cpr/darwin/cpr_darwin_socket.h',
+            './src/sipcc/cpr/darwin/cpr_darwin_stdio.c',
+            './src/sipcc/cpr/darwin/cpr_darwin_stdio.h',
+            './src/sipcc/cpr/darwin/cpr_darwin_stdlib.c',
+            './src/sipcc/cpr/darwin/cpr_darwin_stdlib.h',
+            './src/sipcc/cpr/darwin/cpr_darwin_string.c',
+            './src/sipcc/cpr/darwin/cpr_darwin_string.h',
+            './src/sipcc/cpr/darwin/cpr_darwin_strings.h',
+            './src/sipcc/cpr/darwin/cpr_darwin_threads.c',
+            './src/sipcc/cpr/darwin/cpr_darwin_time.h',
+            './src/sipcc/cpr/darwin/cpr_darwin_timers.h',
+            './src/sipcc/cpr/darwin/cpr_darwin_timers_using_select.c',
+            './src/sipcc/cpr/darwin/cpr_darwin_tst.h',
+            './src/sipcc/cpr/darwin/cpr_darwin_types.h',
+          ],
+          
+
+          'defines' : [
+            'SIP_OS_OSX',
+            '_POSIX_SOURCE',
+            'CPR_MEMORY_LITTLE_ENDIAN',
+            'NO_SOCKET_POLLING',
+            'USE_TIMER_SELECT_BASED',
+            'FULL_BUILD',
+            'STUBBED_OUT',
+            'USE_PRINTF',
+            '_DARWIN_C_SOURCE',
+          ],
+          
+          'cflags': [
+            '-g',
+            '-fexceptions',
+            '-fno-common',
+            '-isysroot', '/Developer/SDKs/MacOSX10.6.sdk',
+            '-mmacosx-version-min=10.5',
+            '-fast'
+          ],
+        }],
+      ],
+            
+    },
+  ],
+}
+
+# Local Variables:
+# tab-width:2
+# indent-tabs-mode:nil
+# End:
+# vim: set expandtab tabstop=2 shiftwidth=2:
new file mode 100644
--- /dev/null
+++ b/media/webrtc/signaling/src/callcontrol/CC_CallTypes.cpp
@@ -0,0 +1,129 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (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.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is the Cisco Systems SIP Stack.
+ *
+ * The Initial Developer of the Original Code is
+ * Cisco Systems (CSCO).
+ * Portions created by the Initial Developer are Copyright (C) 2002
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *  Enda Mannion <emannion@cisco.com>
+ *  Suhas Nandakumar <snandaku@cisco.com>
+ *  Ethan Hugg <ehugg@cisco.com>
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+#include "CC_CallTypes.h"
+
+using namespace std;
+
+namespace CSF
+{
+namespace CC_CallCapabilityEnum
+{
+
+std::string toString(CC_CallCapability cap)
+{
+	switch(cap)
+	{
+	case canSetRemoteWindow:
+		return "canSetRemoteWindow";
+	case canSetLocalWindow:
+		return "canSetLocalWindow";
+	case canSendIFrame:
+		return "canSendIFrame";
+	case canOriginateCall:
+		return "canOriginateCall";
+	case canAnswerCall:
+		return "canAnswerCall";
+	case canHold:
+		return "canHold";
+	case canResume:
+		return "canResume";
+	case canEndCall:
+		return "canEndCall";
+	case canSendDigit:
+		return "canSendDigit";
+	case canBackspace:
+		return "canBackspace";
+	case canRedial:
+		return "canRedial";
+	case canInitiateCallForwardAll:
+		return "canInitiateCallForwardAll";
+	case canEndConsultativeCall:
+		return "canEndConsultativeCall";
+	case canConferenceStart:
+		return "canConferenceStart";
+	case canConferenceComplete:
+		return "canConferenceComplete";
+	case canTransferStart:
+		return "canTransferStart";
+	case canTransferComplete:
+		return "canTransferComplete";
+	case canCancelTransferOrConferenceFeature:
+		return "canCancelTransferOrConferenceFeature";
+	case canDirectTransfer:
+		return "canDirectTransfer";
+	case canJoinAcrossLine:
+		return "canJoinAcrossLine";
+	case canBlfCallPickup:
+		return "canBlfCallPickup";
+	case canSelect:
+		return "canSelect";
+	case canUpdateVideoMediaCap:
+		return "canUpdateVideoMediaCap";
+	case canSendInfo:
+		return "canSendInfo";
+	case canMuteAudio:
+		return "canMuteAudio";
+    case canUnmuteAudio:
+        return "canUnmuteAudio";
+	case canMuteVideo:
+		return "canMuteVideo";
+    case canUnmuteVideo:
+        return "canUnmuteVideo";
+    case canSetVolume:
+        return "canSetVolume";
+	default:
+		return "";
+	}
+}
+
+std::string toString(std::set<CC_CallCapability>& caps)
+{
+	string result;
+	for(std::set<CC_CallCapability>::iterator it = caps.begin(); it != caps.end(); it++)
+	{
+		if(!result.empty())
+			result += ",";
+		result += toString(*it);
+	}
+	return result;
+}
+
+}
+}
new file mode 100644
--- /dev/null
+++ b/media/webrtc/signaling/src/callcontrol/CallControlManager.cpp
@@ -0,0 +1,55 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (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.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is the Cisco Systems SIP Stack.
+ *
+ * The Initial Developer of the Original Code is
+ * Cisco Systems (CSCO).
+ * Portions created by the Initial Developer are Copyright (C) 2002
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *  Enda Mannion <emannion@cisco.com>
+ *  Suhas Nandakumar <snandaku@cisco.com>
+ *  Ethan Hugg <ehugg@cisco.com>
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+#include "CallControlManager.h"
+#include "CallControlManagerImpl.h"
+
+namespace CSF
+{
+CallControlManagerPtr CallControlManager::create()
+{
+	CallControlManagerPtr instance(new CallControlManagerImpl());
+	return instance;
+}
+
+CallControlManager::~CallControlManager()
+{
+}
+
+}
new file mode 100755
--- /dev/null
+++ b/media/webrtc/signaling/src/callcontrol/CallControlManagerImpl.cpp
@@ -0,0 +1,588 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (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.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is the Cisco Systems SIP Stack.
+ *
+ * The Initial Developer of the Original Code is
+ * Cisco Systems (CSCO).
+ * Portions created by the Initial Developer are Copyright (C) 2002
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *  Enda Mannion <emannion@cisco.com>
+ *  Suhas Nandakumar <snandaku@cisco.com>
+ *  Ethan Hugg <ehugg@cisco.com>
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+#include "CC_SIPCCDevice.h"
+#include "CC_SIPCCDeviceInfo.h"
+#include "CC_SIPCCFeatureInfo.h"
+#include "CC_SIPCCLine.h"
+#include "CC_SIPCCLineInfo.h"
+#include "CC_SIPCCCallInfo.h"
+#include "CallControlManagerImpl.h"
+#include "CSFLogStream.h"
+#include "csf_common.h"
+
+extern "C"
+{
+#include "config_api.h"
+}
+
+static const char* logTag = "CallControlManager";
+
+static std::string logDestination = "CallControl.log";
+
+using namespace std;
+using namespace CSFUnified;
+
+
+namespace CSF
+{
+
+CallControlManagerImpl::CallControlManagerImpl()
+: multiClusterMode(false),
+  sipccLoggingMask(0),
+  authenticationStatus(AuthenticationStatusEnum::eNotAuthenticated),
+  connectionState(ConnectionStatusEnum::eIdle)
+{
+    CSFLogInfoS(logTag, "CallControlManagerImpl()");
+}
+
+CallControlManagerImpl::~CallControlManagerImpl()
+{
+    CSFLogInfoS(logTag, "~CallControlManagerImpl()");
+    destroy();
+}
+
+bool CallControlManagerImpl::destroy()
+{
+    CSFLogInfoS(logTag, "destroy()");
+    bool retval = disconnect();
+    if(retval == false)
+	{
+		return retval;
+	}
+	return retval;
+}
+
+// Observers
+void CallControlManagerImpl::addCCObserver ( CC_Observer * observer )
+{
+	AutoLock lock(m_lock);
+    if (observer == NULL)
+    {
+        CSFLogErrorS(logTag, "NULL value for \"observer\" passed to addCCObserver().");
+        return;
+    }
+
+    ccObservers.insert(observer);
+}
+
+void CallControlManagerImpl::removeCCObserver ( CC_Observer * observer )
+{
+	AutoLock lock(m_lock);
+    ccObservers.erase(observer);
+}
+
+void CallControlManagerImpl::addECCObserver ( ECC_Observer * observer )
+{
+	AutoLock lock(m_lock);
+    if (observer == NULL)
+    {
+        CSFLogErrorS(logTag, "NULL value for \"observer\" passed to addECCObserver().");
+        return;
+    }
+
+    eccObservers.insert(observer);
+}
+
+void CallControlManagerImpl::removeECCObserver ( ECC_Observer * observer )
+{
+	AutoLock lock(m_lock);
+    eccObservers.erase(observer);
+}
+
+void CallControlManagerImpl::setMultiClusterMode(bool allowMultipleClusters)
+{
+    CSFLogInfoS(logTag, "setMultiClusterMode(" << allowMultipleClusters << ")");
+    multiClusterMode = allowMultipleClusters;
+}
+
+void CallControlManagerImpl::setSIPCCLoggingMask(const cc_int32_t mask)
+{
+    CSFLogInfoS(logTag, "setSIPCCLoggingMask(" << mask << ")");
+    sipccLoggingMask = mask;
+}
+
+void CallControlManagerImpl::setAuthenticationString(const std::string &authString)
+{
+    CSFLogInfoS(logTag, "setAuthenticationString()");
+    this->authString = authString;
+}
+
+void CallControlManagerImpl::setSecureCachePath(const std::string &secureCachePath)
+{
+    CSFLogInfoS(logTag, "setSecureCachePath(" << secureCachePath << ")");
+    this->secureCachePath = secureCachePath;
+}
+
+// Local IP Address
+void CallControlManagerImpl::setLocalIpAddressAndGateway(const std::string& localIpAddress, const std::string& defaultGW)
+{
+    CSFLogInfoS(logTag, "setLocalIpAddressAndGateway(" << localIpAddress << ", " << defaultGW << ")");
+    this->localIpAddress = localIpAddress;
+    this->defaultGW = defaultGW;
+
+    if(softPhone != NULL)
+    {
+        softPhone->setLocalAddressAndGateway(this->localIpAddress, this->defaultGW);
+    }
+}
+
+AuthenticationStatusEnum::AuthenticationStatus CallControlManagerImpl::getAuthenticationStatus()
+{
+    return authenticationStatus;
+}
+
+bool CallControlManagerImpl::registerUser( const std::string& deviceName, const std::string& user, const std::string& password, const std::string& domain )
+{
+	setConnectionState(ConnectionStatusEnum::eRegistering);
+
+    CSFLogInfoS(logTag, "registerUser(" << user << ", " << domain << " )");
+    if(phone != NULL)
+    {
+    	setConnectionState(ConnectionStatusEnum::eReady);
+
+        CSFLogErrorS(logTag, "registerUser() failed - already connected!");
+        return false;
+    }
+
+    // Check preconditions.
+    if(localIpAddress.empty() || localIpAddress == "127.0.0.1")
+    {
+    	setConnectionState(ConnectionStatusEnum::eFailed);
+    	CSFLogErrorS(logTag, "registerUser() failed - No local IP address set!");
+    	return false;
+    }
+
+    softPhone = CC_SIPCCServicePtr(new CC_SIPCCService());
+    phone = softPhone;
+    phone->init(user, password, domain, deviceName);
+    softPhone->setLoggingMask(sipccLoggingMask);
+    softPhone->setLocalAddressAndGateway(localIpAddress, defaultGW);
+    phone->addCCObserver(this);
+
+    phone->setP2PMode(false);
+
+    bool bStarted = phone->startService();
+    if (!bStarted) {
+        setConnectionState(ConnectionStatusEnum::eFailed);
+    } else {
+        setConnectionState(ConnectionStatusEnum::eReady);
+    }
+
+    return bStarted;
+}
+
+bool CallControlManagerImpl::startP2PMode(const std::string& user)
+{
+	setConnectionState(ConnectionStatusEnum::eRegistering);
+
+    CSFLogInfoS(logTag, "startP2PMode(" << user << " )");
+    if(phone != NULL)
+    {
+    	setConnectionState(ConnectionStatusEnum::eReady);
+
+        CSFLogErrorS(logTag, "startP2PMode() failed - already started in p2p mode!");
+        return false;
+    }
+
+    // Check preconditions.
+    if(localIpAddress.empty() || localIpAddress == "127.0.0.1")
+    {
+    	setConnectionState(ConnectionStatusEnum::eFailed);
+    	CSFLogErrorS(logTag, "startP2PMode() failed - No local IP address set!");
+    	return false;
+    }
+
+    softPhone = CC_SIPCCServicePtr(new CC_SIPCCService());
+    phone = softPhone;
+    phone->init(user, "", "127.0.0.1", "sipdevice");
+    softPhone->setLoggingMask(sipccLoggingMask);
+    softPhone->setLocalAddressAndGateway(localIpAddress, defaultGW);
+    phone->addCCObserver(this);
+
+    phone->setP2PMode(true);
+
+    bool bStarted = phone->startService();
+    if (!bStarted) {
+        setConnectionState(ConnectionStatusEnum::eFailed);
+    } else {
+        setConnectionState(ConnectionStatusEnum::eReady);
+    }
+
+    return bStarted;
+}
+
+bool CallControlManagerImpl::startROAPProxy( const std::string& deviceName, const std::string& user, const std::string& password, const std::string& domain )
+{
+	setConnectionState(ConnectionStatusEnum::eRegistering);
+
+    CSFLogInfoS(logTag, "startROAPProxy(" << user << ", " << domain << " )");
+    if(phone != NULL)
+    {
+    	setConnectionState(ConnectionStatusEnum::eReady);
+
+        CSFLogErrorS(logTag, "startROAPProxy() failed - already connected!");
+        return false;
+    }
+
+    // Check preconditions.
+    if(localIpAddress.empty() || localIpAddress == "127.0.0.1")
+    {
+    	setConnectionState(ConnectionStatusEnum::eFailed);
+    	CSFLogErrorS(logTag, "startROAPProxy() failed - No local IP address set!");
+    	return false;
+    }
+
+    softPhone = CC_SIPCCServicePtr(new CC_SIPCCService());
+    phone = softPhone;
+    phone->init(user, password, domain, deviceName);
+    softPhone->setLoggingMask(sipccLoggingMask);
+    softPhone->setLocalAddressAndGateway(localIpAddress, defaultGW);
+    phone->addCCObserver(this);
+
+    phone->setP2PMode(false);
+    phone->setROAPProxyMode(true);
+
+    bool bStarted = phone->startService();
+    if (!bStarted) {
+        setConnectionState(ConnectionStatusEnum::eFailed);
+    } else {
+        setConnectionState(ConnectionStatusEnum::eReady);
+    }
+
+    return bStarted;
+}
+
+bool CallControlManagerImpl::disconnect()
+{
+    CSFLogInfoS(logTag, "disconnect()");
+    if(phone == NULL)
+        return true;
+
+    connectionState = ConnectionStatusEnum::eIdle;
+    phone->removeCCObserver(this);
+    phone->stop();
+    phone->destroy();
+    phone.reset();
+    softPhone.reset();
+
+    return true;
+}
+
+std::string CallControlManagerImpl::getPreferredDeviceName()
+{
+    return preferredDevice;
+}
+
+std::string CallControlManagerImpl::getPreferredLineDN()
+{
+    return preferredLineDN;
+}
+
+ConnectionStatusEnum::ConnectionStatus CallControlManagerImpl::getConnectionStatus()
+{
+    return connectionState;
+}
+
+std::string CallControlManagerImpl::getCurrentServer()
+{
+    return "";
+}
+
+// Currently controlled device
+CC_DevicePtr CallControlManagerImpl::getActiveDevice()
+{
+    if(phone != NULL)
+        return phone->getActiveDevice();
+
+    return CC_DevicePtr();
+}
+
+// All known devices
+PhoneDetailsVtrPtr CallControlManagerImpl::getAvailablePhoneDetails()
+{
+    PhoneDetailsVtrPtr result = PhoneDetailsVtrPtr(new PhoneDetailsVtr());
+    for(PhoneDetailsMap::iterator it = phoneDetailsMap.begin(); it != phoneDetailsMap.end(); it++)
+    {
+        PhoneDetailsPtr details = it->second;
+        result->push_back(details);
+    }
+    return result;
+}
+PhoneDetailsPtr CallControlManagerImpl::getAvailablePhoneDetails(const std::string& deviceName)
+{
+    PhoneDetailsMap::iterator it = phoneDetailsMap.find(deviceName);
+    if(it != phoneDetailsMap.end())
+    {
+        return it->second;
+    }
+    return PhoneDetailsPtr();
+}
+
+// Media setup
+VideoControlPtr CallControlManagerImpl::getVideoControl()
+{
+    if(phone != NULL)
+        return phone->getVideoControl();
+
+    return VideoControlPtr();
+}
+
+AudioControlPtr CallControlManagerImpl::getAudioControl()
+{
+    if(phone != NULL)
+        return phone->getAudioControl();
+
+    return AudioControlPtr();
+}
+
+bool CallControlManagerImpl::setProperty(ConfigPropertyKeysEnum::ConfigPropertyKeys key, std::string& value)
+{
+	CSFLogInfoS(logTag, "setProperty(" << value << " )");
+
+	if (key == ConfigPropertyKeysEnum::eLocalVoipPort) {
+		CCAPI_Config_set_local_voip_port(atoi(value.c_str()));
+	} else if (key == ConfigPropertyKeysEnum::eRemoteVoipPort) {
+		CCAPI_Config_set_remote_voip_port(atoi(value.c_str()));
+	} else if (key == ConfigPropertyKeysEnum::eTransport) {
+		if (value == "tcp")
+			CCAPI_Config_set_transport_udp(false);
+		else
+			CCAPI_Config_set_transport_udp(true);
+	}
+
+	return true;
+}
+
+std::string CallControlManagerImpl::getProperty(ConfigPropertyKeysEnum::ConfigPropertyKeys key)
+{
+	CSFLogInfoS(logTag, "getProperty()");
+
+	std::string retValue = "NONESET";
+	if (key == ConfigPropertyKeysEnum::eLocalVoipPort) {
+		int tmpValue = CCAPI_Config_get_local_voip_port();
+		std::stringstream out;
+		out << tmpValue;
+		retValue = out.str();
+	} else if (key == ConfigPropertyKeysEnum::eRemoteVoipPort) {
+		int tmpValue = CCAPI_Config_get_remote_voip_port();
+		std::stringstream out;
+		out << tmpValue;
+		retValue = out.str();
+	} else if (key == ConfigPropertyKeysEnum::eVersion) {
+		const char* version = CCAPI_Config_get_version();
+		retValue = version;
+	}
+
+	return retValue;
+}
+/*
+  There are a number of factors that determine PhoneAvailabilityType::PhoneAvailability. The supported states for this enum are:
+  { eUnknown, eAvailable, eUnAvailable, eNotAllowed }. eUnknown is the default value, which is set when there is no information
+  available that would otherwise determine the availability value. The factors that can influence PhoneAvailability are:
+  phone mode, and for a given device (described by DeviceInfo) the model, and the name of the device. For phone control mode, the
+  device registration and whether CUCM says the device is CTI controllable (or not) is a factor.
+
+  For Phone Control mode the state machine is:
+
+     is blacklisted model name? -> Yes -> NOT_ALLOWED
+        (see Note1 below)
+              ||
+              \/
+              No
+              ||
+              \/
+       is CTI Controllable?
+     (determined from CUCM) -> No -> NOT_ALLOWED
+              ||
+              \/
+              Yes
+              ||
+              \/
+  Can we tell if it's registered? -> No -> ?????? TODO: Seems to depends on other factors (look at suggestedAvailability parameter
+              ||                                        in DeviceSubProviderImpl.addOrUpdateDevice() in CSF1G Java code.
+              \/
+              Yes
+              ||
+              \/
+         is Registered?
+     (determined from CUCM) -> No -> NOT_AVAILABLE
+              ||
+              \/
+              Yes
+              ||
+              \/
+           AVAILABLE
+
+  ========
+
+  For Softphone mode the state machine is:
+
+        is device excluded?
+   (based on "ExcludedDevices"   -> Yes -> NOT_ALLOWED
+         config settings
+        (see Note2 below))
+              ||
+              \/
+              No
+              ||
+              \/
+          isSoftphone?
+
+
+
+     Note1: model name has to match completely, ie it's not a sub-string match, but we are ignoring case. So, if the blacklist
+            contains a string "Cisco Unified Personal Communicator" then the model has to match this completely (but can be a
+            different case) to be a match. In CSF1G the blacklist is hard-wired to:
+                { "Cisco Unified Personal Communicator",
+                  "Cisco Unified Client Services Framework",
+                  "Client Services Framework",
+                  "Client Services Core" }
+
+     Note2: The "ExcludedDevices" is a comma-separated list of device name prefixes (not model name). Unlike the above, this is
+            a sub-string match, but only a "starts with" sub-string match, not anywhere in the string. If the device name
+            is a complete match then this is also excluded, ie doesn't have to be a sub-string. For example, if the
+            ExcludeDevices list contains { "ECP", "UPC" } then assuming we're in softphone mode, then any device whose
+            name starts with the strings ECP or UPC, or whose complete name is either of these will be deemed to be excluded
+            and will be marked as NOT_ALLOWED straightaway. In Phone Control mode the "ExcludedDevices" list i not taken into
+            account at all in the determination of availability.
+
+     Note3: isSoftphone() function
+
+  The config service provides a list of "blacklisted" device name prefixes, that is, if the name of the device starts with a
+  sub-string that matches an entry in the blacklist, then it is straightaway removed from the list? marked as NOT_ALLOWED.
+ */
+
+// CC_Observers
+void CallControlManagerImpl::onDeviceEvent(ccapi_device_event_e deviceEvent, CC_DevicePtr devicePtr, CC_DeviceInfoPtr info)
+{
+    notifyDeviceEventObservers(deviceEvent, devicePtr, info);
+}
+void CallControlManagerImpl::onFeatureEvent(ccapi_device_event_e deviceEvent, CC_DevicePtr devicePtr, CC_FeatureInfoPtr info)
+{
+    notifyFeatureEventObservers(deviceEvent, devicePtr, info);
+}
+void CallControlManagerImpl::onLineEvent(ccapi_line_event_e lineEvent,     CC_LinePtr linePtr, CC_LineInfoPtr info)
+{
+    notifyLineEventObservers(lineEvent, linePtr, info);
+}
+void CallControlManagerImpl::onCallEvent(ccapi_call_event_e callEvent,     CC_CallPtr callPtr, CC_CallInfoPtr info, char* sdp)
+{
+    notifyCallEventObservers(callEvent, callPtr, info, sdp);
+}
+
+
+void CallControlManagerImpl::notifyDeviceEventObservers (ccapi_device_event_e deviceEvent, CC_DevicePtr devicePtr, CC_DeviceInfoPtr info)
+{
+	AutoLock lock(m_lock);
+    set<CC_Observer*>::const_iterator it = ccObservers.begin();
+    for ( ; it != ccObservers.end(); it++ )
+    {
+        (*it)->onDeviceEvent(deviceEvent, devicePtr, info);
+    }
+}
+
+void CallControlManagerImpl::notifyFeatureEventObservers (ccapi_device_event_e deviceEvent, CC_DevicePtr devicePtr, CC_FeatureInfoPtr info)
+{
+	AutoLock lock(m_lock);
+    set<CC_Observer*>::const_iterator it = ccObservers.begin();
+    for ( ; it != ccObservers.end(); it++ )
+    {
+        (*it)->onFeatureEvent(deviceEvent, devicePtr, info);
+    }
+}
+
+void CallControlManagerImpl::notifyLineEventObservers (ccapi_line_event_e lineEvent, CC_LinePtr linePtr, CC_LineInfoPtr info)
+{
+	AutoLock lock(m_lock);
+    set<CC_Observer*>::const_iterator it = ccObservers.begin();
+    for ( ; it != ccObservers.end(); it++ )
+    {
+        (*it)->onLineEvent(lineEvent, linePtr, info);
+    }
+}
+
+void CallControlManagerImpl::notifyCallEventObservers (ccapi_call_event_e callEvent, CC_CallPtr callPtr, CC_CallInfoPtr info, char* sdp)
+{
+	AutoLock lock(m_lock);
+    set<CC_Observer*>::const_iterator it = ccObservers.begin();
+    for ( ; it != ccObservers.end(); it++ )
+    {
+        (*it)->onCallEvent(callEvent, callPtr, info, sdp);
+    }
+}
+
+void CallControlManagerImpl::notifyAvailablePhoneEvent (AvailablePhoneEventType::AvailablePhoneEvent event,
+        const PhoneDetailsPtr availablePhoneDetails)
+{
+	AutoLock lock(m_lock);
+    set<ECC_Observer*>::const_iterator it = eccObservers.begin();
+    for ( ; it != eccObservers.end(); it++ )
+    {
+        (*it)->onAvailablePhoneEvent(event, availablePhoneDetails);
+    }
+}
+
+void CallControlManagerImpl::notifyAuthenticationStatusChange (AuthenticationStatusEnum::AuthenticationStatus status)
+{
+	AutoLock lock(m_lock);
+    set<ECC_Observer*>::const_iterator it = eccObservers.begin();
+    for ( ; it != eccObservers.end(); it++ )
+    {
+        (*it)->onAuthenticationStatusChange(status);
+    }
+}
+
+void CallControlManagerImpl::notifyConnectionStatusChange(ConnectionStatusEnum::ConnectionStatus status)
+{
+	AutoLock lock(m_lock);
+    set<ECC_Observer*>::const_iterator it = eccObservers.begin();
+    for ( ; it != eccObservers.end(); it++ )
+    {
+        (*it)->onConnectionStatusChange(status);
+    }
+}
+
+void CallControlManagerImpl::setConnectionState(ConnectionStatusEnum::ConnectionStatus status)
+{
+	connectionState = status;
+	notifyConnectionStatusChange(status);
+}
+
+}
new file mode 100755
--- /dev/null
+++ b/media/webrtc/signaling/src/callcontrol/CallControlManagerImpl.h
@@ -0,0 +1,161 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (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.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is the Cisco Systems SIP Stack.
+ *
+ * The Initial Developer of the Original Code is
+ * Cisco Systems (CSCO).
+ * Portions created by the Initial Developer are Copyright (C) 2002
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *  Enda Mannion <emannion@cisco.com>
+ *  Suhas Nandakumar <snandaku@cisco.com>
+ *  Ethan Hugg <ehugg@cisco.com>
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+#pragma once
+
+#include "CallControlManager.h"
+#include "PhoneDetailsImpl.h"
+#include "CC_SIPCCService.h"
+
+#include "base/lock.h"
+
+
+#include <set>
+#include <map>
+
+namespace CSF
+{
+	class CallControlManagerImpl: public CallControlManager, public CC_Observer
+	{
+	public:
+		CallControlManagerImpl();
+        virtual bool destroy();
+		virtual ~CallControlManagerImpl();
+
+		// Observers
+        virtual void addCCObserver ( CC_Observer * observer );
+        virtual void removeCCObserver ( CC_Observer * observer );
+
+        virtual void addECCObserver ( ECC_Observer * observer );
+        virtual void removeECCObserver ( ECC_Observer * observer );
+
+        // Config and global setup
+        virtual void setMultiClusterMode(bool allowMultipleClusters);
+        virtual void setSIPCCLoggingMask(const cc_int32_t mask);
+        virtual void setAuthenticationString(const std::string &authString);
+        virtual void setSecureCachePath(const std::string &secureCachePath);
+
+        // Local IP Address and DefaultGateway
+        virtual void setLocalIpAddressAndGateway(const std::string& localIpAddress, const std::string& defaultGW);
+
+        virtual AuthenticationStatusEnum::AuthenticationStatus getAuthenticationStatus();
+
+        virtual bool registerUser( const std::string& deviceName, const std::string& user, const std::string& password, const std::string& domain );
+
+        virtual bool startP2PMode(const std::string& user);
+
+        virtual bool startROAPProxy( const std::string& deviceName, const std::string& user, const std::string& password, const std::string& domain );
+
+        virtual bool disconnect();
+        virtual std::string getPreferredDeviceName();
+        virtual std::string getPreferredLineDN();
+        virtual ConnectionStatusEnum::ConnectionStatus getConnectionStatus();
+        virtual std::string getCurrentServer();
+
+        // Currently controlled device
+        virtual CC_DevicePtr getActiveDevice();
+
+        // All known devices
+        virtual PhoneDetailsVtrPtr getAvailablePhoneDetails();
+        virtual PhoneDetailsPtr getAvailablePhoneDetails(const std::string& deviceName);
+
+        // Media setup
+        virtual VideoControlPtr getVideoControl();
+        virtual AudioControlPtr getAudioControl();
+
+        virtual bool setProperty(ConfigPropertyKeysEnum::ConfigPropertyKeys key, std::string& value);
+        virtual std::string getProperty(ConfigPropertyKeysEnum::ConfigPropertyKeys key);
+
+	private: // Data Storage
+
+        // Observers
+		Lock m_lock;;
+		std::set<CC_Observer *> ccObservers;
+		std::set<ECC_Observer *> eccObservers;
+
+        // Config and global setup
+		std::string username;
+		std::string password;
+		std::string authString;
+		std::string secureCachePath;
+		bool multiClusterMode;
+		cc_int32_t sipccLoggingMask;
+
+        // Local IP Address
+		std::string localIpAddress;
+		std::string defaultGW;
+
+		AuthenticationStatusEnum::AuthenticationStatus authenticationStatus;
+
+		std::string preferredDevice;
+		std::string preferredLineDN;
+		CC_ServicePtr phone;			// The generic handle, for simple operations.
+		CC_SIPCCServicePtr softPhone;	// For setup operations not available on the generic API.
+
+        // All known devices
+		typedef std::map<std::string, PhoneDetailsImplPtr> PhoneDetailsMap;
+		PhoneDetailsMap phoneDetailsMap;
+
+		// store connection state
+		ConnectionStatusEnum::ConnectionStatus connectionState;
+
+	public: // Listeners for stacks controlled by CallControlManager
+		// CC_Observers
+		void onDeviceEvent  (ccapi_device_event_e deviceEvent, CC_DevicePtr devicePtr, CC_DeviceInfoPtr info);
+		void onFeatureEvent (ccapi_device_event_e deviceEvent, CC_DevicePtr devicePtr, CC_FeatureInfoPtr info);
+		void onLineEvent    (ccapi_line_event_e lineEvent,     CC_LinePtr linePtr, CC_LineInfoPtr info);
+		void onCallEvent    (ccapi_call_event_e callEvent,     CC_CallPtr callPtr, CC_CallInfoPtr info, char* sdp);
+
+	private: //member functions
+
+		// CC_Observers
+		void notifyDeviceEventObservers  (ccapi_device_event_e deviceEvent, CC_DevicePtr devicePtr, CC_DeviceInfoPtr info);
+		void notifyFeatureEventObservers (ccapi_device_event_e deviceEvent, CC_DevicePtr devicePtr, CC_FeatureInfoPtr info);
+		void notifyLineEventObservers    (ccapi_line_event_e lineEvent,     CC_LinePtr linePtr, CC_LineInfoPtr info);
+		void notifyCallEventObservers    (ccapi_call_event_e callEvent,     CC_CallPtr callPtr, CC_CallInfoPtr info, char* sdp);
+
+		// ECC_Observers
+		void notifyAvailablePhoneEvent (AvailablePhoneEventType::AvailablePhoneEvent event,
+											const PhoneDetailsPtr phoneDetails);
+		void notifyAuthenticationStatusChange (AuthenticationStatusEnum::AuthenticationStatus);
+		void notifyConnectionStatusChange(ConnectionStatusEnum::ConnectionStatus status);
+		void setConnectionState(ConnectionStatusEnum::ConnectionStatus status);
+	};
+
+}
new file mode 100644
--- /dev/null
+++ b/media/webrtc/signaling/src/callcontrol/ECC_Types.cpp
@@ -0,0 +1,186 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (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.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is the Cisco Systems SIP Stack.
+ *
+ * The Initial Developer of the Original Code is
+ * Cisco Systems (CSCO).
+ * Portions created by the Initial Developer are Copyright (C) 2002
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *  Enda Mannion <emannion@cisco.com>
+ *  Suhas Nandakumar <snandaku@cisco.com>
+ *  Ethan Hugg <ehugg@cisco.com>
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+#include <string>
+#include "ECC_Types.h"
+
+using namespace std;
+
+namespace CSF
+{
+
+namespace AuthenticationFailureCodeType
+{
+std::string ECC_API toString(AuthenticationFailureCode value)
+{
+	switch(value)
+	{
+    case eNoError:
+        return "eNoError";
+	case eNoServersConfigured:
+        return "eNoServersConfigured";
+	case eNoCredentialsConfigured:
+        return "eNoCredentialsConfigured";
+	case eCouldNotConnect:
+        return "eCouldNotConnect";
+	case eServerCertificateRejected:
+        return "eServerCertificateRejected";
+	case eCredentialsRejected:
+        return "eCredentialsRejected";
+	case eResponseEmpty:
+        return "eResponseEmpty";
+    case eResponseInvalid:
+        return "eResponseInvalid";
+	default:
+		return "";
+	}
+}
+}
+
+namespace AuthenticationStatusEnum
+{
+std::string ECC_API toString(AuthenticationStatus value)
+{
+    switch(value)
+	{
+    case eNotAuthenticated:
+        return "eNotAuthenticated";
+    case eInProgress:
+        return "eInProgress";
+    case eAuthenticated:
+        return "eAuthenticated";
+    case eFailed:
+        return "eFailed";
+	default:
+		return "";
+	}
+}
+}
+
+namespace DeviceRetrievalFailureCodeType
+{
+std::string ECC_API toString(DeviceRetrievalFailureCode value)
+{
+    switch(value)
+	{
+    case eNoError:
+        return "eNoError";
+    case eNoServersConfigured:
+        return "eNoServersConfigured";
+    case eNoDeviceNameConfigured:
+        return "eNoDeviceNameConfigured";
+    case eCouldNotConnect:
+        return "eCouldNotConnect";
+    case eFileNotFound:
+        return "eFileNotFound";
+    case eFileEmpty:
+        return "eFileEmpty";
+    case eFileInvalid:
+        return "eFileInvalid";
+	default:
+		return "";
+	}
+}
+}
+
+namespace ConnectionStatusEnum
+{
+std::string ECC_API toString(ConnectionStatus value)
+{
+    switch(value)
+	{
+    case eIdle:
+        return "eIdle";
+    case eNone:
+        return "eNone";
+    case eFetchingDeviceConfig:
+        return "eFetchingDeviceConfig";
+    case eRegistering:
+        return "eRegistering";
+    case eReady:
+        return "eReady";
+    case eConnectedButNoDeviceReady:
+        return "eConnectedButNoDeviceReady";
+    case eRetrying:
+        return "eRetrying";
+    case eFailed:
+        return "eFailed";
+	default:
+		return "";
+	}
+}
+}
+
+namespace ServiceStateType
+{
+std::string ECC_API toString(ServiceState value)
+{
+    switch(value)
+	{
+    case eUnknown:
+        return "eUnknown";
+    case eInService:
+        return "eInService";
+    case eOutOfService:
+        return "eOutOfService";
+	default:
+		return "";
+	}
+}
+}
+
+namespace AvailablePhoneEventType
+{
+std::string ECC_API toString(AvailablePhoneEvent value)
+{
+    switch(value)
+	{
+    case eFound:
+        return "eFound";
+    case eUpdated:
+        return "eUpdated";
+    case eLost:
+        return "eLost";
+	default:
+		return "";
+	}
+}
+}
+
+}
new file mode 100644
--- /dev/null
+++ b/media/webrtc/signaling/src/callcontrol/PhoneDetailsImpl.cpp
@@ -0,0 +1,111 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (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.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is the Cisco Systems SIP Stack.
+ *
+ * The Initial Developer of the Original Code is
+ * Cisco Systems (CSCO).
+ * Portions created by the Initial Developer are Copyright (C) 2002
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *  Enda Mannion <emannion@cisco.com>
+ *  Suhas Nandakumar <snandaku@cisco.com>
+ *  Ethan Hugg <ehugg@cisco.com>
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+#include "PhoneDetailsImpl.h"
+
+#include "csf_common.h"
+
+namespace CSF
+{
+
+PhoneDetailsImpl::PhoneDetailsImpl()
+: model(-1),
+  state(ServiceStateType::eUnknown)
+{
+}
+
+PhoneDetailsImpl::~PhoneDetailsImpl()
+{
+}
+
+static const char * _softphoneSupportedModelNames[] = { "Cisco Unified Client Services Framework",
+                                                        "Client Services Framework",
+                                                        "Client Services Core" };
+
+bool PhoneDetailsImpl::isSoftPhone()
+{
+	if(model == -1 && modelDescription != "")
+	{
+		// Evaluate based on model description.
+		for(int i = 0; i < (int) csf_countof(_softphoneSupportedModelNames); i++)
+		{
+			if(modelDescription == _softphoneSupportedModelNames[i])
+				return true;
+		}
+		return false;
+	}
+	else
+	{
+	}
+	return false;
+}
+
+void PhoneDetailsImpl::setName(const std::string& name)
+{
+	this->name = name;
+}
+void PhoneDetailsImpl::setDescription(const std::string& description)
+{
+	this->description = description;
+}
+// Note that setting model and model description are mutually exclusive.
+void PhoneDetailsImpl::setModel(int model)
+{
+	this->model = model;
+	this->modelDescription = "";
+}
+void PhoneDetailsImpl::setModelDescription(const std::string& description)
+{
+	this->model = -1;
+	this->modelDescription = description;
+}
+void PhoneDetailsImpl::setLineDNs(const std::vector<std::string> & lineDNs)
+{
+	this->lineDNs.assign(lineDNs.begin(), lineDNs.end());
+}
+void PhoneDetailsImpl::setServiceState(ServiceStateType::ServiceState state)
+{
+	this->state = state;
+}
+void PhoneDetailsImpl::setConfig(const std::string& config)
+{
+	this->config = config;
+}
+
+}
new file mode 100644
--- /dev/null
+++ b/media/webrtc/signaling/src/callcontrol/PhoneDetailsImpl.h
@@ -0,0 +1,82 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (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.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is the Cisco Systems SIP Stack.
+ *
+ * The Initial Developer of the Original Code is
+ * Cisco Systems (CSCO).
+ * Portions created by the Initial Developer are Copyright (C) 2002
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *  Enda Mannion <emannion@cisco.com>
+ *  Suhas Nandakumar <snandaku@cisco.com>
+ *  Ethan Hugg <ehugg@cisco.com>
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+#pragma once
+
+#include "PhoneDetails.h"
+
+namespace CSF
+{
+	DECLARE_PTR(PhoneDetailsImpl);
+	class PhoneDetailsImpl: public PhoneDetails
+	{
+	public:
+		virtual std::string getName() const {return name; }
+		virtual std::string getDescription() const {return description; }
+		virtual int getModel() const {return model;}
+		virtual std::string getModelDescription() const {return modelDescription; }
+		virtual bool isSoftPhone();
+		virtual std::vector<std::string> getLineDNs() const {return lineDNs; }
+		virtual ServiceStateType::ServiceState getServiceState() const { return state; }
+		virtual std::string getConfig() const { return config; }
+
+	public:
+		PhoneDetailsImpl();
+		virtual ~PhoneDetailsImpl();
+
+		virtual void setName(const std::string& name);
+		virtual void setDescription(const std::string& description);
+		// Note that setting model and model description are mutually exclusive.
+		virtual void setModel(int model);
+		virtual void setModelDescription(const std::string& description);
+		virtual void setLineDNs(const std::vector<std::string> & lineDNs);
+		virtual void setServiceState(ServiceStateType::ServiceState state);
+		virtual void setConfig(const std::string& config);
+
+	private:
+		std::string name;
+		std::string description;
+		int model;
+		std::string modelDescription;
+		std::vector<std::string> lineDNs;
+		ServiceStateType::ServiceState state;
+		std::string config;
+
+	};
+}
new file mode 100644
--- /dev/null
+++ b/media/webrtc/signaling/src/callcontrol/debug-psipcc-types.cpp
@@ -0,0 +1,489 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (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.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is the Cisco Systems SIP Stack.
+ *
+ * The Initial Developer of the Original Code is
+ * Cisco Systems (CSCO).
+ * Portions created by the Initial Developer are Copyright (C) 2002
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *  Enda Mannion <emannion@cisco.com>
+ *  Suhas Nandakumar <snandaku@cisco.com>
+ *  Ethan Hugg <ehugg@cisco.com>
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+#include "CC_Common.h"
+#include <stdlib.h>
+
+#include "debug-psipcc-types.h"
+
+struct ename {
+    int v;
+    cc_string_t name;
+};
+
+#define ENAME_DECL(v) \
+    { v, #v }
+
+/*
+ * Get a symbolic representation of a numeric identifier.
+ */
+static cc_string_t
+egetname(const struct ename *index, int event)
+{
+    const struct ename *ename;
+
+    for (ename = index; !(ename->v == 0 && ename->name == NULL); ename++) {
+        if (event == ename->v)
+            return ename->name;
+    }
+
+    return "UNKNOWN";
+}
+
+#define CC_EVENT _e
+#define CC_TYPE _t
+
+#define DEFINE_NO_PREPEND_TYPE_NAME_FUNCTION(typeName, eventOrType, ...)\
+  DEFINE_TYPE_NAME_FUNCTION_HELPER(, typeName, eventOrType, __VA_ARGS__)
+
+#define DEFINE_CCAPI_TYPE_NAME_FUNCTION(typeName, eventOrType, ...)\
+  DEFINE_TYPE_NAME_FUNCTION_HELPER(ccapi_, typeName, eventOrType, __VA_ARGS__)
+
+#define DEFINE_CC_TYPE_NAME_FUNCTION(typeName, eventOrType, ...)\
+  DEFINE_TYPE_NAME_FUNCTION_HELPER(cc_, typeName, eventOrType, __VA_ARGS__)
+
+#define DEFINE_TYPE_NAME_FUNCTION_HELPER(tokenPrepend, typeName, eventOrType, ...)\
+  static struct ename tokenPrepend##typeName##_names[] = {\
+    __VA_ARGS__, \
+    { 0, NULL } \
+  };\
+  \
+  ECC_API cc_string_t typeName##_getname(tokenPrepend##typeName##eventOrType ev) \
+  {\
+      return egetname(&tokenPrepend##typeName##_names[0], (int) ev);\
+  }  
+
+//stringizing enums from ccapi_types.h
+
+//define device_event_getname(ccapi_device_event_e);
+DEFINE_CCAPI_TYPE_NAME_FUNCTION(device_event, CC_EVENT,
+                                ENAME_DECL(CCAPI_DEVICE_EV_CONFIG_CHANGED),
+                                ENAME_DECL(CCAPI_DEVICE_EV_STATE),
+                                ENAME_DECL(CCAPI_DEVICE_EV_IDLE_SET),
+                                ENAME_DECL(CCAPI_DEVICE_EV_MWI_LAMP),
+                                ENAME_DECL(CCAPI_DEVICE_EV_NOTIFYPROMPT),
+                                ENAME_DECL(CCAPI_DEVICE_EV_SERVER_STATUS),
+                                ENAME_DECL(CCAPI_DEVICE_EV_BLF),
+                                ENAME_DECL(CCAPI_DEVICE_EV_CAMERA_ADMIN_CONFIG_CHANGED),
+                                ENAME_DECL(CCAPI_DEVICE_EV_VIDEO_CAP_ADMIN_CONFIG_CHANGED)
+                                );
+
+//define call_event_getname(ccapi_call_event_e);
+DEFINE_CCAPI_TYPE_NAME_FUNCTION(call_event, CC_EVENT,
+                                ENAME_DECL(CCAPI_CALL_EV_CREATED),
+                                ENAME_DECL(CCAPI_CALL_EV_STATE),
+                                ENAME_DECL(CCAPI_CALL_EV_CALLINFO),
+                                ENAME_DECL(CCAPI_CALL_EV_ATTR),
+                                ENAME_DECL(CCAPI_CALL_EV_SECURITY),
+                                ENAME_DECL(CCAPI_CALL_EV_LOG_DISP),
+                                ENAME_DECL(CCAPI_CALL_EV_PLACED_CALLINFO),
+                                ENAME_DECL(CCAPI_CALL_EV_STATUS),
+                                ENAME_DECL(CCAPI_CALL_EV_SELECT),
+                                ENAME_DECL(CCAPI_CALL_EV_LAST_DIGIT_DELETED),
+                                ENAME_DECL(CCAPI_CALL_EV_GCID),
+                                ENAME_DECL(CCAPI_CALL_EV_XFR_OR_CNF_CANCELLED),
+                                ENAME_DECL(CCAPI_CALL_EV_PRESERVATION),
+                                ENAME_DECL(CCAPI_CALL_EV_CAPABILITY),
+                                ENAME_DECL(CCAPI_CALL_EV_VIDEO_AVAIL),
+                                ENAME_DECL(CCAPI_CALL_EV_VIDEO_OFFERED),
+                                ENAME_DECL(CCAPI_CALL_EV_RECEIVED_INFO),
+                                ENAME_DECL(CCAPI_CALL_EV_RINGER_STATE),
+                                ENAME_DECL(CCAPI_CALL_EV_CONF_PARTICIPANT_INFO),
+                                ENAME_DECL(CCAPI_CALL_EV_MEDIA_INTERFACE_UPDATE_BEGIN),
+                                ENAME_DECL(CCAPI_CALL_EV_MEDIA_INTERFACE_UPDATE_SUCCESSFUL),
+                                ENAME_DECL(CCAPI_CALL_EV_MEDIA_INTERFACE_UPDATE_FAIL)
+                                );
+
+//define line_event_getname(ccapi_line_event_e);
+DEFINE_CCAPI_TYPE_NAME_FUNCTION(line_event, CC_EVENT,
+                                ENAME_DECL(CCAPI_LINE_EV_CONFIG_CHANGED),
+                                ENAME_DECL(CCAPI_LINE_EV_REG_STATE),
+                                ENAME_DECL(CCAPI_LINE_EV_CAPSET_CHANGED),
+                                ENAME_DECL(CCAPI_LINE_EV_CFWDALL),
+                                ENAME_DECL(CCAPI_LINE_EV_MWI)
+                                );
+
+//
+//
+//stringizing enums from cc_constants.h
+//
+//
+
+
+//define digit_getname(cc_digit_t);
+DEFINE_CC_TYPE_NAME_FUNCTION(digit, CC_TYPE,
+                             ENAME_DECL(KEY_1),
+                             ENAME_DECL(KEY_2),
+                             ENAME_DECL(KEY_3),
+                             ENAME_DECL(KEY_4),
+                             ENAME_DECL(KEY_5),
+                             ENAME_DECL(KEY_6),
+                             ENAME_DECL(KEY_7),
+                             ENAME_DECL(KEY_8),
+                             ENAME_DECL(KEY_9),
+                             ENAME_DECL(KEY_0),
+                             ENAME_DECL(KEY_STAR),
+                             ENAME_DECL(KEY_POUND),
+                             ENAME_DECL(KEY_A),
+                             ENAME_DECL(KEY_B),
+                             ENAME_DECL(KEY_C),
+                             ENAME_DECL(KEY_D)
+                             );
+
+//define cucm_mode_getname(cc_cucm_mode_t);
+DEFINE_CC_TYPE_NAME_FUNCTION(cucm_mode, CC_TYPE,
+                             ENAME_DECL(CC_MODE_INVALID),
+                             ENAME_DECL(CC_MODE_CCM),
+                             ENAME_DECL(CC_MODE_NONCCM)
+                             );
+
+//define line_feature_getname(cc_line_feature_t);
+DEFINE_CC_TYPE_NAME_FUNCTION(line_feature, CC_TYPE,
+                             ENAME_DECL(CC_LINE_FEATURE_NONE),
+	                         ENAME_DECL(CC_LINE_FEATURE_REDIAL),
+	                         ENAME_DECL(CC_LINE_FEATURE_SPEEDDIAL),
+	                         ENAME_DECL(CC_LINE_FEATURE_DN),
+	                         ENAME_DECL(CC_LINE_FEATURE_SERVICE),
+	                         ENAME_DECL(CC_LINE_FEATURE_SPEEDDIALBLF),
+	                         ENAME_DECL(CC_LINE_FEATURE_MALICIOUSCALLID),
+	                         ENAME_DECL(CC_LINE_FEATURE_QUALREPORTTOOL),
+	                         ENAME_DECL(CC_LINE_FEATURE_ALLCALLS),
+	                         ENAME_DECL(CC_LINE_FEATURE_ANSWEROLDEST),
+	                         ENAME_DECL(CC_LINE_FEATURE_SERVICES),
+	                         ENAME_DECL(CC_LINE_FEATURE_BLF)
+                             );
+
+//define feature_option_mask_getname(cc_feature_option_mask_t);
+DEFINE_CC_TYPE_NAME_FUNCTION(feature_option_mask, CC_TYPE,
+                             ENAME_DECL(CC_FEATUREOPTIONMASK_NONE),
+  	                         ENAME_DECL(CC_FEATUREOPTIONMASK_BLF_PICKUP)
+                             );
+
+//define service_cause_getname(cc_service_cause_t);
+DEFINE_CC_TYPE_NAME_FUNCTION(service_cause, CC_TYPE,
+                             ENAME_DECL(CC_CAUSE_NONE),
+ 	                         ENAME_DECL(CC_CAUSE_FAILOVER),
+	                         ENAME_DECL(CC_CAUSE_FALLBACK),
+	                         ENAME_DECL(CC_CAUSE_REG_ALL_FAILED),
+	                         ENAME_DECL(CC_CAUSE_SHUTDOWN),
+	                         ENAME_DECL(CC_CAUSE_UNREG_ALL),
+	                         ENAME_DECL(CC_CAUSE_LOGOUT_RESET)
+                             );
+
+//define service_state_getname(cc_service_state_t);
+DEFINE_CC_TYPE_NAME_FUNCTION(service_state, CC_TYPE,
+                             ENAME_DECL(CC_STATE_IDLE),
+                             ENAME_DECL(CC_STATE_INS),
+                             ENAME_DECL(CC_STATE_OOS),
+                             ENAME_DECL(CC_STATE_PRO_BASE)
+                             );
+
+//define ccm_status_getname(cc_ccm_status_t);
+DEFINE_CC_TYPE_NAME_FUNCTION(ccm_status, CC_TYPE,
+                             ENAME_DECL(CC_CCM_STATUS_NONE),
+                             ENAME_DECL(CC_CCM_STATUS_STANDBY),
+                             ENAME_DECL(CC_CCM_STATUS_ACTIVE)
+                             );
+
+//define reg_state_getname(cc_line_reg_state_t);
+DEFINE_CC_TYPE_NAME_FUNCTION(line_reg_state, CC_TYPE,
+	                         ENAME_DECL(CC_UNREGISTERED),
+	                         ENAME_DECL(CC_REGISTERED)
+                             );
+
+//define shutdown_reason_getname(cc_shutdown_reason_t);
+DEFINE_CC_TYPE_NAME_FUNCTION(shutdown_reason, CC_TYPE,
+                             ENAME_DECL(CC_SHUTDOWN_NORMAL),
+                             ENAME_DECL(CC_SHUTDOWN_UNSPECIFIED),
+                             ENAME_DECL(CC_SHUTDOWN_VERMISMATCH)
+                             );
+
+//define kpml_config_getname(cc_kpml_config_t);
+DEFINE_CC_TYPE_NAME_FUNCTION(kpml_config, CC_TYPE,
+                             ENAME_DECL(CC_KPML_NONE),
+                             ENAME_DECL(CC_KPML_SIGNAL_ONLY),
+                             ENAME_DECL(CC_KPML_DTMF_ONLY),
+                             ENAME_DECL(CC_KPML_BOTH)
+                             );
+
+//define upgrade_getname(cc_upgrade_t);
+DEFINE_CC_TYPE_NAME_FUNCTION(upgrade, CC_TYPE,
+                             ENAME_DECL(CC_UPGRADE_NONE),
+	                         ENAME_DECL(CC_UPGRADE_NOW),
+	                         ENAME_DECL(CC_UPGRADE_LATER)
+                             );
+
+//define sdp_direction_getname(cc_sdp_direction_t);
+DEFINE_CC_TYPE_NAME_FUNCTION(sdp_direction, CC_TYPE,
+                             ENAME_DECL(CC_SDP_DIRECTION_INACTIVE),
+                             ENAME_DECL(CC_SDP_DIRECTION_SENDONLY),
+                             ENAME_DECL(CC_SDP_DIRECTION_RECVONLY),
+                             ENAME_DECL(CC_SDP_DIRECTION_SENDRECV),
+                             ENAME_DECL(CC_SDP_MAX_QOS_DIRECTIONS)
+                             );
+
+//define blf_state_getname(cc_blf_state_t);
+DEFINE_CC_TYPE_NAME_FUNCTION(blf_state, CC_TYPE,
+	                         ENAME_DECL(CC_SIP_BLF_UNKNOWN),
+	                         ENAME_DECL(CC_SIP_BLF_IDLE),
+	                         ENAME_DECL(CC_SIP_BLF_INUSE),
+                             ENAME_DECL(CC_SIP_BLF_EXPIRED),
+	                         ENAME_DECL(CC_SIP_BLF_REJECTED),
+	                         ENAME_DECL(CC_SIP_BLF_ALERTING)
+                             );
+
+//define blf_feature_mask_getname(cc_blf_feature_mask_t);
+DEFINE_CC_TYPE_NAME_FUNCTION   (blf_feature_mask, CC_TYPE,
+                                ENAME_DECL(CC_BLF_FEATURE_MASK_NONE),
+                                ENAME_DECL(CC_BLF_FEATURE_MASK_PICKUP)
+                                );
+
+//define call_state_getname(cc_call_state_t);
+DEFINE_CC_TYPE_NAME_FUNCTION   (call_state, CC_TYPE,
+	                            ENAME_DECL(OFFHOOK),
+	                            ENAME_DECL(ONHOOK),
+	                            ENAME_DECL(RINGOUT),
+	                            ENAME_DECL(RINGIN),
+	                            ENAME_DECL(PROCEED),
+	                            ENAME_DECL(CONNECTED),
+	                            ENAME_DECL(HOLD),
+	                            ENAME_DECL(REMHOLD),
+	                            ENAME_DECL(RESUME),
+	                            ENAME_DECL(BUSY),
+	                            ENAME_DECL(REORDER),
+	                            ENAME_DECL(CONFERENCE),
+	                            ENAME_DECL(DIALING),
+	                            ENAME_DECL(REMINUSE),
+	                            ENAME_DECL(HOLDREVERT),
+	                            ENAME_DECL(WHISPER),
+                                ENAME_DECL(PRESERVATION),
+	                            ENAME_DECL(WAITINGFORDIGITS),
+                                ENAME_DECL(MAX_CALL_STATES)
+                                );
+
+//define call_attr_getname(cc_call_attr_t);
+DEFINE_CC_TYPE_NAME_FUNCTION   (call_attr, CC_TYPE,
+	                            ENAME_DECL(CC_ATTR_NOT_DEFINED),
+	                            ENAME_DECL(CC_ATTR_NORMAL),
+	                            ENAME_DECL(CC_ATTR_XFR_CONSULT),
+	                            ENAME_DECL(CC_ATTR_CONF_CONSULT),
+	                            ENAME_DECL(CC_ATTR_BARGING),
+	                            ENAME_DECL(CC_ATTR_RIUHELD_LOCKED),
+	                            ENAME_DECL(CC_ATTR_LOCAL_CONF_CONSULT),
+	                            ENAME_DECL(CC_ATTR_LOCAL_XFER_CONSULT),
+	                            ENAME_DECL(CC_ATTR_CFWDALL),
+	                            ENAME_DECL(CC_ATTR_CFWD_ALL),
+	                            ENAME_DECL(CC_ATTR_MAX)
+                                );
+
+//define hold_reason_getname(cc_hold_reason_t);
+DEFINE_CC_TYPE_NAME_FUNCTION   (hold_reason, CC_TYPE,
+                                ENAME_DECL(CC_HOLD_REASON_NONE),
+                                ENAME_DECL(CC_HOLD_REASON_XFER),
+                                ENAME_DECL(CC_HOLD_REASON_CONF),
+                                ENAME_DECL(CC_HOLD_REASON_SWAP),
+                                ENAME_DECL(CC_HOLD_REASON_INTERNAL)
+                                );
+
+//define call_type_getname(cc_call_type_t);
+DEFINE_CC_TYPE_NAME_FUNCTION   (call_type, CC_TYPE,
+                                ENAME_DECL(CC_CALL_TYPE_NONE),
+                                ENAME_DECL(CC_CALL_TYPE_INCOMING),
+                                ENAME_DECL(CC_CALL_TYPE_OUTGOING),
+                                ENAME_DECL(CC_CALL_TYPE_FORWARDED)
+                                );
+
+//define call_security_getname(cc_call_security_t);
+DEFINE_CC_TYPE_NAME_FUNCTION   (call_security, CC_TYPE,
+	                            ENAME_DECL(CC_SECURITY_NONE),
+	                            ENAME_DECL(CC_SECURITY_UNKNOWN),
+	                            ENAME_DECL(CC_SECURITY_AUTHENTICATED),
+	                            ENAME_DECL(CC_SECURITY_NOT_AUTHENTICATED),
+	                            ENAME_DECL(CC_SECURITY_ENCRYPTED)
+                                );
+
+//define call_policy_getname(cc_call_policy_t);
+DEFINE_CC_TYPE_NAME_FUNCTION   (call_policy, CC_TYPE,
+	                            ENAME_DECL(CC_POLICY_NONE),
+	                            ENAME_DECL(CC_POLICY_UNKNOWN),
+	                            ENAME_DECL(CC_POLICY_CHAPERONE)
+                                );
+
+//define log_disposition_getname(cc_log_disposition_t);
+DEFINE_CC_TYPE_NAME_FUNCTION   (log_disposition, CC_TYPE,
+	                            ENAME_DECL(CC_LOGD_MISSED),
+	                            ENAME_DECL(CC_LOGD_RCVD),
+	                            ENAME_DECL(CC_LOGD_SENT),
+	                            ENAME_DECL(CC_LOGD_UNKNWN),
+	                            ENAME_DECL(CC_LOGD_DELETE)
+                                );
+
+//define call_priority_getname(cc_call_priority_t);
+DEFINE_CC_TYPE_NAME_FUNCTION   (call_priority, CC_TYPE,
+	                            ENAME_DECL(CC_PRIORITY_NORMAL),
+	                            ENAME_DECL(CC_PRIORITY_URGENT)
+                                );
+
+//define call_selection_getname(cc_call_selection_t);
+DEFINE_CC_TYPE_NAME_FUNCTION   (call_selection, CC_TYPE,
+	                            ENAME_DECL(CC_CALL_SELECT_NONE),
+	                            ENAME_DECL(CC_CALL_SELECT_LOCKED),
+	                            ENAME_DECL(CC_CALL_SELECT_UNLOCKED),
+	                            ENAME_DECL(CC_CALL_SELECT_REMOTE_LOCKED)
+                                );
+
+//cc_string_t call_capability_getname(ccapi_call_capability_e);
+DEFINE_CCAPI_TYPE_NAME_FUNCTION(call_capability, CC_EVENT,
+	                            ENAME_DECL(CCAPI_CALL_CAP_NEWCALL),
+                                ENAME_DECL(CCAPI_CALL_CAP_ANSWER),
+                                ENAME_DECL(CCAPI_CALL_CAP_ENDCALL),
+                                ENAME_DECL(CCAPI_CALL_CAP_HOLD),
+                                ENAME_DECL(CCAPI_CALL_CAP_RESUME),
+                                ENAME_DECL(CCAPI_CALL_CAP_CALLFWD),
+                                ENAME_DECL(CCAPI_CALL_CAP_DIAL),
+                                ENAME_DECL(CCAPI_CALL_CAP_BACKSPACE),
+                                ENAME_DECL(CCAPI_CALL_CAP_SENDDIGIT),
+                                ENAME_DECL(CCAPI_CALL_CAP_TRANSFER),
+                                ENAME_DECL(CCAPI_CALL_CAP_CONFERENCE),
+                                ENAME_DECL(CCAPI_CALL_CAP_SWAP),
+                                ENAME_DECL(CCAPI_CALL_CAP_REDIAL),
+                                ENAME_DECL(CCAPI_CALL_CAP_JOIN),
+                                ENAME_DECL(CCAPI_CALL_CAP_SELECT),
+                                ENAME_DECL(CCAPI_CALL_CAP_RMVLASTPARTICIPANT),
+                                ENAME_DECL(CCAPI_CALL_CAP_MAX)
+                                );
+
+//define srv_ctrl_req_getname(cc_srv_ctrl_req_t);
+DEFINE_CC_TYPE_NAME_FUNCTION   (srv_ctrl_req, CC_TYPE,
+	                            ENAME_DECL(CC_DEVICE_RESET),
+	                            ENAME_DECL(CC_DEVICE_RESTART),
+	                            ENAME_DECL(CC_DEVICE_ICMP_UNREACHABLE)
+                                );
+
+//define srv_ctrl_cmd_getname(cc_srv_ctrl_cmd_t);
+DEFINE_CC_TYPE_NAME_FUNCTION   (srv_ctrl_cmd, CC_TYPE,
+	                            ENAME_DECL(CC_ACTION_RESET),
+	                            ENAME_DECL(CC_ACTION_RESTART)
+                                );
+
+//define message_type_getname(cc_message_type_t);
+DEFINE_CC_TYPE_NAME_FUNCTION   (message_type, CC_TYPE,
+	                            ENAME_DECL(CC_VOICE_MESSAGE),
+	                            ENAME_DECL(CC_TEXT_MESSAGE)
+                                );
+
+//define lamp_state_getname(cc_lamp_state_t);
+DEFINE_CC_TYPE_NAME_FUNCTION   (lamp_state, CC_TYPE,
+	                            ENAME_DECL(CC_LAMP_NONE),
+	                            ENAME_DECL(CC_LAMP_ON),
+	                            ENAME_DECL(CC_LAMP_BLINK),
+	                            ENAME_DECL(CC_LAMP_FRESH)
+                                );
+
+//define cause_getname(cc_cause_t);
+DEFINE_CC_TYPE_NAME_FUNCTION   (cause, CC_TYPE,
+	                            ENAME_DECL(CC_CAUSE_MIN),
+	                            ENAME_DECL(CC_CAUSE_BASE),
+	                            ENAME_DECL(CC_CAUSE_OK),
+	                            ENAME_DECL(CC_CAUSE_ERROR),
+	                            ENAME_DECL(CC_CAUSE_UNASSIGNED_NUM),
+	                            ENAME_DECL(CC_CAUSE_NO_RESOURCE),
+	                            ENAME_DECL(CC_CAUSE_NO_ROUTE),
+	                            ENAME_DECL(CC_CAUSE_NORMAL),
+	                            ENAME_DECL(CC_CAUSE_BUSY),
+	                            ENAME_DECL(CC_CAUSE_NO_USER_RESP),
+	                            ENAME_DECL(CC_CAUSE_NO_USER_ANS),
+	                            ENAME_DECL(CC_CAUSE_REJECT),
+	                            ENAME_DECL(CC_CAUSE_INVALID_NUMBER),
+	                            ENAME_DECL(CC_CAUSE_FACILITY_REJECTED),
+	                            ENAME_DECL(CC_CAUSE_CALL_ID_IN_USE),
+	                            ENAME_DECL(CC_CAUSE_XFER_LOCAL),
+	                            ENAME_DECL(CC_CAUSE_XFER_REMOTE),
+	                            ENAME_DECL(CC_CAUSE_XFER_BY_REMOTE),
+	                            ENAME_DECL(CC_CAUSE_XFER_CNF),
+	                            ENAME_DECL(CC_CAUSE_CONGESTION),
+	                            ENAME_DECL(CC_CAUSE_ANONYMOUS),
+	                            ENAME_DECL(CC_CAUSE_REDIRECT),
+	                            ENAME_DECL(CC_CAUSE_PAYLOAD_MISMATCH),
+	                            ENAME_DECL(CC_CAUSE_CONF),
+	                            ENAME_DECL(CC_CAUSE_REPLACE),
+	                            ENAME_DECL(CC_CAUSE_NO_REPLACE_CALL),
+	                            ENAME_DECL(CC_CAUSE_NO_RESUME),
+	                            ENAME_DECL(CC_CAUSE_NO_MEDIA),
+	                            ENAME_DECL(CC_CAUSE_REQUEST_PENDING),
+	                            ENAME_DECL(CC_CAUSE_INVALID_PARTICIPANT),
+	                            ENAME_DECL(CC_CAUSE_NO_CNF_BRIDE),
+	                            ENAME_DECL(CC_MAXIMUM_PARTICIPANT),
+	                            ENAME_DECL(CC_KEY_NOT_ACTIVE),
+	                            ENAME_DECL(CC_TEMP_NOT_AVAILABLE),
+	                            ENAME_DECL(CC_CAUSE_REMOTE_SERVER_ERROR),
+	                            ENAME_DECL(CC_CAUSE_NOT_FOUND),
+	                            ENAME_DECL(CC_CAUSE_SECURITY_FAILURE),
+	                            ENAME_DECL(CC_CAUSE_MONITOR),
+	                            ENAME_DECL(CC_CAUSE_UI_STATE_BUSY),
+	                            ENAME_DECL(CC_SIP_CAUSE_ANSWERED_ELSEWHERE),
+	                            ENAME_DECL(CC_CAUSE_RETRIEVED),
+	                            ENAME_DECL(CC_CAUSE_FORWARDED),
+	                            ENAME_DECL(CC_CAUSE_ABANDONED),
+	                            ENAME_DECL(CC_CAUSE_XFER_LOCAL_WITH_DIALSTRING),
+	                            ENAME_DECL(CC_CAUSE_BW_OK),
+	                            ENAME_DECL(CC_CAUSE_XFER_COMPLETE),
+	                            ENAME_DECL(CC_CAUSE_RESP_TIMEOUT),
+	                            ENAME_DECL(CC_CAUSE_MAX)
+                                );
+
+//define subscriptions_ext_getname(cc_subscriptions_ext_t);
+DEFINE_CC_TYPE_NAME_FUNCTION   (subscriptions_ext, CC_TYPE,
+                                ENAME_DECL(CC_SUBSCRIPTIONS_KPML_EXT),
+                                ENAME_DECL(CC_SUBSCRIPTIONS_PRESENCE_EXT),
+                                ENAME_DECL(CC_SUBSCRIPTIONS_REMOTECC_EXT),
+                                ENAME_DECL(CC_SUBSCRIPTIONS_REMOTECC_OPTIONSIND_EXT),
+                                ENAME_DECL(CC_SUBSCRIPTIONS_CONFIGAPP_EXT),
+                                ENAME_DECL(CC_SUBSCRIPTIONS_MEDIA_INFO_EXT)
+                                );
+
+//define apply_config_result_getname(cc_apply_config_result_t);
+DEFINE_CC_TYPE_NAME_FUNCTION   (apply_config_result, CC_TYPE,
+                                ENAME_DECL(APPLY_CONFIG_NONE),
+                                ENAME_DECL(APPLY_DYNAMICALLY),
+                                ENAME_DECL(RESTART_NEEDED)
+                                );
+
+
+
new file mode 100644
--- /dev/null
+++ b/media/webrtc/signaling/src/common/CommonTypes.h
@@ -0,0 +1,98 @@
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (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.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is the Cisco Systems SIP Stack.
+ *
+ * The Initial Developer of the Original Code is
+ * Cisco Systems (CSCO).
+ * Portions created by the Initial Developer are Copyright (C) 2002
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *  Enda Mannion <emannion@cisco.com>
+ *  Suhas Nandakumar <snandaku@cisco.com>
+ *  Ethan Hugg <ehugg@cisco.com>
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only