#pragma once

#include <stdint.h>
#include <stdbool.h>
#include <osmocom/abis/e1_input.h>
#include <osmocom/trau/trau_pcu_ericsson.h>

struct er_ccu_descr;
struct e1_conn_pars;
typedef void (er_ccu_empty) (struct er_ccu_descr *ccu_descr);
typedef void (er_ccu_rx) (struct er_ccu_descr *ccu_descr, const ubit_t *bits, unsigned int num_bits);

struct er_ccu_descr {

	/* E1-line and timeslot (filled in by user) */
	struct e1_conn_pars *e1_conn_pars;

	/* Callback functions (provided by user) */
	er_ccu_empty *er_ccu_empty_cb;
	er_ccu_rx *er_ccu_rx_cb;

	/* I.460 Subslot */
	struct {
		struct osmo_i460_schan_desc scd;
		struct osmo_i460_subchan *schan;
		struct osmo_fsm_inst *trau_sync_fi;
		bool ccu_connected;
	} link;

	/* TRAU Sync state */
	struct {
		uint32_t pseq_ccu; /* CCU sequence counter (remote) */
		uint32_t pseq_pcu; /* PCU sequence counter (local) */
		uint32_t last_afn_ul; /* Adjusted frame number, uplink */
		uint32_t last_afn_dl; /* Adjusted frame number, downlink */
		enum time_adj_val tav; /* Last time adjustment value */
		bool ul_frame_err; /* True when last uplink TRAU frame was bad */
		bool ccu_synced; /* True when PCU is in sync with CCU */
	} sync;

	/* PCU related context */
	struct {
		uint8_t trx_no;
		uint8_t bts_nr;
		uint8_t ts;
	} pcu;


};
