Media/WebRTC/SIPCCMessaging: Difference between revisions
Jump to navigation
Jump to search
| Line 11: | Line 11: | ||
virtual void setPeerConnection(const std::string& handle); | virtual void setPeerConnection(const std::string& handle); | ||
And <code>media/webrtc/signaling/src/softphonewrapper.cpp</code>: | * And <code>media/webrtc/signaling/src/softphonewrapper.cpp</code>. Note that this is just calling a wrapper and this is where the C++/C transition takes place: | ||
void CC_SIPCCCall::setPeerConnection(const std::string& handle) | void CC_SIPCCCall::setPeerConnection(const std::string& handle) | ||
| Line 18: | Line 18: | ||
CCAPI_SetPeerConnection(callHandle, handle.c_str()); | CCAPI_SetPeerConnection(callHandle, handle.c_str()); | ||
} | |||
* Add the new <code>CCAPI_*</code> wrapper to <code>media/webrtc/signaling/src/sipcc/include/ccapi_call.h</code> | |||
cc_return_t CCAPI_SetPeerConnection(cc_call_handle_t handle, cc_peerconnection_t pc); | |||
* The implementation goes in <code>media/webrtc/signaling/src/sipcc/core/ccapp/ccappi_call.c</code>. In this case this is a wrapper around a feature set: | |||
cc_return_t CCAPI_SetPeerConnection(cc_call_handle_t handle, cc_peerconnection_t pc) { | |||
return CC_CallFeature_SetPeerConnection(handle, pc); | |||
} | } | ||
Revision as of 17:23, 26 June 2012
Notes on how to add a new message to SIPCC
SIPCC uses a bunch of message queues so it can be complicated to figure out how to add a new subroutine call at the CC API layer and have it make it all the way to the GSM layer. The following is just a checklist of the things you will have to change.
- Add the new API to the abstract
CC_Callinterface inmedia/webrtc/signaling/include/CC_Call.h.
virtual void setPeerConnection(const std::string& handle) = 0;
- Add the new API to the the concrete
CC_SIPCallimplementation inmedia/webrtc/signaling/src/softphonewrapper.h:
virtual void setPeerConnection(const std::string& handle);
- And
media/webrtc/signaling/src/softphonewrapper.cpp. Note that this is just calling a wrapper and this is where the C++/C transition takes place:
void CC_SIPCCCall::setPeerConnection(const std::string& handle)
{
CSFLogDebug(logTag, "setPeerConnection");
CCAPI_SetPeerConnection(callHandle, handle.c_str());
}
- Add the new
CCAPI_*wrapper tomedia/webrtc/signaling/src/sipcc/include/ccapi_call.h
cc_return_t CCAPI_SetPeerConnection(cc_call_handle_t handle, cc_peerconnection_t pc);
- The implementation goes in
media/webrtc/signaling/src/sipcc/core/ccapp/ccappi_call.c. In this case this is a wrapper around a feature set:
cc_return_t CCAPI_SetPeerConnection(cc_call_handle_t handle, cc_peerconnection_t pc) {
return CC_CallFeature_SetPeerConnection(handle, pc);
}
File: softphonewrapper/CC_SIPCCCall.cpp int CC_SIPCCCall::createOffer (MediaTrackTable* tracks, const std::string& hints) {
return CCAPI_CreateOffer(callHandle, tracks, 16384, 1024);
}
src/sipcc/core/ccapp/ccapi_call.c
cc_return_t CCAPI_CreateOffer(cc_call_handle_t handle, MediaTrackTable* tracks, int audioPort, int videoPort)
src/sipcc/core/ccapp/cc_call_feature.c
cc_return_t CC_CallFeature_CreateOffer(cc_call_handle_t call_handle, cc_sdp_direction_t video_pref)
src/sipcc/core/ccapp/cc_call_feature.c
cc_return_t cc_invokeFeature(cc_call_handle_t call_handle, group_cc_feature_t featureId, cc_sdp_direction_t video_pref, cc_jsep_action_t action, string_t data)
ccappTaskPostMsg ====> ccapp message queue src/sipcc/core/ccapp/ccprovider.c processSessionEvent (line_t line_id, callid_t call_id, unsigned int event, sdp_direction_e video_pref, ccSession_feature_t ccData) src/sipcc/core/gsm/ccapi.c void cc_createoffer (cc_srcs_t src_id, cc_srcs_t dst_id, callid_t call_id, line_t line, cc_features_t feature_id, cc_feature_data_t *data) cc_send_msg ====> gsm message queue src/sipcc/core/gsm/fim.c boolean fim_process_event (void *data, boolean cac_passed) src/sipcc/core/gsm/fsmdef.c static sm_rcs_t fsmdef_ev_createoffer (sm_event_t *event)