def looper():
    rospy.init_node('commander', anonymous=True)
    pub = rospy.Publisher("arduino_move", arduino_msg, queue_size=10)
    sub = rospy.Subscriber("commander",String, callback)
    
    motor_disable_service = rospy.Service("motor_disable", MotorDisable, disable_motor)
    rate = rospy.Rate(1)
    publish = arduino_msg()
    global new_message
    global message

    current_time = time.time()
    while not rospy.is_shutdown():
        #print(message + " " + new_message)

        #If the message has changed, 
        #update the message passed to the arduino
        if(new_message != message):
            current_time = time.time()
            message = new_message
            command = message.split()
            if(command[0] == "movt"):
                publish = createMsg(command[1],command[1],
                                    command[2],command[2],
                                    command[3],command[3]) 
            elif(command[0] == "rott"):
                publish = createMsg(int(command[1]),180-int(command[1]),
                                    int(command[2]),180-int(command[2]),
                                    int(command[3]),180-int(command[3]))
            elif ( command[0] == "stop" or command[0] == "pause"):
                publish = createMsg(0,0,0,0,0,0)
        
        #Publish 'Next' command To advance the queue
        #If the time is passed the duration
        split_message = message.split()
        if(time.time()-current_time >= float(split_message[4])):
            if(split_message[0] == "movt" or 
                        split_message[0] == "rott" or
                        split_message[0] == "pause"):
                talker("next",0,0,0,0)

        #Publish the command to the motors 
        pub.publish(publish)
        rate.sleep()
def createMsg(xLeft,xRight,yFront,yBack,zTop,zBottom):
    global motor_disabled_dict
    msg = arduino_msg()
    no_value = 90

    if(not motor_disabled_dict["xLeft"]):
        msg.xLeft = int(xLeft)
    else:  
        msg.xLeft = no_value

    if(not motor_disabled_dict["xRight"]):
        msg.xRight = int(xRight)
    else:  
        msg.xRight = no_value

    if(not motor_disabled_dict["yFront"]):
        msg.yFront = int(yFront)
    else:  
        msg.yFront = no_value

    if(not motor_disabled_dict["yBack"]):
        msg.yBack = int(yBack)
    else:  
        msg.yBack = no_value

    if(not motor_disabled_dict["zTop"]):
        msg.zTop = int(zTop)
    else:  
        msg.zTop = no_value

    if(not motor_disabled_dict["zBottom"]):
        msg.zBottom = int(zBottom)
    else:  
        msg.zBottom = no_value

    return msg