def check_data_port_connection(self, check_data_port):
        """Checks the connection validity of a data port

        The method is called by a child state to check the validity of a data port in case it is connected with data
        flows. The data port does not belong to 'self', but to one of self.states.
        If the data port is connected to a data flow, the method checks, whether these connect consistent data types
        of ports.

        :param rafcon.core.data_port.DataPort check_data_port: The port to check
        :return: valid, message
        """
        for data_flow in self.data_flows.values():
            # Check whether the data flow connects the given port
            from_port = self.get_data_port(data_flow.from_state, data_flow.from_key)
            to_port = self.get_data_port(data_flow.to_state, data_flow.to_key)
            if check_data_port is from_port or check_data_port is to_port:
                # check if one of the data_types if type 'object'; in this case the data flow is always valid
                if not (from_port.data_type is object or to_port.data_type is object):
                    if not type_inherits_of_type(from_port.data_type, to_port.data_type):
                        return False, "Connection of two non-compatible data types"
        return True, "valid"
Checks the connection validity of a data port

        The method is called by a child state to check the validity of a data port in case it is connected with data
        flows. The data port does not belong to 'self', but to one of self.states.
        If the data port is connected to a data flow, the method checks, whether these connect consistent data types
        of ports.

        :param rafcon.core.data_port.DataPort check_data_port: The port to check
        :return: valid, message