replace FIXME with TODO

master
Andre Puschmann 5 years ago
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…
Cancel
Save