diff options
Diffstat (limited to 'openbsc/src/input/lapd.h')
-rw-r--r-- | openbsc/src/input/lapd.h | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/openbsc/src/input/lapd.h b/openbsc/src/input/lapd.h index b0e6e6f66..f79d84f14 100644 --- a/openbsc/src/input/lapd.h +++ b/openbsc/src/input/lapd.h @@ -3,6 +3,8 @@ #include <stdint.h> +#include <osmocore/linuxlist.h> + typedef enum { LAPD_MPH_NONE = 0, @@ -14,10 +16,22 @@ typedef enum { } lapd_mph_type; -extern uint8_t *lapd_receive(uint8_t *data, int len, int *ilen, lapd_mph_type *prim, void *cbdata); +struct lapd_instance { + struct llist_head list; /* list of LAPD instances */ + int network_side; + + void (*transmit_cb)(uint8_t *data, int len, void *cbdata); + void *cbdata; + + struct llist_head tei_list; /* list of TEI in this LAPD instance */ +}; + +extern uint8_t *lapd_receive(struct lapd_instance *li, uint8_t *data, unsigned int len, + int *ilen, lapd_mph_type *prim); -extern void (*lapd_transmit_cb)(uint8_t *data, int len, void *cbdata); +extern void lapd_transmit(struct lapd_instance *li, uint8_t tei, uint8_t *data, unsigned int len); -extern void lapd_transmit(int tei, uint8_t *data, int len, void *cbdata); +struct lapd_instance *lapd_instance_alloc(void (*tx_cb)(uint8_t *data, int len, + void *cbdata), void *cbdata); #endif /* OPENBSC_LAPD_H */ |