mirror of https://github.com/PentHertz/srsLTE.git
replace FIXME with TODO
This commit is contained in:
parent
f874722cfb
commit
476f970ee1
|
@ -650,7 +650,7 @@ void* net_thread_fnc(void* arg)
|
||||||
do {
|
do {
|
||||||
n = srslte_netsource_read(&net_source, &data2[rpm], DATA_BUFF_SZ - rpm);
|
n = srslte_netsource_read(&net_source, &data2[rpm], DATA_BUFF_SZ - rpm);
|
||||||
if (n > 0) {
|
if (n > 0) {
|
||||||
// FIXME: I assume that both transport blocks have same size in case of 2 tb are active
|
// TODO: I assume that both transport blocks have same size in case of 2 tb are active
|
||||||
|
|
||||||
int nbytes = 1 + (((mbsfn_area_id > -1) ? (pmch_cfg.pdsch_cfg.grant.tb[0].tbs)
|
int nbytes = 1 + (((mbsfn_area_id > -1) ? (pmch_cfg.pdsch_cfg.grant.tb[0].tbs)
|
||||||
: (pdsch_cfg.grant.tb[0].tbs + pdsch_cfg.grant.tb[1].tbs)) -
|
: (pdsch_cfg.grant.tb[0].tbs + pdsch_cfg.grant.tb[1].tbs)) -
|
||||||
|
|
|
@ -827,7 +827,7 @@ int main(int argc, char** argv)
|
||||||
if (sf_idx == 1) {
|
if (sf_idx == 1) {
|
||||||
srslte_netsink_write(&net_sink, data[0], 1 + (n - 1) / 8);
|
srslte_netsink_write(&net_sink, data[0], 1 + (n - 1) / 8);
|
||||||
} else {
|
} else {
|
||||||
// FIXME: UDP Data transmission does not work
|
// TODO: UDP Data transmission does not work
|
||||||
for (uint32_t tb = 0; tb < SRSLTE_MAX_CODEWORDS; tb++) {
|
for (uint32_t tb = 0; tb < SRSLTE_MAX_CODEWORDS; tb++) {
|
||||||
if (pdsch_cfg.grant.tb[tb].enabled) {
|
if (pdsch_cfg.grant.tb[tb].enabled) {
|
||||||
srslte_netsink_write(&net_sink, data[tb], 1 + (pdsch_cfg.grant.tb[tb].tbs - 1) / 8);
|
srslte_netsink_write(&net_sink, data[tb], 1 + (pdsch_cfg.grant.tb[tb].tbs - 1) / 8);
|
||||||
|
|
|
@ -405,7 +405,7 @@ typedef struct gtpc_f_teid_ie {
|
||||||
enum gtpc_interface_type interface_type;
|
enum gtpc_interface_type interface_type;
|
||||||
uint32_t teid;
|
uint32_t teid;
|
||||||
in_addr_t ipv4;
|
in_addr_t ipv4;
|
||||||
struct in6_addr ipv6; // FIXME
|
struct in6_addr ipv6; // TODO
|
||||||
} gtp_fteid_t;
|
} gtp_fteid_t;
|
||||||
|
|
||||||
// TODO
|
// TODO
|
||||||
|
|
|
@ -49,7 +49,7 @@
|
||||||
DEFINES
|
DEFINES
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
|
|
||||||
// FIXME: This was chosen arbitrarily
|
// TODO: This was chosen arbitrarily
|
||||||
#define LIBLTE_ASN1_OID_MAXSUBIDS 128
|
#define LIBLTE_ASN1_OID_MAXSUBIDS 128
|
||||||
|
|
||||||
// Caution these values must match SRSLTE_ ones in common.h
|
// Caution these values must match SRSLTE_ ones in common.h
|
||||||
|
|
|
@ -260,7 +260,7 @@ LIBLTE_ERROR_ENUM liblte_mme_unpack_mobile_station_classmark_2_ie(uint8**
|
||||||
// Enums
|
// Enums
|
||||||
// Structs
|
// Structs
|
||||||
typedef struct {
|
typedef struct {
|
||||||
// FIXME
|
// TODO
|
||||||
} LIBLTE_MME_MOBILE_STATION_CLASSMARK_3_STRUCT;
|
} LIBLTE_MME_MOBILE_STATION_CLASSMARK_3_STRUCT;
|
||||||
// Functions
|
// Functions
|
||||||
LIBLTE_ERROR_ENUM liblte_mme_pack_mobile_station_classmark_3_ie(LIBLTE_MME_MOBILE_STATION_CLASSMARK_3_STRUCT* ms_cm3,
|
LIBLTE_ERROR_ENUM liblte_mme_pack_mobile_station_classmark_3_ie(LIBLTE_MME_MOBILE_STATION_CLASSMARK_3_STRUCT* ms_cm3,
|
||||||
|
@ -1475,7 +1475,7 @@ LIBLTE_ERROR_ENUM liblte_mme_unpack_emergency_number_list_ie(uint8**
|
||||||
// Enums
|
// Enums
|
||||||
// Structs
|
// Structs
|
||||||
// Functions
|
// Functions
|
||||||
// FIXME
|
// TODO
|
||||||
|
|
||||||
/*********************************************************************
|
/*********************************************************************
|
||||||
IE Name: SS Code
|
IE Name: SS Code
|
||||||
|
@ -1522,7 +1522,7 @@ LIBLTE_ERROR_ENUM liblte_mme_unpack_lcs_indicator_ie(uint8** ie_ptr, uint8* lcs_
|
||||||
// Enums
|
// Enums
|
||||||
// Structs
|
// Structs
|
||||||
// Functions
|
// Functions
|
||||||
// FIXME
|
// TODO
|
||||||
|
|
||||||
/*********************************************************************
|
/*********************************************************************
|
||||||
IE Name: Generic Message Container Type
|
IE Name: Generic Message Container Type
|
||||||
|
@ -2704,7 +2704,7 @@ liblte_mme_unpack_authentication_response_msg(LIBLTE_BYTE_MSG_STRUCT*
|
||||||
// Enums
|
// Enums
|
||||||
// Structs
|
// Structs
|
||||||
// Functions
|
// Functions
|
||||||
// FIXME
|
// TODO
|
||||||
|
|
||||||
/*********************************************************************
|
/*********************************************************************
|
||||||
Message Name: Detach Accept
|
Message Name: Detach Accept
|
||||||
|
@ -3213,7 +3213,7 @@ liblte_mme_unpack_tracking_area_update_reject_msg(LIBLTE_BYTE_MSG_STRUCT*
|
||||||
// Enums
|
// Enums
|
||||||
// Structs
|
// Structs
|
||||||
// Functions
|
// Functions
|
||||||
// FIXME
|
// TODO
|
||||||
|
|
||||||
/*********************************************************************
|
/*********************************************************************
|
||||||
Message Name: Uplink NAS Transport
|
Message Name: Uplink NAS Transport
|
||||||
|
|
|
@ -4983,7 +4983,7 @@ LIBLTE_ERROR_ENUM liblte_s1ap_unpack_timetowait(uint8_t** ptr, LIBLTE_S1AP_TIMET
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
/* ProtocolIE UE_HistoryInformation DYNAMIC SEQUENCE OF
|
/* ProtocolIE UE_HistoryInformation DYNAMIC SEQUENCE OF
|
||||||
********************************************************************************/
|
********************************************************************************/
|
||||||
#define LIBLTE_S1AP_UE_HISTORYINFORMATION_BIT_STRING_LEN 32 // FIXME: Check if this size is adequate
|
#define LIBLTE_S1AP_UE_HISTORYINFORMATION_BIT_STRING_LEN 32 // TODO: Check if this size is adequate
|
||||||
// lb:1, ub:16
|
// lb:1, ub:16
|
||||||
typedef struct {
|
typedef struct {
|
||||||
uint32_t len;
|
uint32_t len;
|
||||||
|
|
|
@ -145,7 +145,7 @@ private:
|
||||||
*value = std::move(q.front());
|
*value = std::move(q.front());
|
||||||
}
|
}
|
||||||
if (mutexed_callback) {
|
if (mutexed_callback) {
|
||||||
mutexed_callback->popping(*value); // FIXME: Value might be null!
|
mutexed_callback->popping(*value); // TODO: Value might be null!
|
||||||
}
|
}
|
||||||
q.pop();
|
q.pop();
|
||||||
ret = true;
|
ret = true;
|
||||||
|
|
|
@ -152,7 +152,7 @@ typedef struct SRSLTE_API {
|
||||||
typedef struct SRSLTE_API {
|
typedef struct SRSLTE_API {
|
||||||
uint32_t Qm;
|
uint32_t Qm;
|
||||||
srslte_ra_tb_t mcs;
|
srslte_ra_tb_t mcs;
|
||||||
uint32_t k0; ///< FIXME: consider removing k0 and compute tx_tti directly
|
uint32_t k0; ///< TODO: consider removing k0 and compute tx_tti directly
|
||||||
uint32_t nof_rep; ///< number of repetitions
|
uint32_t nof_rep; ///< number of repetitions
|
||||||
uint32_t nof_ru; ///< Number of resource units
|
uint32_t nof_ru; ///< Number of resource units
|
||||||
uint32_t nof_slots;
|
uint32_t nof_slots;
|
||||||
|
|
|
@ -571,7 +571,7 @@ IntType unconstrained_whole_number_length(IntType n)
|
||||||
template <typename IntType>
|
template <typename IntType>
|
||||||
SRSASN_CODE pack_unconstrained_whole_number(bit_ref& bref, IntType n, bool aligned)
|
SRSASN_CODE pack_unconstrained_whole_number(bit_ref& bref, IntType n, bool aligned)
|
||||||
{
|
{
|
||||||
// FIXME: Test
|
// TODO: Test
|
||||||
uint32_t len = unconstrained_whole_number_length(n);
|
uint32_t len = unconstrained_whole_number_length(n);
|
||||||
if (aligned) {
|
if (aligned) {
|
||||||
HANDLE_CODE(bref.align_bytes_zero());
|
HANDLE_CODE(bref.align_bytes_zero());
|
||||||
|
@ -583,7 +583,7 @@ SRSASN_CODE pack_unconstrained_whole_number(bit_ref& bref, IntType n, bool align
|
||||||
template <typename IntType>
|
template <typename IntType>
|
||||||
SRSASN_CODE unpack_unconstrained_whole_number(IntType& n, bit_ref& bref, bool aligned)
|
SRSASN_CODE unpack_unconstrained_whole_number(IntType& n, bit_ref& bref, bool aligned)
|
||||||
{
|
{
|
||||||
// FIXME: Test
|
// TODO: Test
|
||||||
uint32_t len;
|
uint32_t len;
|
||||||
HANDLE_CODE(unpack_length(len, bref, aligned));
|
HANDLE_CODE(unpack_length(len, bref, aligned));
|
||||||
if (aligned) {
|
if (aligned) {
|
||||||
|
@ -678,7 +678,7 @@ SRSASN_CODE pack_length(bit_ref& bref, uint32_t val, bool aligned)
|
||||||
uint32_t m = val / ASN_16K;
|
uint32_t m = val / ASN_16K;
|
||||||
HANDLE_CODE(bref.pack(m, 6));
|
HANDLE_CODE(bref.pack(m, 6));
|
||||||
val = val - m * ASN_16K;
|
val = val - m * ASN_16K;
|
||||||
return bref.pack(val, 16); // TODO: FIXME
|
return bref.pack(val, 16); // TODO: TODO
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return SRSASN_SUCCESS;
|
return SRSASN_SUCCESS;
|
||||||
|
@ -749,7 +749,7 @@ SRSASN_CODE pack_integer(bit_ref& bref, IntType n, IntType lb, IntType ub, bool
|
||||||
if (lb == ub) {
|
if (lb == ub) {
|
||||||
return SRSASN_SUCCESS;
|
return SRSASN_SUCCESS;
|
||||||
}
|
}
|
||||||
// FIXME: Check if we are in the indefinite length case, and pack length prefix if needed
|
// TODO: Check if we are in the indefinite length case, and pack length prefix if needed
|
||||||
// if(indefinite_length) {
|
// if(indefinite_length) {
|
||||||
// HANDLE_CODE(pack_length(bref, n, 1, ceilf(log2f()), aligned));
|
// HANDLE_CODE(pack_length(bref, n, 1, ceilf(log2f()), aligned));
|
||||||
// }
|
// }
|
||||||
|
@ -809,13 +809,13 @@ SRSASN_CODE unpack_integer(IntType& n, bit_ref& bref, IntType lb, IntType ub, bo
|
||||||
if (lb == ub) {
|
if (lb == ub) {
|
||||||
return SRSASN_SUCCESS;
|
return SRSASN_SUCCESS;
|
||||||
}
|
}
|
||||||
// FIXME: Check if we are in the indefinite length case, and pack length prefix if needed
|
// TODO: Check if we are in the indefinite length case, and pack length prefix if needed
|
||||||
HANDLE_CODE(unpack_constrained_whole_number(n, bref, (IntType)lb, (IntType)ub, aligned));
|
HANDLE_CODE(unpack_constrained_whole_number(n, bref, (IntType)lb, (IntType)ub, aligned));
|
||||||
} else {
|
} else {
|
||||||
if (not within_bounds or (not lower_bounded and not upper_bounded)) {
|
if (not within_bounds or (not lower_bounded and not upper_bounded)) {
|
||||||
uint32_t len;
|
uint32_t len;
|
||||||
HANDLE_CODE(unpack_length(len, bref, aligned));
|
HANDLE_CODE(unpack_length(len, bref, aligned));
|
||||||
HANDLE_CODE(unpack_unconstrained_whole_number(n, bref, aligned)); // FIXME
|
HANDLE_CODE(unpack_unconstrained_whole_number(n, bref, aligned)); // TODO
|
||||||
} else {
|
} else {
|
||||||
// pack as semi-constrained
|
// pack as semi-constrained
|
||||||
// TODO
|
// TODO
|
||||||
|
@ -1210,7 +1210,7 @@ SRSASN_CODE unpack_fixed_bitstring(uint8_t* buf, bit_ref& bref, uint32_t nof_bit
|
||||||
HANDLE_CODE(bref.unpack(ext, 1));
|
HANDLE_CODE(bref.unpack(ext, 1));
|
||||||
if (ext) {
|
if (ext) {
|
||||||
srsasn_log_print(LOG_LEVEL_ERROR, "bitstrings longer than 64K not supported\n");
|
srsasn_log_print(LOG_LEVEL_ERROR, "bitstrings longer than 64K not supported\n");
|
||||||
// FIXME: fixed bitstrings have to become resizeable
|
// TODO: fixed bitstrings have to become resizeable
|
||||||
// return unpack_default_bitstring(buf, bref, nof_bits, nof_bits, is_aligned);
|
// return unpack_default_bitstring(buf, bref, nof_bits, nof_bits, is_aligned);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -104,7 +104,7 @@ liblte_m2ap_pack_protocolie_header(uint32_t len, uint32_t ie_id, LIBLTE_M2AP_CRI
|
||||||
liblte_value_2_bits(0, ptr, 1);
|
liblte_value_2_bits(0, ptr, 1);
|
||||||
liblte_value_2_bits(len, ptr, 14);
|
liblte_value_2_bits(len, ptr, 14);
|
||||||
} else {
|
} else {
|
||||||
// FIXME: Unlikely to have more than 16K of octets
|
// TODO: Unlikely to have more than 16K of octets
|
||||||
}
|
}
|
||||||
|
|
||||||
return LIBLTE_SUCCESS;
|
return LIBLTE_SUCCESS;
|
||||||
|
@ -122,7 +122,7 @@ liblte_m2ap_unpack_protocolie_header(uint8_t** ptr, uint32_t* ie_id, LIBLTE_M2AP
|
||||||
if (0 == liblte_bits_2_value(ptr, 1)) {
|
if (0 == liblte_bits_2_value(ptr, 1)) {
|
||||||
*len = liblte_bits_2_value(ptr, 14);
|
*len = liblte_bits_2_value(ptr, 14);
|
||||||
} else {
|
} else {
|
||||||
// FIXME: Unlikely to have more than 16K of octets
|
// TODO: Unlikely to have more than 16K of octets
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return LIBLTE_SUCCESS;
|
return LIBLTE_SUCCESS;
|
||||||
|
@ -1039,7 +1039,7 @@ LIBLTE_ERROR_ENUM liblte_m2ap_unpack_mbmsservicearea(uint8_t** ptr, LIBLTE_M2AP_
|
||||||
if (0 == liblte_bits_2_value(ptr, 1)) {
|
if (0 == liblte_bits_2_value(ptr, 1)) {
|
||||||
ie->n_octets = liblte_bits_2_value(ptr, 14);
|
ie->n_octets = liblte_bits_2_value(ptr, 14);
|
||||||
} else {
|
} else {
|
||||||
// FIXME: Unlikely to have more than 16K of octets
|
// TODO: Unlikely to have more than 16K of octets
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// ie->n_octets = liblte_bits_2_value(ptr,8);
|
// ie->n_octets = liblte_bits_2_value(ptr,8);
|
||||||
|
@ -2142,7 +2142,7 @@ liblte_m2ap_unpack_enbmbmsconfigurationdatalist(uint8_t** ptr, LIBLTE_M2AP_ENB_M
|
||||||
uint32_t len;
|
uint32_t len;
|
||||||
|
|
||||||
if (ie != NULL && ptr != NULL) {
|
if (ie != NULL && ptr != NULL) {
|
||||||
// Length FIXME!!!
|
// Length TODO!!!
|
||||||
ie->len = liblte_bits_2_value(ptr, 16) + 1;
|
ie->len = liblte_bits_2_value(ptr, 16) + 1;
|
||||||
liblte_align_up(ptr, 8);
|
liblte_align_up(ptr, 8);
|
||||||
if (ie->len > 32) {
|
if (ie->len > 32) {
|
||||||
|
@ -2223,7 +2223,7 @@ liblte_m2ap_unpack_mcchrelatedbcchconfigpermbsfnarea(uint8_t**
|
||||||
uint32_t len;
|
uint32_t len;
|
||||||
|
|
||||||
if (ie != NULL && ptr != NULL) {
|
if (ie != NULL && ptr != NULL) {
|
||||||
// Length FIXME!!!
|
// Length TODO!!!
|
||||||
ie->len = liblte_bits_2_value(ptr, 16) + 1;
|
ie->len = liblte_bits_2_value(ptr, 16) + 1;
|
||||||
liblte_align_up(ptr, 8);
|
liblte_align_up(ptr, 8);
|
||||||
if (ie->len > 32) {
|
if (ie->len > 32) {
|
||||||
|
@ -2448,7 +2448,7 @@ liblte_m2ap_unpack_mbsfnsubframeconfigurationlist(uint8_t**
|
||||||
uint32_t len;
|
uint32_t len;
|
||||||
|
|
||||||
if (ie != NULL && ptr != NULL) {
|
if (ie != NULL && ptr != NULL) {
|
||||||
// Length FIXME!!!
|
// Length TODO!!!
|
||||||
ie->len = liblte_bits_2_value(ptr, 3) + 1;
|
ie->len = liblte_bits_2_value(ptr, 3) + 1;
|
||||||
liblte_align_up(ptr, 8);
|
liblte_align_up(ptr, 8);
|
||||||
if (ie->len > 32) {
|
if (ie->len > 32) {
|
||||||
|
@ -2691,7 +2691,7 @@ LIBLTE_ERROR_ENUM liblte_m2ap_unpack_pmchconfigurationlist(uint8_t**
|
||||||
uint32_t len;
|
uint32_t len;
|
||||||
|
|
||||||
if (ie != NULL && ptr != NULL) {
|
if (ie != NULL && ptr != NULL) {
|
||||||
// Length FIXME!!!
|
// Length TODO!!!
|
||||||
ie->len = liblte_bits_2_value(ptr, 4);
|
ie->len = liblte_bits_2_value(ptr, 4);
|
||||||
liblte_align_up(ptr, 8);
|
liblte_align_up(ptr, 8);
|
||||||
if (ie->len > 32) {
|
if (ie->len > 32) {
|
||||||
|
@ -2887,7 +2887,7 @@ LIBLTE_ERROR_ENUM liblte_m2ap_unpack_mbsfnareaconfigurationlist(uint8_t**
|
||||||
uint32_t len;
|
uint32_t len;
|
||||||
|
|
||||||
if (ie != NULL && ptr != NULL) {
|
if (ie != NULL && ptr != NULL) {
|
||||||
// Length FIXME!!!
|
// Length TODO!!!
|
||||||
ie->len = liblte_bits_2_value(ptr, 8) + 1;
|
ie->len = liblte_bits_2_value(ptr, 8) + 1;
|
||||||
liblte_align_up(ptr, 8);
|
liblte_align_up(ptr, 8);
|
||||||
if (ie->len > 32) {
|
if (ie->len > 32) {
|
||||||
|
@ -3077,7 +3077,7 @@ LIBLTE_ERROR_ENUM liblte_m2ap_pack_m2setupresponse(LIBLTE_M2AP_MESSAGE_M2SETUPRE
|
||||||
memcpy(*ptr, tmp_msg.msg, tmp_msg.N_bits);
|
memcpy(*ptr, tmp_msg.msg, tmp_msg.N_bits);
|
||||||
*ptr += tmp_msg.N_bits;
|
*ptr += tmp_msg.N_bits;
|
||||||
|
|
||||||
// ProtocolIE - MCEname FIXME
|
// ProtocolIE - MCEname TODO
|
||||||
|
|
||||||
// ProtocolIE - MCCHrelatedBCCH-ConfigPerMBSFNArea
|
// ProtocolIE - MCCHrelatedBCCH-ConfigPerMBSFNArea
|
||||||
tmp_ptr = tmp_msg.msg;
|
tmp_ptr = tmp_msg.msg;
|
||||||
|
@ -3711,7 +3711,7 @@ LIBLTE_ERROR_ENUM liblte_m2ap_pack_initiatingmessage(LIBLTE_M2AP_INITIATINGMESSA
|
||||||
liblte_value_2_bits(0, ptr, 1);
|
liblte_value_2_bits(0, ptr, 1);
|
||||||
liblte_value_2_bits(len, ptr, 14);
|
liblte_value_2_bits(len, ptr, 14);
|
||||||
} else {
|
} else {
|
||||||
// FIXME: Unlikely to have more than 16K of octets
|
// TODO: Unlikely to have more than 16K of octets
|
||||||
}
|
}
|
||||||
|
|
||||||
memcpy(*ptr, tmp_msg.msg, tmp_msg.N_bits);
|
memcpy(*ptr, tmp_msg.msg, tmp_msg.N_bits);
|
||||||
|
@ -3742,7 +3742,7 @@ LIBLTE_ERROR_ENUM liblte_m2ap_unpack_initiatingmessage(uint8_t** ptr, LIBLTE_M2A
|
||||||
if (0 == liblte_bits_2_value(ptr, 1)) {
|
if (0 == liblte_bits_2_value(ptr, 1)) {
|
||||||
len = liblte_bits_2_value(ptr, 14);
|
len = liblte_bits_2_value(ptr, 14);
|
||||||
} else {
|
} else {
|
||||||
// FIXME: Unlikely to have more than 16K of octets
|
// TODO: Unlikely to have more than 16K of octets
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3812,7 +3812,7 @@ LIBLTE_ERROR_ENUM liblte_m2ap_pack_successfuloutcome(LIBLTE_M2AP_SUCCESSFULOUTCO
|
||||||
liblte_value_2_bits(0, ptr, 1);
|
liblte_value_2_bits(0, ptr, 1);
|
||||||
liblte_value_2_bits(len, ptr, 14);
|
liblte_value_2_bits(len, ptr, 14);
|
||||||
} else {
|
} else {
|
||||||
// FIXME: Unlikely to have more than 16K of octets
|
// TODO: Unlikely to have more than 16K of octets
|
||||||
}
|
}
|
||||||
|
|
||||||
memcpy(*ptr, tmp_msg.msg, tmp_msg.N_bits);
|
memcpy(*ptr, tmp_msg.msg, tmp_msg.N_bits);
|
||||||
|
@ -3843,7 +3843,7 @@ LIBLTE_ERROR_ENUM liblte_m2ap_unpack_successfuloutcome(uint8_t** ptr, LIBLTE_M2A
|
||||||
if (0 == liblte_bits_2_value(ptr, 1)) {
|
if (0 == liblte_bits_2_value(ptr, 1)) {
|
||||||
len = liblte_bits_2_value(ptr, 14);
|
len = liblte_bits_2_value(ptr, 14);
|
||||||
} else {
|
} else {
|
||||||
// FIXME: Unlikely to have more than 16K of octets
|
// TODO: Unlikely to have more than 16K of octets
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -295,7 +295,7 @@ LIBLTE_ERROR_ENUM liblte_mme_pack_mobile_id_ie(LIBLTE_MME_MOBILE_ID_STRUCT* mobi
|
||||||
odd = false;
|
odd = false;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// FIXME: Not handling these IDs
|
// TODO: Not handling these IDs
|
||||||
return (err);
|
return (err);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -365,7 +365,7 @@ LIBLTE_ERROR_ENUM liblte_mme_unpack_mobile_id_ie(uint8** ie_ptr, LIBLTE_MME_MOBI
|
||||||
id = mobile_id->imeisv;
|
id = mobile_id->imeisv;
|
||||||
odd = false;
|
odd = false;
|
||||||
} else {
|
} else {
|
||||||
// FIXME: Not handling these IDs
|
// TODO: Not handling these IDs
|
||||||
return (err);
|
return (err);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -474,7 +474,7 @@ LIBLTE_ERROR_ENUM liblte_mme_pack_mobile_station_classmark_3_ie(LIBLTE_MME_MOBIL
|
||||||
LIBLTE_ERROR_ENUM err = LIBLTE_ERROR_INVALID_INPUTS;
|
LIBLTE_ERROR_ENUM err = LIBLTE_ERROR_INVALID_INPUTS;
|
||||||
|
|
||||||
if (ms_cm3 != NULL && ie_ptr != NULL) {
|
if (ms_cm3 != NULL && ie_ptr != NULL) {
|
||||||
// FIXME
|
// TODO
|
||||||
|
|
||||||
err = LIBLTE_SUCCESS;
|
err = LIBLTE_SUCCESS;
|
||||||
}
|
}
|
||||||
|
@ -487,7 +487,7 @@ LIBLTE_ERROR_ENUM liblte_mme_unpack_mobile_station_classmark_3_ie(uint8**
|
||||||
LIBLTE_ERROR_ENUM err = LIBLTE_ERROR_INVALID_INPUTS;
|
LIBLTE_ERROR_ENUM err = LIBLTE_ERROR_INVALID_INPUTS;
|
||||||
|
|
||||||
if (ie_ptr != NULL && ms_cm3 != NULL) {
|
if (ie_ptr != NULL && ms_cm3 != NULL) {
|
||||||
// FIXME
|
// TODO
|
||||||
|
|
||||||
err = LIBLTE_SUCCESS;
|
err = LIBLTE_SUCCESS;
|
||||||
}
|
}
|
||||||
|
@ -2533,7 +2533,7 @@ liblte_mme_pack_tracking_area_identity_list_ie(LIBLTE_MME_TRACKING_AREA_IDENTITY
|
||||||
|
|
||||||
if (tai_list != NULL && ie_ptr != NULL) {
|
if (tai_list != NULL && ie_ptr != NULL) {
|
||||||
(*ie_ptr)[0] = (tai_list->N_tais * 5) + 1;
|
(*ie_ptr)[0] = (tai_list->N_tais * 5) + 1;
|
||||||
// FIXME: Support all types
|
// TODO: Support all types
|
||||||
if (1 == tai_list->N_tais) {
|
if (1 == tai_list->N_tais) {
|
||||||
(*ie_ptr)[1] = (LIBLTE_MME_TRACKING_AREA_IDENTITY_LIST_TYPE_ONE_PLMN_NON_CONSECUTIVE_TACS << 5) |
|
(*ie_ptr)[1] = (LIBLTE_MME_TRACKING_AREA_IDENTITY_LIST_TYPE_ONE_PLMN_NON_CONSECUTIVE_TACS << 5) |
|
||||||
((tai_list->N_tais - 1) & 0x1F);
|
((tai_list->N_tais - 1) & 0x1F);
|
||||||
|
@ -3091,7 +3091,7 @@ LIBLTE_ERROR_ENUM liblte_mme_unpack_emergency_number_list_ie(uint8**
|
||||||
|
|
||||||
Document Reference: 24.301 v10.2.0 Section 9.9.3.38
|
Document Reference: 24.301 v10.2.0 Section 9.9.3.38
|
||||||
*********************************************************************/
|
*********************************************************************/
|
||||||
// FIXME
|
// TODO
|
||||||
|
|
||||||
/*********************************************************************
|
/*********************************************************************
|
||||||
IE Name: SS Code
|
IE Name: SS Code
|
||||||
|
@ -3173,7 +3173,7 @@ LIBLTE_ERROR_ENUM liblte_mme_unpack_lcs_indicator_ie(uint8** ie_ptr, uint8* lcs_
|
||||||
|
|
||||||
Document Reference: 24.301 v10.2.0 Section 9.9.3.41
|
Document Reference: 24.301 v10.2.0 Section 9.9.3.41
|
||||||
*********************************************************************/
|
*********************************************************************/
|
||||||
// FIXME
|
// TODO
|
||||||
|
|
||||||
/*********************************************************************
|
/*********************************************************************
|
||||||
IE Name: Generic Message Container Type
|
IE Name: Generic Message Container Type
|
||||||
|
@ -5586,7 +5586,7 @@ liblte_mme_unpack_authentication_response_msg(LIBLTE_BYTE_MSG_STRUCT*
|
||||||
|
|
||||||
Document Reference: 24.301 v10.2.0 Section 8.2.9
|
Document Reference: 24.301 v10.2.0 Section 8.2.9
|
||||||
*********************************************************************/
|
*********************************************************************/
|
||||||
// FIXME
|
// TODO
|
||||||
|
|
||||||
/*********************************************************************
|
/*********************************************************************
|
||||||
Message Name: Detach Accept
|
Message Name: Detach Accept
|
||||||
|
@ -7450,7 +7450,7 @@ liblte_mme_unpack_tracking_area_update_reject_msg(LIBLTE_BYTE_MSG_STRUCT*
|
||||||
|
|
||||||
Document Reference: 24.301 v10.2.0 Section 8.2.29
|
Document Reference: 24.301 v10.2.0 Section 8.2.29
|
||||||
*********************************************************************/
|
*********************************************************************/
|
||||||
// FIXME
|
// TODO
|
||||||
|
|
||||||
/*********************************************************************
|
/*********************************************************************
|
||||||
Message Name: Uplink NAS Transport
|
Message Name: Uplink NAS Transport
|
||||||
|
|
|
@ -575,7 +575,7 @@ LIBLTE_ERROR_ENUM liblte_s1ap_pack_protocolie_containerpairlist(LIBLTE_S1AP_PROT
|
||||||
liblte_value_2_bits(0, ptr, 1);
|
liblte_value_2_bits(0, ptr, 1);
|
||||||
liblte_value_2_bits(ie->len, ptr, 14);
|
liblte_value_2_bits(ie->len, ptr, 14);
|
||||||
} else {
|
} else {
|
||||||
// FIXME: Unlikely to have more than 16K of bits
|
// TODO: Unlikely to have more than 16K of bits
|
||||||
}
|
}
|
||||||
uint32_t i;
|
uint32_t i;
|
||||||
for (i = 0; i < ie->len; i++) {
|
for (i = 0; i < ie->len; i++) {
|
||||||
|
@ -601,7 +601,7 @@ LIBLTE_ERROR_ENUM liblte_s1ap_unpack_protocolie_containerpairlist(uint8_t**
|
||||||
if (0 == liblte_bits_2_value(ptr, 1)) {
|
if (0 == liblte_bits_2_value(ptr, 1)) {
|
||||||
ie->len = liblte_bits_2_value(ptr, 14);
|
ie->len = liblte_bits_2_value(ptr, 14);
|
||||||
} else {
|
} else {
|
||||||
// FIXME: Unlikely to have more than 16K of bits
|
// TODO: Unlikely to have more than 16K of bits
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (ie->len > 32) {
|
if (ie->len > 32) {
|
||||||
|
@ -977,7 +977,7 @@ LIBLTE_ERROR_ENUM liblte_s1ap_pack_cdma2000pdu(LIBLTE_S1AP_CDMA2000PDU_STRUCT* i
|
||||||
liblte_value_2_bits(0, ptr, 1);
|
liblte_value_2_bits(0, ptr, 1);
|
||||||
liblte_value_2_bits(ie->n_octets, ptr, 14);
|
liblte_value_2_bits(ie->n_octets, ptr, 14);
|
||||||
} else {
|
} else {
|
||||||
// FIXME: Unlikely to have more than 16K of octets
|
// TODO: Unlikely to have more than 16K of octets
|
||||||
}
|
}
|
||||||
|
|
||||||
// Octets
|
// Octets
|
||||||
|
@ -1003,7 +1003,7 @@ LIBLTE_ERROR_ENUM liblte_s1ap_unpack_cdma2000pdu(uint8_t** ptr, LIBLTE_S1AP_CDMA
|
||||||
if (0 == liblte_bits_2_value(ptr, 1)) {
|
if (0 == liblte_bits_2_value(ptr, 1)) {
|
||||||
ie->n_octets = liblte_bits_2_value(ptr, 14);
|
ie->n_octets = liblte_bits_2_value(ptr, 14);
|
||||||
} else {
|
} else {
|
||||||
// FIXME: Unlikely to have more than 16K of octets
|
// TODO: Unlikely to have more than 16K of octets
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1035,7 +1035,7 @@ LIBLTE_ERROR_ENUM liblte_s1ap_pack_cdma2000sectorid(LIBLTE_S1AP_CDMA2000SECTORID
|
||||||
liblte_value_2_bits(0, ptr, 1);
|
liblte_value_2_bits(0, ptr, 1);
|
||||||
liblte_value_2_bits(ie->n_octets, ptr, 14);
|
liblte_value_2_bits(ie->n_octets, ptr, 14);
|
||||||
} else {
|
} else {
|
||||||
// FIXME: Unlikely to have more than 16K of octets
|
// TODO: Unlikely to have more than 16K of octets
|
||||||
}
|
}
|
||||||
|
|
||||||
// Octets
|
// Octets
|
||||||
|
@ -1061,7 +1061,7 @@ LIBLTE_ERROR_ENUM liblte_s1ap_unpack_cdma2000sectorid(uint8_t** ptr, LIBLTE_S1AP
|
||||||
if (0 == liblte_bits_2_value(ptr, 1)) {
|
if (0 == liblte_bits_2_value(ptr, 1)) {
|
||||||
ie->n_octets = liblte_bits_2_value(ptr, 14);
|
ie->n_octets = liblte_bits_2_value(ptr, 14);
|
||||||
} else {
|
} else {
|
||||||
// FIXME: Unlikely to have more than 16K of octets
|
// TODO: Unlikely to have more than 16K of octets
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1138,7 +1138,7 @@ LIBLTE_ERROR_ENUM liblte_s1ap_pack_cdma2000onexmsi(LIBLTE_S1AP_CDMA2000ONEXMSI_S
|
||||||
liblte_value_2_bits(0, ptr, 1);
|
liblte_value_2_bits(0, ptr, 1);
|
||||||
liblte_value_2_bits(ie->n_octets, ptr, 14);
|
liblte_value_2_bits(ie->n_octets, ptr, 14);
|
||||||
} else {
|
} else {
|
||||||
// FIXME: Unlikely to have more than 16K of octets
|
// TODO: Unlikely to have more than 16K of octets
|
||||||
}
|
}
|
||||||
|
|
||||||
// Octets
|
// Octets
|
||||||
|
@ -1164,7 +1164,7 @@ LIBLTE_ERROR_ENUM liblte_s1ap_unpack_cdma2000onexmsi(uint8_t** ptr, LIBLTE_S1AP_
|
||||||
if (0 == liblte_bits_2_value(ptr, 1)) {
|
if (0 == liblte_bits_2_value(ptr, 1)) {
|
||||||
ie->n_octets = liblte_bits_2_value(ptr, 14);
|
ie->n_octets = liblte_bits_2_value(ptr, 14);
|
||||||
} else {
|
} else {
|
||||||
// FIXME: Unlikely to have more than 16K of octets
|
// TODO: Unlikely to have more than 16K of octets
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1196,7 +1196,7 @@ LIBLTE_ERROR_ENUM liblte_s1ap_pack_cdma2000onexrand(LIBLTE_S1AP_CDMA2000ONEXRAND
|
||||||
liblte_value_2_bits(0, ptr, 1);
|
liblte_value_2_bits(0, ptr, 1);
|
||||||
liblte_value_2_bits(ie->n_octets, ptr, 14);
|
liblte_value_2_bits(ie->n_octets, ptr, 14);
|
||||||
} else {
|
} else {
|
||||||
// FIXME: Unlikely to have more than 16K of octets
|
// TODO: Unlikely to have more than 16K of octets
|
||||||
}
|
}
|
||||||
|
|
||||||
// Octets
|
// Octets
|
||||||
|
@ -1222,7 +1222,7 @@ LIBLTE_ERROR_ENUM liblte_s1ap_unpack_cdma2000onexrand(uint8_t** ptr, LIBLTE_S1AP
|
||||||
if (0 == liblte_bits_2_value(ptr, 1)) {
|
if (0 == liblte_bits_2_value(ptr, 1)) {
|
||||||
ie->n_octets = liblte_bits_2_value(ptr, 14);
|
ie->n_octets = liblte_bits_2_value(ptr, 14);
|
||||||
} else {
|
} else {
|
||||||
// FIXME: Unlikely to have more than 16K of octets
|
// TODO: Unlikely to have more than 16K of octets
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1946,7 +1946,7 @@ LIBLTE_ERROR_ENUM liblte_s1ap_pack_imsi(LIBLTE_S1AP_IMSI_STRUCT* ie, uint8_t** p
|
||||||
liblte_value_2_bits(0, ptr, 1);
|
liblte_value_2_bits(0, ptr, 1);
|
||||||
liblte_value_2_bits(ie->n_octets, ptr, 14);
|
liblte_value_2_bits(ie->n_octets, ptr, 14);
|
||||||
} else {
|
} else {
|
||||||
// FIXME: Unlikely to have more than 16K of octets
|
// TODO: Unlikely to have more than 16K of octets
|
||||||
}
|
}
|
||||||
|
|
||||||
// Octets
|
// Octets
|
||||||
|
@ -1972,7 +1972,7 @@ LIBLTE_ERROR_ENUM liblte_s1ap_unpack_imsi(uint8_t** ptr, LIBLTE_S1AP_IMSI_STRUCT
|
||||||
if (0 == liblte_bits_2_value(ptr, 1)) {
|
if (0 == liblte_bits_2_value(ptr, 1)) {
|
||||||
ie->n_octets = liblte_bits_2_value(ptr, 14);
|
ie->n_octets = liblte_bits_2_value(ptr, 14);
|
||||||
} else {
|
} else {
|
||||||
// FIXME: Unlikely to have more than 16K of octets
|
// TODO: Unlikely to have more than 16K of octets
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2079,7 +2079,7 @@ liblte_s1ap_pack_lastvisitedutrancellinformation(LIBLTE_S1AP_LASTVISITEDUTRANCEL
|
||||||
liblte_value_2_bits(0, ptr, 1);
|
liblte_value_2_bits(0, ptr, 1);
|
||||||
liblte_value_2_bits(ie->n_octets, ptr, 14);
|
liblte_value_2_bits(ie->n_octets, ptr, 14);
|
||||||
} else {
|
} else {
|
||||||
// FIXME: Unlikely to have more than 16K of octets
|
// TODO: Unlikely to have more than 16K of octets
|
||||||
}
|
}
|
||||||
|
|
||||||
// Octets
|
// Octets
|
||||||
|
@ -2107,7 +2107,7 @@ liblte_s1ap_unpack_lastvisitedutrancellinformation(uint8_t**
|
||||||
if (0 == liblte_bits_2_value(ptr, 1)) {
|
if (0 == liblte_bits_2_value(ptr, 1)) {
|
||||||
ie->n_octets = liblte_bits_2_value(ptr, 14);
|
ie->n_octets = liblte_bits_2_value(ptr, 14);
|
||||||
} else {
|
} else {
|
||||||
// FIXME: Unlikely to have more than 16K of octets
|
// TODO: Unlikely to have more than 16K of octets
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2139,7 +2139,7 @@ LIBLTE_ERROR_ENUM liblte_s1ap_pack_l3_information(LIBLTE_S1AP_L3_INFORMATION_STR
|
||||||
liblte_value_2_bits(0, ptr, 1);
|
liblte_value_2_bits(0, ptr, 1);
|
||||||
liblte_value_2_bits(ie->n_octets, ptr, 14);
|
liblte_value_2_bits(ie->n_octets, ptr, 14);
|
||||||
} else {
|
} else {
|
||||||
// FIXME: Unlikely to have more than 16K of octets
|
// TODO: Unlikely to have more than 16K of octets
|
||||||
}
|
}
|
||||||
|
|
||||||
// Octets
|
// Octets
|
||||||
|
@ -2165,7 +2165,7 @@ LIBLTE_ERROR_ENUM liblte_s1ap_unpack_l3_information(uint8_t** ptr, LIBLTE_S1AP_L
|
||||||
if (0 == liblte_bits_2_value(ptr, 1)) {
|
if (0 == liblte_bits_2_value(ptr, 1)) {
|
||||||
ie->n_octets = liblte_bits_2_value(ptr, 14);
|
ie->n_octets = liblte_bits_2_value(ptr, 14);
|
||||||
} else {
|
} else {
|
||||||
// FIXME: Unlikely to have more than 16K of octets
|
// TODO: Unlikely to have more than 16K of octets
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2197,7 +2197,7 @@ LIBLTE_ERROR_ENUM liblte_s1ap_pack_lhn_id(LIBLTE_S1AP_LHN_ID_STRUCT* ie, uint8_t
|
||||||
liblte_value_2_bits(0, ptr, 1);
|
liblte_value_2_bits(0, ptr, 1);
|
||||||
liblte_value_2_bits(ie->n_octets, ptr, 14);
|
liblte_value_2_bits(ie->n_octets, ptr, 14);
|
||||||
} else {
|
} else {
|
||||||
// FIXME: Unlikely to have more than 16K of octets
|
// TODO: Unlikely to have more than 16K of octets
|
||||||
}
|
}
|
||||||
|
|
||||||
// Octets
|
// Octets
|
||||||
|
@ -2223,7 +2223,7 @@ LIBLTE_ERROR_ENUM liblte_s1ap_unpack_lhn_id(uint8_t** ptr, LIBLTE_S1AP_LHN_ID_ST
|
||||||
if (0 == liblte_bits_2_value(ptr, 1)) {
|
if (0 == liblte_bits_2_value(ptr, 1)) {
|
||||||
ie->n_octets = liblte_bits_2_value(ptr, 14);
|
ie->n_octets = liblte_bits_2_value(ptr, 14);
|
||||||
} else {
|
} else {
|
||||||
// FIXME: Unlikely to have more than 16K of octets
|
// TODO: Unlikely to have more than 16K of octets
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2618,7 +2618,7 @@ LIBLTE_ERROR_ENUM liblte_s1ap_pack_msclassmark2(LIBLTE_S1AP_MSCLASSMARK2_STRUCT*
|
||||||
liblte_value_2_bits(0, ptr, 1);
|
liblte_value_2_bits(0, ptr, 1);
|
||||||
liblte_value_2_bits(ie->n_octets, ptr, 14);
|
liblte_value_2_bits(ie->n_octets, ptr, 14);
|
||||||
} else {
|
} else {
|
||||||
// FIXME: Unlikely to have more than 16K of octets
|
// TODO: Unlikely to have more than 16K of octets
|
||||||
}
|
}
|
||||||
|
|
||||||
// Octets
|
// Octets
|
||||||
|
@ -2644,7 +2644,7 @@ LIBLTE_ERROR_ENUM liblte_s1ap_unpack_msclassmark2(uint8_t** ptr, LIBLTE_S1AP_MSC
|
||||||
if (0 == liblte_bits_2_value(ptr, 1)) {
|
if (0 == liblte_bits_2_value(ptr, 1)) {
|
||||||
ie->n_octets = liblte_bits_2_value(ptr, 14);
|
ie->n_octets = liblte_bits_2_value(ptr, 14);
|
||||||
} else {
|
} else {
|
||||||
// FIXME: Unlikely to have more than 16K of octets
|
// TODO: Unlikely to have more than 16K of octets
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2676,7 +2676,7 @@ LIBLTE_ERROR_ENUM liblte_s1ap_pack_nas_pdu(LIBLTE_S1AP_NAS_PDU_STRUCT* ie, uint8
|
||||||
liblte_value_2_bits(0, ptr, 1);
|
liblte_value_2_bits(0, ptr, 1);
|
||||||
liblte_value_2_bits(ie->n_octets, ptr, 14);
|
liblte_value_2_bits(ie->n_octets, ptr, 14);
|
||||||
} else {
|
} else {
|
||||||
// FIXME: Unlikely to have more than 16K of octets
|
// TODO: Unlikely to have more than 16K of octets
|
||||||
}
|
}
|
||||||
|
|
||||||
// Octets
|
// Octets
|
||||||
|
@ -2702,7 +2702,7 @@ LIBLTE_ERROR_ENUM liblte_s1ap_unpack_nas_pdu(uint8_t** ptr, LIBLTE_S1AP_NAS_PDU_
|
||||||
if (0 == liblte_bits_2_value(ptr, 1)) {
|
if (0 == liblte_bits_2_value(ptr, 1)) {
|
||||||
ie->n_octets = liblte_bits_2_value(ptr, 14);
|
ie->n_octets = liblte_bits_2_value(ptr, 14);
|
||||||
} else {
|
} else {
|
||||||
// FIXME: Unlikely to have more than 16K of octets
|
// TODO: Unlikely to have more than 16K of octets
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2735,7 +2735,7 @@ LIBLTE_ERROR_ENUM liblte_s1ap_pack_nassecurityparameterstoe_utran(LIBLTE_S1AP_NA
|
||||||
liblte_value_2_bits(0, ptr, 1);
|
liblte_value_2_bits(0, ptr, 1);
|
||||||
liblte_value_2_bits(ie->n_octets, ptr, 14);
|
liblte_value_2_bits(ie->n_octets, ptr, 14);
|
||||||
} else {
|
} else {
|
||||||
// FIXME: Unlikely to have more than 16K of octets
|
// TODO: Unlikely to have more than 16K of octets
|
||||||
}
|
}
|
||||||
|
|
||||||
// Octets
|
// Octets
|
||||||
|
@ -2762,7 +2762,7 @@ liblte_s1ap_unpack_nassecurityparameterstoe_utran(uint8_t** ptr, LIBLTE_S1AP_NAS
|
||||||
if (0 == liblte_bits_2_value(ptr, 1)) {
|
if (0 == liblte_bits_2_value(ptr, 1)) {
|
||||||
ie->n_octets = liblte_bits_2_value(ptr, 14);
|
ie->n_octets = liblte_bits_2_value(ptr, 14);
|
||||||
} else {
|
} else {
|
||||||
// FIXME: Unlikely to have more than 16K of octets
|
// TODO: Unlikely to have more than 16K of octets
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3406,7 +3406,7 @@ liblte_s1ap_pack_source_totarget_transparentcontainer(LIBLTE_S1AP_SOURCE_TOTARGE
|
||||||
liblte_value_2_bits(0, ptr, 1);
|
liblte_value_2_bits(0, ptr, 1);
|
||||||
liblte_value_2_bits(ie->n_octets, ptr, 14);
|
liblte_value_2_bits(ie->n_octets, ptr, 14);
|
||||||
} else {
|
} else {
|
||||||
// FIXME: Unlikely to have more than 16K of octets
|
// TODO: Unlikely to have more than 16K of octets
|
||||||
}
|
}
|
||||||
|
|
||||||
// Octets
|
// Octets
|
||||||
|
@ -3434,7 +3434,7 @@ liblte_s1ap_unpack_source_totarget_transparentcontainer(uint8_t**
|
||||||
if (0 == liblte_bits_2_value(ptr, 1)) {
|
if (0 == liblte_bits_2_value(ptr, 1)) {
|
||||||
ie->n_octets = liblte_bits_2_value(ptr, 14);
|
ie->n_octets = liblte_bits_2_value(ptr, 14);
|
||||||
} else {
|
} else {
|
||||||
// FIXME: Unlikely to have more than 16k of octets
|
// TODO: Unlikely to have more than 16k of octets
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3511,7 +3511,7 @@ LIBLTE_ERROR_ENUM liblte_s1ap_pack_sourcernc_totargetrnc_transparentcontainer(
|
||||||
liblte_value_2_bits(0, ptr, 1);
|
liblte_value_2_bits(0, ptr, 1);
|
||||||
liblte_value_2_bits(ie->n_octets, ptr, 14);
|
liblte_value_2_bits(ie->n_octets, ptr, 14);
|
||||||
} else {
|
} else {
|
||||||
// FIXME: Unlikely to have more than 16K of octets
|
// TODO: Unlikely to have more than 16K of octets
|
||||||
}
|
}
|
||||||
|
|
||||||
// Octets
|
// Octets
|
||||||
|
@ -3539,7 +3539,7 @@ LIBLTE_ERROR_ENUM liblte_s1ap_unpack_sourcernc_totargetrnc_transparentcontainer(
|
||||||
if (0 == liblte_bits_2_value(ptr, 1)) {
|
if (0 == liblte_bits_2_value(ptr, 1)) {
|
||||||
ie->n_octets = liblte_bits_2_value(ptr, 14);
|
ie->n_octets = liblte_bits_2_value(ptr, 14);
|
||||||
} else {
|
} else {
|
||||||
// FIXME: Unlikely to have more than 16K of octets
|
// TODO: Unlikely to have more than 16K of octets
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3653,7 +3653,7 @@ LIBLTE_ERROR_ENUM liblte_s1ap_pack_targetrnc_tosourcernc_transparentcontainer(
|
||||||
liblte_value_2_bits(0, ptr, 1);
|
liblte_value_2_bits(0, ptr, 1);
|
||||||
liblte_value_2_bits(ie->n_octets, ptr, 14);
|
liblte_value_2_bits(ie->n_octets, ptr, 14);
|
||||||
} else {
|
} else {
|
||||||
// FIXME: Unlikely to have more than 16K of octets
|
// TODO: Unlikely to have more than 16K of octets
|
||||||
}
|
}
|
||||||
|
|
||||||
// Octets
|
// Octets
|
||||||
|
@ -3681,7 +3681,7 @@ LIBLTE_ERROR_ENUM liblte_s1ap_unpack_targetrnc_tosourcernc_transparentcontainer(
|
||||||
if (0 == liblte_bits_2_value(ptr, 1)) {
|
if (0 == liblte_bits_2_value(ptr, 1)) {
|
||||||
ie->n_octets = liblte_bits_2_value(ptr, 14);
|
ie->n_octets = liblte_bits_2_value(ptr, 14);
|
||||||
} else {
|
} else {
|
||||||
// FIXME: Unlikely to have more than 16K of octets
|
// TODO: Unlikely to have more than 16K of octets
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3911,7 +3911,7 @@ LIBLTE_ERROR_ENUM liblte_s1ap_pack_ueradiocapability(LIBLTE_S1AP_UERADIOCAPABILI
|
||||||
liblte_value_2_bits(0, ptr, 1);
|
liblte_value_2_bits(0, ptr, 1);
|
||||||
liblte_value_2_bits(ie->n_octets, ptr, 14);
|
liblte_value_2_bits(ie->n_octets, ptr, 14);
|
||||||
} else {
|
} else {
|
||||||
// FIXME: Unlikely to have more than 16K of octets
|
// TODO: Unlikely to have more than 16K of octets
|
||||||
}
|
}
|
||||||
|
|
||||||
// Octets
|
// Octets
|
||||||
|
@ -3937,7 +3937,7 @@ LIBLTE_ERROR_ENUM liblte_s1ap_unpack_ueradiocapability(uint8_t** ptr, LIBLTE_S1A
|
||||||
if (0 == liblte_bits_2_value(ptr, 1)) {
|
if (0 == liblte_bits_2_value(ptr, 1)) {
|
||||||
ie->n_octets = liblte_bits_2_value(ptr, 14);
|
ie->n_octets = liblte_bits_2_value(ptr, 14);
|
||||||
} else {
|
} else {
|
||||||
// FIXME: Unlikely to have more than 16K of octets
|
// TODO: Unlikely to have more than 16K of octets
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4010,7 +4010,7 @@ LIBLTE_ERROR_ENUM liblte_s1ap_pack_warningmessagecontents(LIBLTE_S1AP_WARNINGMES
|
||||||
liblte_value_2_bits(0, ptr, 1);
|
liblte_value_2_bits(0, ptr, 1);
|
||||||
liblte_value_2_bits(ie->n_octets, ptr, 14);
|
liblte_value_2_bits(ie->n_octets, ptr, 14);
|
||||||
} else {
|
} else {
|
||||||
// FIXME: Unlikely to have more than 16K of octets
|
// TODO: Unlikely to have more than 16K of octets
|
||||||
}
|
}
|
||||||
|
|
||||||
// Octets
|
// Octets
|
||||||
|
@ -4037,7 +4037,7 @@ LIBLTE_ERROR_ENUM liblte_s1ap_unpack_warningmessagecontents(uint8_t**
|
||||||
if (0 == liblte_bits_2_value(ptr, 1)) {
|
if (0 == liblte_bits_2_value(ptr, 1)) {
|
||||||
ie->n_octets = liblte_bits_2_value(ptr, 14);
|
ie->n_octets = liblte_bits_2_value(ptr, 14);
|
||||||
} else {
|
} else {
|
||||||
// FIXME: Unlikely to have more than 16K of octets
|
// TODO: Unlikely to have more than 16K of octets
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4198,7 +4198,7 @@ LIBLTE_ERROR_ENUM liblte_s1ap_pack_cdma2000onexmeid(LIBLTE_S1AP_CDMA2000ONEXMEID
|
||||||
liblte_value_2_bits(0, ptr, 1);
|
liblte_value_2_bits(0, ptr, 1);
|
||||||
liblte_value_2_bits(ie->n_octets, ptr, 14);
|
liblte_value_2_bits(ie->n_octets, ptr, 14);
|
||||||
} else {
|
} else {
|
||||||
// FIXME: Unlikely to have more than 16K of octets
|
// TODO: Unlikely to have more than 16K of octets
|
||||||
}
|
}
|
||||||
|
|
||||||
// Octets
|
// Octets
|
||||||
|
@ -4224,7 +4224,7 @@ LIBLTE_ERROR_ENUM liblte_s1ap_unpack_cdma2000onexmeid(uint8_t** ptr, LIBLTE_S1AP
|
||||||
if (0 == liblte_bits_2_value(ptr, 1)) {
|
if (0 == liblte_bits_2_value(ptr, 1)) {
|
||||||
ie->n_octets = liblte_bits_2_value(ptr, 14);
|
ie->n_octets = liblte_bits_2_value(ptr, 14);
|
||||||
} else {
|
} else {
|
||||||
// FIXME: Unlikely to have more than 16K of octets
|
// TODO: Unlikely to have more than 16K of octets
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5304,7 +5304,7 @@ LIBLTE_ERROR_ENUM liblte_s1ap_pack_msclassmark3(LIBLTE_S1AP_MSCLASSMARK3_STRUCT*
|
||||||
liblte_value_2_bits(0, ptr, 1);
|
liblte_value_2_bits(0, ptr, 1);
|
||||||
liblte_value_2_bits(ie->n_octets, ptr, 14);
|
liblte_value_2_bits(ie->n_octets, ptr, 14);
|
||||||
} else {
|
} else {
|
||||||
// FIXME: Unlikely to have more than 16K of octets
|
// TODO: Unlikely to have more than 16K of octets
|
||||||
}
|
}
|
||||||
|
|
||||||
// Octets
|
// Octets
|
||||||
|
@ -5330,7 +5330,7 @@ LIBLTE_ERROR_ENUM liblte_s1ap_unpack_msclassmark3(uint8_t** ptr, LIBLTE_S1AP_MSC
|
||||||
if (0 == liblte_bits_2_value(ptr, 1)) {
|
if (0 == liblte_bits_2_value(ptr, 1)) {
|
||||||
ie->n_octets = liblte_bits_2_value(ptr, 14);
|
ie->n_octets = liblte_bits_2_value(ptr, 14);
|
||||||
} else {
|
} else {
|
||||||
// FIXME: Unlikely to have more than 16K of octets
|
// TODO: Unlikely to have more than 16K of octets
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5634,7 +5634,7 @@ LIBLTE_ERROR_ENUM liblte_s1ap_pack_riminformation(LIBLTE_S1AP_RIMINFORMATION_STR
|
||||||
liblte_value_2_bits(0, ptr, 1);
|
liblte_value_2_bits(0, ptr, 1);
|
||||||
liblte_value_2_bits(ie->n_octets, ptr, 14);
|
liblte_value_2_bits(ie->n_octets, ptr, 14);
|
||||||
} else {
|
} else {
|
||||||
// FIXME: Unlikely to have more than 16K of octets
|
// TODO: Unlikely to have more than 16K of octets
|
||||||
}
|
}
|
||||||
|
|
||||||
// Octets
|
// Octets
|
||||||
|
@ -5660,7 +5660,7 @@ LIBLTE_ERROR_ENUM liblte_s1ap_unpack_riminformation(uint8_t** ptr, LIBLTE_S1AP_R
|
||||||
if (0 == liblte_bits_2_value(ptr, 1)) {
|
if (0 == liblte_bits_2_value(ptr, 1)) {
|
||||||
ie->n_octets = liblte_bits_2_value(ptr, 14);
|
ie->n_octets = liblte_bits_2_value(ptr, 14);
|
||||||
} else {
|
} else {
|
||||||
// FIXME: Unlikely to have more than 16K of octets
|
// TODO: Unlikely to have more than 16K of octets
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5798,7 +5798,7 @@ LIBLTE_ERROR_ENUM liblte_s1ap_pack_sourcebss_totargetbss_transparentcontainer(
|
||||||
liblte_value_2_bits(0, ptr, 1);
|
liblte_value_2_bits(0, ptr, 1);
|
||||||
liblte_value_2_bits(ie->n_octets, ptr, 14);
|
liblte_value_2_bits(ie->n_octets, ptr, 14);
|
||||||
} else {
|
} else {
|
||||||
// FIXME: Unlikely to have more than 16K of octets
|
// TODO: Unlikely to have more than 16K of octets
|
||||||
}
|
}
|
||||||
|
|
||||||
// Octets
|
// Octets
|
||||||
|
@ -5826,7 +5826,7 @@ LIBLTE_ERROR_ENUM liblte_s1ap_unpack_sourcebss_totargetbss_transparentcontainer(
|
||||||
if (0 == liblte_bits_2_value(ptr, 1)) {
|
if (0 == liblte_bits_2_value(ptr, 1)) {
|
||||||
ie->n_octets = liblte_bits_2_value(ptr, 14);
|
ie->n_octets = liblte_bits_2_value(ptr, 14);
|
||||||
} else {
|
} else {
|
||||||
// FIXME: Unlikely to have more than 16K of octets
|
// TODO: Unlikely to have more than 16K of octets
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -6131,7 +6131,7 @@ liblte_s1ap_pack_target_tosource_transparentcontainer(LIBLTE_S1AP_TARGET_TOSOURC
|
||||||
liblte_value_2_bits(0, ptr, 1);
|
liblte_value_2_bits(0, ptr, 1);
|
||||||
liblte_value_2_bits(ie->n_octets, ptr, 14);
|
liblte_value_2_bits(ie->n_octets, ptr, 14);
|
||||||
} else {
|
} else {
|
||||||
// FIXME: Unlikely to have more than 16K of octets
|
// TODO: Unlikely to have more than 16K of octets
|
||||||
}
|
}
|
||||||
|
|
||||||
// Octets
|
// Octets
|
||||||
|
@ -6159,7 +6159,7 @@ liblte_s1ap_unpack_target_tosource_transparentcontainer(uint8_t**
|
||||||
if (0 == liblte_bits_2_value(ptr, 1)) {
|
if (0 == liblte_bits_2_value(ptr, 1)) {
|
||||||
ie->n_octets = liblte_bits_2_value(ptr, 14);
|
ie->n_octets = liblte_bits_2_value(ptr, 14);
|
||||||
} else {
|
} else {
|
||||||
// FIXME: Unlikely to have more than 16K of octets
|
// TODO: Unlikely to have more than 16K of octets
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -6802,7 +6802,7 @@ LIBLTE_ERROR_ENUM liblte_s1ap_pack_cdma2000onexpilot(LIBLTE_S1AP_CDMA2000ONEXPIL
|
||||||
liblte_value_2_bits(0, ptr, 1);
|
liblte_value_2_bits(0, ptr, 1);
|
||||||
liblte_value_2_bits(ie->n_octets, ptr, 14);
|
liblte_value_2_bits(ie->n_octets, ptr, 14);
|
||||||
} else {
|
} else {
|
||||||
// FIXME: Unlikely to have more than 16K of octets
|
// TODO: Unlikely to have more than 16K of octets
|
||||||
}
|
}
|
||||||
|
|
||||||
// Octets
|
// Octets
|
||||||
|
@ -6828,7 +6828,7 @@ LIBLTE_ERROR_ENUM liblte_s1ap_unpack_cdma2000onexpilot(uint8_t** ptr, LIBLTE_S1A
|
||||||
if (0 == liblte_bits_2_value(ptr, 1)) {
|
if (0 == liblte_bits_2_value(ptr, 1)) {
|
||||||
ie->n_octets = liblte_bits_2_value(ptr, 14);
|
ie->n_octets = liblte_bits_2_value(ptr, 14);
|
||||||
} else {
|
} else {
|
||||||
// FIXME: Unlikely to have more than 16K of octets
|
// TODO: Unlikely to have more than 16K of octets
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -7331,7 +7331,7 @@ LIBLTE_ERROR_ENUM liblte_s1ap_pack_lppa_pdu(LIBLTE_S1AP_LPPA_PDU_STRUCT* ie, uin
|
||||||
liblte_value_2_bits(0, ptr, 1);
|
liblte_value_2_bits(0, ptr, 1);
|
||||||
liblte_value_2_bits(ie->n_octets, ptr, 14);
|
liblte_value_2_bits(ie->n_octets, ptr, 14);
|
||||||
} else {
|
} else {
|
||||||
// FIXME: Unlikely to have more than 16K of octets
|
// TODO: Unlikely to have more than 16K of octets
|
||||||
}
|
}
|
||||||
|
|
||||||
// Octets
|
// Octets
|
||||||
|
@ -7357,7 +7357,7 @@ LIBLTE_ERROR_ENUM liblte_s1ap_unpack_lppa_pdu(uint8_t** ptr, LIBLTE_S1AP_LPPA_PD
|
||||||
if (0 == liblte_bits_2_value(ptr, 1)) {
|
if (0 == liblte_bits_2_value(ptr, 1)) {
|
||||||
ie->n_octets = liblte_bits_2_value(ptr, 14);
|
ie->n_octets = liblte_bits_2_value(ptr, 14);
|
||||||
} else {
|
} else {
|
||||||
// FIXME: Unlikely to have more than 16K of octets
|
// TODO: Unlikely to have more than 16K of octets
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -7621,7 +7621,7 @@ LIBLTE_ERROR_ENUM liblte_s1ap_pack_oldbss_tonewbss_information(LIBLTE_S1AP_OLDBS
|
||||||
liblte_value_2_bits(0, ptr, 1);
|
liblte_value_2_bits(0, ptr, 1);
|
||||||
liblte_value_2_bits(ie->n_octets, ptr, 14);
|
liblte_value_2_bits(ie->n_octets, ptr, 14);
|
||||||
} else {
|
} else {
|
||||||
// FIXME: Unlikely to have more than 16K of octets
|
// TODO: Unlikely to have more than 16K of octets
|
||||||
}
|
}
|
||||||
|
|
||||||
// Octets
|
// Octets
|
||||||
|
@ -7648,7 +7648,7 @@ LIBLTE_ERROR_ENUM liblte_s1ap_unpack_oldbss_tonewbss_information(uint8_t**
|
||||||
if (0 == liblte_bits_2_value(ptr, 1)) {
|
if (0 == liblte_bits_2_value(ptr, 1)) {
|
||||||
ie->n_octets = liblte_bits_2_value(ptr, 14);
|
ie->n_octets = liblte_bits_2_value(ptr, 14);
|
||||||
} else {
|
} else {
|
||||||
// FIXME: Unlikely to have more than 16K of octets
|
// TODO: Unlikely to have more than 16K of octets
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -7839,7 +7839,7 @@ LIBLTE_ERROR_ENUM liblte_s1ap_pack_rrc_container(LIBLTE_S1AP_RRC_CONTAINER_STRUC
|
||||||
liblte_value_2_bits(0, ptr, 1);
|
liblte_value_2_bits(0, ptr, 1);
|
||||||
liblte_value_2_bits(ie->n_octets, ptr, 14);
|
liblte_value_2_bits(ie->n_octets, ptr, 14);
|
||||||
} else {
|
} else {
|
||||||
// FIXME: Unlikely to have more than 16K of octets
|
// TODO: Unlikely to have more than 16K of octets
|
||||||
}
|
}
|
||||||
|
|
||||||
// Octets
|
// Octets
|
||||||
|
@ -7865,7 +7865,7 @@ LIBLTE_ERROR_ENUM liblte_s1ap_unpack_rrc_container(uint8_t** ptr, LIBLTE_S1AP_RR
|
||||||
if (0 == liblte_bits_2_value(ptr, 1)) {
|
if (0 == liblte_bits_2_value(ptr, 1)) {
|
||||||
ie->n_octets = liblte_bits_2_value(ptr, 14);
|
ie->n_octets = liblte_bits_2_value(ptr, 14);
|
||||||
} else {
|
} else {
|
||||||
// FIXME: Unlikely to have more than 16K of octets
|
// TODO: Unlikely to have more than 16K of octets
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -10149,7 +10149,7 @@ LIBLTE_ERROR_ENUM liblte_s1ap_pack_targetbss_tosourcebss_transparentcontainer(
|
||||||
liblte_value_2_bits(0, ptr, 1);
|
liblte_value_2_bits(0, ptr, 1);
|
||||||
liblte_value_2_bits(ie->n_octets, ptr, 14);
|
liblte_value_2_bits(ie->n_octets, ptr, 14);
|
||||||
} else {
|
} else {
|
||||||
// FIXME: Unlikely to have more than 16K of octets
|
// TODO: Unlikely to have more than 16K of octets
|
||||||
}
|
}
|
||||||
|
|
||||||
// Octets
|
// Octets
|
||||||
|
@ -10177,7 +10177,7 @@ LIBLTE_ERROR_ENUM liblte_s1ap_unpack_targetbss_tosourcebss_transparentcontainer(
|
||||||
if (0 == liblte_bits_2_value(ptr, 1)) {
|
if (0 == liblte_bits_2_value(ptr, 1)) {
|
||||||
ie->n_octets = liblte_bits_2_value(ptr, 14);
|
ie->n_octets = liblte_bits_2_value(ptr, 14);
|
||||||
} else {
|
} else {
|
||||||
// FIXME: Unlikely to have more than 16K of octets
|
// TODO: Unlikely to have more than 16K of octets
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -11244,7 +11244,7 @@ liblte_s1ap_pack_nassecurityparametersfrome_utran(LIBLTE_S1AP_NASSECURITYPARAMET
|
||||||
liblte_value_2_bits(0, ptr, 1);
|
liblte_value_2_bits(0, ptr, 1);
|
||||||
liblte_value_2_bits(ie->n_octets, ptr, 14);
|
liblte_value_2_bits(ie->n_octets, ptr, 14);
|
||||||
} else {
|
} else {
|
||||||
// FIXME: Unlikely to have more than 16K of octets
|
// TODO: Unlikely to have more than 16K of octets
|
||||||
}
|
}
|
||||||
|
|
||||||
// Octets
|
// Octets
|
||||||
|
@ -11272,7 +11272,7 @@ liblte_s1ap_unpack_nassecurityparametersfrome_utran(uint8_t**
|
||||||
if (0 == liblte_bits_2_value(ptr, 1)) {
|
if (0 == liblte_bits_2_value(ptr, 1)) {
|
||||||
ie->n_octets = liblte_bits_2_value(ptr, 14);
|
ie->n_octets = liblte_bits_2_value(ptr, 14);
|
||||||
} else {
|
} else {
|
||||||
// FIXME: Unlikely to have more than 16K of octets
|
// TODO: Unlikely to have more than 16K of octets
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -12541,7 +12541,7 @@ LIBLTE_ERROR_ENUM liblte_s1ap_pack_ehrpd_sector_id(LIBLTE_S1AP_EHRPD_SECTOR_ID_S
|
||||||
liblte_value_2_bits(0, ptr, 1);
|
liblte_value_2_bits(0, ptr, 1);
|
||||||
liblte_value_2_bits(ie->n_octets, ptr, 14);
|
liblte_value_2_bits(ie->n_octets, ptr, 14);
|
||||||
} else {
|
} else {
|
||||||
// FIXME: Unlikely to have more than 16K of octets
|
// TODO: Unlikely to have more than 16K of octets
|
||||||
}
|
}
|
||||||
|
|
||||||
// Octets
|
// Octets
|
||||||
|
@ -12567,7 +12567,7 @@ LIBLTE_ERROR_ENUM liblte_s1ap_unpack_ehrpd_sector_id(uint8_t** ptr, LIBLTE_S1AP_
|
||||||
if (0 == liblte_bits_2_value(ptr, 1)) {
|
if (0 == liblte_bits_2_value(ptr, 1)) {
|
||||||
ie->n_octets = liblte_bits_2_value(ptr, 14);
|
ie->n_octets = liblte_bits_2_value(ptr, 14);
|
||||||
} else {
|
} else {
|
||||||
// FIXME: Unlikely to have more than 16K of octets
|
// TODO: Unlikely to have more than 16K of octets
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -39312,7 +39312,7 @@ liblte_s1ap_pack_protocolie_header(uint32_t len, uint32_t ie_id, LIBLTE_S1AP_CRI
|
||||||
liblte_value_2_bits(0, ptr, 1);
|
liblte_value_2_bits(0, ptr, 1);
|
||||||
liblte_value_2_bits(len, ptr, 14);
|
liblte_value_2_bits(len, ptr, 14);
|
||||||
} else {
|
} else {
|
||||||
// FIXME: Unlikely to have more than 16K of octets
|
// TODO: Unlikely to have more than 16K of octets
|
||||||
}
|
}
|
||||||
|
|
||||||
return LIBLTE_SUCCESS;
|
return LIBLTE_SUCCESS;
|
||||||
|
@ -39330,7 +39330,7 @@ liblte_s1ap_unpack_protocolie_header(uint8_t** ptr, uint32_t* ie_id, LIBLTE_S1AP
|
||||||
if (0 == liblte_bits_2_value(ptr, 1)) {
|
if (0 == liblte_bits_2_value(ptr, 1)) {
|
||||||
*len = liblte_bits_2_value(ptr, 14);
|
*len = liblte_bits_2_value(ptr, 14);
|
||||||
} else {
|
} else {
|
||||||
// FIXME: Unlikely to have more than 16K of octets
|
// TODO: Unlikely to have more than 16K of octets
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -39588,7 +39588,7 @@ LIBLTE_ERROR_ENUM liblte_s1ap_pack_initiatingmessage(LIBLTE_S1AP_INITIATINGMESSA
|
||||||
liblte_value_2_bits(0, ptr, 1);
|
liblte_value_2_bits(0, ptr, 1);
|
||||||
liblte_value_2_bits(len, ptr, 14);
|
liblte_value_2_bits(len, ptr, 14);
|
||||||
} else {
|
} else {
|
||||||
// FIXME: Unlikely to have more than 16K of octets
|
// TODO: Unlikely to have more than 16K of octets
|
||||||
}
|
}
|
||||||
|
|
||||||
memcpy(*ptr, tmp_msg.msg, tmp_msg.N_bits);
|
memcpy(*ptr, tmp_msg.msg, tmp_msg.N_bits);
|
||||||
|
@ -39619,7 +39619,7 @@ LIBLTE_ERROR_ENUM liblte_s1ap_unpack_initiatingmessage(uint8_t** ptr, LIBLTE_S1A
|
||||||
if (0 == liblte_bits_2_value(ptr, 1)) {
|
if (0 == liblte_bits_2_value(ptr, 1)) {
|
||||||
len = liblte_bits_2_value(ptr, 14);
|
len = liblte_bits_2_value(ptr, 14);
|
||||||
} else {
|
} else {
|
||||||
// FIXME: Unlikely to have more than 16K of octets
|
// TODO: Unlikely to have more than 16K of octets
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -39964,7 +39964,7 @@ LIBLTE_ERROR_ENUM liblte_s1ap_pack_unsuccessfuloutcome(LIBLTE_S1AP_UNSUCCESSFULO
|
||||||
liblte_value_2_bits(0, ptr, 1);
|
liblte_value_2_bits(0, ptr, 1);
|
||||||
liblte_value_2_bits(len, ptr, 14);
|
liblte_value_2_bits(len, ptr, 14);
|
||||||
} else {
|
} else {
|
||||||
// FIXME: Unlikely to have more than 16K of octets
|
// TODO: Unlikely to have more than 16K of octets
|
||||||
}
|
}
|
||||||
|
|
||||||
memcpy(*ptr, tmp_msg.msg, tmp_msg.N_bits);
|
memcpy(*ptr, tmp_msg.msg, tmp_msg.N_bits);
|
||||||
|
@ -39995,7 +39995,7 @@ LIBLTE_ERROR_ENUM liblte_s1ap_unpack_unsuccessfuloutcome(uint8_t** ptr, LIBLTE_S
|
||||||
if (0 == liblte_bits_2_value(ptr, 1)) {
|
if (0 == liblte_bits_2_value(ptr, 1)) {
|
||||||
len = liblte_bits_2_value(ptr, 14);
|
len = liblte_bits_2_value(ptr, 14);
|
||||||
} else {
|
} else {
|
||||||
// FIXME: Unlikely to have more than 16K of octets
|
// TODO: Unlikely to have more than 16K of octets
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -40162,7 +40162,7 @@ LIBLTE_ERROR_ENUM liblte_s1ap_pack_successfuloutcome(LIBLTE_S1AP_SUCCESSFULOUTCO
|
||||||
liblte_value_2_bits(0, ptr, 1);
|
liblte_value_2_bits(0, ptr, 1);
|
||||||
liblte_value_2_bits(len, ptr, 14);
|
liblte_value_2_bits(len, ptr, 14);
|
||||||
} else {
|
} else {
|
||||||
// FIXME: Unlikely to have more than 16K of octets
|
// TODO: Unlikely to have more than 16K of octets
|
||||||
}
|
}
|
||||||
|
|
||||||
memcpy(*ptr, tmp_msg.msg, tmp_msg.N_bits);
|
memcpy(*ptr, tmp_msg.msg, tmp_msg.N_bits);
|
||||||
|
@ -40193,7 +40193,7 @@ LIBLTE_ERROR_ENUM liblte_s1ap_unpack_successfuloutcome(uint8_t** ptr, LIBLTE_S1A
|
||||||
if (0 == liblte_bits_2_value(ptr, 1)) {
|
if (0 == liblte_bits_2_value(ptr, 1)) {
|
||||||
len = liblte_bits_2_value(ptr, 14);
|
len = liblte_bits_2_value(ptr, 14);
|
||||||
} else {
|
} else {
|
||||||
// FIXME: Unlikely to have more than 16K of octets
|
// TODO: Unlikely to have more than 16K of octets
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -194,7 +194,7 @@ static void interpolate_pilots(srslte_chest_dl_nbiot_t* q, cf_t* pilot_estimates
|
||||||
for (int l = 0; l < nsymbols / 2; l++) {
|
for (int l = 0; l < nsymbols / 2; l++) {
|
||||||
int sym_idx = srslte_refsignal_nrs_nsymbol(l * 2);
|
int sym_idx = srslte_refsignal_nrs_nsymbol(l * 2);
|
||||||
srslte_vec_sum_ccc(&cesymb(sym_idx), &cesymb(sym_idx + 1), ce_avg[l], num_ces);
|
srslte_vec_sum_ccc(&cesymb(sym_idx), &cesymb(sym_idx + 1), ce_avg[l], num_ces);
|
||||||
// FIXME: use vector operation for this
|
// TODO: use vector operation for this
|
||||||
for (int k = 0; k < num_ces; k++) {
|
for (int k = 0; k < num_ces; k++) {
|
||||||
ce_avg[l][k] /= 2;
|
ce_avg[l][k] /= 2;
|
||||||
}
|
}
|
||||||
|
|
|
@ -393,7 +393,7 @@ int srslte_chest_ul_estimate_pucch(srslte_chest_ul_t* q,
|
||||||
}
|
}
|
||||||
|
|
||||||
if (res->ce != NULL) {
|
if (res->ce != NULL) {
|
||||||
/* FIXME: Currently averaging entire slot, performance good enough? */
|
/* TODO: Currently averaging entire slot, performance good enough? */
|
||||||
for (int ns = 0; ns < 2; ns++) {
|
for (int ns = 0; ns < 2; ns++) {
|
||||||
// Average all slot
|
// Average all slot
|
||||||
for (int i = 1; i < n_rs; i++) {
|
for (int i = 1; i < n_rs; i++) {
|
||||||
|
|
|
@ -473,7 +473,7 @@ int srslte_rm_turbo_rx_lut_8bit(int8_t* input, int8_t* output, uint32_t in_len,
|
||||||
uint16_t* deinter = deinterleaver[cb_idx][rv_idx];
|
uint16_t* deinter = deinterleaver[cb_idx][rv_idx];
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// FIXME: AVX version of rm_turbo_rx_lut not working
|
// TODO: AVX version of rm_turbo_rx_lut not working
|
||||||
// Warning: Need to check if 8-bit sse version is correct
|
// Warning: Need to check if 8-bit sse version is correct
|
||||||
|
|
||||||
#ifdef LV_HAVE_SSE
|
#ifdef LV_HAVE_SSE
|
||||||
|
|
|
@ -69,7 +69,7 @@ int srslte_softbuffer_rx_init(srslte_softbuffer_rx_t* q, uint32_t nof_prb)
|
||||||
}
|
}
|
||||||
bzero(q->cb_crc, sizeof(bool) * q->max_cb);
|
bzero(q->cb_crc, sizeof(bool) * q->max_cb);
|
||||||
|
|
||||||
// FIXME: Use HARQ buffer limitation based on UE category
|
// TODO: Use HARQ buffer limitation based on UE category
|
||||||
for (uint32_t i = 0; i < q->max_cb; i++) {
|
for (uint32_t i = 0; i < q->max_cb; i++) {
|
||||||
q->buffer_f[i] = srslte_vec_malloc(sizeof(int16_t) * SOFTBUFFER_SIZE);
|
q->buffer_f[i] = srslte_vec_malloc(sizeof(int16_t) * SOFTBUFFER_SIZE);
|
||||||
if (!q->buffer_f[i]) {
|
if (!q->buffer_f[i]) {
|
||||||
|
@ -173,7 +173,7 @@ int srslte_softbuffer_tx_init(srslte_softbuffer_tx_t* q, uint32_t nof_prb)
|
||||||
return SRSLTE_ERROR;
|
return SRSLTE_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
// FIXME: Use HARQ buffer limitation based on UE category
|
// TODO: Use HARQ buffer limitation based on UE category
|
||||||
for (uint32_t i = 0; i < q->max_cb; i++) {
|
for (uint32_t i = 0; i < q->max_cb; i++) {
|
||||||
q->buffer_b[i] = srslte_vec_malloc(sizeof(float) * SOFTBUFFER_SIZE);
|
q->buffer_b[i] = srslte_vec_malloc(sizeof(float) * SOFTBUFFER_SIZE);
|
||||||
if (!q->buffer_b[i]) {
|
if (!q->buffer_b[i]) {
|
||||||
|
|
|
@ -72,7 +72,7 @@ int srslte_dci_rar_to_ul_dci(srslte_cell_t* cell, srslte_dci_rar_grant_t* rar, s
|
||||||
if (!rar->hopping_flag) {
|
if (!rar->hopping_flag) {
|
||||||
dci_ul->freq_hop_fl = SRSLTE_RA_PUSCH_HOP_DISABLED;
|
dci_ul->freq_hop_fl = SRSLTE_RA_PUSCH_HOP_DISABLED;
|
||||||
} else {
|
} else {
|
||||||
ERROR("FIXME: Frequency hopping in RAR not implemented\n");
|
ERROR("TODO: Frequency hopping in RAR not implemented\n");
|
||||||
dci_ul->freq_hop_fl = 1;
|
dci_ul->freq_hop_fl = 1;
|
||||||
}
|
}
|
||||||
uint32_t riv = rar->rba;
|
uint32_t riv = rar->rba;
|
||||||
|
|
|
@ -474,7 +474,7 @@ int srslte_npbch_decode_nf(srslte_npbch_t* q,
|
||||||
// only one subframe
|
// only one subframe
|
||||||
DEBUG("Trying to decode NPBCH ..\n");
|
DEBUG("Trying to decode NPBCH ..\n");
|
||||||
|
|
||||||
// FIXME: simplified decoding only using first MIB block
|
// TODO: simplified decoding only using first MIB block
|
||||||
ret = srslte_npbch_decode_frame(q, 0, nf, 1, nof_bits, nant);
|
ret = srslte_npbch_decode_frame(q, 0, nf, 1, nof_bits, nant);
|
||||||
if (ret == SRSLTE_SUCCESS) {
|
if (ret == SRSLTE_SUCCESS) {
|
||||||
if (sfn_offset) {
|
if (sfn_offset) {
|
||||||
|
|
|
@ -420,7 +420,7 @@ int srslte_phich_encode(srslte_phich_t* q,
|
||||||
srslte_layermap_diversity(q->d0, x, q->cell.nof_ports, SRSLTE_PHICH_MAX_NSYMB);
|
srslte_layermap_diversity(q->d0, x, q->cell.nof_ports, SRSLTE_PHICH_MAX_NSYMB);
|
||||||
srslte_precoding_diversity(
|
srslte_precoding_diversity(
|
||||||
x, symbols_precoding, q->cell.nof_ports, SRSLTE_PHICH_MAX_NSYMB / q->cell.nof_ports, 1.0f);
|
x, symbols_precoding, q->cell.nof_ports, SRSLTE_PHICH_MAX_NSYMB / q->cell.nof_ports, 1.0f);
|
||||||
/**FIXME: According to 6.9.2, Precoding for 4 tx ports is different! */
|
/**TODO: According to 6.9.2, Precoding for 4 tx ports is different! */
|
||||||
} else {
|
} else {
|
||||||
memcpy(q->sf_symbols[0], q->d0, SRSLTE_PHICH_MAX_NSYMB * sizeof(cf_t));
|
memcpy(q->sf_symbols[0], q->d0, SRSLTE_PHICH_MAX_NSYMB * sizeof(cf_t));
|
||||||
}
|
}
|
||||||
|
|
|
@ -34,7 +34,7 @@
|
||||||
#define MAX_I_TBS_VAL 12
|
#define MAX_I_TBS_VAL 12
|
||||||
#define MAX_I_TBS_VAL_SIB 11
|
#define MAX_I_TBS_VAL_SIB 11
|
||||||
#define MAX_I_SF_VAL 7
|
#define MAX_I_SF_VAL 7
|
||||||
#define EUTRA_CONTROL_REGION_SIZE 3 // FIXME: Needs to be set by SIB1
|
#define EUTRA_CONTROL_REGION_SIZE 3 // TODO: Needs to be set by SIB1
|
||||||
|
|
||||||
/// Number of repetitions according to Table 16.4.1.3-2 in TS 36.213 13.2.0
|
/// Number of repetitions according to Table 16.4.1.3-2 in TS 36.213 13.2.0
|
||||||
const int n_rep_table[16] = {1, 2, 4, 8, 16, 32, 64, 128, 192, 256, 384, 512, 768, 1024, 1536, 2048};
|
const int n_rep_table[16] = {1, 2, 4, 8, 16, 32, 64, 128, 192, 256, 384, 512, 768, 1024, 1536, 2048};
|
||||||
|
@ -408,7 +408,7 @@ int srslte_ra_nbiot_ul_rar_dci_to_grant(srslte_ra_nbiot_ul_dci_t* dci,
|
||||||
if (grant->sc_spacing == SRSLTE_NPUSCH_SC_SPACING_15000 && dci->i_sc > 11) {
|
if (grant->sc_spacing == SRSLTE_NPUSCH_SC_SPACING_15000 && dci->i_sc > 11) {
|
||||||
grant->mcs.mod = SRSLTE_MOD_QPSK;
|
grant->mcs.mod = SRSLTE_MOD_QPSK;
|
||||||
} else if (dci->i_sc <= 11) {
|
} else if (dci->i_sc <= 11) {
|
||||||
// FIXME: Use SRSLTE_MOD_PI2_BPSK and SRSLTE_MOD_PI4_QPSK
|
// TODO: Use SRSLTE_MOD_PI2_BPSK and SRSLTE_MOD_PI4_QPSK
|
||||||
grant->mcs.mod = (dci->i_mcs == 0) ? SRSLTE_MOD_BPSK : SRSLTE_MOD_QPSK;
|
grant->mcs.mod = (dci->i_mcs == 0) ? SRSLTE_MOD_BPSK : SRSLTE_MOD_QPSK;
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -432,7 +432,7 @@ void srslte_ra_nbiot_ul_get_uci_grant(srslte_ra_nbiot_ul_grant_t* grant,
|
||||||
grant->Qm = 1;
|
grant->Qm = 1;
|
||||||
grant->nof_ru = 1;
|
grant->nof_ru = 1;
|
||||||
grant->nof_slots = 4;
|
grant->nof_slots = 4;
|
||||||
grant->nof_rep = 0; // FIXME: set appropiatly
|
grant->nof_rep = 0; // TODO: set appropiatly
|
||||||
grant->rv_idx = 0;
|
grant->rv_idx = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -503,7 +503,7 @@ int srslte_ra_nbiot_ul_dci_to_grant(srslte_ra_nbiot_ul_dci_t* dci,
|
||||||
|
|
||||||
/// Redundency version according to TS 36 212 Section 6.3.2
|
/// Redundency version according to TS 36 212 Section 6.3.2
|
||||||
/// And TS 36 213 Sec. 16.5.1.2
|
/// And TS 36 213 Sec. 16.5.1.2
|
||||||
/// FIXME: implement NPUSCH repetitions
|
/// TODO: implement NPUSCH repetitions
|
||||||
/// int L = (grant->nof_sc == 1) ? 1 : min(4, grant->nof_rep/2);
|
/// int L = (grant->nof_sc == 1) ? 1 : min(4, grant->nof_rep/2);
|
||||||
/// int B = L * grant->nof_ru * grant->nof_slots;
|
/// int B = L * grant->nof_ru * grant->nof_slots;
|
||||||
int j = 0;
|
int j = 0;
|
||||||
|
|
|
@ -942,7 +942,7 @@ int rf_uhd_send_timed_multi(void* h,
|
||||||
pthread_mutex_lock(&handler->tx_mutex);
|
pthread_mutex_lock(&handler->tx_mutex);
|
||||||
int ret = -1;
|
int ret = -1;
|
||||||
|
|
||||||
/* Resets the USRP time FIXME: this might cause problems for burst transmissions */
|
/* Resets the USRP time TODO: this might cause problems for burst transmissions */
|
||||||
if (!has_time_spec && is_start_of_burst && handler->nof_tx_channels > 1) {
|
if (!has_time_spec && is_start_of_burst && handler->nof_tx_channels > 1) {
|
||||||
uhd_usrp_set_time_now(handler->usrp, 0, 0, 0);
|
uhd_usrp_set_time_now(handler->usrp, 0, 0, 0);
|
||||||
uhd_tx_metadata_set_time_spec(&handler->tx_md, 0, 0.1);
|
uhd_tx_metadata_set_time_spec(&handler->tx_md, 0, 0.1);
|
||||||
|
|
|
@ -75,7 +75,7 @@ void scrambling_b(uint8_t* c, uint8_t* data, int len)
|
||||||
void scrambling_b_word(uint8_t* c, uint8_t* data, int len)
|
void scrambling_b_word(uint8_t* c, uint8_t* data, int len)
|
||||||
{
|
{
|
||||||
// Do XOR every 64 bits
|
// Do XOR every 64 bits
|
||||||
// FIXME: Use 32-bit in 32-bit machines
|
// TODO: Use 32-bit in 32-bit machines
|
||||||
uint64_t* x = (uint64_t*)data;
|
uint64_t* x = (uint64_t*)data;
|
||||||
uint64_t* y = (uint64_t*)c;
|
uint64_t* y = (uint64_t*)c;
|
||||||
for (int i = 0; i < len / 8; i++) {
|
for (int i = 0; i < len / 8; i++) {
|
||||||
|
|
|
@ -273,7 +273,7 @@ int srslte_ue_sync_init_multi_decim(srslte_ue_sync_t* q,
|
||||||
srslte_sync_set_pss_filt_enable(&q->strack, true);
|
srslte_sync_set_pss_filt_enable(&q->strack, true);
|
||||||
srslte_sync_set_sss_eq_enable(&q->strack, false);
|
srslte_sync_set_sss_eq_enable(&q->strack, false);
|
||||||
|
|
||||||
// FIXME: CP detection not working very well. Not supporting Extended CP right now
|
// TODO: CP detection not working very well. Not supporting Extended CP right now
|
||||||
srslte_sync_cp_en(&q->strack, false);
|
srslte_sync_cp_en(&q->strack, false);
|
||||||
srslte_sync_cp_en(&q->sfind, false);
|
srslte_sync_cp_en(&q->sfind, false);
|
||||||
|
|
||||||
|
|
|
@ -197,7 +197,7 @@ int srslte_ue_sync_nbiot_init_multi(srslte_nbiot_ue_sync_t* q,
|
||||||
}
|
}
|
||||||
|
|
||||||
// in tracking phase we only sample for one subframe but still use the entire
|
// in tracking phase we only sample for one subframe but still use the entire
|
||||||
// subframe to run the correlation (FIXME: use only one symbol?)
|
// subframe to run the correlation (TODO: use only one symbol?)
|
||||||
if (srslte_sync_nbiot_init(&q->strack, q->sf_len, q->sf_len, q->fft_size)) {
|
if (srslte_sync_nbiot_init(&q->strack, q->sf_len, q->sf_len, q->fft_size)) {
|
||||||
fprintf(stderr, "Error initiating sync track\n");
|
fprintf(stderr, "Error initiating sync track\n");
|
||||||
goto clean_exit;
|
goto clean_exit;
|
||||||
|
|
|
@ -269,7 +269,7 @@ void pdcp_entity_lte::handle_am_drb_pdu(const srslte::unique_byte_buffer_t& pdu)
|
||||||
count = (rx_hfn << cfg.sn_len) | sn;
|
count = (rx_hfn << cfg.sn_len) | sn;
|
||||||
}
|
}
|
||||||
|
|
||||||
// FIXME Check if PDU is not due to re-establishment of lower layers?
|
// TODO Check if PDU is not due to re-establishment of lower layers?
|
||||||
cipher_decrypt(pdu->msg, pdu->N_bytes, count, pdu->msg);
|
cipher_decrypt(pdu->msg, pdu->N_bytes, count, pdu->msg);
|
||||||
log->debug_hex(pdu->msg, pdu->N_bytes, "RX %s PDU (decrypted)", rrc->get_rb_name(lcid).c_str());
|
log->debug_hex(pdu->msg, pdu->N_bytes, "RX %s PDU (decrypted)", rrc->get_rb_name(lcid).c_str());
|
||||||
|
|
||||||
|
|
|
@ -193,7 +193,7 @@ void rlc::empty_queue()
|
||||||
|
|
||||||
void rlc::write_sdu(uint32_t lcid, unique_byte_buffer_t sdu, bool blocking)
|
void rlc::write_sdu(uint32_t lcid, unique_byte_buffer_t sdu, bool blocking)
|
||||||
{
|
{
|
||||||
// FIXME: rework build PDU logic to allow large SDUs (without concatenation)
|
// TODO: rework build PDU logic to allow large SDUs (without concatenation)
|
||||||
if (sdu->N_bytes > RLC_MAX_SDU_SIZE) {
|
if (sdu->N_bytes > RLC_MAX_SDU_SIZE) {
|
||||||
rlc_log->warning("Dropping too long SDU of size %d B (Max. size %d B).\n", sdu->N_bytes, RLC_MAX_SDU_SIZE);
|
rlc_log->warning("Dropping too long SDU of size %d B (Max. size %d B).\n", sdu->N_bytes, RLC_MAX_SDU_SIZE);
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -1583,7 +1583,7 @@ void rlc_am_lte::rlc_am_lte_rx::timer_expired(uint32_t timeout_id)
|
||||||
{
|
{
|
||||||
pthread_mutex_lock(&mutex);
|
pthread_mutex_lock(&mutex);
|
||||||
if (reordering_timer.is_valid() and reordering_timer.id() == timeout_id) {
|
if (reordering_timer.is_valid() and reordering_timer.id() == timeout_id) {
|
||||||
// reordering_timer.run(); // FIXME: It was reset() before
|
// reordering_timer.run(); // TODO: It was reset() before
|
||||||
log->debug("%s reordering timeout expiry - updating vr_ms (was %d)\n", RB_NAME, vr_ms);
|
log->debug("%s reordering timeout expiry - updating vr_ms (was %d)\n", RB_NAME, vr_ms);
|
||||||
|
|
||||||
// 36.322 v10 Section 5.1.3.2.4
|
// 36.322 v10 Section 5.1.3.2.4
|
||||||
|
|
|
@ -353,7 +353,7 @@ bool rlc_um_nr::rlc_um_nr_rx::has_missing_byte_segment(const uint32_t sn)
|
||||||
{
|
{
|
||||||
// is at least one missing byte segment of the RLC SDU associated with SN = RX_Next_Reassembly before the last byte of
|
// is at least one missing byte segment of the RLC SDU associated with SN = RX_Next_Reassembly before the last byte of
|
||||||
// all received segments of this RLC SDU
|
// all received segments of this RLC SDU
|
||||||
// FIXME: check assumption
|
// TODO: check assumption
|
||||||
// if SN can be found in rx_window, it means that at least one segment is missing
|
// if SN can be found in rx_window, it means that at least one segment is missing
|
||||||
return (rx_window.find(sn) != rx_window.end());
|
return (rx_window.find(sn) != rx_window.end());
|
||||||
}
|
}
|
||||||
|
|
|
@ -81,8 +81,8 @@ int test_ngsetup_request()
|
||||||
ng_setup_request_s& ngsetup = pdu.init_msg().value.ng_setup_request();
|
ng_setup_request_s& ngsetup = pdu.init_msg().value.ng_setup_request();
|
||||||
TESTASSERT(not ngsetup.ext);
|
TESTASSERT(not ngsetup.ext);
|
||||||
// Field 0
|
// Field 0
|
||||||
TESTASSERT(ngsetup.protocol_ies.global_ran_node_id.id == 27); // FIXME: Is this really needed?
|
TESTASSERT(ngsetup.protocol_ies.global_ran_node_id.id == 27); // TODO: Is this really needed?
|
||||||
TESTASSERT(ngsetup.protocol_ies.global_ran_node_id.crit.value == crit_opts::reject); // FIXME: Is this really needed?
|
TESTASSERT(ngsetup.protocol_ies.global_ran_node_id.crit.value == crit_opts::reject); // TODO: Is this really needed?
|
||||||
TESTASSERT(ngsetup.protocol_ies.global_ran_node_id.value.type().value ==
|
TESTASSERT(ngsetup.protocol_ies.global_ran_node_id.value.type().value ==
|
||||||
global_ran_node_id_c::types_opts::global_gnb_id);
|
global_ran_node_id_c::types_opts::global_gnb_id);
|
||||||
global_gnb_id_s& global_gnb = ngsetup.protocol_ies.global_ran_node_id.value.global_gnb_id();
|
global_gnb_id_s& global_gnb = ngsetup.protocol_ies.global_ran_node_id.value.global_gnb_id();
|
||||||
|
@ -136,7 +136,7 @@ int test_ngsetup_response()
|
||||||
TESTASSERT(pdu.successful_outcome().proc_code == 21);
|
TESTASSERT(pdu.successful_outcome().proc_code == 21);
|
||||||
TESTASSERT(pdu.successful_outcome().crit.value == crit_opts::reject);
|
TESTASSERT(pdu.successful_outcome().crit.value == crit_opts::reject);
|
||||||
TESTASSERT(pdu.successful_outcome().value.type().value ==
|
TESTASSERT(pdu.successful_outcome().value.type().value ==
|
||||||
ngap_elem_procs_o::successful_outcome_c::types_opts::ng_setup_request); // FIXME: Change name
|
ngap_elem_procs_o::successful_outcome_c::types_opts::ng_setup_request); // TODO: Change name
|
||||||
ng_setup_resp_s& resp = pdu.successful_outcome().value.ng_setup_request();
|
ng_setup_resp_s& resp = pdu.successful_outcome().value.ng_setup_request();
|
||||||
// field 0
|
// field 0
|
||||||
TESTASSERT(resp.protocol_ies.amf_name.id == 1);
|
TESTASSERT(resp.protocol_ies.amf_name.id == 1);
|
||||||
|
|
|
@ -507,7 +507,7 @@ int ue_rrc_conn_recfg_r15_v10_test()
|
||||||
TESTASSERT(not v1510->nr_radio_bearer_cfg2_r15_present);
|
TESTASSERT(not v1510->nr_radio_bearer_cfg2_r15_present);
|
||||||
TESTASSERT(not v1510->tdm_pattern_cfg_r15_present);
|
TESTASSERT(not v1510->tdm_pattern_cfg_r15_present);
|
||||||
TESTASSERT(not v1510->non_crit_ext_present);
|
TESTASSERT(not v1510->non_crit_ext_present);
|
||||||
TESTASSERT(v1510->nr_radio_bearer_cfg1_r15.size() == 8); // FIXME: Get a better way for oct_string comparison
|
TESTASSERT(v1510->nr_radio_bearer_cfg1_r15.size() == 8); // TODO: Get a better way for oct_string comparison
|
||||||
TESTASSERT(v1510->nr_radio_bearer_cfg1_r15[0] == 20);
|
TESTASSERT(v1510->nr_radio_bearer_cfg1_r15[0] == 20);
|
||||||
TESTASSERT(v1510->nr_radio_bearer_cfg1_r15[7] == 0);
|
TESTASSERT(v1510->nr_radio_bearer_cfg1_r15[7] == 0);
|
||||||
|
|
||||||
|
|
|
@ -166,7 +166,7 @@ int m2_setup_response_test()
|
||||||
TESTASSERT(mce_id == 0x0050);
|
TESTASSERT(mce_id == 0x0050);
|
||||||
|
|
||||||
/*MCE Name*/
|
/*MCE Name*/
|
||||||
TESTASSERT(m2_setup->MCEname_present == false); // FIXME Test with MCE name
|
TESTASSERT(m2_setup->MCEname_present == false); // TODO Test with MCE name
|
||||||
|
|
||||||
/*MCCHrelatedBCCH-ConfigPerMBSFNArea*/
|
/*MCCHrelatedBCCH-ConfigPerMBSFNArea*/
|
||||||
// Length
|
// Length
|
||||||
|
|
|
@ -85,7 +85,7 @@ int nas_dedicated_eps_bearer_context_setup_request_test()
|
||||||
TESTASSERT(ded_bearer_req.tft.parameter_list_size == 0);
|
TESTASSERT(ded_bearer_req.tft.parameter_list_size == 0);
|
||||||
TESTASSERT(ded_bearer_req.tft.packet_filter_list_size == 1);
|
TESTASSERT(ded_bearer_req.tft.packet_filter_list_size == 1);
|
||||||
TESTASSERT(ded_bearer_req.tft.packet_filter_list[0].dir == LIBLTE_MME_TFT_PACKET_FILTER_DIRECTION_BIDIRECTIONAL);
|
TESTASSERT(ded_bearer_req.tft.packet_filter_list[0].dir == LIBLTE_MME_TFT_PACKET_FILTER_DIRECTION_BIDIRECTIONAL);
|
||||||
TESTASSERT(ded_bearer_req.tft.packet_filter_list[0].id == 1); // FIXME Should this be 2?
|
TESTASSERT(ded_bearer_req.tft.packet_filter_list[0].id == 1); // TODO Should this be 2?
|
||||||
TESTASSERT(ded_bearer_req.tft.packet_filter_list[0].eval_precedence == 0);
|
TESTASSERT(ded_bearer_req.tft.packet_filter_list[0].eval_precedence == 0);
|
||||||
TESTASSERT(ded_bearer_req.tft.packet_filter_list[0].filter_size == 3);
|
TESTASSERT(ded_bearer_req.tft.packet_filter_list[0].filter_size == 3);
|
||||||
TESTASSERT(ded_bearer_req.tft.packet_filter_list[0].filter[0] ==
|
TESTASSERT(ded_bearer_req.tft.packet_filter_list[0].filter[0] ==
|
||||||
|
|
|
@ -57,12 +57,12 @@ int rrc_conn_setup_test1()
|
||||||
|
|
||||||
rrc_conn_setup_s* setup = &dl_ccch_msg.msg.c1().rrc_conn_setup();
|
rrc_conn_setup_s* setup = &dl_ccch_msg.msg.c1().rrc_conn_setup();
|
||||||
|
|
||||||
// FIXME: add test for setup
|
// TODO: add test for setup
|
||||||
|
|
||||||
rr_cfg_ded_s* cnfg = &setup->crit_exts.c1().rrc_conn_setup_r8().rr_cfg_ded;
|
rr_cfg_ded_s* cnfg = &setup->crit_exts.c1().rrc_conn_setup_r8().rr_cfg_ded;
|
||||||
TESTASSERT(cnfg->phys_cfg_ded_present);
|
TESTASSERT(cnfg->phys_cfg_ded_present);
|
||||||
|
|
||||||
// FIXME: add tests for RR config dedicated
|
// TODO: add tests for RR config dedicated
|
||||||
|
|
||||||
phys_cfg_ded_s* phy_cnfg = &cnfg->phys_cfg_ded;
|
phys_cfg_ded_s* phy_cnfg = &cnfg->phys_cfg_ded;
|
||||||
TESTASSERT(phy_cnfg->cqi_report_cfg_present);
|
TESTASSERT(phy_cnfg->cqi_report_cfg_present);
|
||||||
|
|
|
@ -182,7 +182,7 @@ int rlc_um_nr_test2(bool reverse_rx = false)
|
||||||
ctxt.rlc1.write_sdu(std::move(sdu_bufs[i]));
|
ctxt.rlc1.write_sdu(std::move(sdu_bufs[i]));
|
||||||
}
|
}
|
||||||
|
|
||||||
// FIXME: check buffer state calculation
|
// TODO: check buffer state calculation
|
||||||
TESTASSERT(103 == ctxt.rlc1.get_buffer_state());
|
TESTASSERT(103 == ctxt.rlc1.get_buffer_state());
|
||||||
|
|
||||||
// Read PDUs from RLC1 with grant of 25 Bytes each
|
// Read PDUs from RLC1 with grant of 25 Bytes each
|
||||||
|
@ -250,7 +250,7 @@ int rlc_um_nr_test4()
|
||||||
ctxt.rlc1.write_sdu(std::move(sdu_bufs[i]));
|
ctxt.rlc1.write_sdu(std::move(sdu_bufs[i]));
|
||||||
}
|
}
|
||||||
|
|
||||||
// FIXME: check buffer state calculation
|
// TODO: check buffer state calculation
|
||||||
int bsr = ctxt.rlc1.get_buffer_state();
|
int bsr = ctxt.rlc1.get_buffer_state();
|
||||||
TESTASSERT(bsr == 205);
|
TESTASSERT(bsr == 205);
|
||||||
|
|
||||||
|
@ -326,7 +326,7 @@ int rlc_um_nr_test5(const uint32_t last_sn)
|
||||||
ctxt.rlc1.write_sdu(std::move(sdu_bufs[i]));
|
ctxt.rlc1.write_sdu(std::move(sdu_bufs[i]));
|
||||||
}
|
}
|
||||||
|
|
||||||
// FIXME: check buffer state calculation
|
// TODO: check buffer state calculation
|
||||||
TESTASSERT(103 == ctxt.rlc1.get_buffer_state());
|
TESTASSERT(103 == ctxt.rlc1.get_buffer_state());
|
||||||
|
|
||||||
// Read PDUs from RLC1 with grant of 25 Bytes each
|
// Read PDUs from RLC1 with grant of 25 Bytes each
|
||||||
|
@ -393,7 +393,7 @@ int rlc_um_nr_test6()
|
||||||
ctxt.rlc1.write_sdu(std::move(sdu_bufs[i]));
|
ctxt.rlc1.write_sdu(std::move(sdu_bufs[i]));
|
||||||
}
|
}
|
||||||
|
|
||||||
// FIXME: check buffer state calculation
|
// TODO: check buffer state calculation
|
||||||
// TESTASSERT(103 == ctxt.rlc1.get_buffer_state());
|
// TESTASSERT(103 == ctxt.rlc1.get_buffer_state());
|
||||||
|
|
||||||
// Read PDUs from RLC1 with grant of 8 Bytes each
|
// Read PDUs from RLC1 with grant of 8 Bytes each
|
||||||
|
@ -453,7 +453,7 @@ int rlc_um_nr_test7()
|
||||||
ctxt.rlc1.write_sdu(std::move(sdu_bufs[i]));
|
ctxt.rlc1.write_sdu(std::move(sdu_bufs[i]));
|
||||||
}
|
}
|
||||||
|
|
||||||
// FIXME: check buffer state calculation
|
// TODO: check buffer state calculation
|
||||||
// TESTASSERT(103 == ctxt.rlc1.get_buffer_state());
|
// TESTASSERT(103 == ctxt.rlc1.get_buffer_state());
|
||||||
|
|
||||||
// Read PDUs from RLC1 with grant of 8 Bytes each
|
// Read PDUs from RLC1 with grant of 8 Bytes each
|
||||||
|
@ -517,7 +517,7 @@ int rlc_um_nr_test8()
|
||||||
ctxt.rlc1.write_sdu(std::move(sdu_bufs[i]));
|
ctxt.rlc1.write_sdu(std::move(sdu_bufs[i]));
|
||||||
}
|
}
|
||||||
|
|
||||||
// FIXME: check buffer state calculation
|
// TODO: check buffer state calculation
|
||||||
// TESTASSERT(103 == ctxt.rlc1.get_buffer_state());
|
// TESTASSERT(103 == ctxt.rlc1.get_buffer_state());
|
||||||
|
|
||||||
// Read PDUs from RLC1 with grant of 8 Bytes each
|
// Read PDUs from RLC1 with grant of 8 Bytes each
|
||||||
|
|
|
@ -88,8 +88,8 @@ struct rrc_meas_cfg_t {
|
||||||
asn1::rrc::quant_cfg_eutra_s quant_cfg;
|
asn1::rrc::quant_cfg_eutra_s quant_cfg;
|
||||||
// uint32_t nof_meas_ids;
|
// uint32_t nof_meas_ids;
|
||||||
// srslte::rrc_meas_id_t meas_ids[LIBLTE_RRC_MAX_MEAS_ID];
|
// srslte::rrc_meas_id_t meas_ids[LIBLTE_RRC_MAX_MEAS_ID];
|
||||||
// FIXME: Add blacklist cells
|
// TODO: Add blacklist cells
|
||||||
// FIXME: Add multiple meas configs
|
// TODO: Add multiple meas configs
|
||||||
};
|
};
|
||||||
|
|
||||||
// Cell/Sector configuration
|
// Cell/Sector configuration
|
||||||
|
|
|
@ -273,7 +273,7 @@ int mbsfn_sf_cfg_list_parser::parse(Setting& root)
|
||||||
&(*mbsfn_list)[0].radioframe_alloc_period);
|
&(*mbsfn_list)[0].radioframe_alloc_period);
|
||||||
e.parse(root["mbsfnSubframeConfigList"]);
|
e.parse(root["mbsfnSubframeConfigList"]);
|
||||||
|
|
||||||
// FIXME: Did you forget subframeAllocationNumFrames?
|
// TODO: Did you forget subframeAllocationNumFrames?
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -661,7 +661,7 @@ static int parse_meas_cell_list(rrc_meas_cfg_t* meas_cfg, Setting& root)
|
||||||
meas_cfg->meas_cells[i].pci = (unsigned int)root[i]["pci"] % 504;
|
meas_cfg->meas_cells[i].pci = (unsigned int)root[i]["pci"] % 504;
|
||||||
meas_cfg->meas_cells[i].eci = (unsigned int)root[i]["eci"];
|
meas_cfg->meas_cells[i].eci = (unsigned int)root[i]["eci"];
|
||||||
meas_cfg->meas_cells[i].q_offset = 0; // LIBLTE_RRC_Q_OFFSET_RANGE_DB_0; // TODO
|
meas_cfg->meas_cells[i].q_offset = 0; // LIBLTE_RRC_Q_OFFSET_RANGE_DB_0; // TODO
|
||||||
// // FIXME: TEMP
|
// // TODO: TEMP
|
||||||
// printf("PARSER: neighbor cell: {dl_earfcn=%d pci=%d cell_idx=0x%x}\n",
|
// printf("PARSER: neighbor cell: {dl_earfcn=%d pci=%d cell_idx=0x%x}\n",
|
||||||
// meas_cfg->meas_cells[i].earfcn,
|
// meas_cfg->meas_cells[i].earfcn,
|
||||||
// meas_cfg->meas_cells[i].pci,
|
// meas_cfg->meas_cells[i].pci,
|
||||||
|
@ -1008,7 +1008,7 @@ int parse_sib2(std::string filename, sib_type2_s* data)
|
||||||
groupa_cnfg.add_field(make_asn1_enum_number_parser("size_of_ra", &group_acfg->size_of_ra_preambs_group_a));
|
groupa_cnfg.add_field(make_asn1_enum_number_parser("size_of_ra", &group_acfg->size_of_ra_preambs_group_a));
|
||||||
groupa_cnfg.add_field(make_asn1_enum_number_parser("msg_size", &group_acfg->msg_size_group_a));
|
groupa_cnfg.add_field(make_asn1_enum_number_parser("msg_size", &group_acfg->msg_size_group_a));
|
||||||
groupa_cnfg.add_field(make_asn1_enum_number_parser("msg_pwr_offset_group_b", &group_acfg->msg_pwr_offset_group_b));
|
groupa_cnfg.add_field(make_asn1_enum_number_parser("msg_pwr_offset_group_b", &group_acfg->msg_pwr_offset_group_b));
|
||||||
// rr_cfg_common->rach_cfg_common.preamb_info.nof_ra_preambs = FIXME: ???
|
// rr_cfg_common->rach_cfg_common.preamb_info.nof_ra_preambs = TODO: ???
|
||||||
|
|
||||||
// BCCH configuration
|
// BCCH configuration
|
||||||
parser::section bcch_cnfg("bcch_cnfg");
|
parser::section bcch_cnfg("bcch_cnfg");
|
||||||
|
@ -1272,7 +1272,7 @@ int parse_sib13(std::string filename, sib_type13_r9_s* data)
|
||||||
|
|
||||||
int parse_sibs(all_args_t* args_, rrc_cfg_t* rrc_cfg_, srsenb::phy_cfg_t* phy_config_common)
|
int parse_sibs(all_args_t* args_, rrc_cfg_t* rrc_cfg_, srsenb::phy_cfg_t* phy_config_common)
|
||||||
{
|
{
|
||||||
// FIXME: Leave 0 blank for now
|
// TODO: Leave 0 blank for now
|
||||||
sib_type2_s* sib2 = &rrc_cfg_->sibs[1].set_sib2();
|
sib_type2_s* sib2 = &rrc_cfg_->sibs[1].set_sib2();
|
||||||
sib_type3_s* sib3 = &rrc_cfg_->sibs[2].set_sib3();
|
sib_type3_s* sib3 = &rrc_cfg_->sibs[2].set_sib3();
|
||||||
sib_type4_s* sib4 = &rrc_cfg_->sibs[3].set_sib4();
|
sib_type4_s* sib4 = &rrc_cfg_->sibs[3].set_sib4();
|
||||||
|
|
|
@ -310,7 +310,7 @@ void mac::rl_ok(uint16_t rnti)
|
||||||
|
|
||||||
int mac::ack_info(uint32_t tti, uint16_t rnti, uint32_t tb_idx, bool ack)
|
int mac::ack_info(uint32_t tti, uint16_t rnti, uint32_t tb_idx, bool ack)
|
||||||
{
|
{
|
||||||
// FIXME: add cc_idx to interface
|
// TODO: add cc_idx to interface
|
||||||
uint32_t cc_idx = 0;
|
uint32_t cc_idx = 0;
|
||||||
pthread_rwlock_rdlock(&rwlock);
|
pthread_rwlock_rdlock(&rwlock);
|
||||||
log_h->step(tti);
|
log_h->step(tti);
|
||||||
|
@ -329,7 +329,7 @@ int mac::ack_info(uint32_t tti, uint16_t rnti, uint32_t tb_idx, bool ack)
|
||||||
|
|
||||||
int mac::crc_info(uint32_t tti, uint16_t rnti, uint32_t nof_bytes, bool crc)
|
int mac::crc_info(uint32_t tti, uint16_t rnti, uint32_t nof_bytes, bool crc)
|
||||||
{
|
{
|
||||||
// FIXME: add cc_idx to interface
|
// TODO: add cc_idx to interface
|
||||||
uint32_t cc_idx = 0;
|
uint32_t cc_idx = 0;
|
||||||
log_h->step(tti);
|
log_h->step(tti);
|
||||||
int ret = -1;
|
int ret = -1;
|
||||||
|
@ -372,7 +372,7 @@ int mac::set_dl_ant_info(uint16_t rnti, phys_cfg_ded_s::ant_info_c_* dl_ant_info
|
||||||
|
|
||||||
int mac::ri_info(uint32_t tti, uint16_t rnti, uint32_t ri_value)
|
int mac::ri_info(uint32_t tti, uint16_t rnti, uint32_t ri_value)
|
||||||
{
|
{
|
||||||
// FIXME: add cc_idx to interface
|
// TODO: add cc_idx to interface
|
||||||
uint32_t cc_idx = 0;
|
uint32_t cc_idx = 0;
|
||||||
log_h->step(tti);
|
log_h->step(tti);
|
||||||
int ret = -1;
|
int ret = -1;
|
||||||
|
@ -390,7 +390,7 @@ int mac::ri_info(uint32_t tti, uint16_t rnti, uint32_t ri_value)
|
||||||
|
|
||||||
int mac::pmi_info(uint32_t tti, uint16_t rnti, uint32_t pmi_value)
|
int mac::pmi_info(uint32_t tti, uint16_t rnti, uint32_t pmi_value)
|
||||||
{
|
{
|
||||||
// FIXME: add cc_idx to interface
|
// TODO: add cc_idx to interface
|
||||||
uint32_t cc_idx = 0;
|
uint32_t cc_idx = 0;
|
||||||
log_h->step(tti);
|
log_h->step(tti);
|
||||||
pthread_rwlock_rdlock(&rwlock);
|
pthread_rwlock_rdlock(&rwlock);
|
||||||
|
@ -408,7 +408,7 @@ int mac::pmi_info(uint32_t tti, uint16_t rnti, uint32_t pmi_value)
|
||||||
|
|
||||||
int mac::cqi_info(uint32_t tti, uint16_t rnti, uint32_t cqi_value)
|
int mac::cqi_info(uint32_t tti, uint16_t rnti, uint32_t cqi_value)
|
||||||
{
|
{
|
||||||
// FIXME: add cc_idx to interface
|
// TODO: add cc_idx to interface
|
||||||
uint32_t cc_idx = 0;
|
uint32_t cc_idx = 0;
|
||||||
log_h->step(tti);
|
log_h->step(tti);
|
||||||
int ret = -1;
|
int ret = -1;
|
||||||
|
@ -427,7 +427,7 @@ int mac::cqi_info(uint32_t tti, uint16_t rnti, uint32_t cqi_value)
|
||||||
|
|
||||||
int mac::snr_info(uint32_t tti, uint16_t rnti, float snr)
|
int mac::snr_info(uint32_t tti, uint16_t rnti, float snr)
|
||||||
{
|
{
|
||||||
// FIXME: add cc_idx to interface
|
// TODO: add cc_idx to interface
|
||||||
uint32_t cc_idx = 0;
|
uint32_t cc_idx = 0;
|
||||||
log_h->step(tti);
|
log_h->step(tti);
|
||||||
int ret = -1;
|
int ret = -1;
|
||||||
|
|
|
@ -257,7 +257,7 @@ void sched::ue_needs_ta_cmd(uint16_t rnti, uint32_t nof_ta_cmd)
|
||||||
|
|
||||||
void sched::phy_config_enabled(uint16_t rnti, bool enabled)
|
void sched::phy_config_enabled(uint16_t rnti, bool enabled)
|
||||||
{
|
{
|
||||||
// FIXME: Check if correct use of current_tti
|
// TODO: Check if correct use of current_tti
|
||||||
ue_db_access(rnti, [this, enabled](sched_ue& ue) { ue.phy_config_enabled(current_tti, enabled); });
|
ue_db_access(rnti, [this, enabled](sched_ue& ue) { ue.phy_config_enabled(current_tti, enabled); });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -273,7 +273,7 @@ int sched::bearer_ue_rem(uint16_t rnti, uint32_t lc_id)
|
||||||
|
|
||||||
uint32_t sched::get_dl_buffer(uint16_t rnti)
|
uint32_t sched::get_dl_buffer(uint16_t rnti)
|
||||||
{
|
{
|
||||||
// FIXME: Check if correct use of current_tti
|
// TODO: Check if correct use of current_tti
|
||||||
uint32_t ret = 0;
|
uint32_t ret = 0;
|
||||||
ue_db_access(rnti, [&ret](sched_ue& ue) { ret = ue.get_pending_dl_new_data(); });
|
ue_db_access(rnti, [&ret](sched_ue& ue) { ret = ue.get_pending_dl_new_data(); });
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -281,7 +281,7 @@ uint32_t sched::get_dl_buffer(uint16_t rnti)
|
||||||
|
|
||||||
uint32_t sched::get_ul_buffer(uint16_t rnti)
|
uint32_t sched::get_ul_buffer(uint16_t rnti)
|
||||||
{
|
{
|
||||||
// FIXME: Check if correct use of current_tti
|
// TODO: Check if correct use of current_tti
|
||||||
uint32_t ret = 0;
|
uint32_t ret = 0;
|
||||||
ue_db_access(rnti, [this, &ret](sched_ue& ue) { ret = ue.get_pending_ul_new_data(current_tti); });
|
ue_db_access(rnti, [this, &ret](sched_ue& ue) { ret = ue.get_pending_ul_new_data(current_tti); });
|
||||||
return ret;
|
return ret;
|
||||||
|
|
|
@ -201,7 +201,7 @@ void ra_sched::dl_sched(srsenb::tti_sched_result_t* tti_sched)
|
||||||
// Schedule Msg3 only if there is a requirement for Msg3 data
|
// Schedule Msg3 only if there is a requirement for Msg3 data
|
||||||
uint32_t pending_tti = (tti_sched->get_tti_tx_dl() + MSG3_DELAY_MS + TX_DELAY) % TTIMOD_SZ;
|
uint32_t pending_tti = (tti_sched->get_tti_tx_dl() + MSG3_DELAY_MS + TX_DELAY) % TTIMOD_SZ;
|
||||||
pending_msg3[pending_tti].enabled = true;
|
pending_msg3[pending_tti].enabled = true;
|
||||||
pending_msg3[pending_tti].rnti = rar.temp_crnti; // FIXME
|
pending_msg3[pending_tti].rnti = rar.temp_crnti; // TODO
|
||||||
pending_msg3[pending_tti].L = L_prb;
|
pending_msg3[pending_tti].L = L_prb;
|
||||||
pending_msg3[pending_tti].n_prb = n_prb;
|
pending_msg3[pending_tti].n_prb = n_prb;
|
||||||
dl_sched_rar_grant_t* last_msg3 = &rar_grant.msg3_grant[rar_grant.nof_grants - 1];
|
dl_sched_rar_grant_t* last_msg3 = &rar_grant.msg3_grant[rar_grant.nof_grants - 1];
|
||||||
|
@ -397,7 +397,7 @@ void sched::carrier_sched::generate_phich(tti_sched_result_t* tti_sched)
|
||||||
}
|
}
|
||||||
uint32_t cell_index = p.second;
|
uint32_t cell_index = p.second;
|
||||||
|
|
||||||
// user.has_pucch = false; // FIXME: What is this for?
|
// user.has_pucch = false; // TODO: What is this for?
|
||||||
|
|
||||||
ul_harq_proc* h = user.get_ul_harq(tti_sched->get_tti_rx(), cell_index);
|
ul_harq_proc* h = user.get_ul_harq(tti_sched->get_tti_rx(), cell_index);
|
||||||
|
|
||||||
|
|
|
@ -92,7 +92,7 @@ const sched_ue::sched_dci_cce_t* pdcch_grid_t::get_cce_loc_table(alloc_type_t al
|
||||||
|
|
||||||
bool pdcch_grid_t::alloc_dci(alloc_type_t alloc_type, uint32_t aggr_idx, sched_ue* user)
|
bool pdcch_grid_t::alloc_dci(alloc_type_t alloc_type, uint32_t aggr_idx, sched_ue* user)
|
||||||
{
|
{
|
||||||
// FIXME: Make the alloc tree update lazy
|
// TODO: Make the alloc tree update lazy
|
||||||
|
|
||||||
/* Get DCI Location Table */
|
/* Get DCI Location Table */
|
||||||
const sched_ue::sched_dci_cce_t* dci_locs = get_cce_loc_table(alloc_type, user);
|
const sched_ue::sched_dci_cce_t* dci_locs = get_cce_loc_table(alloc_type, user);
|
||||||
|
@ -180,8 +180,8 @@ void pdcch_grid_t::update_alloc_tree(int parent_nod
|
||||||
bool pdcch_grid_t::set_cfi(uint32_t cfi)
|
bool pdcch_grid_t::set_cfi(uint32_t cfi)
|
||||||
{
|
{
|
||||||
current_cfix = cfi - 1;
|
current_cfix = cfi - 1;
|
||||||
// FIXME: use this function for dynamic cfi
|
// TODO: use this function for dynamic cfi
|
||||||
// FIXME: The estimation of the number of required prbs in metric depends on CFI. Analyse the consequences
|
// TODO: The estimation of the number of required prbs in metric depends on CFI. Analyse the consequences
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -88,7 +88,7 @@ dl_harq_proc* dl_metric_rr::allocate_user(sched_ue* user, uint32_t enb_cc_idx)
|
||||||
}
|
}
|
||||||
uint32_t cell_idx = p.second;
|
uint32_t cell_idx = p.second;
|
||||||
|
|
||||||
// FIXME: First do reTxs for all users. Only then do the rest.
|
// TODO: First do reTxs for all users. Only then do the rest.
|
||||||
alloc_outcome_t code;
|
alloc_outcome_t code;
|
||||||
uint32_t tti_dl = tti_alloc->get_tti_tx_dl();
|
uint32_t tti_dl = tti_alloc->get_tti_tx_dl();
|
||||||
dl_harq_proc* h = user->get_pending_dl_harq(tti_dl, cell_idx);
|
dl_harq_proc* h = user->get_pending_dl_harq(tti_dl, cell_idx);
|
||||||
|
|
|
@ -83,7 +83,7 @@ void sched_ue::set_cfg(uint16_t rnti_, const sched_params_t& sched_params_, sche
|
||||||
// Init sched_ue carriers
|
// Init sched_ue carriers
|
||||||
// TODO: check config for number of carriers
|
// TODO: check config for number of carriers
|
||||||
carriers.emplace_back(&cfg, &cell, rnti, 0, log_h);
|
carriers.emplace_back(&cfg, &cell, rnti, 0, log_h);
|
||||||
enb_ue_cellindex_map.insert(std::make_pair(0, 0)); // FIXME: use real values
|
enb_ue_cellindex_map.insert(std::make_pair(0, 0)); // TODO: use real values
|
||||||
|
|
||||||
// Generate allowed CCE locations
|
// Generate allowed CCE locations
|
||||||
for (int cfi = 0; cfi < 3; cfi++) {
|
for (int cfi = 0; cfi < 3; cfi++) {
|
||||||
|
@ -448,7 +448,7 @@ int sched_ue::generate_format1(dl_harq_proc* h,
|
||||||
Info("SCHED: Added MAC Contention Resolution CE for rnti=0x%x\n", rnti);
|
Info("SCHED: Added MAC Contention Resolution CE for rnti=0x%x\n", rnti);
|
||||||
} else {
|
} else {
|
||||||
// Add TA CE
|
// Add TA CE
|
||||||
// FIXME: Can't put it in Msg4 because current srsUE doesn't read it
|
// TODO: Can't put it in Msg4 because current srsUE doesn't read it
|
||||||
while (nof_ta_cmd > 0 && rem_tbs > 2) {
|
while (nof_ta_cmd > 0 && rem_tbs > 2) {
|
||||||
data->pdu[0][data->nof_pdu_elems[0]].lcid = srslte::sch_subh::TA_CMD;
|
data->pdu[0][data->nof_pdu_elems[0]].lcid = srslte::sch_subh::TA_CMD;
|
||||||
data->nof_pdu_elems[0]++;
|
data->nof_pdu_elems[0]++;
|
||||||
|
@ -517,7 +517,7 @@ int sched_ue::generate_format2a_unlocked(dl_harq_proc* h,
|
||||||
dci->alloc_type = SRSLTE_RA_ALLOC_TYPE0;
|
dci->alloc_type = SRSLTE_RA_ALLOC_TYPE0;
|
||||||
dci->type0_alloc.rbg_bitmask = (uint32_t)user_mask.to_uint64();
|
dci->type0_alloc.rbg_bitmask = (uint32_t)user_mask.to_uint64();
|
||||||
|
|
||||||
uint32_t nof_prb = format1_count_prb(user_mask); // FIXME: format1???
|
uint32_t nof_prb = format1_count_prb(user_mask); // TODO: format1???
|
||||||
|
|
||||||
// Calculate exact number of RE for this PRB allocation
|
// Calculate exact number of RE for this PRB allocation
|
||||||
srslte_pdsch_grant_t grant = {};
|
srslte_pdsch_grant_t grant = {};
|
||||||
|
@ -986,7 +986,7 @@ srslte_dci_format_t sched_ue::get_dci_format()
|
||||||
srslte_dci_format_t ret = SRSLTE_DCI_FORMAT1;
|
srslte_dci_format_t ret = SRSLTE_DCI_FORMAT1;
|
||||||
|
|
||||||
if (phy_config_dedicated_enabled) {
|
if (phy_config_dedicated_enabled) {
|
||||||
/* FIXME: Assumes UE-Specific Search Space (Not common) */
|
/* TODO: Assumes UE-Specific Search Space (Not common) */
|
||||||
switch (dl_ant_info.explicit_value().tx_mode) {
|
switch (dl_ant_info.explicit_value().tx_mode) {
|
||||||
case asn1::rrc::ant_info_ded_s::tx_mode_e_::tm1:
|
case asn1::rrc::ant_info_ded_s::tx_mode_e_::tm1:
|
||||||
case asn1::rrc::ant_info_ded_s::tx_mode_e_::tm2:
|
case asn1::rrc::ant_info_ded_s::tx_mode_e_::tm2:
|
||||||
|
|
|
@ -898,7 +898,7 @@ void rrc::configure_mbsfn_sibs(sib_type2_s* sib2_, sib_type13_r9_s* sib13_)
|
||||||
byte[2] = 1;
|
byte[2] = 1;
|
||||||
memcpy(&pmch_item->mbms_session_info_list_r9[1].tmgi_r9.service_id_r9[0],
|
memcpy(&pmch_item->mbms_session_info_list_r9[1].tmgi_r9.service_id_r9[0],
|
||||||
&byte[0],
|
&byte[0],
|
||||||
3); // FIXME: Check if service is set to 1
|
3); // TODO: Check if service is set to 1
|
||||||
}
|
}
|
||||||
pmch_item->pmch_cfg_r9.data_mcs_r9 = 20;
|
pmch_item->pmch_cfg_r9.data_mcs_r9 = 20;
|
||||||
pmch_item->pmch_cfg_r9.mch_sched_period_r9 = pmch_cfg_r9_s::mch_sched_period_r9_e_::rf64;
|
pmch_item->pmch_cfg_r9.mch_sched_period_r9 = pmch_cfg_r9_s::mch_sched_period_r9_e_::rf64;
|
||||||
|
@ -1146,7 +1146,7 @@ void rrc::ue::parse_ul_dcch(uint32_t lcid, srslte::unique_byte_buffer_t pdu)
|
||||||
parent->log_rrc_message(rb_id_text[lcid], Rx, pdu.get(), ul_dcch_msg, ul_dcch_msg.msg.c1().type().to_string());
|
parent->log_rrc_message(rb_id_text[lcid], Rx, pdu.get(), ul_dcch_msg, ul_dcch_msg.msg.c1().type().to_string());
|
||||||
|
|
||||||
// reuse PDU
|
// reuse PDU
|
||||||
pdu->clear(); // FIXME: name collision with byte_buffer reset
|
pdu->clear(); // TODO: name collision with byte_buffer reset
|
||||||
|
|
||||||
transaction_id = 0;
|
transaction_id = 0;
|
||||||
|
|
||||||
|
|
|
@ -303,10 +303,10 @@ var_meas_cfg_t::add_cell_cfg(const meas_cell_cfg_t& cellcfg)
|
||||||
using namespace rrc_details;
|
using namespace rrc_details;
|
||||||
bool inserted_flag = true;
|
bool inserted_flag = true;
|
||||||
|
|
||||||
// FIXME: cellcfg.eci is the ECI
|
// TODO: cellcfg.eci is the ECI
|
||||||
uint32_t cell_id = rrc_details::eci_to_cellid(cellcfg.eci);
|
uint32_t cell_id = rrc_details::eci_to_cellid(cellcfg.eci);
|
||||||
q_offset_range_e offset;
|
q_offset_range_e offset;
|
||||||
asn1::number_to_enum(offset, (int8_t)cellcfg.q_offset); // FIXME: What's the difference
|
asn1::number_to_enum(offset, (int8_t)cellcfg.q_offset); // TODO: What's the difference
|
||||||
|
|
||||||
std::pair<meas_obj_t*, meas_cell_t*> ret = rrc_details::find_cell(var_meas.meas_obj_list, cellcfg.earfcn, cell_id);
|
std::pair<meas_obj_t*, meas_cell_t*> ret = rrc_details::find_cell(var_meas.meas_obj_list, cellcfg.earfcn, cell_id);
|
||||||
cells_to_add_mod_s new_cell;
|
cells_to_add_mod_s new_cell;
|
||||||
|
@ -338,8 +338,8 @@ var_meas_cfg_t::add_cell_cfg(const meas_cell_cfg_t& cellcfg)
|
||||||
new_obj.meas_obj_id = rrc_details::find_id_gap(var_meas.meas_obj_list);
|
new_obj.meas_obj_id = rrc_details::find_id_gap(var_meas.meas_obj_list);
|
||||||
asn1::rrc::meas_obj_eutra_s& eutra = new_obj.meas_obj.set_meas_obj_eutra();
|
asn1::rrc::meas_obj_eutra_s& eutra = new_obj.meas_obj.set_meas_obj_eutra();
|
||||||
eutra.carrier_freq = cellcfg.earfcn;
|
eutra.carrier_freq = cellcfg.earfcn;
|
||||||
eutra.allowed_meas_bw.value = asn1::rrc::allowed_meas_bw_e::mbw6; // FIXME: What value to add here?
|
eutra.allowed_meas_bw.value = asn1::rrc::allowed_meas_bw_e::mbw6; // TODO: What value to add here?
|
||||||
eutra.neigh_cell_cfg.from_number(1); // FIXME: What value?
|
eutra.neigh_cell_cfg.from_number(1); // TODO: What value?
|
||||||
eutra.offset_freq_present = true;
|
eutra.offset_freq_present = true;
|
||||||
// TODO: Assert that q_offset is in ms
|
// TODO: Assert that q_offset is in ms
|
||||||
asn1::number_to_enum(eutra.offset_freq, cellcfg.q_offset);
|
asn1::number_to_enum(eutra.offset_freq, cellcfg.q_offset);
|
||||||
|
@ -624,7 +624,7 @@ rrc::mobility_cfg::mobility_cfg(const rrc_cfg_t* cfg_, srslte::log* log_) : cfg(
|
||||||
}
|
}
|
||||||
|
|
||||||
// insert all meas ids
|
// insert all meas ids
|
||||||
// FIXME: add this to the parser
|
// TODO: add this to the parser
|
||||||
if (var_meas.rep_cfgs().size() > 0) {
|
if (var_meas.rep_cfgs().size() > 0) {
|
||||||
for (const auto& measobj : var_meas.meas_objs()) {
|
for (const auto& measobj : var_meas.meas_objs()) {
|
||||||
var_meas.add_measid_cfg(measobj.meas_obj_id, var_meas.rep_cfgs().begin()->report_cfg_id);
|
var_meas.add_measid_cfg(measobj.meas_obj_id, var_meas.rep_cfgs().begin()->report_cfg_id);
|
||||||
|
@ -757,7 +757,7 @@ bool rrc::ue::rrc_mobility::start_ho_preparation(uint32_t target_eci,
|
||||||
asn1::rrc::ho_prep_info_s hoprep;
|
asn1::rrc::ho_prep_info_s hoprep;
|
||||||
asn1::rrc::ho_prep_info_r8_ies_s& hoprep_r8 = hoprep.crit_exts.set_c1().set_ho_prep_info_r8();
|
asn1::rrc::ho_prep_info_r8_ies_s& hoprep_r8 = hoprep.crit_exts.set_c1().set_ho_prep_info_r8();
|
||||||
if (not rrc_ue->eutra_capabilities_unpacked) {
|
if (not rrc_ue->eutra_capabilities_unpacked) {
|
||||||
// FIXME: temporary. Made up something to please target eNB. (there must be at least one capability in this packet)
|
// TODO: temporary. Made up something to please target eNB. (there must be at least one capability in this packet)
|
||||||
hoprep_r8.ue_radio_access_cap_info.resize(1);
|
hoprep_r8.ue_radio_access_cap_info.resize(1);
|
||||||
hoprep_r8.ue_radio_access_cap_info[0].rat_type = asn1::rrc::rat_type_e::eutra;
|
hoprep_r8.ue_radio_access_cap_info[0].rat_type = asn1::rrc::rat_type_e::eutra;
|
||||||
asn1::rrc::ue_eutra_cap_s capitem;
|
asn1::rrc::ue_eutra_cap_s capitem;
|
||||||
|
@ -766,7 +766,7 @@ bool rrc::ue::rrc_mobility::start_ho_preparation(uint32_t target_eci,
|
||||||
capitem.pdcp_params.max_num_rohc_context_sessions_present = true;
|
capitem.pdcp_params.max_num_rohc_context_sessions_present = true;
|
||||||
capitem.pdcp_params.max_num_rohc_context_sessions = asn1::rrc::pdcp_params_s::max_num_rohc_context_sessions_e_::cs2;
|
capitem.pdcp_params.max_num_rohc_context_sessions = asn1::rrc::pdcp_params_s::max_num_rohc_context_sessions_e_::cs2;
|
||||||
bzero(&capitem.pdcp_params.supported_rohc_profiles,
|
bzero(&capitem.pdcp_params.supported_rohc_profiles,
|
||||||
sizeof(asn1::rrc::rohc_profile_support_list_r15_s)); // FIXME: why is it r15?
|
sizeof(asn1::rrc::rohc_profile_support_list_r15_s)); // TODO: why is it r15?
|
||||||
capitem.phy_layer_params.ue_specific_ref_sigs_supported = false;
|
capitem.phy_layer_params.ue_specific_ref_sigs_supported = false;
|
||||||
capitem.phy_layer_params.ue_tx_ant_sel_supported = false;
|
capitem.phy_layer_params.ue_tx_ant_sel_supported = false;
|
||||||
capitem.rf_params.supported_band_list_eutra.resize(1);
|
capitem.rf_params.supported_band_list_eutra.resize(1);
|
||||||
|
@ -822,7 +822,7 @@ bool rrc::ue::rrc_mobility::start_ho_preparation(uint32_t target_eci,
|
||||||
// srb_list[0].lc_ch_cfg.set(asn1::rrc::srb_to_add_mod_s::lc_ch_cfg_c_::types::default_value);
|
// srb_list[0].lc_ch_cfg.set(asn1::rrc::srb_to_add_mod_s::lc_ch_cfg_c_::types::default_value);
|
||||||
// srb_list[0].rlc_cfg_present = true;
|
// srb_list[0].rlc_cfg_present = true;
|
||||||
// srb_list[0].rlc_cfg.set_explicit_value();
|
// srb_list[0].rlc_cfg.set_explicit_value();
|
||||||
// auto& am = srb_list[0].rlc_cfg.explicit_value().set_am(); // FIXME: Which rlc cfg??? I took from a pcap for now
|
// auto& am = srb_list[0].rlc_cfg.explicit_value().set_am(); // TODO: Which rlc cfg??? I took from a pcap for now
|
||||||
// am.ul_am_rlc.t_poll_retx = asn1::rrc::t_poll_retx_e::ms60;
|
// am.ul_am_rlc.t_poll_retx = asn1::rrc::t_poll_retx_e::ms60;
|
||||||
// am.ul_am_rlc.poll_pdu = asn1::rrc::poll_pdu_e::p_infinity;
|
// am.ul_am_rlc.poll_pdu = asn1::rrc::poll_pdu_e::p_infinity;
|
||||||
// am.ul_am_rlc.poll_byte.value = asn1::rrc::poll_byte_e::kbinfinity;
|
// am.ul_am_rlc.poll_byte.value = asn1::rrc::poll_byte_e::kbinfinity;
|
||||||
|
|
|
@ -676,7 +676,7 @@ bool s1ap::handle_initialctxtsetuprequest(LIBLTE_S1AP_MESSAGE_INITIALCONTEXTSETU
|
||||||
cause.choice.radioNetwork.ext = false;
|
cause.choice.radioNetwork.ext = false;
|
||||||
cause.choice.radioNetwork.e = LIBLTE_S1AP_CAUSERADIONETWORK_CS_FALLBACK_TRIGGERED;
|
cause.choice.radioNetwork.e = LIBLTE_S1AP_CAUSERADIONETWORK_CS_FALLBACK_TRIGGERED;
|
||||||
|
|
||||||
/* FIXME: This should normally probably only be sent after the SecurityMode procedure has completed! */
|
/* TODO: This should normally probably only be sent after the SecurityMode procedure has completed! */
|
||||||
ctxt->release_requested = true;
|
ctxt->release_requested = true;
|
||||||
send_uectxtreleaserequest(rnti, &cause);
|
send_uectxtreleaserequest(rnti, &cause);
|
||||||
}
|
}
|
||||||
|
|
|
@ -327,7 +327,7 @@ int sched_tester::process_tti_args()
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// FIXME: Does it need TTI for checking pending data?
|
// TODO: Does it need TTI for checking pending data?
|
||||||
uint32_t tot_dl_data = pending_dl_new_data + e.second.dl_data;
|
uint32_t tot_dl_data = pending_dl_new_data + e.second.dl_data;
|
||||||
dl_rlc_buffer_state(e.first, lcid, tot_dl_data, 0);
|
dl_rlc_buffer_state(e.first, lcid, tot_dl_data, 0);
|
||||||
}
|
}
|
||||||
|
@ -499,7 +499,7 @@ int sched_tester::assert_no_empty_allocs()
|
||||||
|
|
||||||
if (!iter.second.has_ul_tx and tti_data.ue_data[rnti].ul_sched != nullptr and
|
if (!iter.second.has_ul_tx and tti_data.ue_data[rnti].ul_sched != nullptr and
|
||||||
tti_data.ue_data[rnti].ul_sched->needs_pdcch) {
|
tti_data.ue_data[rnti].ul_sched->needs_pdcch) {
|
||||||
// FIXME: This test does not work for adaptive re-tx
|
// TODO: This test does not work for adaptive re-tx
|
||||||
TESTERROR("[TESTER] There was a user without data that got allocated in UL\n");
|
TESTERROR("[TESTER] There was a user without data that got allocated in UL\n");
|
||||||
}
|
}
|
||||||
// srsenb::ul_harq_proc* hul = user->get_ul_harq(tti_data.tti_tx_ul);
|
// srsenb::ul_harq_proc* hul = user->get_ul_harq(tti_data.tti_tx_ul);
|
||||||
|
@ -518,7 +518,7 @@ int sched_tester::assert_no_empty_allocs()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// CONDERROR(tti_data.total_ues.has_dl_tx and no_dl_allocs, "There was pending DL data but no user got allocated\n");
|
// CONDERROR(tti_data.total_ues.has_dl_tx and no_dl_allocs, "There was pending DL data but no user got allocated\n");
|
||||||
// FIXME: You have to verify if there is space for the retx since it is non-adaptive
|
// TODO: You have to verify if there is space for the retx since it is non-adaptive
|
||||||
return SRSLTE_SUCCESS;
|
return SRSLTE_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -594,7 +594,7 @@ int sched_tester::test_tti_result()
|
||||||
TESTERROR("[TESTER] The used_cce do not match: (%s!=%s)\n", mask_str.c_str(), tti_data.used_cce.to_hex().c_str());
|
TESTERROR("[TESTER] The used_cce do not match: (%s!=%s)\n", mask_str.c_str(), tti_data.used_cce.to_hex().c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
// FIXME: Check postponed retxs
|
// TODO: Check postponed retxs
|
||||||
|
|
||||||
// typedef std::map<uint16_t, srsenb::sched_ue>::iterator it_t;
|
// typedef std::map<uint16_t, srsenb::sched_ue>::iterator it_t;
|
||||||
// // There must be allocations if there is pending data/retxs.
|
// // There must be allocations if there is pending data/retxs.
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
# sgi_mb_if_name: SGi-mb TUN interface name
|
# sgi_mb_if_name: SGi-mb TUN interface name
|
||||||
# sgi_mb_if_addr: SGi-mb interface IP address
|
# sgi_mb_if_addr: SGi-mb interface IP address
|
||||||
# sgi_mb_if_mask: SGi-mb interface IP mask
|
# sgi_mb_if_mask: SGi-mb interface IP mask
|
||||||
# m1u_multi_addr: Multicast group for eNBs (FIXME this should be setup with M2/M3)
|
# m1u_multi_addr: Multicast group for eNBs (TODO this should be setup with M2/M3)
|
||||||
# m1u_multi_if: IP of local interface for multicast traffic
|
# m1u_multi_if: IP of local interface for multicast traffic
|
||||||
# m1u_multi_ttl: TTL for M1-U multicast traffic
|
# m1u_multi_ttl: TTL for M1-U multicast traffic
|
||||||
#
|
#
|
||||||
|
|
|
@ -271,7 +271,7 @@ void mbms_gw::handle_sgi_md_pdu(srslte::byte_buffer_t* msg)
|
||||||
header.flags = GTPU_FLAGS_VERSION_V1 | GTPU_FLAGS_GTP_PROTOCOL;
|
header.flags = GTPU_FLAGS_VERSION_V1 | GTPU_FLAGS_GTP_PROTOCOL;
|
||||||
header.message_type = GTPU_MSG_DATA_PDU;
|
header.message_type = GTPU_MSG_DATA_PDU;
|
||||||
header.length = msg->N_bytes;
|
header.length = msg->N_bytes;
|
||||||
header.teid = 0xAAAA; // FIXME Harcoded TEID for now
|
header.teid = 0xAAAA; // TODO Harcoded TEID for now
|
||||||
|
|
||||||
// Sanity Check IP packet
|
// Sanity Check IP packet
|
||||||
if (msg->N_bytes < 20) {
|
if (msg->N_bytes < 20) {
|
||||||
|
|
|
@ -125,7 +125,7 @@ bool mme_gtpc::send_s11_pdu(const srslte::gtpc_pdu& pdu)
|
||||||
int n;
|
int n;
|
||||||
m_mme_gtpc_log->debug("Sending S-11 GTP-C PDU\n");
|
m_mme_gtpc_log->debug("Sending S-11 GTP-C PDU\n");
|
||||||
|
|
||||||
// FIXME Add GTP-C serialization code
|
// TODO Add GTP-C serialization code
|
||||||
// Send S11 message to SPGW
|
// Send S11 message to SPGW
|
||||||
n = sendto(m_s11, &pdu, sizeof(pdu), 0, (const sockaddr*)&m_spgw_addr, sizeof(m_spgw_addr));
|
n = sendto(m_s11, &pdu, sizeof(pdu), 0, (const sockaddr*)&m_spgw_addr, sizeof(m_spgw_addr));
|
||||||
if (n < 0) {
|
if (n < 0) {
|
||||||
|
@ -173,7 +173,7 @@ bool mme_gtpc::send_create_session_request(uint64_t imsi)
|
||||||
// Initialize GTP-C message to zero
|
// Initialize GTP-C message to zero
|
||||||
bzero(&cs_req_pdu, sizeof(struct srslte::gtpc_pdu));
|
bzero(&cs_req_pdu, sizeof(struct srslte::gtpc_pdu));
|
||||||
|
|
||||||
// Setup GTP-C Header. FIXME: Length, sequence and other fields need to be added.
|
// Setup GTP-C Header. TODO: Length, sequence and other fields need to be added.
|
||||||
cs_req_pdu.header.piggyback = false;
|
cs_req_pdu.header.piggyback = false;
|
||||||
cs_req_pdu.header.teid_present = true;
|
cs_req_pdu.header.teid_present = true;
|
||||||
cs_req_pdu.header.teid = 0; // Send create session request to the butler TEID
|
cs_req_pdu.header.teid = 0; // Send create session request to the butler TEID
|
||||||
|
@ -260,7 +260,7 @@ bool mme_gtpc::handle_create_session_response(srslte::gtpc_pdu* cs_resp_pdu)
|
||||||
// Get S-GW Control F-TEID
|
// Get S-GW Control F-TEID
|
||||||
srslte::gtp_fteid_t sgw_ctr_fteid = {};
|
srslte::gtp_fteid_t sgw_ctr_fteid = {};
|
||||||
sgw_ctr_fteid.teid = cs_resp_pdu->header.teid;
|
sgw_ctr_fteid.teid = cs_resp_pdu->header.teid;
|
||||||
sgw_ctr_fteid.ipv4 = 0; // FIXME This is not used for now. In the future it will be obtained from the socket addr_info
|
sgw_ctr_fteid.ipv4 = 0; // TODO This is not used for now. In the future it will be obtained from the socket addr_info
|
||||||
|
|
||||||
// Get S-GW S1-u F-TEID
|
// Get S-GW S1-u F-TEID
|
||||||
if (cs_resp->eps_bearer_context_created.s1_u_sgw_f_teid_present == false) {
|
if (cs_resp->eps_bearer_context_created.s1_u_sgw_f_teid_present == false) {
|
||||||
|
@ -308,7 +308,7 @@ bool mme_gtpc::handle_create_session_response(srslte::gtpc_pdu* cs_resp_pdu)
|
||||||
gtpc_ctx->sgw_ctr_fteid = sgw_ctr_fteid;
|
gtpc_ctx->sgw_ctr_fteid = sgw_ctr_fteid;
|
||||||
|
|
||||||
// Set EPS bearer context
|
// Set EPS bearer context
|
||||||
// FIXME default EPS bearer is hard-coded
|
// TODO default EPS bearer is hard-coded
|
||||||
int default_bearer = 5;
|
int default_bearer = 5;
|
||||||
esm_ctx_t* esm_ctx = &nas_ctx->m_esm_ctx[default_bearer];
|
esm_ctx_t* esm_ctx = &nas_ctx->m_esm_ctx[default_bearer];
|
||||||
esm_ctx->pdn_addr_alloc = cs_resp->paa;
|
esm_ctx->pdn_addr_alloc = cs_resp->paa;
|
||||||
|
|
|
@ -1085,7 +1085,7 @@ bool nas::handle_esm_information_response(srslte::byte_buffer_t* nas_rx)
|
||||||
m_nas_log->debug("Getting subscription information -- QCI %d\n", m_esm_ctx[default_bearer].qci);
|
m_nas_log->debug("Getting subscription information -- QCI %d\n", m_esm_ctx[default_bearer].qci);
|
||||||
m_nas_log->console("Getting subscription information -- QCI %d\n", m_esm_ctx[default_bearer].qci);
|
m_nas_log->console("Getting subscription information -- QCI %d\n", m_esm_ctx[default_bearer].qci);
|
||||||
|
|
||||||
// FIXME The packging of GTP-C messages is not ready.
|
// TODO The packging of GTP-C messages is not ready.
|
||||||
// This means that GTP-U tunnels are created with function calls, as opposed to GTP-C.
|
// This means that GTP-U tunnels are created with function calls, as opposed to GTP-C.
|
||||||
m_gtpc->send_create_session_request(m_emm_ctx.imsi);
|
m_gtpc->send_create_session_request(m_emm_ctx.imsi);
|
||||||
return true;
|
return true;
|
||||||
|
@ -1385,7 +1385,7 @@ bool nas::pack_attach_accept(srslte::byte_buffer_t* nas_buffer)
|
||||||
// Attach accept
|
// Attach accept
|
||||||
attach_accept.eps_attach_result = m_emm_ctx.attach_type;
|
attach_accept.eps_attach_result = m_emm_ctx.attach_type;
|
||||||
|
|
||||||
// FIXME: Set t3412 from config
|
// TODO: Set t3412 from config
|
||||||
attach_accept.t3412.unit = LIBLTE_MME_GPRS_TIMER_UNIT_1_MINUTE; // GPRS 1 minute unit
|
attach_accept.t3412.unit = LIBLTE_MME_GPRS_TIMER_UNIT_1_MINUTE; // GPRS 1 minute unit
|
||||||
attach_accept.t3412.value = 30; // 30 minute periodic timer
|
attach_accept.t3412.value = 30; // 30 minute periodic timer
|
||||||
|
|
||||||
|
@ -1447,7 +1447,7 @@ bool nas::pack_attach_accept(srslte::byte_buffer_t* nas_buffer)
|
||||||
|
|
||||||
// set apn
|
// set apn
|
||||||
strncpy(act_def_eps_bearer_context_req.apn.apn, m_apn.c_str(), LIBLTE_STRING_LEN - 1);
|
strncpy(act_def_eps_bearer_context_req.apn.apn, m_apn.c_str(), LIBLTE_STRING_LEN - 1);
|
||||||
act_def_eps_bearer_context_req.proc_transaction_id = m_emm_ctx.procedure_transaction_id; // FIXME
|
act_def_eps_bearer_context_req.proc_transaction_id = m_emm_ctx.procedure_transaction_id; // TODO
|
||||||
|
|
||||||
// Set DNS server
|
// Set DNS server
|
||||||
act_def_eps_bearer_context_req.protocol_cnfg_opts_present = true;
|
act_def_eps_bearer_context_req.protocol_cnfg_opts_present = true;
|
||||||
|
|
|
@ -276,7 +276,7 @@ bool s1ap_nas_transport::handle_uplink_nas_transport(LIBLTE_S1AP_MESSAGE_UPLINKN
|
||||||
case LIBLTE_MME_MSG_TYPE_DETACH_REQUEST:
|
case LIBLTE_MME_MSG_TYPE_DETACH_REQUEST:
|
||||||
m_s1ap_log->info("UL NAS: Detach Request\n");
|
m_s1ap_log->info("UL NAS: Detach Request\n");
|
||||||
m_s1ap_log->console("UL NAS: Detach Request\n");
|
m_s1ap_log->console("UL NAS: Detach Request\n");
|
||||||
// FIXME: check integrity protection in detach request
|
// TODO: check integrity protection in detach request
|
||||||
nas_ctx->handle_detach_request(nas_msg);
|
nas_ctx->handle_detach_request(nas_msg);
|
||||||
break;
|
break;
|
||||||
case LIBLTE_MME_MSG_TYPE_SECURITY_MODE_COMPLETE:
|
case LIBLTE_MME_MSG_TYPE_SECURITY_MODE_COMPLETE:
|
||||||
|
|
|
@ -139,7 +139,7 @@ bool spgw::gtpc::send_s11_pdu(const srslte::gtpc_pdu& pdu)
|
||||||
{
|
{
|
||||||
m_gtpc_log->debug("SPGW Sending S11 PDU! N_Bytes: %zd\n", sizeof(pdu));
|
m_gtpc_log->debug("SPGW Sending S11 PDU! N_Bytes: %zd\n", sizeof(pdu));
|
||||||
|
|
||||||
// FIXME add serialization code here
|
// TODO add serialization code here
|
||||||
// Send S11 message to MME
|
// Send S11 message to MME
|
||||||
int n = sendto(m_s11, &pdu, sizeof(pdu), 0, (const sockaddr*)&m_mme_addr, sizeof(m_mme_addr));
|
int n = sendto(m_s11, &pdu, sizeof(pdu), 0, (const sockaddr*)&m_mme_addr, sizeof(m_mme_addr));
|
||||||
if (n < 0) {
|
if (n < 0) {
|
||||||
|
@ -153,7 +153,7 @@ bool spgw::gtpc::send_s11_pdu(const srslte::gtpc_pdu& pdu)
|
||||||
|
|
||||||
void spgw::gtpc::handle_s11_pdu(srslte::byte_buffer_t* msg)
|
void spgw::gtpc::handle_s11_pdu(srslte::byte_buffer_t* msg)
|
||||||
{
|
{
|
||||||
// FIXME add deserialization code here
|
// TODO add deserialization code here
|
||||||
srslte::gtpc_pdu* pdu = (srslte::gtpc_pdu*)msg->msg;
|
srslte::gtpc_pdu* pdu = (srslte::gtpc_pdu*)msg->msg;
|
||||||
m_gtpc_log->console("Received GTP-C PDU. Message type: %s\n", srslte::gtpc_msg_type_to_str(pdu->header.type));
|
m_gtpc_log->console("Received GTP-C PDU. Message type: %s\n", srslte::gtpc_msg_type_to_str(pdu->header.type));
|
||||||
m_gtpc_log->debug("Received GTP-C PDU. Message type: %s\n", srslte::gtpc_msg_type_to_str(pdu->header.type));
|
m_gtpc_log->debug("Received GTP-C PDU. Message type: %s\n", srslte::gtpc_msg_type_to_str(pdu->header.type));
|
||||||
|
|
|
@ -123,7 +123,7 @@ void mac::start_pcap(srslte::mac_pcap* pcap_)
|
||||||
ra_procedure.start_pcap(pcap);
|
ra_procedure.start_pcap(pcap);
|
||||||
}
|
}
|
||||||
|
|
||||||
// FIXME: Change the function name and implement reconfiguration as in specs
|
// TODO: Change the function name and implement reconfiguration as in specs
|
||||||
// Implement Section 5.8
|
// Implement Section 5.8
|
||||||
void mac::reconfiguration(const uint32_t& cc_idx, const bool& enable)
|
void mac::reconfiguration(const uint32_t& cc_idx, const bool& enable)
|
||||||
{
|
{
|
||||||
|
@ -330,7 +330,7 @@ uint16_t mac::get_dl_sched_rnti(uint32_t tti)
|
||||||
// Priority: SI-RNTI, P-RNTI, RA-RNTI, Temp-RNTI, CRNTI
|
// Priority: SI-RNTI, P-RNTI, RA-RNTI, Temp-RNTI, CRNTI
|
||||||
if (si_window_start > 0) {
|
if (si_window_start > 0) {
|
||||||
if (is_in_window(tti, &si_window_start, &si_window_length)) {
|
if (is_in_window(tti, &si_window_start, &si_window_length)) {
|
||||||
// FIXME: This scheduling decision belongs to RRC
|
// TODO: This scheduling decision belongs to RRC
|
||||||
if (si_window_length > 1) { // This is not a SIB1
|
if (si_window_length > 1) { // This is not a SIB1
|
||||||
if ((tti / 10) % 2 == 0 && (tti % 10) == 5) { // Skip subframe #5 for which SFN mod 2 = 0
|
if ((tti / 10) % 2 == 0 && (tti % 10) == 5) { // Skip subframe #5 for which SFN mod 2 = 0
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -417,7 +417,7 @@ void ra_proc::tb_decoded_ok(const uint32_t tti)
|
||||||
rar_received = true;
|
rar_received = true;
|
||||||
process_timeadv_cmd(rar_pdu_msg.get()->get_ta_cmd());
|
process_timeadv_cmd(rar_pdu_msg.get()->get_ta_cmd());
|
||||||
|
|
||||||
// FIXME: Indicate received target power
|
// TODO: Indicate received target power
|
||||||
// phy_h->set_target_power_rar(iniReceivedTargetPower, (preambleTransmissionCounter-1)*powerRampingStep);
|
// phy_h->set_target_power_rar(iniReceivedTargetPower, (preambleTransmissionCounter-1)*powerRampingStep);
|
||||||
|
|
||||||
uint8_t grant[srslte::rar_subh::RAR_GRANT_LEN];
|
uint8_t grant[srslte::rar_subh::RAR_GRANT_LEN];
|
||||||
|
|
|
@ -1181,7 +1181,7 @@ bool rrc::con_reconfig(asn1::rrc::rrc_conn_recfg_s* reconfig)
|
||||||
// If this is the first con_reconfig after a reestablishment
|
// If this is the first con_reconfig after a reestablishment
|
||||||
if (reestablishment_successful) {
|
if (reestablishment_successful) {
|
||||||
// Reestablish PDCP and RLC for SRB2 and all DRB
|
// Reestablish PDCP and RLC for SRB2 and all DRB
|
||||||
// FIXME: Which is the maximum LCID?
|
// TODO: Which is the maximum LCID?
|
||||||
for (int i = 2; i < SRSLTE_N_RADIO_BEARERS; i++) {
|
for (int i = 2; i < SRSLTE_N_RADIO_BEARERS; i++) {
|
||||||
if (rlc->has_bearer(i)) {
|
if (rlc->has_bearer(i)) {
|
||||||
pdcp->reestablish(i);
|
pdcp->reestablish(i);
|
||||||
|
@ -2737,7 +2737,7 @@ void rrc::rrc_meas::reset()
|
||||||
filter_k_rsrp = filt_coef_e(filt_coef_e::fc4).to_number();
|
filter_k_rsrp = filt_coef_e(filt_coef_e::fc4).to_number();
|
||||||
filter_k_rsrq = filt_coef_e(filt_coef_e::fc4).to_number();
|
filter_k_rsrq = filt_coef_e(filt_coef_e::fc4).to_number();
|
||||||
|
|
||||||
// FIXME: Turn struct into a class and use destructor
|
// TODO: Turn struct into a class and use destructor
|
||||||
std::map<uint32_t, meas_t>::iterator iter = active.begin();
|
std::map<uint32_t, meas_t>::iterator iter = active.begin();
|
||||||
while (iter != active.end()) {
|
while (iter != active.end()) {
|
||||||
remove_meas_id(iter++);
|
remove_meas_id(iter++);
|
||||||
|
|
|
@ -881,8 +881,8 @@ void nas::parse_attach_accept(uint32_t lcid, unique_byte_buffer_t pdu)
|
||||||
liblte_mme_unpack_attach_accept_msg((LIBLTE_BYTE_MSG_STRUCT*)pdu.get(), &attach_accept);
|
liblte_mme_unpack_attach_accept_msg((LIBLTE_BYTE_MSG_STRUCT*)pdu.get(), &attach_accept);
|
||||||
|
|
||||||
if (attach_accept.eps_attach_result == LIBLTE_MME_EPS_ATTACH_RESULT_EPS_ONLY) {
|
if (attach_accept.eps_attach_result == LIBLTE_MME_EPS_ATTACH_RESULT_EPS_ONLY) {
|
||||||
// FIXME: Handle t3412.unit
|
// TODO: Handle t3412.unit
|
||||||
// FIXME: Handle tai_list
|
// TODO: Handle tai_list
|
||||||
if (attach_accept.guti_present) {
|
if (attach_accept.guti_present) {
|
||||||
memcpy(&ctxt.guti, &attach_accept.guti.guti, sizeof(LIBLTE_MME_EPS_MOBILE_ID_GUTI_STRUCT));
|
memcpy(&ctxt.guti, &attach_accept.guti.guti, sizeof(LIBLTE_MME_EPS_MOBILE_ID_GUTI_STRUCT));
|
||||||
have_guti = true;
|
have_guti = true;
|
||||||
|
@ -1066,7 +1066,7 @@ void nas::parse_attach_accept(uint32_t lcid, unique_byte_buffer_t pdu)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// FIXME: Handle the following parameters
|
// TODO: Handle the following parameters
|
||||||
// act_def_eps_bearer_context_req.eps_qos.qci
|
// act_def_eps_bearer_context_req.eps_qos.qci
|
||||||
// act_def_eps_bearer_context_req.eps_qos.br_present
|
// act_def_eps_bearer_context_req.eps_qos.br_present
|
||||||
// act_def_eps_bearer_context_req.eps_qos.br_ext_present
|
// act_def_eps_bearer_context_req.eps_qos.br_ext_present
|
||||||
|
@ -1079,7 +1079,7 @@ void nas::parse_attach_accept(uint32_t lcid, unique_byte_buffer_t pdu)
|
||||||
// act_def_eps_bearer_context_req.protocol_cnfg_opts_present
|
// act_def_eps_bearer_context_req.protocol_cnfg_opts_present
|
||||||
// act_def_eps_bearer_context_req.connectivity_type_present
|
// act_def_eps_bearer_context_req.connectivity_type_present
|
||||||
|
|
||||||
// FIXME: Setup the default EPS bearer context
|
// TODO: Setup the default EPS bearer context
|
||||||
|
|
||||||
eps_bearer_t bearer = {};
|
eps_bearer_t bearer = {};
|
||||||
bearer.type = DEFAULT_EPS_BEARER;
|
bearer.type = DEFAULT_EPS_BEARER;
|
||||||
|
@ -1092,7 +1092,7 @@ void nas::parse_attach_accept(uint32_t lcid, unique_byte_buffer_t pdu)
|
||||||
send_attach_complete(transaction_id, bearer.eps_bearer_id);
|
send_attach_complete(transaction_id, bearer.eps_bearer_id);
|
||||||
} else {
|
} else {
|
||||||
// bearer already exists (perhaps the attach complete got lost and this is a retx?)
|
// bearer already exists (perhaps the attach complete got lost and this is a retx?)
|
||||||
// FIXME: what are we supposed to do in this case?
|
// TODO: what are we supposed to do in this case?
|
||||||
nas_log->error("Error adding EPS bearer.\n");
|
nas_log->error("Error adding EPS bearer.\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1119,7 +1119,7 @@ void nas::parse_attach_reject(uint32_t lcid, unique_byte_buffer_t pdu)
|
||||||
}
|
}
|
||||||
|
|
||||||
enter_emm_deregistered();
|
enter_emm_deregistered();
|
||||||
// FIXME: Command RRC to release?
|
// TODO: Command RRC to release?
|
||||||
}
|
}
|
||||||
|
|
||||||
void nas::parse_authentication_request(uint32_t lcid, unique_byte_buffer_t pdu, const uint8_t sec_hdr_type)
|
void nas::parse_authentication_request(uint32_t lcid, unique_byte_buffer_t pdu, const uint8_t sec_hdr_type)
|
||||||
|
@ -1172,7 +1172,7 @@ void nas::parse_authentication_reject(uint32_t lcid, unique_byte_buffer_t pdu)
|
||||||
{
|
{
|
||||||
nas_log->warning("Received Authentication Reject\n");
|
nas_log->warning("Received Authentication Reject\n");
|
||||||
enter_emm_deregistered();
|
enter_emm_deregistered();
|
||||||
// FIXME: Command RRC to release?
|
// TODO: Command RRC to release?
|
||||||
}
|
}
|
||||||
|
|
||||||
void nas::parse_identity_request(unique_byte_buffer_t pdu, const uint8_t sec_hdr_type)
|
void nas::parse_identity_request(unique_byte_buffer_t pdu, const uint8_t sec_hdr_type)
|
||||||
|
@ -1319,7 +1319,7 @@ void nas::parse_service_reject(uint32_t lcid, unique_byte_buffer_t pdu)
|
||||||
"Received service reject with EMM cause=0x%x and t3446=%d\n", service_reject.emm_cause, service_reject.t3446);
|
"Received service reject with EMM cause=0x%x and t3446=%d\n", service_reject.emm_cause, service_reject.t3446);
|
||||||
}
|
}
|
||||||
|
|
||||||
// FIXME: handle NAS backoff-timers correctly
|
// TODO: handle NAS backoff-timers correctly
|
||||||
|
|
||||||
enter_emm_deregistered();
|
enter_emm_deregistered();
|
||||||
|
|
||||||
|
@ -1401,7 +1401,7 @@ void nas::parse_activate_dedicated_eps_bearer_context_request(uint32_t lcid, uni
|
||||||
// check the a linked default bearer exists
|
// check the a linked default bearer exists
|
||||||
if (eps_bearer.find(request.linked_eps_bearer_id) == eps_bearer.end()) {
|
if (eps_bearer.find(request.linked_eps_bearer_id) == eps_bearer.end()) {
|
||||||
nas_log->error("No linked default EPS bearer found (%d).\n", request.linked_eps_bearer_id);
|
nas_log->error("No linked default EPS bearer found (%d).\n", request.linked_eps_bearer_id);
|
||||||
// FIXME: send reject according to 24.301 Sec 6.4.2.5 paragraph c
|
// TODO: send reject according to 24.301 Sec 6.4.2.5 paragraph c
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -222,7 +222,7 @@ auth_result_t pcsc_usim::generate_authentication_response(uint8_t* rand,
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
// FIXME: Extract ak and seq from auts
|
// TODO: Extract ak and seq from auts
|
||||||
memset(ak, 0x00, AK_LEN);
|
memset(ak, 0x00, AK_LEN);
|
||||||
|
|
||||||
// Extract sqn from autn
|
// Extract sqn from autn
|
||||||
|
|
|
@ -110,7 +110,7 @@ private:
|
||||||
|
|
||||||
// printf("Configuring attenuation of %s to %ddB\n", id.GetString(), att["Value"].GetInt());
|
// printf("Configuring attenuation of %s to %ddB\n", id.GetString(), att["Value"].GetInt());
|
||||||
|
|
||||||
// FIXME: actually do configuration
|
// TODO: actually do configuration
|
||||||
}
|
}
|
||||||
|
|
||||||
// What else to check?
|
// What else to check?
|
||||||
|
|
|
@ -152,7 +152,7 @@ private:
|
||||||
|
|
||||||
syssim->add_ccch_pdu(std::move(pdu));
|
syssim->add_ccch_pdu(std::move(pdu));
|
||||||
|
|
||||||
// FIXME: is there a better way to check for RRCConnectionReestablishment?
|
// TODO: is there a better way to check for RRCConnectionReestablishment?
|
||||||
if (ccch_is_rrc_reestablishment(document)) {
|
if (ccch_is_rrc_reestablishment(document)) {
|
||||||
syssim->reestablish_bearer(1);
|
syssim->reestablish_bearer(1);
|
||||||
}
|
}
|
||||||
|
|
|
@ -236,7 +236,7 @@ private:
|
||||||
log->info("Configure DRB%d\n", id["Drb"].GetInt());
|
log->info("Configure DRB%d\n", id["Drb"].GetInt());
|
||||||
}
|
}
|
||||||
|
|
||||||
// FIXME: actually do configuration
|
// TODO: actually do configuration
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string resp = ttcn3_helpers::get_basic_sys_req_cnf(cell_id.GetString(), "RadioBearerList");
|
std::string resp = ttcn3_helpers::get_basic_sys_req_cnf(cell_id.GetString(), "RadioBearerList");
|
||||||
|
|
|
@ -387,7 +387,7 @@ public:
|
||||||
{
|
{
|
||||||
// Provide new UL grant to UE
|
// Provide new UL grant to UE
|
||||||
mac_interface_phy_lte::mac_grant_ul_t ul_grant = {};
|
mac_interface_phy_lte::mac_grant_ul_t ul_grant = {};
|
||||||
ul_grant.tb.tbs = 100; // FIXME: reasonable size?
|
ul_grant.tb.tbs = 100; // TODO: reasonable size?
|
||||||
ul_grant.tb.ndi_present = true;
|
ul_grant.tb.ndi_present = true;
|
||||||
ul_grant.tb.ndi = get_ndi_for_new_ul_tx(tti);
|
ul_grant.tb.ndi = get_ndi_for_new_ul_tx(tti);
|
||||||
ul_grant.rnti = crnti;
|
ul_grant.rnti = crnti;
|
||||||
|
|
Loading…
Reference in New Issue