libosmo-gprs/include/osmocom/gprs/gmm/gmm_private.h

53 lines
1.4 KiB
C

#pragma once
/* 3GPP TS 24.008, private header */
#include <stdint.h>
#include <stddef.h>
#include <osmocom/core/timer.h>
#include <osmocom/core/linuxlist.h>
#include <osmocom/core/msgb.h>
#include <osmocom/core/logging.h>
#include <osmocom/core/endian.h>
#include <osmocom/gprs/gmm/gmm.h>
extern int g_gmm_log_cat[_OSMO_GPRS_GMM_LOGC_MAX];
#define LOGGMM(lvl, fmt, args...) LOGP(g_gmm_log_cat[OSMO_GPRS_GMM_LOGC_GMM], lvl, fmt, ## args)
#define msgb_gmm_prim(msg) ((struct osmo_gprs_gmm_prim *)(msg)->l1h)
struct gprs_gmm_ctx {
enum osmo_gprs_gmm_location location;
osmo_gprs_gmm_prim_up_cb gmm_up_cb;
void *gmm_up_cb_user_data;
osmo_gprs_gmm_prim_down_cb gmm_down_cb;
void *gmm_down_cb_user_data;
struct llist_head gmme_list; /* list of struct gprs_gmm_entity->list */
};
extern struct gprs_gmm_ctx *g_ctx;
/* GMM Entity: */
struct gprs_gmm_entity {
struct llist_head list; /* item in (struct gprs_gmm_ctx)->gmme_list */
};
/* gmm_prim.c: */
struct osmo_gprs_gmm_prim *gprs_gmm_prim_alloc_gmm_gmmreg_attach_cnf(void);
int gprs_gmm_prim_call_up_cb(struct osmo_gprs_gmm_prim *gmm_prim);
int gprs_gmm_prim_call_down_cb(struct osmo_gprs_gmm_prim *gmm_prim);
/* gmm.c: */
struct gprs_gmm_entity *gprs_gmm_gmme_alloc(void);
void gprs_gmm_gmme_free(struct gprs_gmm_entity *gmme);
#define LOGGMME(snme, level, fmt, args...) \
LOGGMM(level, "GMME(%08x) " fmt, \
23 /*TODO: use ID */, \
## args)