def __init__(self, camera, settings_file = None):
        # Gettings settings from settings file
        if not settings_file:
            try:
                self.settings = json.load (open (proto_base_path + "/src/communication/Video_Settings.json", "r"))
            except:
                self.debug.print_d ("Video_settings.json is not in json format!")
                sys.exit ()
        else:
            try:
                self.settings = json.load (open (settings_file, "r"))
            except:
                self.debug.print_d ("Specified file [{sfile}] doesn't exist or is not in json format!".format (sfile = settings_file))
                sys.exit ()

        context = zmq.Context ()

        self.debug = debugging ()

        # ZMQ Settings  
        self.confirmer = context.socket (zmq.PUB)
        #self.confirmer.setsockopt (zmq.SNDTIMEO, 5000)
        self.confirmer.bind ("tcp://" + self.settings["Reciever_IP"] + ":" + self.settings["Reciever_Port"])

        self.reciever = context.socket (zmq.SUB)
        self.reciever.setsockopt (zmq.SUBSCRIBE, "")
        #self.reciever.setsockopt (zmq.RCVTIMEO, 5000)
        self.reciever.connect ("tcp://" + self.settings["Server_IP"] + ":" + self.settings["Server_Port"])

        com = communicator ("Pinger_Base")

        self.pinger = passive_pinger (communicator=com)
        self.pinger.daemon = True
        self.pinger.start ()
def main ():
	com = communicator ("Motors", settings_file="canned_communication_settings.json", debug=True)

	i = 0
	while True:
		msg = com.get_message ("Direction")
		raw_msg = com.get_message ("Direction", raw=True)
		com.send_message ("Oh no we forgot the motors!!")
		print msg
		print raw_msg
		sleep (0.5)
def main ():
	com = communicator ("Logger", settings_file="canned_communication_settings.json", debug=True)
	
	#logger = open ("proto2.log", 'w')

	while True:
		for module in com.get_listening_to ():
			msg = com.get_message (module)
			raw_msg = com.get_message (module)
			print msg
			print raw_msg
			#logger.write (str (msg) + '\n')
		sleep (1)
def main():
    com = communicator("Direction", settings_file="canned_communication_settings.json", debug=True)

    print com.get_listening_to()

    i = 0
    while True:
        msg = "Hi " + str(i)
        com.send_message(msg)
        com.send_message_raw(str(time()))
        print msg
        sleep(0.2)
        i += 1
    def __init__(self, camera, settings_file = None):
        # Gettings settings from settings file
        if not settings_file:
            try:
                self.settings = json.load (open (proto_base_path + "/src/communication/Video_Settings.json", "r"))
            except:
                self.debug.print_d ("Video_Settings.json is not in json format!")
                sys.exit ()
        else:
            try:
                self.settings = json.load (open (settings_file, "r"))
            except:
                self.debug.print_d ("Specified file [{sfile}] doesn't exist or is not in json format!".format (sfile = settings_file))
                sys.exit ()

        context = zmq.Context ()

        self.debug = debugging ()

        # Camera Settings
        self.cap = cv2.VideoCapture (self.settings[camera]["Index"])
        self.cap.set (cv2.cv.CV_CAP_PROP_FRAME_HEIGHT, self.settings[camera]["Height"])
        self.cap.set (cv2.cv.CV_CAP_PROP_FRAME_WIDTH, self.settings[camera]["Width"])
        self.cap.set (cv2.cv.CV_CAP_PROP_FPS, self.settings[camera]["FPS"])
        self.cap.set (cv2.cv.CV_CAP_PROP_FOURCC, cv2.cv.CV_FOURCC (str (self.settings[camera]["Codec"][0]), str (self.settings[camera]["Codec"][1]), str (self.settings[camera]["Codec"][2]), str (self.settings[camera]["Codec"][3])))

        # ZMQ Settings  
        self.server = context.socket (zmq.PUB)
        self.server.setsockopt (zmq.HWM, self.settings[camera]["HWM"])
        #self.server.setsockopt (zmq.SNDTIMEO, 5000)
        self.server.bind ("tcp://" + self.settings["Server_IP"] + ":" + self.settings["Server_Port"])

        self.confirmer = context.socket (zmq.SUB)
        self.confirmer.setsockopt (zmq.SUBSCRIBE, "")
        #self.confirmer.setsockopt (zmq.RCVTIMEO, 5000)
        self.confirmer.connect ("tcp://" + self.settings["Reciever_IP"] + ":" + self.settings["Reciever_Port"])

        com = communicator ("Pinger_Copter")

        self.pinger = passive_pinger (communicator=com)
        self.pinger.daemon = True
        self.pinger.start ()

        self.msg = "Ready!"