Interface changes in osmo-pcu towards osmo-bts to receive 11 bit RACH. The interface version number is increased by 1. --- src/bts.cpp | 2 +- src/bts.h | 3 ++- src/pcu_l1_if.cpp | 2 +- src/pcuif_proto.h | 5 +++-- 4 files changed, 7 insertions(+), 5 deletions(-)
diff --git a/src/bts.cpp b/src/bts.cpp index 715fb51..9c0871d 100644 --- a/src/bts.cpp +++ b/src/bts.cpp @@ -459,7 +459,7 @@ int BTS::rcv_imm_ass_cnf(const uint8_t *data, uint32_t fn) return 0; }
-int BTS::rcv_rach(uint8_t ra, uint32_t Fn, int16_t qta) +int BTS::rcv_rach(uint16_t ra, uint32_t Fn, int16_t qta, uint8_t rach_type) { struct gprs_rlcmac_ul_tbf *tbf = NULL; uint8_t trx_no, ts_no = 0; diff --git a/src/bts.h b/src/bts.h index c975304..2a1f930 100644 --- a/src/bts.h +++ b/src/bts.h @@ -275,7 +275,8 @@ public: int tfi_find_free(enum gprs_rlcmac_tbf_direction dir, uint8_t *_trx, int8_t use_trx);
int rcv_imm_ass_cnf(const uint8_t *data, uint32_t fn); - int rcv_rach(uint8_t ra, uint32_t Fn, int16_t qta); + int rcv_rach(uint16_t ra, uint32_t Fn, int16_t qta, + uint8_t rach_type = 0);
void trigger_dl_ass(gprs_rlcmac_dl_tbf *tbf, gprs_rlcmac_tbf *old_tbf); void snd_dl_ass(gprs_rlcmac_tbf *tbf, uint8_t poll, const char *imsi); diff --git a/src/pcu_l1_if.cpp b/src/pcu_l1_if.cpp index 19dda5c..7d7c914 100644 --- a/src/pcu_l1_if.cpp +++ b/src/pcu_l1_if.cpp @@ -313,7 +313,7 @@ static int pcu_rx_rach_ind(struct gsm_pcu_if_rach_ind *rach_ind) case PCU_IF_SAPI_RACH: rc = BTS::main_bts()->rcv_rach( rach_ind->ra, rach_ind->fn, - rach_ind->qta); + rach_ind->qta, rach_ind->rach_type); break; default: LOGP(DL1IF, LOGL_ERROR, "Received PCU rach request with " diff --git a/src/pcuif_proto.h b/src/pcuif_proto.h index 9d740ac..877f507 100644 --- a/src/pcuif_proto.h +++ b/src/pcuif_proto.h @@ -1,7 +1,7 @@ #ifndef _PCUIF_PROTO_H #define _PCUIF_PROTO_H
-#define PCU_IF_VERSION 0x05 +#define PCU_IF_VERSION 0x06
/* msg_type */ #define PCU_IF_MSG_DATA_REQ 0x00 /* send data to given channel */ @@ -64,10 +64,11 @@ struct gsm_pcu_if_rts_req {
struct gsm_pcu_if_rach_ind { uint8_t sapi; - uint8_t ra; + uint16_t ra; int16_t qta; uint32_t fn; uint16_t arfcn; + uint8_t rach_type; } __attribute__ ((packed));
struct gsm_pcu_if_info_trx {
Hi Bhargava,
On Mon, Mar 21, 2016 at 08:33:50PM +0530, Bhargava Abhyankar wrote:
Interface changes in osmo-pcu towards osmo-bts to receive 11 bit RACH. The interface version number is increased by 1.
your patch looks fine, thanks.
However, when we change the interface, we need to change it on both sides, on osmo-pcu as well as on osmo-bts. Please send the corresponding change along for the osmo-bts side. Thanks!
Regards, Harald
Hi,
what exactly is your definition of 'rach_type'? Could you please either add a reference to the document where this notion is specified, or if there is none, a specification of its value range.
Is the used TSC (TS1 or TS2 in case of EGPRS) is mapped to this value? If not, this should IMHO also be added to have all relevant RACH information included, since this is closely related to the 11 bit RACH type which cannot be fully used for EGPRS without that information. See 44.060, 11.2.5a for details.
Jacob
On 21.03.2016 16:03, Bhargava Abhyankar wrote:
Interface changes in osmo-pcu towards osmo-bts to receive 11 bit RACH. The interface version number is increased by 1.
- int rcv_rach(uint8_t ra, uint32_t Fn, int16_t qta);
- int rcv_rach(uint16_t ra, uint32_t Fn, int16_t qta,
uint8_t rach_type = 0);
struct gsm_pcu_if_rach_ind { uint8_t sapi;
- uint8_t ra;
- uint16_t ra; int16_t qta; uint32_t fn; uint16_t arfcn;
- uint8_t rach_type;
} __attribute__ ((packed));
Hello Jacob, Thanks for your inputs.
what exactly is your definition of 'rach_type'? Could you please either add a reference to the document where this notion is >specified, or if there is none, a specification of its value range.
We propose to use following enum as 'rach_type' enum { GPRS_8_BIT_RACH = 0, GPRS_11_BIT_RACH , EGPRS_8_PSK_11_BIT_RACH , EGPRS_NO_8_PSK_11_BIT_RACH };
This is not specified in standard, this is introduced as part of proposed interface changes between osmo-bts and osmo-pcu. Osmo-bts should get the RACH information from L1 APIs and fill the appropriate 'rach_type' and send to osmo-pcu. Osmo-bts can distinguish between 8 bit RACH and 11 bit RACH using 'u8Size' parameter in PH-RA-IND premetive.
There is still open point on how osmo-bts distinguishes between types of 11 bit RACH based on received layer 1 message. Let me know if you have any inputs.
Thanks Bhargava Abhyankar
osmocom-net-gprs@lists.osmocom.org