47 lines
1.2 KiB
C
47 lines
1.2 KiB
C
#ifndef OPENBSC_LAPD_H
|
|
#define OPENBSC_LAPD_H
|
|
|
|
#include <stdint.h>
|
|
|
|
#include <osmocore/linuxlist.h>
|
|
|
|
typedef enum {
|
|
LAPD_MPH_NONE = 0,
|
|
|
|
LAPD_MPH_ACTIVATE_IND,
|
|
LAPD_MPH_DEACTIVATE_IND,
|
|
|
|
LAPD_DL_DATA_IND,
|
|
LAPD_DL_UNITDATA_IND,
|
|
|
|
} lapd_mph_type;
|
|
|
|
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(struct lapd_instance *li, uint8_t tei, uint8_t sapi,
|
|
uint8_t *data, unsigned int len);
|
|
|
|
struct lapd_instance *lapd_instance_alloc(int network_side,
|
|
void (*tx_cb)(uint8_t *data, int len,
|
|
void *cbdata), void *cbdata);
|
|
|
|
|
|
/* Start a (user-side) SAP for the specified TEI/SAPI on the LAPD instance */
|
|
int lapd_sap_start(struct lapd_instance *li, uint8_t tei, uint8_t sapi);
|
|
|
|
/* Stop a (user-side) SAP for the specified TEI/SAPI on the LAPD instance */
|
|
int lapd_sap_stop(struct lapd_instance *li, uint8_t tei, uint8_t sapi);
|
|
|
|
#endif /* OPENBSC_LAPD_H */
|