diff options
author | Holger Freyther <zecke@selfish.org> | 2009-02-06 18:54:00 +0000 |
---|---|---|
committer | Holger Freyther <zecke@selfish.org> | 2009-02-06 18:54:00 +0000 |
commit | ceb59b72c23f9af90538704d4ce29aaee80c11e4 (patch) | |
tree | ca4a5164583fdc0a253b4258a009e417c09de1cb /include/openbsc/gsm_data.h | |
parent | 3d949240fe9a81643bef5a854e52f58e7b33bf04 (diff) |
[paging] Move the paging state into struct gsm_bts
There is a 1:1 relationship between gsm_bts and the paging
operation. Move the paging state into the gsm_bts which is
simplfying the code a lot. This was hinted by LaF0rge.
(I'm not happy with the names of the structs)
Diffstat (limited to 'include/openbsc/gsm_data.h')
-rw-r--r-- | include/openbsc/gsm_data.h | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/include/openbsc/gsm_data.h b/include/openbsc/gsm_data.h index 621f11604..75b3db516 100644 --- a/include/openbsc/gsm_data.h +++ b/include/openbsc/gsm_data.h @@ -176,6 +176,36 @@ enum gsm_bts_type { GSM_BTS_TYPE_BS11, }; +/** + * A pending paging request + */ +struct gsm_paging_request { + struct llist_head entry; + struct gsm_subscriber *subscr; + struct gsm_bts *bts; + int requests; + + int chan_type; +}; + +/* + * This keeps track of the paging status of one BTS. It + * includes a number of pending requests, a back pointer + * to the gsm_bts, a timer and some more state. + */ +struct gsm_bts_paging_state { + /* public callbacks */ + void (*channel_allocated)(struct gsm_lchan *lchan); + + /* pending requests */ + struct llist_head pending_requests; + struct gsm_paging_request *last_request; + struct gsm_bts *bts; + + /* tick timer */ + struct timer_list page_timer; +}; + /* One BTS */ struct gsm_bts { struct gsm_network *network; @@ -194,6 +224,9 @@ struct gsm_bts { struct gsm48_control_channel_descr chan_desc; + /* paging state and control */ + struct gsm_bts_paging_state paging; + /* CCCH is on C0 */ struct gsm_bts_trx *c0; /* transceivers */ |