Go to the documentation of this file.00001 import re
00002 from threading import Thread
00003 import rostopic
00004 from BAL.Handlers.keepAliveHandler import KeepAliveHandler
00005 from BAL.Header.Requests.PublishRequest import PublishRequest
00006
00007 __author__ = 'tom1231'
00008 import rospy
00009 from rospy import Publisher
00010 from ric_board.msg import PPM
00011 from BAL.Interfaces.Device import Device
00012
00013
00014 class RiCPPM(Device):
00015 def __init__(self, param, output):
00016 Device.__init__(self, param.getPPMName(), output)
00017 self._pub = Publisher('%s' % self._name, PPM, queue_size=param.getPPMPubHz())
00018 self._haveRightToPublish = False
00019
00020
00021 def getType(self): return PPM
00022
00023 def publish(self, data):
00024 msg = PPM()
00025 msg.channels = data.getChannels()
00026 self._pub.publish(msg)
00027
00028 def checkForSubscribers(self):
00029 try:
00030 subCheck = re.search('Subscribers:.*', rostopic.get_info_text(self._pub.name)).group(0).split(': ')[1]
00031
00032 if not self._haveRightToPublish and subCheck == '':
00033 self._output.write(PublishRequest(7, 0, True).dataTosend())
00034 self._haveRightToPublish = True
00035
00036 elif self._haveRightToPublish and subCheck == 'None':
00037 self._output.write(PublishRequest(7, 0, False).dataTosend())
00038 self._haveRightToPublish = False
00039 except: pass