The mf_off value defines the offset of multiframes.
void l1a_txq_msgb_enq(struct llist_head *queue, struct msgb *msg);
/* request a RACH request at the next multiframe T3 = fn51 */
-void l1a_rach_req(uint8_t fn51, uint8_t ra);
+void l1a_rach_req(uint8_t fn51, uint8_t mf_off, uint8_t ra);
/* Enable a repeating multiframe task */
void l1a_mftask_enable(enum mframe_task task);
struct l1ctl_info_ul *ul = (struct l1ctl_info_ul *) l1h->data;
struct l1ctl_rach_req *rach_req = (struct l1ctl_rach_req *) ul->payload;
- printd("L1CTL_RACH_REQ (ra=0x%02x, fn51=%d)\n", rach_req->ra, rach_req->fn51);
+ printd("L1CTL_RACH_REQ (ra=0x%02x, fn51=%d, mf_off=%d)\n", rach_req->ra, rach_req->fn51, rach_req->mf_off);
- l1a_rach_req(rach_req->fn51, rach_req->ra);
+ l1a_rach_req(rach_req->fn51, rach_req->mf_off, rach_req->ra);
}
/* receive a L1CTL_DATA_REQ from L23 */
}
/* request a RACH request at the next multiframe T3 = fn51 */
-void l1a_rach_req(uint8_t fn51, uint8_t ra)
+void l1a_rach_req(uint8_t fn51, uint8_t mf_off, uint8_t ra)
{
uint32_t fn_sched;
l1s.rach.ra = ra;
/* TODO: can we wrap here? I don't think so */
fn_sched = l1s.current_time.fn - l1s.current_time.t3;
+ fn_sched += mf_off * 51;
fn_sched += fn51;
sched_gsmtime(rach_sched_set_ul, fn_sched, 0);
l1a_unlock_sync();