Exemplo n.º 1
0
    def __init__(self, cwmin=None, cwmax=None, retrylimit=None, \
                       usecsma=False, **kwargs):
        """Constructor.

        :param cwmin: Minimum contention window size.
        :param cwmax: Maximum contention window size.
        :param retrylimit: Maximum number of retries allowed.
        :param usecsma: Boolean flag; if true, use CSMA/CA without RTS-CTS
                        reservation messages.
        :param kwargs: Additional keywords passed to `configure()`.

        The default parameters are specified by the class.
        """
        if cwmin is None: cwmin = self.__class__.cwmin
        if cwmax is None: cwmax = self.__class__.cwmax
        if retrylimit is None: retrylimit = self.__class__.retrylimit
        # timing parameters
        self.sifs, self.slottime = None, None
        self.cwmin, self.cwmax   = cwmin, cwmax
        self.cslot = None
        # events and other members
        self.datatosend = None
        self.retrycount = None
        self.retrylimit = retrylimit
        self.usecsma = usecsma
        self.rxdata = SimEvent(name=".rxdata")
        self._ctsduration = None
        self._ackduration = None
        # call CSMAC constructor
        CSMAC.__init__(self, **kwargs)
        self.rxdata.name = "%s.rxdata"%(self.name)