blob: 72b0f11eb5002e0ad2a1225f9e969598bcf889bf [file] [log] [blame]
Harald Welteb68899d2009-01-06 21:47:18 +00001/* Paging helper and manager.... */
2/* (C) 2009 by Holger Hans Peter Freyther <zecke@selfish.org>
3 * All Rights Reserved
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License along
16 * with this program; if not, write to the Free Software Foundation, Inc.,
17 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 */
20
21#ifndef PAGING_H
22#define PAGING_H
23
24#include <malloc.h>
25#include <string.h>
26
27#include "linuxlist.h"
28#include "gsm_data.h"
29#include "gsm_subscriber.h"
Harald Welte38c2f132009-01-06 23:10:57 +000030#include "timer.h"
Harald Welteb68899d2009-01-06 21:47:18 +000031
32/**
33 * A pending paging request
34 */
35struct paging_request {
36 struct llist_head entry;
37 struct gsm_subscriber *subscr;
38 struct gsm_bts *bts;
Harald Welte38c2f132009-01-06 23:10:57 +000039
40 int chan_type;
Harald Welteb68899d2009-01-06 21:47:18 +000041};
42
43/*
44 * struct for each bts we serve...
45 */
46struct paging_bts {
47 /* public callbacks */
48 void (*channel_allocated)(struct gsm_lchan *lchan);
49
50 /* list for each bts */
51 struct llist_head bts_list;
52
53 /* pending requests */
54 struct llist_head pending_requests;
Harald Welte38c2f132009-01-06 23:10:57 +000055 struct paging_request *last_request;
Harald Welteb68899d2009-01-06 21:47:18 +000056 struct gsm_bts *bts;
Harald Welte38c2f132009-01-06 23:10:57 +000057
58 /* tick timer */
59 struct timer_list page_timer;
Harald Welteb68899d2009-01-06 21:47:18 +000060};
61
62/* call once for every gsm_bts... */
63struct paging_bts* page_allocate(struct gsm_bts *bts);
64
65/* schedule paging request */
Harald Welte38c2f132009-01-06 23:10:57 +000066void page_request(struct gsm_bts *bts, struct gsm_subscriber *subscr, int type);
Harald Welteb68899d2009-01-06 21:47:18 +000067
68#endif