diff options
author | Harald Welte <laforge@gnumonks.org> | 2009-02-16 22:53:52 +0000 |
---|---|---|
committer | Harald Welte <laforge@gnumonks.org> | 2009-02-16 22:53:52 +0000 |
commit | 0932d1e2b41ac733f7f12ca8b887e3ba96525225 (patch) | |
tree | 2f4afab5af30836795b3a4b7f18b1c859adca1be | |
parent | 09e38afbcc9d62f75eae8867abe0d62678adef0f (diff) |
forgot the header files in last commit. sigh.
-rw-r--r-- | include/openbsc/gsm_04_08.h | 8 | ||||
-rw-r--r-- | include/openbsc/gsm_data.h | 17 | ||||
-rw-r--r-- | include/openbsc/paging.h | 3 |
3 files changed, 26 insertions, 2 deletions
diff --git a/include/openbsc/gsm_04_08.h b/include/openbsc/gsm_04_08.h index 5fa92faff..edff7691f 100644 --- a/include/openbsc/gsm_04_08.h +++ b/include/openbsc/gsm_04_08.h @@ -480,6 +480,7 @@ enum gsm48_reject_value { struct msgb; struct gsm_bts; +struct gsm_subscriber; /* config options controlling the behaviour of the lower leves */ void gsm0408_allow_everyone(int allow); @@ -488,7 +489,7 @@ void gsm0408_set_reject_cause(int cause); int gsm0408_rcvmsg(struct msgb *msg); void gsm0408_generate_lai(struct gsm48_loc_area_id *lai48, u_int16_t mcc, u_int16_t mnc, u_int16_t lac); -int gsm48_cc_tx_setup(struct gsm_lchan *lchan); +int gsm48_cc_tx_setup(struct gsm_lchan *lchan, struct gsm_subscriber *calling); enum gsm_chan_t get_ctype_by_chreq(struct gsm_bts *bts, u_int8_t ra); enum gsm_chreq_reason_t get_reason_by_chreq(struct gsm_bts *bts, u_int8_t ra); @@ -499,4 +500,9 @@ int generate_mid_from_tmsi(u_int8_t *buf, u_int32_t tmsi); int gsm48_send_rr_release(struct gsm_lchan *lchan); +/* convert a ASCII phone number to call-control BCD */ +int encode_bcd_number(u_int8_t *bcd_lv, u_int8_t max_len, + u_int8_t type, const char *input); +u_int8_t decode_bcd_number(char *output, int output_len, const u_int8_t *bcd_lv); + #endif diff --git a/include/openbsc/gsm_data.h b/include/openbsc/gsm_data.h index 2048abc1f..25da17112 100644 --- a/include/openbsc/gsm_data.h +++ b/include/openbsc/gsm_data.h @@ -17,6 +17,12 @@ enum gsm_hooks { GSM_HOOK_NM_SWLOAD, + GSM_HOOK_RR_PAGING, +}; + +enum gsm_paging_event { + GSM_PAGING_SUCCEEDED, + GSM_PAGING_EXPIRED, }; struct msgb; @@ -63,6 +69,8 @@ struct gsm_call { /* the 'local' subscriber */ struct gsm_subscriber *subscr; + /* the 'remote' subscriber */ + struct gsm_subscriber *called_subscr; }; @@ -212,13 +220,22 @@ enum gsm_bts_type { * A pending paging request */ struct gsm_paging_request { + /* list_head for list of all paging requests */ struct llist_head entry; + /* the subscriber which we're paging. Later gsm_paging_request + * should probably become a part of the gsm_subscriber struct? */ struct gsm_subscriber *subscr; + /* back-pointer to the BTS on which we are paging */ struct gsm_bts *bts; + /* what kind of channel type do we ask the MS to establish */ int chan_type; /* Timer 3113: how long do we try to page? */ struct timer_list T3113; + + /* callback to be called in case paging completes */ + gsm_cbfn *cbfn; + void *cbfn_param; }; #define T3113_VALUE 60, 0 diff --git a/include/openbsc/paging.h b/include/openbsc/paging.h index 0e5a0d447..8fdae02c6 100644 --- a/include/openbsc/paging.h +++ b/include/openbsc/paging.h @@ -33,7 +33,8 @@ void paging_init(struct gsm_bts *bts); /* schedule paging request */ -void paging_request(struct gsm_bts *bts, struct gsm_subscriber *subscr, int type); +void paging_request(struct gsm_bts *bts, struct gsm_subscriber *subscr, + int type, gsm_cbfn *cbfn, void *data); /* stop paging requests */ void paging_request_stop(struct gsm_bts *bts, struct gsm_subscriber *subscr); |