#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);

int lapd_send_sabm(struct lapd_instance *li, uint8_t tei, uint8_t sapi);

#endif /* OPENBSC_LAPD_H */
