Media/WebRTC/SIPCCMessaging: Difference between revisions

From MozillaWiki
< Media‎ | WebRTC
Jump to navigation Jump to search
Line 3: Line 3:
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.
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 <code>CC_Call</code> interface in <code>media/webrtc/signaling/include/CC_Call.h</code>. Example:
* Add the new API to the abstract <code>CC_Call</code> interface in <code>media/webrtc/signaling/include/CC_Call.h</code>.  
   virtual void setPeerConnection(const std::string& handle) = 0;
   virtual void setPeerConnection(const std::string& handle) = 0;
* Add the new API to the the concrete <code>CC_SIPCall</code> implementation in <code>media/webrtc/signaling/src/softphonewrapper.h</code>:
        virtual void setPeerConnection(const std::string& handle);
And <code>media/webrtc/signaling/src/softphonewrapper.cpp</code>:
  void CC_SIPCCCall::setPeerConnection(const std::string& handle)
  {
    CSFLogDebug(logTag, "setPeerConnection");
   
    CCAPI_SetPeerConnection(callHandle, handle.c_str());
  }





Revision as of 17:18, 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_Call interface in media/webrtc/signaling/include/CC_Call.h.
 virtual void setPeerConnection(const std::string& handle) = 0;


  • Add the new API to the the concrete CC_SIPCall implementation in media/webrtc/signaling/src/softphonewrapper.h:
       virtual void setPeerConnection(const std::string& handle);

And media/webrtc/signaling/src/softphonewrapper.cpp:

  void CC_SIPCCCall::setPeerConnection(const std::string& handle)
 {
   CSFLogDebug(logTag, "setPeerConnection");
   
   CCAPI_SetPeerConnection(callHandle, handle.c_str());
 }



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)