OsmocomBB MNCC socket implementation without LCR

Gerard Pinto gerardfly9 at gmail.com
Fri Mar 17 09:47:18 UTC 2017


Greetings,

I have been working with Layer23 stack of OsmocomBB since a couple of
months.
I decided to try MNCC socket interface without LCR (I'm aware there is an
implementation embedded in LCR gsm-ms).
I reverse engineered and wrote a simple C application taking mncc.h.

Problem: I'm unable to make a call on live network, although it does channel
allocation, ciphering etc.
Flow:
1. Create MNCC struct and write on to the osmocomBB socket
2. OsmocomBB parses it well and request for channel, ciphering mode, init
MM, sending SETUP etc works great.
3. However, in response to step.2 after sending SETUP it returns with (ms 1)
Received 'RELEASE_COMPL' in CC state INITIATED. Why does it release CC?
4. I further debugged, the reason for release is in fn.
gsm48_cc_rx_release_compl in (gsm8_cc.c) it says mncc-cause =
*GSM48_IE_CAUSE*. with no description.

I really don't know whats causing this issue. Any help would be much
appreciated.
Or It would be very kind if someone could guide me.

My mncc socket create code:
	struct gsm_mncc *mncc;
	int i = 0;
	int call_ref = new_callref++;
	mncc = create_mncc(MNCC_SETUP_REQ, call_ref);

	if (!strncasecmp(number, "emerg", 5)) {
		printf("Make emergency call\n");
		mncc->emergency = 1;
	} else {
		printf("make call to %s\n", number);
		mncc->fields |= MNCC_F_CALLED;

		if(number[0] == '+') {
			number++;
			mncc->called.type = 1; /*international*/
		} else {
			mncc->called.type = 0; /*auto-unknown -prefix must be used*/
		}
		mncc->called.plan = 1;
		strncpy(mncc->called.number, number,
		sizeof(mncc->called.number) - 1);
		printf("Calling number %s\n", mncc->called.number);

		/* bearer capability (mandatory) */
		mncc->fields |= MNCC_F_BEARER_CAP;
		mncc->bearer_cap.coding = 0;
		mncc->bearer_cap.speech_ctm = 0;

		mncc->bearer_cap.radio = 3; /** Support TCH/H also*/
		/** Supported rates **/
		mncc->bearer_cap.speech_ver[i++] = 2; /* support full rate v2 */
		mncc->bearer_cap.speech_ver[i++] = 0; /* support full rate v1 */
		mncc->bearer_cap.speech_ver[i++] = 1; /* support half rate v2 */
		mncc->bearer_cap.speech_ver[i] = -1; /* end of list */
		/** END **/
		
		mncc->bearer_cap.transfer = 0;
		mncc->bearer_cap.mode = 0;

		/* CC capabilities (optional) DTMF */
		mncc->fields |= MNCC_F_CCCAP;
		mncc->cccap.dtmf = 1;

		mncc->fields |= MNCC_F_CCCAP;
		mncc->clir.inv = 1;
		mncc->clir.sup = 1;
	}

	return send_and_free_mncc(mncc->msg_type, mncc);


Looking forward to the reply,
Thanks,
Gerard



--
View this message in context: http://baseband-devel.722152.n3.nabble.com/OsmocomBB-MNCC-socket-implementation-without-LCR-tp4026771.html
Sent from the baseband-devel mailing list archive at Nabble.com.


More information about the baseband-devel mailing list