XaPP does not add the Control Request Acknowledge IE now when responding
Signed-off-by: Ashwin Sridharan <asridharan@research.att.com>
Change-Id: I9e9e7cef293059dbc4467dd8fb8814c00cf432ad
#include <e2ap_control.hpp>
#include <e2ap_control.hpp>
-// Set up the initiating message and also allocate protocolIEs in container
-// Note : this bypasses requirement to use ASN_SEQUENCE_ADD. We can directly
-// assign pointers to the array in ProtocolIE. However, this also leaves us on the
-// hook to manually clear the memory
-
+// Set up memory allocations for each IE for encoding
+// We are responsible for memory management for each IE for encoding
+// Hence destructor should clear out memory
+// When decoding, we rely on asn1c macro (ASN_STRUCT_FREE to be called
+// for releasing memory by external calling function)
ric_control_request::ric_control_request(void){
e2ap_pdu_obj = 0;
ric_control_request::ric_control_request(void){
e2ap_pdu_obj = 0;
}
E2N_RICcontrolRequest_t * ric_control_request = &(initMsg->value.choice.RICcontrolRequest);
}
E2N_RICcontrolRequest_t * ric_control_request = &(initMsg->value.choice.RICcontrolRequest);
- ric_control_request->protocolIEs.list.count = 0;
+ ric_control_request->protocolIEs.list.count = 0; // reset
// for(i = 0; i < NUM_CONTROL_REQUEST_IES;i++){
// memset(&(IE_array[i]), 0, sizeof(RICcontrolRequest_IEs_t));
// }
// for(i = 0; i < NUM_CONTROL_REQUEST_IES;i++){
// memset(&(IE_array[i]), 0, sizeof(RICcontrolRequest_IEs_t));
// }
ie_index = 0;
E2N_RICcontrolRequest_IEs_t *ies_ricreq = &IE_array[ie_index];
ies_ricreq->criticality = E2N_Criticality_reject;
ie_index = 0;
E2N_RICcontrolRequest_IEs_t *ies_ricreq = &IE_array[ie_index];
ies_ricreq->criticality = E2N_Criticality_reject;
ricrequest_ie->ricRequestSequenceNumber = dinput.req_seq_no;
ASN_SEQUENCE_ADD(&(ric_control_request->protocolIEs), &(IE_array[ie_index]));
ricrequest_ie->ricRequestSequenceNumber = dinput.req_seq_no;
ASN_SEQUENCE_ADD(&(ric_control_request->protocolIEs), &(IE_array[ie_index]));
ie_index = 1;
E2N_RICcontrolRequest_IEs_t *ies_ranfunc = &IE_array[ie_index];
ies_ranfunc->criticality = E2N_Criticality_reject;
ie_index = 1;
E2N_RICcontrolRequest_IEs_t *ies_ranfunc = &IE_array[ie_index];
ies_ranfunc->criticality = E2N_Criticality_reject;
ASN_SEQUENCE_ADD(&(ric_control_request->protocolIEs), &(IE_array[ie_index]));
ASN_SEQUENCE_ADD(&(ric_control_request->protocolIEs), &(IE_array[ie_index]));
- // ie_index = 2;
- // RICcontrolRequest_IEs_t *ies_riccallprocessid = &IE_array[ie_index];
- // ies_riccallprocessid->criticality = E2N_Criticality_reject;
- // ies_riccallprocessid->id = E2N_ProtocolIE_ID_id_RICcallProcessID;
- // ies_riccallprocessid->value.present = E2N_RICcontrolRequest_IEs__value_PR_RICcallProcessID;
- // RICcallProcessID_t *riccallprocessid_ie = &ies_riccallprocessid->value.choice.RICcallProcessID;
- // riccallprocessid_ie->buf = dinput.call_process_id;
- // riccallprocessid_ie->size = dinput.call_process_id_size;
-
ie_index = 2;
E2N_RICcontrolRequest_IEs_t *ies_richead = &IE_array[ie_index];
ies_richead->criticality = E2N_Criticality_reject;
ie_index = 2;
E2N_RICcontrolRequest_IEs_t *ies_richead = &IE_array[ie_index];
ies_richead->criticality = E2N_Criticality_reject;
richeader_ie->buf = dinput.control_header;
richeader_ie->size = dinput.control_header_size;
ASN_SEQUENCE_ADD(&(ric_control_request->protocolIEs), &(IE_array[ie_index]));
richeader_ie->buf = dinput.control_header;
richeader_ie->size = dinput.control_header_size;
ASN_SEQUENCE_ADD(&(ric_control_request->protocolIEs), &(IE_array[ie_index]));
ie_index = 3;
E2N_RICcontrolRequest_IEs_t *ies_indmsg = &IE_array[ie_index];
ies_indmsg->criticality = E2N_Criticality_reject;
ie_index = 3;
E2N_RICcontrolRequest_IEs_t *ies_indmsg = &IE_array[ie_index];
ies_indmsg->criticality = E2N_Criticality_reject;
ricmsg_ie->size = dinput.control_msg_size;
ASN_SEQUENCE_ADD(&(ric_control_request->protocolIEs), &(IE_array[ie_index]));
ricmsg_ie->size = dinput.control_msg_size;
ASN_SEQUENCE_ADD(&(ric_control_request->protocolIEs), &(IE_array[ie_index]));
- E2N_RICcontrolRequest_IEs_t *ies_indtyp = &IE_array[ie_index];
- ies_indtyp->criticality = E2N_Criticality_reject;
- ies_indtyp->id = E2N_ProtocolIE_ID_id_RICcontrolAckRequest;
- ies_indtyp->value.present = E2N_RICcontrolRequest_IEs__value_PR_RICcontrolAckRequest;
- E2N_RICcontrolAckRequest_t *ricackreq_ie = &ies_indtyp->value.choice.RICcontrolAckRequest;
- *ricackreq_ie = dinput.control_ack;
- ASN_SEQUENCE_ADD(&(ric_control_request->protocolIEs), &(IE_array[ie_index]));
+ if (dinput.control_ack >= 0){
+ E2N_RICcontrolRequest_IEs_t *ies_indtyp = &IE_array[ie_index];
+ ies_indtyp->criticality = E2N_Criticality_reject;
+ ies_indtyp->id = E2N_ProtocolIE_ID_id_RICcontrolAckRequest;
+ ies_indtyp->value.present = E2N_RICcontrolRequest_IEs__value_PR_RICcontrolAckRequest;
+ E2N_RICcontrolAckRequest_t *ricackreq_ie = &ies_indtyp->value.choice.RICcontrolAckRequest;
+ *ricackreq_ie = dinput.control_ack;
+ ASN_SEQUENCE_ADD(&(ric_control_request->protocolIEs), &(IE_array[ie_index]));
+ }
ie_index = 5;
if(dinput.call_process_id_size > 0){
E2N_RICcontrolRequest_IEs_t *ies_callprocid = &IE_array[ie_index];
ie_index = 5;
if(dinput.call_process_id_size > 0){
E2N_RICcontrolRequest_IEs_t *ies_callprocid = &IE_array[ie_index];
typedef struct ric_control_helper ric_control_helper;
struct ric_control_helper{
typedef struct ric_control_helper ric_control_helper;
struct ric_control_helper{
- ric_control_helper(void):req_id(1), req_seq_no(1), func_id(0), action_id(1), control_ack(1), cause(0), sub_cause(0), control_status(1), control_msg(0), control_msg_size(0), control_header(0), control_header_size(0), call_process_id(0), call_process_id_size(0){};
+ ric_control_helper(void):req_id(1), req_seq_no(1), func_id(0), action_id(1), control_ack(-1), cause(0), sub_cause(0), control_status(1), control_msg(0), control_msg_size(0), control_header(0), control_header_size(0), call_process_id(0), call_process_id_size(0){};
long int req_id, req_seq_no, func_id, action_id, control_ack, cause, sub_cause, control_status;
long int req_id, req_seq_no, func_id, action_id, control_ack, cause, sub_cause, control_status;
#include <e2ap_indication.hpp>
#include <e2ap_indication.hpp>
-// Set up the initiating message and also allocate protocolIEs in container
-// Note : this bypasses requirement to use ASN_SEQUENCE_ADD. We can directly
-// assign pointers to the array in ProtocolIE. However, this also leaves us on the
-// hook to manually clear the memory
-
+// Set up memory allocations for each IE for encoding
+// We are responsible for memory management for each IE for encoding
+// Hence destructor should clear out memory
+// When decoding, we rely on asn1c macro (ASN_STRUCT_FREE to be called
+// for releasing memory by external calling function)
ric_indication::ric_indication(void){
e2ap_pdu_obj = 0;
ric_indication::ric_indication(void){
e2ap_pdu_obj = 0;
#include "subscription_request.hpp"
#include "subscription_request.hpp"
+
+
+// Set up memory allocations for each IE for encoding
+// We are responsible for memory management for each IE for encoding
+// Hence destructor should clear out memory
+// When decoding, we rely on asn1c macro (ASN_STRUCT_FREE to be called
+// for releasing memory by external calling function)
subscription_request::subscription_request(void){
_name = "default";
subscription_request::subscription_request(void){
_name = "default";
control_data.req_id = indication_data.req_id;
control_data.req_seq_no = indication_data.req_seq_no;
control_data.func_id = indication_data.func_id;
control_data.req_id = indication_data.req_id;
control_data.req_seq_no = indication_data.req_seq_no;
control_data.func_id = indication_data.func_id;
- control_data.control_ack = 1; // no ack required
+ //control_data.control_ack = 0; // no ack required
control_data.call_process_id = indication_data.call_process_id;
control_data.call_process_id_size = indication_data.call_process_id_size;
res = control_request_processor.encode_e2ap_control_request(message->payload, &mlen, control_data);
control_data.call_process_id = indication_data.call_process_id;
control_data.call_process_id_size = indication_data.call_process_id_size;
res = control_request_processor.encode_e2ap_control_request(message->payload, &mlen, control_data);