aboutsummaryrefslogtreecommitdiffstats
path: root/src/gprs_rlcmac.cpp
diff options
context:
space:
mode:
authorAndreas Eversberg <jolly@eversberg.eu>2012-07-06 08:13:59 +0200
committerAndreas Eversberg <jolly@eversberg.eu>2012-07-06 08:13:59 +0200
commitdfa563cd3bba9b6214289bc63c84b00f1f7676cd (patch)
tree4ad0d6961d2a90bec74eb85b1a0ab6c029cdee52 /src/gprs_rlcmac.cpp
parentb3c6f6c716d4495b0f664b4d0da1a4708fb1d0f2 (diff)
RLC/MAC process makes use from attributes, received from PCU socket
For OpenBTS interface and BSSGP, fixed values are still used.
Diffstat (limited to 'src/gprs_rlcmac.cpp')
-rw-r--r--src/gprs_rlcmac.cpp12
1 files changed, 7 insertions, 5 deletions
diff --git a/src/gprs_rlcmac.cpp b/src/gprs_rlcmac.cpp
index a9f4d134..bfed57dd 100644
--- a/src/gprs_rlcmac.cpp
+++ b/src/gprs_rlcmac.cpp
@@ -385,6 +385,7 @@ int write_immediate_assignment(bitvec * dest, uint8_t downlink, uint8_t ra,
}
else
{
+ struct gprs_rlcmac_bts *bts = gprs_rlcmac_bts;
// GMS 04.08 10.5.2.37b 10.5.2.16
bitvec_write_field(dest, wp, 3, 2); // "HH"
bitvec_write_field(dest, wp, 0, 2); // "0" Packet Uplink Assignment
@@ -395,8 +396,8 @@ int write_immediate_assignment(bitvec * dest, uint8_t downlink, uint8_t ra,
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, 0, 2); // CHANNEL_CODING_COMMAND
- bitvec_write_field(dest, wp, 0, 1); // TLLI_BLOCK_CHANNEL_CODING
+ bitvec_write_field(dest, wp, bts->initial_cs-1, 2); // CHANNEL_CODING_COMMAND
+ bitvec_write_field(dest, wp, 1, 1); // TLLI_BLOCK_CHANNEL_CODING
bitvec_write_field(dest, wp, 1 , 1); // "1" Alpha : Present
bitvec_write_field(dest, wp, 0, 4); // Alpha
bitvec_write_field(dest, wp, 0, 5); // Gamma
@@ -417,6 +418,7 @@ void write_packet_uplink_assignment(bitvec * dest, uint8_t old_tfi,
uint8_t poll)
{
// TODO We should use our implementation of encode RLC/MAC Control messages.
+ struct gprs_rlcmac_bts *bts = gprs_rlcmac_bts;
unsigned wp = 0;
int i;
@@ -439,8 +441,8 @@ void write_packet_uplink_assignment(bitvec * dest, uint8_t old_tfi,
}
bitvec_write_field(dest, wp,0x0,1); // Message escape
- bitvec_write_field(dest, wp,0x0,2); // CHANNEL_CODING_COMMAND
- bitvec_write_field(dest, wp,0x0,1); // TLLI_BLOCK_CHANNEL_CODING
+ bitvec_write_field(dest, wp, bts->initial_cs-1, 2); // CHANNEL_CODING_COMMAND
+ bitvec_write_field(dest, wp,0x1,1); // TLLI_BLOCK_CHANNEL_CODING
bitvec_write_field(dest, wp,0x1,1); // switch TIMING_ADVANCE_VALUE = on
bitvec_write_field(dest, wp,ta,6); // TIMING_ADVANCE_VALUE
@@ -448,7 +450,7 @@ void write_packet_uplink_assignment(bitvec * dest, uint8_t old_tfi,
#if 1
bitvec_write_field(dest, wp,0x1,1); // Frequency Parameters information elements = present
- bitvec_write_field(dest, wp,tsc,3); // Training Sequence Code (TSC) = 2
+ bitvec_write_field(dest, wp,tsc,3); // Training Sequence Code (TSC)
bitvec_write_field(dest, wp,0x0,2); // ARFCN = present
bitvec_write_field(dest, wp,arfcn,10); // ARFCN
#else