Implement F1 UE Ctxt Modif Transmission Action Indicator
Implement the Transmission Action Indicator F1AP forwarding logic, and add it to the F1 internal representation structure. After the transmission interrupt timer (during which SRB1 can send messages), the UE will be out-of-sync (we assume it's not there anymore). Co-authored-by: batuhanduyuler <batuhan.duyuler@firecell.io> Co-authored-by: rmagueta <rmagueta@allbesmart.pt>
This commit is contained in:
co-authored by
batuhanduyuler
rmagueta
parent
d70561d509
commit
004403c84d
@@ -1023,12 +1023,15 @@ int CU_send_UE_CONTEXT_MODIFICATION_REQUEST(sctp_assoc_t assoc_id, f1ap_ue_conte
|
||||
|
||||
/* optional */
|
||||
/* c7. TransmissionActionIndicator */
|
||||
if (0) {
|
||||
if (f1ap_ue_context_modification_req->transm_action_ind != NULL) {
|
||||
asn1cSequenceAdd(out->protocolIEs.list, F1AP_UEContextModificationRequestIEs_t, ie7);
|
||||
ie7->id = F1AP_ProtocolIE_ID_id_TransmissionActionIndicator;
|
||||
ie7->criticality = F1AP_Criticality_ignore;
|
||||
ie7->value.present = F1AP_UEContextModificationRequestIEs__value_PR_TransmissionActionIndicator;
|
||||
ie7->value.choice.TransmissionActionIndicator = F1AP_TransmissionActionIndicator_stop;
|
||||
ie7->value.choice.TransmissionActionIndicator = *f1ap_ue_context_modification_req->transm_action_ind;
|
||||
// Stop is guaranteed to be 0, by restart might be different from 1
|
||||
static_assert((int)F1AP_TransmissionActionIndicator_restart == (int)TransmActionInd_RESTART,
|
||||
"mismatch of ASN.1 and internal representation\n");
|
||||
}
|
||||
|
||||
/* optional */
|
||||
|
||||
@@ -911,6 +911,21 @@ int DU_handle_UE_CONTEXT_MODIFICATION_REQUEST(instance_t instance, sctp_assoc_t
|
||||
F1AP_FIND_PROTOCOLIE_BY_ID(F1AP_UEContextModificationRequestIEs_t, ieSrb, container,
|
||||
F1AP_ProtocolIE_ID_id_SRBs_ToBeSetupMod_List, false);
|
||||
|
||||
F1AP_UEContextModificationRequestIEs_t *ieTxInd;
|
||||
F1AP_FIND_PROTOCOLIE_BY_ID(F1AP_UEContextModificationRequestIEs_t,
|
||||
ieTxInd,
|
||||
container,
|
||||
F1AP_ProtocolIE_ID_id_TransmissionActionIndicator,
|
||||
false);
|
||||
|
||||
if (ieTxInd != NULL) {
|
||||
f1ap_ue_context_modification_req->transm_action_ind = calloc_or_fail(1, sizeof(*f1ap_ue_context_modification_req->transm_action_ind));
|
||||
*f1ap_ue_context_modification_req->transm_action_ind = ieTxInd->value.choice.TransmissionActionIndicator;
|
||||
// Stop is guaranteed to be 0, by restart might be different from 1
|
||||
static_assert((int)F1AP_TransmissionActionIndicator_restart == (int)TransmActionInd_RESTART,
|
||||
"mismatch of ASN.1 and internal representation\n");
|
||||
}
|
||||
|
||||
if(ieSrb != NULL) {
|
||||
f1ap_ue_context_modification_req->srbs_to_be_setup_length = ieSrb->value.choice.SRBs_ToBeSetupMod_List.list.count;
|
||||
f1ap_ue_context_modification_req->srbs_to_be_setup = calloc(f1ap_ue_context_modification_req->srbs_to_be_setup_length,
|
||||
|
||||
Reference in New Issue
Block a user