add L1CTL ECHO REQUEST code
This commit is contained in:
parent
c9c4c4b819
commit
ace2b08244
|
@ -32,6 +32,8 @@
|
||||||
#define L1CTL_DATA_REQ 7
|
#define L1CTL_DATA_REQ 7
|
||||||
#define L1CTL_RESET 8
|
#define L1CTL_RESET 8
|
||||||
#define L1CTL_PM_REQ 9 /* power measurement */
|
#define L1CTL_PM_REQ 9 /* power measurement */
|
||||||
|
#define L1CTL_ECHO_REQ 10
|
||||||
|
#define L1CTL_ECHO_RESP 11
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* NOTE: struct size. We do add manual padding out of the believe
|
* NOTE: struct size. We do add manual padding out of the believe
|
||||||
|
|
|
@ -19,6 +19,8 @@ int tx_ph_rach_req(struct osmocom_ms *ms);
|
||||||
/* Transmit L1CTL_DM_EST_REQ */
|
/* Transmit L1CTL_DM_EST_REQ */
|
||||||
int tx_ph_dm_est_req(struct osmocom_ms *ms, uint16_t band_arfcn, uint8_t chan_nr);
|
int tx_ph_dm_est_req(struct osmocom_ms *ms, uint16_t band_arfcn, uint8_t chan_nr);
|
||||||
|
|
||||||
|
int l1ctl_tx_echo_req(struct osmocom_ms *ms, unsigned int len);
|
||||||
|
|
||||||
extern int osmo_send_l1(struct osmocom_ms *ms, struct msgb *msg);
|
extern int osmo_send_l1(struct osmocom_ms *ms, struct msgb *msg);
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -212,23 +212,6 @@ int tx_ph_data_req(struct osmocom_ms *ms, struct msgb *msg,
|
||||||
return osmo_send_l1(ms, msg);
|
return osmo_send_l1(ms, msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Receive L1CTL_RESET */
|
|
||||||
static int rx_l1_reset(struct osmocom_ms *ms)
|
|
||||||
{
|
|
||||||
struct msgb *msg;
|
|
||||||
struct l1ctl_sync_new_ccch_req *req;
|
|
||||||
|
|
||||||
msg = osmo_l1_alloc(L1CTL_NEW_CCCH_REQ);
|
|
||||||
if (!msg)
|
|
||||||
return -1;
|
|
||||||
|
|
||||||
LOGP(DL1C, LOGL_INFO, "Layer1 Reset.\n");
|
|
||||||
req = (struct l1ctl_sync_new_ccch_req *) msgb_put(msg, sizeof(*req));
|
|
||||||
req->band_arfcn = osmo_make_band_arfcn(ms);
|
|
||||||
|
|
||||||
return osmo_send_l1(ms, msg);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Transmit L1CTL_RACH_REQ */
|
/* Transmit L1CTL_RACH_REQ */
|
||||||
int tx_ph_rach_req(struct osmocom_ms *ms)
|
int tx_ph_rach_req(struct osmocom_ms *ms)
|
||||||
{
|
{
|
||||||
|
@ -272,6 +255,41 @@ int tx_ph_dm_est_req(struct osmocom_ms *ms, uint16_t band_arfcn, uint8_t chan_nr
|
||||||
return osmo_send_l1(ms, msg);
|
return osmo_send_l1(ms, msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int l1ctl_tx_echo_req(struct osmocom_ms *ms, unsigned int len)
|
||||||
|
{
|
||||||
|
struct msgb *msg;
|
||||||
|
uint8_t *data;
|
||||||
|
unsigned int i;
|
||||||
|
|
||||||
|
msg = osmo_l1_alloc(L1CTL_ECHO_REQ);
|
||||||
|
if (!msg)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
data = msgb_put(msg, len);
|
||||||
|
for (i = 0; i < len; i++)
|
||||||
|
data[i] = i % 8;
|
||||||
|
|
||||||
|
return osmo_send_l1(ms, msg);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Receive L1CTL_RESET */
|
||||||
|
static int rx_l1_reset(struct osmocom_ms *ms)
|
||||||
|
{
|
||||||
|
struct msgb *msg;
|
||||||
|
struct l1ctl_sync_new_ccch_req *req;
|
||||||
|
|
||||||
|
msg = osmo_l1_alloc(L1CTL_NEW_CCCH_REQ);
|
||||||
|
if (!msg)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
LOGP(DL1C, LOGL_INFO, "Layer1 Reset.\n");
|
||||||
|
req = (struct l1ctl_sync_new_ccch_req *) msgb_put(msg, sizeof(*req));
|
||||||
|
req->band_arfcn = osmo_make_band_arfcn(ms);
|
||||||
|
|
||||||
|
return osmo_send_l1(ms, msg);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Receive incoming data from L1 using L1CTL format */
|
/* Receive incoming data from L1 using L1CTL format */
|
||||||
int l1ctl_recv(struct osmocom_ms *ms, struct msgb *msg)
|
int l1ctl_recv(struct osmocom_ms *ms, struct msgb *msg)
|
||||||
{
|
{
|
||||||
|
@ -285,7 +303,7 @@ int l1ctl_recv(struct osmocom_ms *ms, struct msgb *msg)
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
l1h = (struct l1ctl_info_dl *) msg->l1h;
|
l1h = (struct l1ctl_hdr *) msg->l1h;
|
||||||
|
|
||||||
/* move the l1 header pointer to point _BEHIND_ l1ctl_hdr,
|
/* move the l1 header pointer to point _BEHIND_ l1ctl_hdr,
|
||||||
as the l1ctl header is of no interest to subsequent code */
|
as the l1ctl header is of no interest to subsequent code */
|
||||||
|
|
Loading…
Reference in New Issue