def METHOD_NAME(self, period=.2, stagger=0, type=None):
    if self.cnode is None:
        self.initializeCnode()
    BT = DistributedSmoothNodeBase.BroadcastTypes
    if type is None:
        type = BT.FULL
    # set the broadcast type
    self.broadcastType = type
    broadcastFuncs = {
        BT.FULL: self.cnode.broadcastPosHprFull,
        BT.XYH:  self.cnode.broadcastPosHprXyh,
        BT.XY:  self.cnode.broadcastPosHprXy,
    }
    # this comment is here so it will show up in a grep for 'def d_broadcastPosHpr'
    self.d_broadcastPosHpr = broadcastFuncs[self.broadcastType]
    # Set stagger to non-zero to randomly delay the initial task execution
    # over 'period' seconds, to spread out task processing over time
    # when a large number of SmoothNodes are created simultaneously.
    taskName = self.getPosHprBroadcastTaskName()
    # Set up telemetry optimization variables
    self.cnode.initialize(self, self.dclass, self.doId)
    self.setPosHprBroadcastPeriod(period)
    # Broadcast our initial position
    self.b_clearSmoothing()
    self.cnode.sendEverything()
    # remove any old tasks
    taskMgr.remove(taskName)
    # spawn the new task
    delay = 0.
    if stagger:
        delay = randFloat(period)
    if self.wantSmoothPosBroadcastTask():
        taskMgr.doMethodLater(self.__broadcastPeriod + delay,
                              self._posHprBroadcast, taskName)