ir_node.py
Go to the documentation of this file.
00001 #!/usr/bin/env python
00002 # Copyright (c) 2013, Oregon State University
00003 # All rights reserved.
00004 
00005 # Redistribution and use in source and binary forms, with or without
00006 # modification, are permitted provided that the following conditions are met:
00007 #     * Redistributions of source code must retain the above copyright
00008 #       notice, this list of conditions and the following disclaimer.
00009 #     * Redistributions in binary form must reproduce the above copyright
00010 #       notice, this list of conditions and the following disclaimer in the
00011 #       documentation and/or other materials provided with the distribution.
00012 #     * Neither the name of the Oregon State University nor the
00013 #       names of its contributors may be used to endorse or promote products
00014 #       derived from this software without specific prior written permission.
00015 
00016 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
00017 # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
00018 # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
00019 # DISCLAIMED. IN NO EVENT SHALL OREGON STATE UNIVERSITY BE LIABLE FOR ANY
00020 # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
00021 # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
00022 # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
00023 # ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
00024 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
00025 # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
00026 
00027 # Author Dan Lazewatsky/lazewatd@engr.orst.edu
00028 
00029 import roslib; roslib.load_manifest('ir_comm')
00030 import sys, rospy
00031 from ir_comm.device import ROSIr
00032 from ir_comm.utils import loadIRCode
00033 import glob, os
00034 from std_msgs.msg import String
00035 
00036 class IRTransmitter(object):
00037         codes = {}
00038         def __init__(self, code_dir):
00039                 self.code_dir = code_dir
00040                 self.ir = ROSIr()
00041                 self.load_codes()
00042 
00043         def load_codes(self):
00044                 print 'Loading...'
00045                 for path in glob.glob(self.code_dir + '/*.pkl'):
00046                         name = '_'.join(os.path.split(path)[-1].split('.')[:-1])
00047                         self.codes[name] = loadIRCode(path)
00048                         print '  ', name
00049 
00050         def code_cb(self, msg):
00051                 if msg.data in self.codes:
00052                         self.ir.ir.transmit(*self.codes[msg.data])
00053                         rospy.loginfo('Transmitted %s' % msg.data)
00054 
00055 if __name__ == '__main__':
00056         rospy.init_node('ir_node')
00057         try:
00058                 transmitter = IRTransmitter(rospy.get_param('~code_dir'))
00059                 rospy.Subscriber('ir_code_name', String, transmitter.code_cb)
00060                 rospy.spin()
00061         except KeyError:
00062                 rospy.logerr('code_dir parameter is not set')


ir_comm
Author(s): Dan Lazewatsky
autogenerated on Mon Oct 6 2014 01:02:01