hi harald,
that sounds good. i will try this in hamburg on easterhegg, starting friday.
also i started coding on gsm_04_08.c file. i like to implement a real state machine and like to extract the call handling (application) from the signalling part (protocol). this way libbsc can be used to terminate calls to applications rather than just forwarding them.
here is my idea: we must define an API for applications to communicate with libbsc. i would suggest a structure with "message type", "call reference" and all informations like "calling party number". if the informations are not used, like "calling party number" in the "ALERTING" message, they are ignored:
struct high_level_structure_type_name { int message; int callref; u_char imei[..]; u_char imsi[..]; u_char tmsi[..]; u_char dialing[..]; u_char calling_pn[..]; int notify_ind; .... };
i would use a special message "NEW" for creating a new callref. after the instance (call) is released and freed, a special message "FREE" could be used. an example:
send NEW -> returns callref (or error) send SETUP (callref, imei) recv PROCEEDING (callref) recv ALERTING (callref) recv CONNECT (callref) recv DISCONNECT (callref, cause) send RELEASE (callref) recv FREE (callref)
paging, timers, release_complete, ... is handled by gsm_04_08.c, data base, numbering plan, call control is done by extracted application file. (let me call it callcontrol.c.)
the current application for call forwarding would be removed and put in a seperat file or even out of it and make it part of bsc_hack.
what do you think?
regards,
andreas
-----Ursprüngliche Nachricht----- Von: Harald Welte [mailto:laforge@gnumonks.org] Gesendet: Mittwoch, 8. April 2009 11:27 An: Andreas.Eversberg Cc: openbsc@lists.gnumonks.org Betreff: Re: Solved: BS-11 runs, but no Network on my Mobile
On Tue, Apr 07, 2009 at 04:11:05PM +0200, Andreas.Eversberg wrote:
hi,
everything works now, even without external (accurat) clock from telephone network.
the problem was the driver for some reason. with the latest GIT commit it works every time i startup the base or the software. (until now)
now comes the next part. what has to be done in order to terminate calls or make calls between mobiles?
it has all been implemented quite some time ago. Used to work fine here, though I haven't tested it since about one month ago. We can have multiple concurrent voice calls between two handsets, as soon as you have the IMSI provisioned with an extension in the database, i.e.
UPDATE subscriber set extension=1001 where id=1; UPDATE subscriber set extension=1002 where id=2;
and then you can call 1002 from the handset with id1 and vice-versa.
regards.
Hi Andreas,
On Thu, Apr 09, 2009 at 09:10:23AM +0200, Andreas.Eversberg wrote:
that sounds good. i will try this in hamburg on easterhegg, starting friday.
good luck. I'm not sure if nibbler is going to be there, he has some practical experience with bsc_hack, the BS11 and everything and could probably be able to help you out.
I'm definitely not going to attend, my time budget doesn't really permit it to me, I've taken off a lot of time for holidays recently and really have to get more paid work done now :(
also i started coding on gsm_04_08.c file. i like to implement a real state machine and like to extract the call handling (application) from the signalling part (protocol). this way libbsc can be used to terminate calls to applications rather than just forwarding them.
yes, this is a good plan. I had this in mind for later anyway, making it more extensible.
here is my idea: we must define an API for applications to communicate with libbsc. i would suggest a structure with "message type", "call reference" and all informations like "calling party number". if the informations are not used, like "calling party number" in the "ALERTING" message, they are ignored:
Sounds fine to me. As you can see from my general code design, I prefer structures with array strings and the like to dynamically allocated ones, simplifying memory management quite a bit.
struct high_level_structure_type_name { int message; int callref; u_char imei[..]; u_char imsi[..]; u_char tmsi[..]; u_char dialing[..]; u_char calling_pn[..]; int notify_ind; .... };
i would use a special message "NEW" for creating a new callref. after the instance (call) is released and freed, a special message "FREE" could be used. an example:
send NEW -> returns callref (or error) send SETUP (callref, imei) recv PROCEEDING (callref) recv ALERTING (callref) recv CONNECT (callref) recv DISCONNECT (callref, cause) send RELEASE (callref) recv FREE (callref)
paging, timers, release_complete, ... is handled by gsm_04_08.c, data base, numbering plan, call control is done by extracted application file. (let me call it callcontrol.c.)
sure, this is probably the best level for a functional split.
the current application for call forwarding would be removed and put in a seperat file or even out of it and make it part of bsc_hack.
what do you think?
sounds great to me, I'm looking forward to see the patch[es] :)
Regards!