On Wed, Nov 25, 2015 at 4:12 PM, Holger Freyther <holger@freyther.de> wrote:

> On 25 Nov 2015, at 14:07, sergey kostanbaev <sergey.kostanbaev@gmail.com> wrote:
>
> Yes, initially I thought about using SMPP for USSD. But it looked really complicated since only few external SMPP libraries have support of USSD and most of that few are in C#/Java/etc. Moreover I didn't have any working software for USSD over SMPP to test interoperability with.

Hmm. We try to follow standard protocol when they exist. E.g. with "GSUP" the decision was
that we have a good SS7 MAP stack (with high amount of tests and Q.787 conformance) and
doing that in C at the time didn't look like an economic choice.

Do you remember how USSD is mapped to SMPP?

Yeah I have a description but wasn't able to test it in a real environment. I need to dig in my archives. I'll let you know.
 


> So I decided to use GPRS SUP socket as a simple transport to send MAP-like messages. Workflow of this SUP is very simple and basically it forwards SS messages with little modifications.

But why GPRS SUP then? E.g. it would be enough for you to use OAP (that just adds a very
simple way for authentication)?  Which of the existing GSUP messages do you use?

Well may be I wrongly used GPRS SUP as a description. I used none of GPRS SUP messages.  I used the ability to send messages over "TCP" (TCP + header) socket. Such code of a socket was in GSUP. I added GPRS_GSUP_MSGT_USSD_MAP constant to not pollute and distinguish that messages. It can b done on a raw socket, but I just reused GSUP socket wrapper. May be this was confusing.
 
holger