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 109569 f1b524d51e6b055a5e8fd1c07d37ddc4805c4a03
parent 109568 50005364bca4b2b28c6373aa01e82dadc1affd74
child 109570 4bea9e9d2e2c0cbd23c59cb12ac97b0c8cc26e17
push id1145
push userpastithas@mozilla.com
push dateMon, 08 Oct 2012 14:21:16 +0000
treeherderfx-team@e7f2e2c944b7 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersjesup, gerv
bugs792188
milestone18.0a1
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),