--- /dev/null
+# *******************************************************************************
+# * Copyright 2020 Samsung Electronics All Rights Reserved.
+# *
+# * Licensed under the Apache License, Version 2.0 (the "License");
+# * you may not use this file except in compliance with the License.
+# * You may obtain a copy of the License at
+# *
+# * http://www.apache.org/licenses/LICENSE-2.0
+# *
+# * Unless required by applicable law or agreed to in writing, software
+# * distributed under the License is distributed on an "AS IS" BASIS,
+# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# * See the License for the specific language governing permissions and
+# * limitations under the License.
+# *
+# *******************************************************************************
+from ctypes import POINTER, Structure
+from ctypes import c_long, c_size_t, c_int, c_uint8
+
+
+class indication_msg_t(Structure):
+ """
+ A class that mirrored E2AP's RICIndicationMessage with python
+
+ c-type struct of RICIndicationMessage
+ ---------------------------------------
+ typedef struct RICindicationMessage {
+ long requestorID;
+ long requestSequenceNumber;
+ long ranfunctionID;
+ long actionID;
+ long indicationSN;
+ long indicationType;
+ uint8_t *indicationHeader;
+ size_t indicationHeaderSize;
+ uint8_t *indicationMessage;
+ size_t indicationMessageSize;
+ uint8_t *callProcessID;
+ size_t callProcessIDSize;
+ } RICindicationMsg;
+ ---------------------------------------
+ """
+ _fields_ = [
+ ("request_id", c_long),
+ ("request_sequence_number", c_long),
+ ("function_id", c_long),
+ ("action_id", c_long),
+ ("indication_sequence_number", c_long),
+ ("indication_type", c_long),
+ ("indication_header", POINTER(c_uint8)),
+ ("indication_header_length", c_size_t),
+ ("indication_message", POINTER(c_uint8)),
+ ("indication_message_length", c_size_t),
+ ("call_process_id", POINTER(c_uint8)),
+ ("call_process_id_length", c_size_t),
+ ]
+
+
+class causeItem_msg_t(Structure):
+ """
+ A class that mirrored E2AP's RICcauseItem with python
+
+ c-type struct of RICcauseItem
+ -----------------------------
+ typedef struct RICcauseItem {
+ int ricCauseType;
+ long ricCauseID;
+ } RICcauseItem;
+ -----------------------------
+ """
+ _fields_ = [
+ ("cause_type", c_int),
+ ("cause_id", c_long),
+ ]
+
+
+class actionAdmittedList_msg_t(Structure):
+ """
+ A class that mirrored E2AP's RICactionAdmittedList with python
+
+ c-type struct of RICactionAdmittedList
+ --------------------------------------
+ typedef struct RICactionAdmittedList {
+ long ricActionID[16];
+ int count;
+ } RICactionAdmittedList;
+ --------------------------------------
+ """
+ _fields_ = [
+ ("request_id", c_long * 16),
+ ("count", c_int),
+ ]
+
+
+class actionNotAdmittedList_msg_t(Structure):
+ """
+ A class that mirrored E2AP's RICactionNotAdmittedList with python
+
+ c-type struct of RICactionNotAdmittedList
+ -------------------------------------------------------
+ typedef struct RICactionNotAdmittedList {
+ long ricActionID[16];
+ RICcauseItem ricCause[16];
+ int count;
+ } RICactionNotAdmittedList;
+ -------------------------------------------------------
+ """
+ _fields_ = [
+ ("request_id", c_long * 16),
+ ("cause", causeItem_msg_t * 16),
+ ("count", c_int),
+ ]
+
+
+class subResp_msg_t(Structure):
+ """
+ A class that mirrored E2AP's subscriptionResponseMessage with python
+
+ c-type struct of subscriptionResponseMessage
+ -------------------------------------------------------
+ typedef struct RICsubscriptionResponseMessage {
+ long requestorID;
+ long requestSequenceNumber;
+ long ranfunctionID;
+ RICactionAdmittedList ricActionAdmittedList;
+ RICactionNotAdmittedList ricActionNotAdmittedList;
+ } RICsubscriptionResponseMsg;
+ -------------------------------------------------------
+ """
+ _fields_ = [
+ ("request_id", c_long),
+ ("request_sequence_number", c_long),
+ ("function_id", c_long),
+ ("action_admitted_list", actionAdmittedList_msg_t),
+ ("action_not_admitted_list", actionNotAdmittedList_msg_t),
+ ]
+
+
+class ric_action_definition_t(Structure):
+ """
+ A class that mirrored E2AP's RICactionDefinition with python
+
+ c-type struct of RICactionDefinition
+ -------------------------------------------------------
+ typedef struct RICactionDefinition {
+ uint8_t *actionDefinition;
+ int size;
+ } RICactionDefinition;
+ -------------------------------------------------------
+ """
+ _fields_ = [
+ ("action_definition", POINTER(c_uint8)),
+ ("size", c_int),
+ ]
+
+
+class ric_subsequent_action_t(Structure):
+ """
+ A class that mirrored E2AP's RICSubsequentAction with python
+
+ c-type struct of RICSubsequentAction
+ -------------------------------------------------------
+ typedef struct RICSubsequentAction {
+ int isValid;
+ long subsequentActionType;
+ long timeToWait;
+ } RICSubsequentAction;
+ -------------------------------------------------------
+ """
+ _fields_ = [
+ ("is_valid", c_int),
+ ("subsequent_action_type", c_long),
+ ("time_to_wait", c_long),
+ ]