FreeCalypso > hg > themwi-system-sw
diff sip-out/call.h @ 154:e54b0a9e322f
beginning of themwi-sip-out
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Tue, 11 Oct 2022 23:04:01 -0800 |
parents | sip-in/call.h@e499e8db8b82 |
children | bfa9f0c0f0ac |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sip-out/call.h Tue Oct 11 23:04:01 2022 -0800 @@ -0,0 +1,90 @@ +/* + * In this header file we define two key structures for call state + * in themwi-sip-out: struct call exists for each call just like in + * themwi-sip-in, and struct mncc_conn exists for every connection + * to our outcall socket. + */ + +struct mncc_conn { + int fd; + struct mncc_conn *next; +}; + +#define MAX_SIP_CALL_ID 30 +#define MAX_SIP_FROM_HEADER (MAX_SIP_USER_PART + 5 + 17 + 5 + 8) +#define MAX_SIP_TO_URI (MAX_SIP_USER_PART + MAX_SIP_DEST_DOMAIN + 5) +#define MAX_SIP_TO_TAG 63 + +struct call { + /* global call list */ + struct call *next; + char sip_call_id[MAX_SIP_CALL_ID+1]; + int sip_call_exists; + /* MNCC call origin */ + struct mncc_conn *mncc; + uint32_t mncc_callref; + /* call routing info */ + char from_user[MAX_SIP_USER_PART+1]; + char from_header[MAX_SIP_FROM_HEADER+1]; + char to_uri[MAX_SIP_TO_URI+1]; + char to_tag[MAX_SIP_TO_TAG+1]; + struct sockaddr_in udp_sin; + /* PSTN side RTP info */ + struct sockaddr_in pstn_rtp_local; + struct sockaddr_in pstn_rtp_remote; + int use_pcma; + /* GSM side RTP info */ + struct sockaddr_storage gsm_rtp_osmo; + struct sockaddr_storage gsm_rtp_tmgw; + uint32_t gsm_payload_type; + uint32_t gsm_payload_msg_type; + /* state machines */ + uint32_t overall_state; + uint32_t mncc_state; + uint32_t sip_state; + uint32_t mgw_state; + uint32_t mgw_ep_id; + uint32_t mgw_xact; + uint32_t mgw_xact_id; + unsigned sip_tx_count; + time_t sip_clear_time; + int dtmf_digit; + int dtmf_pending_stop; +}; + +#define OVERALL_STATE_GSM_RTP 1 +#define OVERALL_STATE_CRCX 2 +#define OVERALL_STATE_SIP_OUT 3 +#define OVERALL_STATE_RINGING 4 +#define OVERALL_STATE_CONNECTED 5 +#define OVERALL_STATE_TEARDOWN 6 +#define OVERALL_STATE_SIP_FINISH 7 +#define OVERALL_STATE_GC 8 + +#define MNCC_STATE_MO_PROC 1 +#define MNCC_STATE_GOT_RTP 2 +#define MNCC_STATE_ALERTING 3 +#define MNCC_STATE_CONNECTED 4 +#define MNCC_STATE_DISCONNECT 5 +#define MNCC_STATE_RELEASE 6 + +#define SIP_STATE_INV_SENT 1 +#define SIP_STATE_100_RCVD 2 +#define SIP_STATE_CONNECTED 3 +#define SIP_STATE_CANCEL_SENT 4 +#define SIP_STATE_BYE_SENT 5 +#define SIP_STATE_ACCEPT_100 6 +#define SIP_STATE_ACCEPT_200 7 +#define SIP_STATE_ENDED 8 + +#define MGW_STATE_NO_EXIST 0 +#define MGW_STATE_ALLOCATED 1 +#define MGW_STATE_IBT_CONN 2 +#define MGW_STATE_COMPLETE 3 +#define MGW_STATE_HELD 4 +#define MGW_STATE_MDCX_IBT 5 +#define MGW_STATE_MDCX_CONN 6 +#define MGW_STATE_MDCX_HOLD 7 +#define MGW_STATE_MDCX_RETR 8 +#define MGW_STATE_DTMF_OP 9 +#define MGW_STATE_DELETING 10