remove pcu own bitvector implementation
The osmocore bitvec is exact the same, but use a pointer instead of
a reference.
Change-Id: Id8f797631d89aa12b6e48efb2dc153a3e2f059f7
diff --git a/src/encoding.cpp b/src/encoding.cpp
index 2f052a4..6742efd 100644
--- a/src/encoding.cpp
+++ b/src/encoding.cpp
@@ -40,12 +40,12 @@
static inline bool write_tai(bitvec *dest, unsigned& wp, int8_t tai)
{
if (tai < 0) { /* No TIMING_ADVANCE_INDEX: */
- bitvec_write_field(dest, wp, 0, 1);
+ bitvec_write_field(dest, &wp, 0, 1);
return false;
}
/* TIMING_ADVANCE_INDEX: */
- bitvec_write_field(dest, wp, 1, 1);
- bitvec_write_field(dest, wp, tai, 4);
+ bitvec_write_field(dest, &wp, 1, 1);
+ bitvec_write_field(dest, &wp, tai, 4);
return true;
}
@@ -53,10 +53,10 @@
static inline void write_ta(bitvec *dest, unsigned& wp, int8_t ta)
{
if (ta < 0) /* No TIMING_ADVANCE_VALUE: */
- bitvec_write_field(dest, wp, 0, 1);
+ bitvec_write_field(dest, &wp, 0, 1);
else { /* TIMING_ADVANCE_VALUE: */
- bitvec_write_field(dest, wp, 1, 1);
- bitvec_write_field(dest, wp, ta, 6);
+ bitvec_write_field(dest, &wp, 1, 1);
+ bitvec_write_field(dest, &wp, ta, 6);
}
}
@@ -70,7 +70,7 @@
{
write_ta(dest, wp, ta);
if (write_tai(dest, wp, tai)) /* TIMING_ADVANCE_TIMESLOT_NUMBER: */
- bitvec_write_field(dest, wp, ts, 3);
+ bitvec_write_field(dest, &wp, ts, 3);
}
static int write_ia_rest_downlink(
@@ -85,40 +85,40 @@
return -EINVAL;
}
// GSM 04.08 10.5.2.16 IA Rest Octets
- bitvec_write_field_lh(dest, wp, 3, 2); // "HH"
- bitvec_write_field(dest, wp, 1, 2); // "01" Packet Downlink Assignment
- bitvec_write_field(dest, wp,tbf->tlli(),32); // TLLI
- bitvec_write_field(dest, wp,0x1,1); // switch TFI : on
- bitvec_write_field(dest, wp,tbf->tfi(),5); // TFI
- bitvec_write_field(dest, wp,0x0,1); // RLC acknowledged mode
+ bitvec_write_field(dest, &wp, 3, 2); // "HH"
+ bitvec_write_field(dest, &wp, 1, 2); // "01" Packet Downlink Assignment
+ bitvec_write_field(dest, &wp,tbf->tlli(),32); // TLLI
+ bitvec_write_field(dest, &wp,0x1,1); // switch TFI : on
+ bitvec_write_field(dest, &wp,tbf->tfi(),5); // TFI
+ bitvec_write_field(dest, &wp,0x0,1); // RLC acknowledged mode
if (alpha) {
- bitvec_write_field(dest, wp,0x1,1); // ALPHA = present
- bitvec_write_field(dest, wp,alpha,4); // ALPHA
+ bitvec_write_field(dest, &wp,0x1,1); // ALPHA = present
+ bitvec_write_field(dest, &wp,alpha,4); // ALPHA
} else {
- bitvec_write_field(dest, wp,0x0,1); // ALPHA = not present
+ bitvec_write_field(dest, &wp,0x0,1); // ALPHA = not present
}
- bitvec_write_field(dest, wp,gamma,5); // GAMMA power control parameter
- bitvec_write_field(dest, wp,polling,1); // Polling Bit
- bitvec_write_field(dest, wp, ta_valid, 1); // N. B: NOT related to TAI!
+ bitvec_write_field(dest, &wp,gamma,5); // GAMMA power control parameter
+ bitvec_write_field(dest, &wp,polling,1); // Polling Bit
+ bitvec_write_field(dest, &wp, ta_valid, 1); // N. B: NOT related to TAI!
write_tai(dest, wp, ta_idx);
if (polling) {
- bitvec_write_field(dest, wp,0x1,1); // TBF Starting TIME present
- bitvec_write_field(dest, wp,(fn / (26 * 51)) % 32,5); // T1'
- bitvec_write_field(dest, wp,fn % 51,6); // T3
- bitvec_write_field(dest, wp,fn % 26,5); // T2
+ bitvec_write_field(dest, &wp,0x1,1); // TBF Starting TIME present
+ bitvec_write_field(dest, &wp,(fn / (26 * 51)) % 32,5); // T1'
+ bitvec_write_field(dest, &wp,fn % 51,6); // T3
+ bitvec_write_field(dest, &wp,fn % 26,5); // T2
} else {
- bitvec_write_field(dest, wp,0x0,1); // TBF Starting TIME present
+ bitvec_write_field(dest, &wp,0x0,1); // TBF Starting TIME present
}
- bitvec_write_field(dest, wp,0x0,1); // P0 not present
- // bitvec_write_field(dest, wp,0x1,1); // P0 not present
- // bitvec_write_field(dest, wp,0xb,4);
+ bitvec_write_field(dest, &wp,0x0,1); // P0 not present
+ // bitvec_write_field(dest, &wp,0x1,1); // P0 not present
+ // bitvec_write_field(dest, &wp,,0xb,4);
if (tbf->is_egprs_enabled()) {
/* see GMS 44.018, 10.5.2.16 */
unsigned int ws_enc = (tbf->m_window.ws() - 64) / 32;
- bitvec_write_field_lh(dest, wp, 1, 1); // "H"
- bitvec_write_field(dest, wp, ws_enc,5); // EGPRS Window Size
- bitvec_write_field(dest, wp, 0x0,2); // LINK_QUALITY_MEASUREMENT_MODE
- bitvec_write_field(dest, wp, 0,1); // BEP_PERIOD2 not present
+ bitvec_write_field(dest, &wp, 1, 1); // "H"
+ bitvec_write_field(dest, &wp, ws_enc, 5); // EGPRS Window Size
+ bitvec_write_field(dest, &wp, 0x0, 2); // LINK_QUALITY_MEASUREMENT_MODE
+ bitvec_write_field(dest, &wp, 0, 1); // BEP_PERIOD2 not present
}
return 0;
@@ -133,40 +133,40 @@
OSMO_ASSERT(!tbf || !tbf->is_egprs_enabled());
// GMS 04.08 10.5.2.37b 10.5.2.16
- bitvec_write_field_lh(dest, wp, 3, 2); // "HH"
- bitvec_write_field(dest, wp, 0, 2); // "0" Packet Uplink Assignment
+ bitvec_write_field(dest, &wp, 3, 2); // "HH"
+ bitvec_write_field(dest, &wp, 0, 2); // "0" Packet Uplink Assignment
if (tbf == NULL) {
- bitvec_write_field(dest, wp, 0, 1); // Block Allocation : Single Block Allocation
+ bitvec_write_field(dest, &wp, 0, 1); // Block Allocation : Single Block Allocation
if (alpha) {
- bitvec_write_field(dest, wp,0x1,1); // ALPHA = present
- bitvec_write_field(dest, wp,alpha,4); // ALPHA = present
+ bitvec_write_field(dest, &wp,0x1,1); // ALPHA = present
+ bitvec_write_field(dest, &wp,alpha,4); // ALPHA = present
} else
- bitvec_write_field(dest, wp,0x0,1); // ALPHA = not present
- bitvec_write_field(dest, wp,gamma,5); // GAMMA power control parameter
+ bitvec_write_field(dest, &wp,0x0,1); // ALPHA = not present
+ bitvec_write_field(dest, &wp,gamma,5); // GAMMA power control parameter
write_tai(dest, wp, ta_idx);
- bitvec_write_field(dest, wp, 1, 1); // TBF_STARTING_TIME_FLAG
- bitvec_write_field(dest, wp,(fn / (26 * 51)) % 32,5); // T1'
- bitvec_write_field(dest, wp,fn % 51,6); // T3
- bitvec_write_field(dest, wp,fn % 26,5); // T2
+ bitvec_write_field(dest, &wp, 1, 1); // TBF_STARTING_TIME_FLAG
+ bitvec_write_field(dest, &wp,(fn / (26 * 51)) % 32,5); // T1'
+ bitvec_write_field(dest, &wp,fn % 51,6); // T3
+ bitvec_write_field(dest, &wp,fn % 26,5); // T2
} else {
- bitvec_write_field(dest, wp, 1, 1); // Block Allocation : Not Single Block Allocation
- bitvec_write_field(dest, wp, tbf->tfi(), 5); // TFI_ASSIGNMENT Temporary Flow Identity
- bitvec_write_field(dest, wp, 0, 1); // POLLING
- bitvec_write_field(dest, wp, 0, 1); // ALLOCATION_TYPE: dynamic
- bitvec_write_field(dest, wp, usf, 3); // USF
- bitvec_write_field(dest, wp, 0, 1); // USF_GRANULARITY
- bitvec_write_field(dest, wp, 0, 1); // "0" power control: Not Present
- bitvec_write_field(dest, wp, tbf->current_cs().to_num()-1, 2); // CHANNEL_CODING_COMMAND
- bitvec_write_field(dest, wp, 1, 1); // TLLI_BLOCK_CHANNEL_CODING
+ bitvec_write_field(dest, &wp, 1, 1); // Block Allocation : Not Single Block Allocation
+ bitvec_write_field(dest, &wp, tbf->tfi(), 5); // TFI_ASSIGNMENT Temporary Flow Identity
+ bitvec_write_field(dest, &wp, 0, 1); // POLLING
+ bitvec_write_field(dest, &wp, 0, 1); // ALLOCATION_TYPE: dynamic
+ bitvec_write_field(dest, &wp, usf, 3); // USF
+ bitvec_write_field(dest, &wp, 0, 1); // USF_GRANULARITY
+ bitvec_write_field(dest, &wp, 0, 1); // "0" power control: Not Present
+ bitvec_write_field(dest, &wp, tbf->current_cs().to_num()-1, 2); // CHANNEL_CODING_COMMAND
+ bitvec_write_field(dest, &wp, 1, 1); // TLLI_BLOCK_CHANNEL_CODING
if (alpha) {
- bitvec_write_field(dest, wp,0x1,1); // ALPHA = present
- bitvec_write_field(dest, wp,alpha,4); // ALPHA
+ bitvec_write_field(dest, &wp,0x1,1); // ALPHA = present
+ bitvec_write_field(dest, &wp,alpha,4); // ALPHA
} else
- bitvec_write_field(dest, wp,0x0,1); // ALPHA = not present
- bitvec_write_field(dest, wp,gamma,5); // GAMMA power control parameter
+ bitvec_write_field(dest, &wp,0x0,1); // ALPHA = not present
+ bitvec_write_field(dest, &wp,gamma,5); // GAMMA power control parameter
/* note: there is no choise for TAI and no starting time */
- bitvec_write_field(dest, wp, 0, 1); // switch TIMING_ADVANCE_INDEX = off
- bitvec_write_field(dest, wp, 0, 1); // TBF_STARTING_TIME_FLAG
+ bitvec_write_field(dest, &wp, 0, 1); // switch TIMING_ADVANCE_INDEX = off
+ bitvec_write_field(dest, &wp, 0, 1); // TBF_STARTING_TIME_FLAG
}
return 0;
}
@@ -183,60 +183,60 @@
extended_ra = (ra & 0x1F);
- bitvec_write_field(dest, wp, 1, 2); /* LH */
- bitvec_write_field(dest, wp, 0, 2); /* 0 EGPRS Uplink Assignment */
- bitvec_write_field(dest, wp, extended_ra, 5); /* Extended RA */
- bitvec_write_field(dest, wp, 0, 1); /* Access technology Request */
+ bitvec_write_field(dest, &wp, 1, 2); /* LH */
+ bitvec_write_field(dest, &wp, 0, 2); /* 0 EGPRS Uplink Assignment */
+ bitvec_write_field(dest, &wp, extended_ra, 5); /* Extended RA */
+ bitvec_write_field(dest, &wp, 0, 1); /* Access technology Request */
if (tbf == NULL) {
- bitvec_write_field(dest, wp, 0, 1); /* multiblock allocation */
+ bitvec_write_field(dest, &wp, 0, 1); /* multiblock allocation */
if (alpha) {
- bitvec_write_field(dest, wp, 0x1, 1); /* ALPHA =yes */
- bitvec_write_field(dest, wp, alpha, 4); /* ALPHA */
+ bitvec_write_field(dest, &wp, 0x1, 1); /* ALPHA =yes */
+ bitvec_write_field(dest, &wp, alpha, 4); /* ALPHA */
} else {
- bitvec_write_field(dest, wp, 0x0, 1); /* ALPHA = no */
+ bitvec_write_field(dest, &wp, 0x0, 1); /* ALPHA = no */
}
- bitvec_write_field(dest, wp, gamma, 5); /* GAMMA power contrl */
- bitvec_write_field(dest, wp, (fn / (26 * 51)) % 32, 5);/* T1' */
- bitvec_write_field(dest, wp, fn % 51, 6); /* T3 */
- bitvec_write_field(dest, wp, fn % 26, 5); /* T2 */
- bitvec_write_field(dest, wp, 0, 2); /* Radio block allocation */
+ bitvec_write_field(dest, &wp, gamma, 5); /* GAMMA power contrl */
+ bitvec_write_field(dest, &wp, (fn / (26 * 51)) % 32, 5);/* T1' */
+ bitvec_write_field(dest, &wp, fn % 51, 6); /* T3 */
+ bitvec_write_field(dest, &wp, fn % 26, 5); /* T2 */
+ bitvec_write_field(dest, &wp, 0, 2); /* Radio block allocation */
- bitvec_write_field(dest, wp, 0, 1);
+ bitvec_write_field(dest, &wp, 0, 1);
} else {
ws_enc = (tbf->m_window.ws() - 64) / 32;
- bitvec_write_field(dest, wp, 1, 1); /* single block alloc */
- bitvec_write_field(dest, wp, tbf->tfi(), 5);/* TFI assignment */
- bitvec_write_field(dest, wp, 0, 1); /* polling bit */
- bitvec_write_field(dest, wp, 0, 1); /* constant */
- bitvec_write_field(dest, wp, usf, 3); /* USF bit */
- bitvec_write_field(dest, wp, 0, 1); /* USF granularity */
- bitvec_write_field(dest, wp, 0, 1); /* P0 */
+ bitvec_write_field(dest, &wp, 1, 1); /* single block alloc */
+ bitvec_write_field(dest, &wp, tbf->tfi(), 5);/* TFI assignment */
+ bitvec_write_field(dest, &wp, 0, 1); /* polling bit */
+ bitvec_write_field(dest, &wp, 0, 1); /* constant */
+ bitvec_write_field(dest, &wp, usf, 3); /* USF bit */
+ bitvec_write_field(dest, &wp, 0, 1); /* USF granularity */
+ bitvec_write_field(dest, &wp, 0, 1); /* P0 */
/* MCS */
- bitvec_write_field(dest, wp, tbf->current_cs().to_num()-1, 4);
+ bitvec_write_field(dest, &wp, tbf->current_cs().to_num()-1, 4);
/* tlli channel block */
- bitvec_write_field(dest, wp, tbf->tlli(), 1);
- bitvec_write_field(dest, wp, 0, 1); /* BEP period present */
- bitvec_write_field(dest, wp, 0, 1); /* resegmentation */
- bitvec_write_field(dest, wp, ws_enc, 5);/* egprs window_size */
+ bitvec_write_field(dest, &wp, tbf->tlli(), 1);
+ bitvec_write_field(dest, &wp, 0, 1); /* BEP period present */
+ bitvec_write_field(dest, &wp, 0, 1); /* resegmentation */
+ bitvec_write_field(dest, &wp, ws_enc, 5);/* egprs window_size */
if (alpha) {
- bitvec_write_field(dest, wp, 0x1, 1); /* ALPHA =yes */
- bitvec_write_field(dest, wp, alpha, 4); /* ALPHA */
+ bitvec_write_field(dest, &wp, 0x1, 1); /* ALPHA =yes */
+ bitvec_write_field(dest, &wp, alpha, 4); /* ALPHA */
} else {
- bitvec_write_field(dest, wp, 0x0, 1); /* ALPHA = no */
+ bitvec_write_field(dest, &wp, 0x0, 1); /* ALPHA = no */
}
- bitvec_write_field(dest, wp, gamma, 5); /* GAMMA power contrl */
- bitvec_write_field(dest, wp, 0, 1); /* TIMING_ADVANCE_INDEX */
- bitvec_write_field(dest, wp, 0, 1); /* TBF_STARTING_TIME_FLAG */
- bitvec_write_field(dest, wp, 0, 1); /* NULL */
+ bitvec_write_field(dest, &wp, gamma, 5); /* GAMMA power contrl */
+ bitvec_write_field(dest, &wp, 0, 1); /* TIMING_ADVANCE_INDEX */
+ bitvec_write_field(dest, &wp, 0, 1); /* TBF_STARTING_TIME_FLAG */
+ bitvec_write_field(dest, &wp, 0, 1); /* NULL */
}
return 0;
@@ -255,17 +255,17 @@
int plen;
int i;
- bitvec_write_field(dest, wp, 0x0, 4); // Skip Indicator
- bitvec_write_field(dest, wp, 0x6, 4); // Protocol Discriminator
- bitvec_write_field(dest, wp, 0x3A, 8); // Immediate Assign Message Type
+ bitvec_write_field(dest, &wp, 0x0, 4); // Skip Indicator
+ bitvec_write_field(dest, &wp, 0x6, 4); // Protocol Discriminator
+ bitvec_write_field(dest, &wp, 0x3A, 8); // Immediate Assign Message Type
// feature indicator
- bitvec_write_field(dest, wp, 0x0, 1); // spare
- bitvec_write_field(dest, wp, 0x0, 1); // spare
- bitvec_write_field(dest, wp, 0x0, 1); // no cs
- bitvec_write_field(dest, wp, 0x1, 1); // implicit detach for PS
+ bitvec_write_field(dest, &wp, 0x0, 1); // spare
+ bitvec_write_field(dest, &wp, 0x0, 1); // spare
+ bitvec_write_field(dest, &wp, 0x0, 1); // no cs
+ bitvec_write_field(dest, &wp, 0x1, 1); // implicit detach for PS
- bitvec_write_field(dest, wp, 0x0, 4); // Page Mode
+ bitvec_write_field(dest, &wp, 0x0, 4); // Page Mode
/*
* 9.1.20.2 of 44.018 version 11.7.0 Release 11
* Filling of the message
@@ -279,18 +279,18 @@
if (((burst_type == GSM_L1_BURST_TYPE_ACCESS_1) ||
(burst_type == GSM_L1_BURST_TYPE_ACCESS_2))) {
//9.1.20.2a of 44.018 version 11.7.0 Release 11
- bitvec_write_field(dest, wp, 0x7f, 8); /* RACH value */
+ bitvec_write_field(dest, &wp, 0x7f, 8); /* RACH value */
} else {
- bitvec_write_field(dest, wp, ra, 8); /* RACH value */
+ bitvec_write_field(dest, &wp, ra, 8); /* RACH value */
}
- bitvec_write_field(dest, wp,
+ bitvec_write_field(dest, &wp,
(ref_fn / (26 * 51)) % 32, 5); // T1'
- bitvec_write_field(dest, wp, ref_fn % 51, 6); // T3
- bitvec_write_field(dest, wp, ref_fn % 26, 5); // T2
+ bitvec_write_field(dest, &wp, ref_fn % 51, 6); // T3
+ bitvec_write_field(dest, &wp, ref_fn % 26, 5); // T2
/* TODO: Make it configurable */
- bitvec_write_field(dest, wp, 20, 8); //Wait Indication 1
+ bitvec_write_field(dest, &wp, 20, 8); //Wait Indication 1
}
plen = wp / 8;
@@ -308,14 +308,14 @@
uint8_t extended_ra = 0;
extended_ra = (ra & 0x1F);
- bitvec_write_field(dest, wp, 0x1, 1);
- bitvec_write_field(dest, wp, extended_ra, 5); /* Extended RA */
+ bitvec_write_field(dest, &wp, 0x1, 1);
+ bitvec_write_field(dest, &wp, extended_ra, 5); /* Extended RA */
} else {
- bitvec_write_field(dest, wp, 0x0, 1);
+ bitvec_write_field(dest, &wp, 0x0, 1);
}
- bitvec_write_field(dest, wp, 0x0, 1);
- bitvec_write_field(dest, wp, 0x0, 1);
- bitvec_write_field(dest, wp, 0x0, 1);
+ bitvec_write_field(dest, &wp, 0x0, 1);
+ bitvec_write_field(dest, &wp, 0x0, 1);
+ bitvec_write_field(dest, &wp, 0x0, 1);
return plen;
}
@@ -342,44 +342,44 @@
int plen;
int rc;
- bitvec_write_field(dest, wp,0x0,4); // Skip Indicator
- bitvec_write_field(dest, wp,0x6,4); // Protocol Discriminator
- bitvec_write_field(dest, wp,0x3F,8); // Immediate Assignment Message Type
+ bitvec_write_field(dest, &wp,0x0,4); // Skip Indicator
+ bitvec_write_field(dest, &wp,0x6,4); // Protocol Discriminator
+ bitvec_write_field(dest, &wp,0x3F,8); // Immediate Assignment Message Type
// 10.5.2.25b Dedicated mode or TBF
- bitvec_write_field(dest, wp,0x0,1); // spare
- bitvec_write_field(dest, wp,0x0,1); // TMA : Two-message assignment: No meaning
- bitvec_write_field(dest, wp,downlink,1); // Downlink : Downlink assignment to mobile in packet idle mode
- bitvec_write_field(dest, wp,0x1,1); // T/D : TBF or dedicated mode: this message assigns a Temporary Block Flow (TBF).
+ bitvec_write_field(dest, &wp,0x0,1); // spare
+ bitvec_write_field(dest, &wp,0x0,1); // TMA : Two-message assignment: No meaning
+ bitvec_write_field(dest, &wp,downlink,1); // Downlink : Downlink assignment to mobile in packet idle mode
+ bitvec_write_field(dest, &wp,0x1,1); // T/D : TBF or dedicated mode: this message assigns a Temporary Block Flow (TBF).
- bitvec_write_field(dest, wp,0x0,4); // Page Mode
+ bitvec_write_field(dest, &wp,0x0,4); // Page Mode
// GSM 04.08 10.5.2.25a Packet Channel Description
- bitvec_write_field(dest, wp,0x1,5); // Channel type
- bitvec_write_field(dest, wp,ts,3); // TN
- bitvec_write_field(dest, wp,tsc,3); // TSC
- bitvec_write_field(dest, wp,0x0,3); // non-hopping RF channel configuraion
- bitvec_write_field(dest, wp,arfcn,10); // ARFCN
+ bitvec_write_field(dest, &wp,0x1,5); // Channel type
+ bitvec_write_field(dest, &wp,ts,3); // TN
+ bitvec_write_field(dest, &wp,tsc,3); // TSC
+ bitvec_write_field(dest, &wp,0x0,3); // non-hopping RF channel configuraion
+ bitvec_write_field(dest, &wp,arfcn,10); // ARFCN
//10.5.2.30 Request Reference
if (((burst_type == GSM_L1_BURST_TYPE_ACCESS_1) ||
(burst_type == GSM_L1_BURST_TYPE_ACCESS_2))) {
- bitvec_write_field(dest, wp, 0x7f, 8); /* RACH value */
+ bitvec_write_field(dest, &wp, 0x7f, 8); /* RACH value */
} else {
- bitvec_write_field(dest, wp, ra, 8); /* RACH value */
+ bitvec_write_field(dest, &wp, ra, 8); /* RACH value */
}
- bitvec_write_field(dest, wp,(ref_fn / (26 * 51)) % 32,5); // T1'
- bitvec_write_field(dest, wp,ref_fn % 51,6); // T3
- bitvec_write_field(dest, wp,ref_fn % 26,5); // T2
+ bitvec_write_field(dest, &wp,(ref_fn / (26 * 51)) % 32,5); // T1'
+ bitvec_write_field(dest, &wp,ref_fn % 51,6); // T3
+ bitvec_write_field(dest, &wp,ref_fn % 26,5); // T2
// 10.5.2.40 Timing Advance
- bitvec_write_field(dest, wp,0x0,2); // spare
- bitvec_write_field(dest, wp,ta,6); // Timing Advance value
+ bitvec_write_field(dest, &wp,0x0,2); // spare
+ bitvec_write_field(dest, &wp,ta,6); // Timing Advance value
// No mobile allocation in non-hopping systems.
// A zero-length LV. Just write L=0.
- bitvec_write_field(dest, wp,0,8);
+ bitvec_write_field(dest, &wp,0,8);
if ((wp % 8))
log_alert_exit("Length of IMM.ASS without rest octets is not "
@@ -426,83 +426,83 @@
/* timeslot assigned for the Continuous Timing Advance procedure */
uint8_t ta_ts = 0; /* FIXME: supply it as parameter from caller */
- bitvec_write_field(dest, wp,0x1,2); // Payload Type
- bitvec_write_field(dest, wp,0x0,2); // Uplink block with TDMA framenumber (N+13)
- bitvec_write_field(dest, wp,poll,1); // Suppl/Polling Bit
- bitvec_write_field(dest, wp,0x0,3); // Uplink state flag
- bitvec_write_field(dest, wp,0xa,6); // MESSAGE TYPE
+ bitvec_write_field(dest, &wp,0x1,2); // Payload Type
+ bitvec_write_field(dest, &wp,0x0,2); // Uplink block with TDMA framenumber (N+13)
+ bitvec_write_field(dest, &wp,poll,1); // Suppl/Polling Bit
+ bitvec_write_field(dest, &wp,0x0,3); // Uplink state flag
+ bitvec_write_field(dest, &wp,0xa,6); // MESSAGE TYPE
- bitvec_write_field(dest, wp,0x0,2); // Page Mode
+ bitvec_write_field(dest, &wp,0x0,2); // Page Mode
- bitvec_write_field(dest, wp,0x0,1); // switch PERSIST_LEVEL: off
+ bitvec_write_field(dest, &wp,0x0,1); // switch PERSIST_LEVEL: off
if (use_tlli) {
- bitvec_write_field(dest, wp,0x2,2); // switch TLLI : on
- bitvec_write_field(dest, wp,tlli,32); // TLLI
+ bitvec_write_field(dest, &wp,0x2,2); // switch TLLI : on
+ bitvec_write_field(dest, &wp,tlli,32); // TLLI
} else {
- bitvec_write_field(dest, wp,0x0,1); // switch TFI : on
- bitvec_write_field(dest, wp,old_downlink,1); // 0=UPLINK TFI, 1=DL TFI
- bitvec_write_field(dest, wp,old_tfi,5); // TFI
+ bitvec_write_field(dest, &wp,0x0,1); // switch TFI : on
+ bitvec_write_field(dest, &wp,old_downlink,1); // 0=UPLINK TFI, 1=DL TFI
+ bitvec_write_field(dest, &wp,old_tfi,5); // TFI
}
if (!use_egprs) {
- bitvec_write_field(dest, wp,0x0,1); // Message escape
- bitvec_write_field(dest, wp,tbf->current_cs().to_num()-1, 2); // CHANNEL_CODING_COMMAND
- bitvec_write_field(dest, wp,0x1,1); // TLLI_BLOCK_CHANNEL_CODING
+ bitvec_write_field(dest, &wp,0x0,1); // Message escape
+ bitvec_write_field(dest, &wp,tbf->current_cs().to_num()-1, 2); // CHANNEL_CODING_COMMAND
+ bitvec_write_field(dest, &wp,0x1,1); // TLLI_BLOCK_CHANNEL_CODING
write_ta_ie(dest, wp,tbf->ta(), ta_idx, ta_ts);
} else { /* EPGRS */
unsigned int ws_enc = (tbf->m_window.ws() - 64) / 32;
- bitvec_write_field(dest, wp,0x1,1); // Message escape
- bitvec_write_field(dest, wp,0x0,2); // EGPRS message contents
- bitvec_write_field(dest, wp,0x0,1); // No CONTENTION_RESOLUTION_TLLI
- bitvec_write_field(dest, wp,0x0,1); // No COMPACT reduced MA
- bitvec_write_field(dest, wp,tbf->current_cs().to_num()-1, 4); // EGPRS Modulation and Coding IE
+ bitvec_write_field(dest, &wp,0x1,1); // Message escape
+ bitvec_write_field(dest, &wp,0x0,2); // EGPRS message contents
+ bitvec_write_field(dest, &wp,0x0,1); // No CONTENTION_RESOLUTION_TLLI
+ bitvec_write_field(dest, &wp,0x0,1); // No COMPACT reduced MA
+ bitvec_write_field(dest, &wp,tbf->current_cs().to_num()-1, 4); // EGPRS Modulation and Coding IE
/* 0: no RESEGMENT, 1: Segmentation*/
- bitvec_write_field(dest, wp, 0x1, 1);
- bitvec_write_field(dest, wp,ws_enc,5); // EGPRS Window Size
- bitvec_write_field(dest, wp,0x0,1); // No Access Technologies Request
- bitvec_write_field(dest, wp,0x0,1); // No ARAC RETRANSMISSION REQUEST
- bitvec_write_field(dest, wp,0x1,1); // TLLI_BLOCK_CHANNEL_CODING
- bitvec_write_field(dest, wp,0x0,1); // No BEP_PERIOD2
+ bitvec_write_field(dest, &wp, 0x1, 1);
+ bitvec_write_field(dest, &wp,ws_enc,5); // EGPRS Window Size
+ bitvec_write_field(dest, &wp,0x0,1); // No Access Technologies Request
+ bitvec_write_field(dest, &wp,0x0,1); // No ARAC RETRANSMISSION REQUEST
+ bitvec_write_field(dest, &wp,0x1,1); // TLLI_BLOCK_CHANNEL_CODING
+ bitvec_write_field(dest, &wp,0x0,1); // No BEP_PERIOD2
write_ta_ie(dest, wp,tbf->ta(), ta_idx, ta_ts);
- bitvec_write_field(dest, wp,0x0,1); // No Packet Extended Timing Advance
+ bitvec_write_field(dest, &wp,0x0,1); // No Packet Extended Timing Advance
}
#if 1
- bitvec_write_field(dest, wp,0x1,1); // Frequency Parameters information elements = present
- bitvec_write_field(dest, wp,tbf->tsc(),3); // Training Sequence Code (TSC)
- bitvec_write_field(dest, wp,0x0,2); // ARFCN = present
- bitvec_write_field(dest, wp,tbf->trx->arfcn,10); // ARFCN
+ bitvec_write_field(dest, &wp,0x1,1); // Frequency Parameters information elements = present
+ bitvec_write_field(dest, &wp,tbf->tsc(),3); // Training Sequence Code (TSC)
+ bitvec_write_field(dest, &wp,0x0,2); // ARFCN = present
+ bitvec_write_field(dest, &wp,tbf->trx->arfcn,10); // ARFCN
#else
- bitvec_write_field(dest, wp,0x0,1); // Frequency Parameters = off
+ bitvec_write_field(dest, &wp,0x0,1); // Frequency Parameters = off
#endif
- bitvec_write_field(dest, wp,0x1,2); // Dynamic Allocation
+ bitvec_write_field(dest, &wp,0x1,2); // Dynamic Allocation
- bitvec_write_field(dest, wp,0x0,1); // Extended Dynamic Allocation = off
- bitvec_write_field(dest, wp,0x0,1); // P0 = off
+ bitvec_write_field(dest, &wp,0x0,1); // Extended Dynamic Allocation = off
+ bitvec_write_field(dest, &wp,0x0,1); // P0 = off
- bitvec_write_field(dest, wp,0x0,1); // USF_GRANULARITY
- bitvec_write_field(dest, wp,0x1,1); // switch TFI : on
- bitvec_write_field(dest, wp,tbf->tfi(),5);// TFI
+ bitvec_write_field(dest, &wp,0x0,1); // USF_GRANULARITY
+ bitvec_write_field(dest, &wp,0x1,1); // switch TFI : on
+ bitvec_write_field(dest, &wp,tbf->tfi(),5);// TFI
- bitvec_write_field(dest, wp,0x0,1); //
- bitvec_write_field(dest, wp,0x0,1); // TBF Starting Time = off
+ bitvec_write_field(dest, &wp,0x0,1); //
+ bitvec_write_field(dest, &wp,0x0,1); // TBF Starting Time = off
if (alpha || gamma) {
- bitvec_write_field(dest, wp,0x1,1); // Timeslot Allocation with Power Control
- bitvec_write_field(dest, wp,alpha,4); // ALPHA
+ bitvec_write_field(dest, &wp,0x1,1); // Timeslot Allocation with Power Control
+ bitvec_write_field(dest, &wp,alpha,4); // ALPHA
} else
- bitvec_write_field(dest, wp,0x0,1); // Timeslot Allocation
+ bitvec_write_field(dest, &wp,0x0,1); // Timeslot Allocation
for (ts = 0; ts < 8; ts++) {
if (tbf->pdch[ts]) {
- bitvec_write_field(dest, wp,0x1,1); // USF_TN(i): on
- bitvec_write_field(dest, wp,tbf->m_usf[ts],3); // USF_TN(i)
+ bitvec_write_field(dest, &wp,0x1,1); // USF_TN(i): on
+ bitvec_write_field(dest, &wp,tbf->m_usf[ts],3); // USF_TN(i)
if (alpha || gamma)
- bitvec_write_field(dest, wp,gamma,5); // GAMMA power control parameter
+ bitvec_write_field(dest, &wp,gamma,5); // GAMMA power control parameter
} else
- bitvec_write_field(dest, wp,0x0,1); // USF_TN(i): off
+ bitvec_write_field(dest, &wp,0x0,1); // USF_TN(i): off
}
- // bitvec_write_field(dest, wp,0x0,1); // Measurement Mapping struct not present
+ // bitvec_write_field(dest, &wp,0x0,1); // Measurement Mapping struct not present
}
@@ -609,20 +609,20 @@
unsigned wp = 0;
int plen;
- bitvec_write_field(dest, wp,0x0,4); // Skip Indicator
- bitvec_write_field(dest, wp,0x6,4); // Protocol Discriminator
- bitvec_write_field(dest, wp,0x21,8); // Paging Request Message Type
+ bitvec_write_field(dest, &wp,0x0,4); // Skip Indicator
+ bitvec_write_field(dest, &wp,0x6,4); // Protocol Discriminator
+ bitvec_write_field(dest, &wp,0x21,8); // Paging Request Message Type
- bitvec_write_field(dest, wp,0x0,4); // Page Mode
- bitvec_write_field(dest, wp,0x0,4); // Channel Needed
+ bitvec_write_field(dest, &wp,0x0,4); // Page Mode
+ bitvec_write_field(dest, &wp,0x0,4); // Channel Needed
// Mobile Identity
- bitvec_write_field(dest, wp,ptmsi_len+1,8); // Mobile Identity length
- bitvec_write_field(dest, wp,0xf,4); // unused
- bitvec_write_field(dest, wp,0x4,4); // PTMSI type
+ bitvec_write_field(dest, &wp,ptmsi_len+1,8); // Mobile Identity length
+ bitvec_write_field(dest, &wp,0xf,4); // unused
+ bitvec_write_field(dest, &wp,0x4,4); // PTMSI type
for (int i = 0; i < ptmsi_len; i++)
{
- bitvec_write_field(dest, wp,ptmsi[i],8); // PTMSI
+ bitvec_write_field(dest, &wp,ptmsi[i],8); // PTMSI
}
if ((wp % 8))
@@ -630,12 +630,12 @@
"multiple of 8 bits, PLEASE FIX!\n");
plen = wp / 8;
- bitvec_write_field(dest, wp,0x0,1); // "L" NLN(PCH) = off
- bitvec_write_field(dest, wp,0x0,1); // "L" Priority1 = off
- bitvec_write_field(dest, wp,0x1,1); // "L" Priority2 = off
- bitvec_write_field(dest, wp,0x0,1); // "L" Group Call information = off
- bitvec_write_field(dest, wp,0x0,1); // "H" Packet Page Indication 1 = packet paging procedure
- bitvec_write_field(dest, wp,0x1,1); // "H" Packet Page Indication 2 = packet paging procedure
+ bitvec_write_field(dest, &wp,0x0,1); // "L" NLN(PCH) = off
+ bitvec_write_field(dest, &wp,0x0,1); // "L" Priority1 = off
+ bitvec_write_field(dest, &wp,0x1,1); // "L" Priority2 = off
+ bitvec_write_field(dest, &wp,0x0,1); // "L" Group Call information = off
+ bitvec_write_field(dest, &wp,0x0,1); // "H" Packet Page Indication 1 = packet paging procedure
+ bitvec_write_field(dest, &wp,0x1,1); // "H" Packet Page Indication 2 = packet paging procedure
return plen;
}
@@ -673,13 +673,13 @@
LOGP(DRLCMACUL, LOGL_DEBUG, "- V(N): \"%s\" R=Received "
"I=Invalid\n", rbb);
- bitvec_write_field(dest, wp, is_final, 1); // FINAL_ACK_INDICATION
- bitvec_write_field(dest, wp, window->ssn(), 7); // STARTING_SEQUENCE_NUMBER
+ bitvec_write_field(dest, &wp, is_final, 1); // FINAL_ACK_INDICATION
+ bitvec_write_field(dest, &wp, window->ssn(), 7); // STARTING_SEQUENCE_NUMBER
for (int i = 0; i < 64; i++) {
/* Set bit at the appropriate position (see 3GPP TS 04.60 9.1.8.1) */
bool is_ack = (rbb[i] == 'R');
- bitvec_write_field(dest, wp, is_ack, 1);
+ bitvec_write_field(dest, &wp, is_ack, 1);
}
}
@@ -688,20 +688,20 @@
struct gprs_rlcmac_ul_tbf *tbf, bool is_final)
{
- bitvec_write_field(dest, wp, tbf->current_cs().to_num() - 1, 2); // CHANNEL_CODING_COMMAND
+ bitvec_write_field(dest, &wp, tbf->current_cs().to_num() - 1, 2); // CHANNEL_CODING_COMMAND
write_packet_ack_nack_desc_gprs(bts, dest, wp, &tbf->m_window, is_final);
- bitvec_write_field(dest, wp, 1, 1); // 1: have CONTENTION_RESOLUTION_TLLI
- bitvec_write_field(dest, wp, tbf->tlli(), 32); // CONTENTION_RESOLUTION_TLLI
+ bitvec_write_field(dest, &wp, 1, 1); // 1: have CONTENTION_RESOLUTION_TLLI
+ bitvec_write_field(dest, &wp, tbf->tlli(), 32); // CONTENTION_RESOLUTION_TLLI
- bitvec_write_field(dest, wp, 0, 1); // 0: don't have Packet Timing Advance
- bitvec_write_field(dest, wp, 0, 1); // 0: don't have Power Control Parameters
- bitvec_write_field(dest, wp, 0, 1); // 0: don't have Extension Bits
- bitvec_write_field(dest, wp, 0, 1); // fixed 0
- bitvec_write_field(dest, wp, 1, 1); // 1: have Additions R99
- bitvec_write_field(dest, wp, 0, 1); // 0: don't have Packet Extended Timing Advance
- bitvec_write_field(dest, wp, 1, 1); // TBF_EST (enabled)
- bitvec_write_field(dest, wp, 0, 1); // 0: don't have REL 5
+ bitvec_write_field(dest, &wp, 0, 1); // 0: don't have Packet Timing Advance
+ bitvec_write_field(dest, &wp, 0, 1); // 0: don't have Power Control Parameters
+ bitvec_write_field(dest, &wp, 0, 1); // 0: don't have Extension Bits
+ bitvec_write_field(dest, &wp, 0, 1); // fixed 0
+ bitvec_write_field(dest, &wp, 1, 1); // 1: have Additions R99
+ bitvec_write_field(dest, &wp, 0, 1); // 0: don't have Packet Extended Timing Advance
+ bitvec_write_field(dest, &wp, 1, 1); // TBF_EST (enabled)
+ bitvec_write_field(dest, &wp, 0, 1); // 0: don't have REL 5
};
static void write_packet_ack_nack_desc_egprs(
@@ -816,37 +816,37 @@
/* EGPRS Ack/Nack Description IE */
if (len_coded == false) {
- bitvec_write_field(dest, wp, 0, 1); // 0: don't have length
+ bitvec_write_field(dest, &wp, 0, 1); // 0: don't have length
} else {
- bitvec_write_field(dest, wp, 1, 1); // 1: have length
- bitvec_write_field(dest, wp, len, 8); // length
+ bitvec_write_field(dest, &wp, 1, 1); // 1: have length
+ bitvec_write_field(dest, &wp, len, 8); // length
}
- bitvec_write_field(dest, wp, is_final, 1); // FINAL_ACK_INDICATION
- bitvec_write_field(dest, wp, bow, 1); // BEGINNING_OF_WINDOW
- bitvec_write_field(dest, wp, eow, 1); // END_OF_WINDOW
- bitvec_write_field(dest, wp, ssn, 11); // STARTING_SEQUENCE_NUMBER
+ bitvec_write_field(dest, &wp, is_final, 1); // FINAL_ACK_INDICATION
+ bitvec_write_field(dest, &wp, bow, 1); // BEGINNING_OF_WINDOW
+ bitvec_write_field(dest, &wp, eow, 1); // END_OF_WINDOW
+ bitvec_write_field(dest, &wp, ssn, 11); // STARTING_SEQUENCE_NUMBER
if (is_compressed) {
- bitvec_write_field(dest, wp, 1, 1); // CRBB_Exist
- bitvec_write_field(dest, wp, crbb_len, 7); // CRBB_LENGTH
+ bitvec_write_field(dest, &wp, 1, 1); // CRBB_Exist
+ bitvec_write_field(dest, &wp, crbb_len, 7); // CRBB_LENGTH
crbb_start_clr_code = (0x80 & ucmp_vec.data[0])>>7;
- bitvec_write_field(dest, wp, crbb_start_clr_code, 1); // CRBB_clr_code
+ bitvec_write_field(dest, &wp, crbb_start_clr_code, 1); // CRBB_clr_code
LOGP(DRLCMACUL, LOGL_DEBUG,
"EGPRS CRBB, crbb_len = %d, crbb_start_clr_code = %d\n",
crbb_len, crbb_start_clr_code);
while (crbb_len != 0) {
if (crbb_len > 8) {
- bitvec_write_field(dest, wp, crbb_bitmap[iter], 8);
+ bitvec_write_field(dest, &wp, crbb_bitmap[iter], 8);
crbb_len = crbb_len - 8;
iter++;
} else {
- bitvec_write_field(dest, wp, crbb_bitmap[iter], crbb_len);
+ bitvec_write_field(dest, &wp, crbb_bitmap[iter], crbb_len);
crbb_len = 0;
}
}
esn_crbb = window->mod_sns(esn_crbb + uclen_crbb);
} else {
- bitvec_write_field(dest, wp, 0, 1); // CRBB_Exist
+ bitvec_write_field(dest, &wp, 0, 1); // CRBB_Exist
}
LOGP(DRLCMACUL, LOGL_DEBUG,
"EGPRS URBB, urbb len = %d, SSN = %d, ESN_CRBB = %d, "
@@ -859,7 +859,7 @@
for (i = urbb_len; i > 0; i--) {
/* Set bit at the appropriate position (see 3GPP TS 04.60 12.3.1) */
bool is_ack = window->m_v_n.is_received(esn_crbb + i);
- bitvec_write_field(dest, wp, is_ack, 1);
+ bitvec_write_field(dest, &wp, is_ack, 1);
}
}
@@ -867,29 +867,29 @@
struct gprs_rlcmac_bts *bts, bitvec * dest, unsigned& wp,
struct gprs_rlcmac_ul_tbf *tbf, bool is_final)
{
- bitvec_write_field(dest, wp, 0, 2); // fixed 00
+ bitvec_write_field(dest, &wp, 0, 2); // fixed 00
/* CHANNEL_CODING_COMMAND */
- bitvec_write_field(dest, wp,
+ bitvec_write_field(dest, &wp,
tbf->current_cs().to_num() - 1, 4);
/* 0: no RESEGMENT, 1: Segmentation*/
- bitvec_write_field(dest, wp, 1, 1);
- bitvec_write_field(dest, wp, 1, 1); // PRE_EMPTIVE_TRANSMISSION, TODO: This resembles GPRS, change it?
- bitvec_write_field(dest, wp, 0, 1); // 0: no PRR_RETRANSMISSION_REQUEST, TODO: clarify
- bitvec_write_field(dest, wp, 0, 1); // 0: no ARAC_RETRANSMISSION_REQUEST, TODO: clarify
- bitvec_write_field(dest, wp, 1, 1); // 1: have CONTENTION_RESOLUTION_TLLI
- bitvec_write_field(dest, wp, tbf->tlli(), 32); // CONTENTION_RESOLUTION_TLLI
- bitvec_write_field(dest, wp, 1, 1); // TBF_EST (enabled)
- bitvec_write_field(dest, wp, 0, 1); // 0: don't have Packet Timing Advance
- bitvec_write_field(dest, wp, 0, 1); // 0: don't have Packet Extended Timing Advance
- bitvec_write_field(dest, wp, 0, 1); // 0: don't have Power Control Parameters
- bitvec_write_field(dest, wp, 0, 1); // 0: don't have Extension Bits
+ bitvec_write_field(dest, &wp, 1, 1);
+ bitvec_write_field(dest, &wp, 1, 1); // PRE_EMPTIVE_TRANSMISSION, TODO: This resembles GPRS, change it?
+ bitvec_write_field(dest, &wp, 0, 1); // 0: no PRR_RETRANSMISSION_REQUEST, TODO: clarify
+ bitvec_write_field(dest, &wp, 0, 1); // 0: no ARAC_RETRANSMISSION_REQUEST, TODO: clarify
+ bitvec_write_field(dest, &wp, 1, 1); // 1: have CONTENTION_RESOLUTION_TLLI
+ bitvec_write_field(dest, &wp, tbf->tlli(), 32); // CONTENTION_RESOLUTION_TLLI
+ bitvec_write_field(dest, &wp, 1, 1); // TBF_EST (enabled)
+ bitvec_write_field(dest, &wp, 0, 1); // 0: don't have Packet Timing Advance
+ bitvec_write_field(dest, &wp, 0, 1); // 0: don't have Packet Extended Timing Advance
+ bitvec_write_field(dest, &wp, 0, 1); // 0: don't have Power Control Parameters
+ bitvec_write_field(dest, &wp, 0, 1); // 0: don't have Extension Bits
/* -2 for last bit 0 mandatory and REL5 not supported */
unsigned bits_ack_nack = dest->data_len * 8 - wp - 2;
write_packet_ack_nack_desc_egprs(bts, dest, wp, &tbf->m_window, is_final, bits_ack_nack);
- bitvec_write_field(dest, wp, 0, 1); // fixed 0
- bitvec_write_field(dest, wp, 0, 1); // 0: don't have REL 5
+ bitvec_write_field(dest, &wp, 0, 1); // fixed 0
+ bitvec_write_field(dest, &wp, 0, 1); // 0: don't have REL 5
};
void Encoding::write_packet_uplink_ack(
@@ -902,23 +902,23 @@
LOGP(DRLCMACUL, LOGL_DEBUG, "Encoding Ack/Nack for %s "
"(final=%d)\n", tbf_name(tbf), is_final);
- bitvec_write_field(dest, wp, 0x1, 2); // Payload Type
- bitvec_write_field(dest, wp, rrbp, 2); // Uplink block with TDMA framenumber
- bitvec_write_field(dest, wp, is_final, 1); // Suppl/Polling Bit
- bitvec_write_field(dest, wp, 0x0, 3); // Uplink state flag
- bitvec_write_field(dest, wp, 0x9, 6); // MESSAGE TYPE Uplink Ack/Nack
- bitvec_write_field(dest, wp, 0x0, 2); // Page Mode
+ bitvec_write_field(dest, &wp, 0x1, 2); // Payload Type
+ bitvec_write_field(dest, &wp, rrbp, 2); // Uplink block with TDMA framenumber
+ bitvec_write_field(dest, &wp, is_final, 1); // Suppl/Polling Bit
+ bitvec_write_field(dest, &wp, 0x0, 3); // Uplink state flag
+ bitvec_write_field(dest, &wp, 0x9, 6); // MESSAGE TYPE Uplink Ack/Nack
+ bitvec_write_field(dest, &wp, 0x0, 2); // Page Mode
- bitvec_write_field(dest, wp, 0x0, 2); // fixed 00
- bitvec_write_field(dest, wp, tbf->tfi(), 5); // Uplink TFI
+ bitvec_write_field(dest, &wp, 0x0, 2); // fixed 00
+ bitvec_write_field(dest, &wp, tbf->tfi(), 5); // Uplink TFI
if (tbf->is_egprs_enabled()) {
/* PU_AckNack_EGPRS = on */
- bitvec_write_field(dest, wp, 1, 1); // 1: EGPRS
+ bitvec_write_field(dest, &wp, 1, 1); // 1: EGPRS
write_packet_uplink_ack_egprs(bts, dest, wp, tbf, is_final);
} else {
/* PU_AckNack_GPRS = on */
- bitvec_write_field(dest, wp, 0, 1); // 0: GPRS
+ bitvec_write_field(dest, &wp, 0, 1); // 0: GPRS
write_packet_uplink_ack_gprs(bts, dest, wp, tbf, is_final);
}
@@ -932,15 +932,15 @@
{
unsigned wp = 0;
- bitvec_write_field(dest, wp,0x1,2); // Payload Type
- bitvec_write_field(dest, wp,0x0,3); // No polling
- bitvec_write_field(dest, wp,0x0,3); // Uplink state flag
- bitvec_write_field(dest, wp,0x22,6); // MESSAGE TYPE
+ bitvec_write_field(dest, &wp,0x1,2); // Payload Type
+ bitvec_write_field(dest, &wp,0x0,3); // No polling
+ bitvec_write_field(dest, &wp,0x0,3); // Uplink state flag
+ bitvec_write_field(dest, &wp,0x22,6); // MESSAGE TYPE
- bitvec_write_field(dest, wp,0x0,2); // Page Mode
+ bitvec_write_field(dest, &wp,0x0,2); // Page Mode
- bitvec_write_field(dest, wp,0x0,1); // No PERSISTENCE_LEVEL
- bitvec_write_field(dest, wp,0x0,1); // No NLN
+ bitvec_write_field(dest, &wp,0x0,1); // No PERSISTENCE_LEVEL
+ bitvec_write_field(dest, &wp,0x0,1); // No NLN
return wp;
}
@@ -948,24 +948,24 @@
unsigned Encoding::write_repeated_page_info(bitvec * dest, unsigned& wp, uint8_t len,
uint8_t *identity, uint8_t chan_needed)
{
- bitvec_write_field(dest, wp,0x1,1); // Repeated Page info exists
+ bitvec_write_field(dest, &wp,0x1,1); // Repeated Page info exists
- bitvec_write_field(dest, wp,0x1,1); // RR connection paging
+ bitvec_write_field(dest, &wp,0x1,1); // RR connection paging
if ((identity[0] & 0x07) == 4) {
- bitvec_write_field(dest, wp,0x0,1); // TMSI
+ bitvec_write_field(dest, &wp,0x0,1); // TMSI
identity++;
len--;
} else {
- bitvec_write_field(dest, wp,0x0,1); // MI
- bitvec_write_field(dest, wp,len,4); // MI len
+ bitvec_write_field(dest, &wp,0x0,1); // MI
+ bitvec_write_field(dest, &wp,len,4); // MI len
}
while (len) {
- bitvec_write_field(dest, wp,*identity++,8); // MI data
+ bitvec_write_field(dest, &wp,*identity++,8); // MI data
len--;
}
- bitvec_write_field(dest, wp,chan_needed,2); // CHANNEL_NEEDED
- bitvec_write_field(dest, wp,0x0,1); // No eMLPP_PRIORITY
+ bitvec_write_field(dest, &wp,chan_needed,2); // CHANNEL_NEEDED
+ bitvec_write_field(dest, &wp,0x0,1); // No eMLPP_PRIORITY
return wp;
}
@@ -1496,17 +1496,17 @@
{
unsigned wp = 0;
- bitvec_write_field(dest, wp, 0x1, 2); // Payload Type
- bitvec_write_field(dest, wp, 0x0, 2); // Uplink block with TDMA FN
- bitvec_write_field(dest, wp, 0, 1); // No Polling Bit
- bitvec_write_field(dest, wp, 0x0, 3); // Uplink state flag
- bitvec_write_field(dest, wp,
+ bitvec_write_field(dest, &wp, 0x1, 2); // Payload Type
+ bitvec_write_field(dest, &wp, 0x0, 2); // Uplink block with TDMA FN
+ bitvec_write_field(dest, &wp, 0, 1); // No Polling Bit
+ bitvec_write_field(dest, &wp, 0x0, 3); // Uplink state flag
+ bitvec_write_field(dest, &wp,
MT_PACKET_ACCESS_REJECT, 6); // MESSAGE TYPE
- bitvec_write_field(dest, wp, 0, 2); // fixed 00
- bitvec_write_field(dest, wp, 0x0, 1); // TLLI / G-RNTI : bit (32)
- bitvec_write_field(dest, wp, tlli, 32); // CONTENTION_RESOLUTION_TLLI
- bitvec_write_field(dest, wp, 1, 1); // WAIT_INDICATION size in seconds
+ bitvec_write_field(dest, &wp, 0, 2); // fixed 00
+ bitvec_write_field(dest, &wp, 0x0, 1); // TLLI / G-RNTI : bit (32)
+ bitvec_write_field(dest, &wp, tlli, 32); // CONTENTION_RESOLUTION_TLLI
+ bitvec_write_field(dest, &wp, 1, 1); // WAIT_INDICATION size in seconds
/* TODO: make it configurable */
- bitvec_write_field(dest, wp, 5, 8); // WAIT_INDICATION value
- bitvec_write_field(dest, wp, 0, 1); // WAIT_INDICATION size in seconds
+ bitvec_write_field(dest, &wp, 5, 8); // WAIT_INDICATION value
+ bitvec_write_field(dest, &wp, 0, 1); // WAIT_INDICATION size in seconds
}