From 500f3ca19dfe4eba2d20e3a6d68fdb32b93e17a5 Mon Sep 17 00:00:00 2001 From: Holger Hans Peter Freyther Date: Wed, 10 Jun 2009 10:48:14 +0200 Subject: [o&m] Dispatch a signal for nacked O&M messages When trying to operate a nanoBTS900 on channels for 1800 or the other way around the "SET BTS ATTRIBUTES" message will be nacked. Dispatch all nacked messages from abis_nm via signals. Handle this in bsc_hack.c, print a small hint and exit the application as this is considered a fatal unrecoverable error (the exit is in the app, so a library can be more robust). --- openbsc/include/openbsc/signal.h | 1 + 1 file changed, 1 insertion(+) (limited to 'openbsc/include') diff --git a/openbsc/include/openbsc/signal.h b/openbsc/include/openbsc/signal.h index 4a583f689..c065f9003 100644 --- a/openbsc/include/openbsc/signal.h +++ b/openbsc/include/openbsc/signal.h @@ -54,6 +54,7 @@ enum signal_abisip { enum signal_nm { S_NM_SW_ACTIV_REP, /* GSM 12.21 software activated report */ S_NM_FAIL_REP, /* GSM 12.21 failure event report */ + S_NM_NACK, /* GSM 12.21 various NM_MT_*_NACK happened */ }; /* SS_LCHAN signals */ -- cgit v1.2.3 From 04866d42792f59b334a13e836237947222b41127 Mon Sep 17 00:00:00 2001 From: Holger Freyther Date: Tue, 31 Mar 2009 04:35:19 +0200 Subject: Proposal for a "channel request" interface... Reuqests for a subscriber a stored within the gsm_subscriber datastructure and it will keep track how many channels are allocated for this user and of which type to decide on policy... e.g. attempt to submit SMS during a phone call and not doing paging but a simple (immediate) assignment of the channel... --- openbsc/include/openbsc/gsm_subscriber.h | 6 ++++++ openbsc/include/openbsc/paging.h | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) (limited to 'openbsc/include') diff --git a/openbsc/include/openbsc/gsm_subscriber.h b/openbsc/include/openbsc/gsm_subscriber.h index 1ca79e2ae..f787aebd5 100644 --- a/openbsc/include/openbsc/gsm_subscriber.h +++ b/openbsc/include/openbsc/gsm_subscriber.h @@ -31,6 +31,9 @@ struct gsm_subscriber { u_int8_t classmark2[3]; u_int8_t classmark3_len; u_int8_t classmark3[14]; + + /* pending requests */ + struct llist_head requests; }; enum gsm_subscriber_field { @@ -51,6 +54,9 @@ struct gsm_subscriber *subscr_get_by_imsi(const char *imsi); struct gsm_subscriber *subscr_get_by_extension(const char *ext); int subscr_update(struct gsm_subscriber *s, struct gsm_bts *bts, int reason); void subscr_put_channel(struct gsm_lchan *lchan); +void subscr_get_channel(struct gsm_subscriber *subscr, + struct gsm_network *network, int type, + gsm_cbfn *cbfn, void *param); /* internal */ struct gsm_subscriber *subscr_alloc(void); diff --git a/openbsc/include/openbsc/paging.h b/openbsc/include/openbsc/paging.h index de512d1ae..2f17e243e 100644 --- a/openbsc/include/openbsc/paging.h +++ b/openbsc/include/openbsc/paging.h @@ -33,7 +33,7 @@ void paging_init(struct gsm_bts *bts); /* schedule paging request */ -void paging_request(struct gsm_bts *bts, struct gsm_subscriber *subscr, +void paging_request(struct gsm_network *network, struct gsm_subscriber *subscr, int type, gsm_cbfn *cbfn, void *data); /* stop paging requests */ -- cgit v1.2.3 From 85a7b363d97db5c7be45bfb93079e8db46e90a81 Mon Sep 17 00:00:00 2001 From: Holger Freyther Date: Sat, 18 Apr 2009 13:48:55 +0200 Subject: Handle and dispatch paging requests in gsm_subscriber Implement subscr_get_channel and subscr_put_channel to a degree that SMS Submit and phone call scheduled at the same time will deliver both (one after the other). --- openbsc/include/openbsc/gsm_data.h | 1 + openbsc/include/openbsc/gsm_subscriber.h | 1 + 2 files changed, 2 insertions(+) (limited to 'openbsc/include') diff --git a/openbsc/include/openbsc/gsm_data.h b/openbsc/include/openbsc/gsm_data.h index e85adf829..1fb80a2f3 100644 --- a/openbsc/include/openbsc/gsm_data.h +++ b/openbsc/include/openbsc/gsm_data.h @@ -25,6 +25,7 @@ enum gsm_hooks { enum gsm_paging_event { GSM_PAGING_SUCCEEDED, GSM_PAGING_EXPIRED, + GSM_PAGING_OOM, }; struct msgb; diff --git a/openbsc/include/openbsc/gsm_subscriber.h b/openbsc/include/openbsc/gsm_subscriber.h index f787aebd5..780d8ede0 100644 --- a/openbsc/include/openbsc/gsm_subscriber.h +++ b/openbsc/include/openbsc/gsm_subscriber.h @@ -33,6 +33,7 @@ struct gsm_subscriber { u_int8_t classmark3[14]; /* pending requests */ + int in_callback; struct llist_head requests; }; -- cgit v1.2.3