Beispiel #1
0
    def __init__(self, threadID, name, wifi, bt, arduino):
        threading.Thread.__init__(self)
        self.threadID = threadID
        self.name = name

        # set the command queue
        self.lock = threading.BoundedSemaphore(SEMAPHORE_BUF)
        self.commandQueue = Queue.Queue()

        # assign thread
        self.wifi = wifi
        self.bt = bt
        self.arduino = arduino

        # assign handler for command
        self.protocolHandler = protocolHandler(wifi, bt, arduino)
Beispiel #2
0
    def __init__(self, threadID, name, wifi, bt, arduino):
        threading.Thread.__init__(self)
        self.threadID = threadID
        self.name = name

        # set the command queue
        self.lock = threading.BoundedSemaphore(SEMAPHORE_BUF)
        self.commandQueue = Queue.Queue()

        # assign thread
        self.wifi = wifi
        self.bt = bt
        self.arduino = arduino

        # assign handler for command
        self.protocolHandler = protocolHandler(wifi, bt, arduino)
Beispiel #3
0
def TCP_Con(conn, addr):
    global devHndl
    conn_id = None
    m_id = None
    m_type = None
    m_data = None

    m_timeout = 0
    m_error = 0
    m_buffer = []
    raws_list = []

    protocol = protocolHandler()

    print "New connection from : ", addr
    conn.settimeout(TIMEOUT)

    #Clear m_buffer
    del m_buffer[:]

    #Clear raws_data
    raws_data = ""

    #Clear raws_list
    del raws_list[:]

    print "Waiting for sensor infomation : ", addr
    m_timeout = 0
    m_error = 0
    while True:
        try:
            raws_data = conn.recv(BUFFER_SIZE)

            #socket.recv will return None if connection is closed.
            if (not raws_data):
                print "Client is closed : ", addr
                conn.close()
                print "Close connection from : ", addr
                return

            #Reset m_timeout
            m_timeout = 0

            #Convert char list to int list
            raws_list = list(raws_data)
            for i in range(0, len(raws_list)):
                m_buffer.append(ord(raws_list[i]))

            #Process income Data
            rslt = 0
            for i in range(0, len(m_buffer)):
                rslt = protocol.processData(m_buffer[i])
                if (rslt != 0):
                    break

            if (rslt > 0):
                m_error = 0
                m_id = protocol.getID()
                conn_id = m_id
                m_type = protocol.getType()
                m_data = protocol.getData()
                print "Reegister new device id " + str(m_id) + " : ", addr
                devHndl_sem.acquire()
                devHndl.addDevice(m_id, m_type, m_data)
                devHndl_sem.release()
                break
            elif (rslt < 0):
                m_error = m_error + 1
                print "Process protocol error #" + str(m_error) + " : ", addr

                if (m_error >= MAX_ERROR):
                    print "Too many error : ", addr
                    conn.close()
                    print "Close connection from : ", addr
                    return

        except socket.timeout, e:
            m_timeout = m_timeout + 1
            print "Receive Timeout #" + str(m_timeout) + " : ", addr

            if (m_timeout >= MAX_TIMEOUT):
                print "Too many timeout : ", addr
                conn.close()
                print "Close connection from : ", addr
                return

        except socket.error, e:
            print "Error [" + e.args[0] + "] : ", addr
            return
Beispiel #4
0
def TCP_Con(conn, addr) :
    global devHndl
    conn_id = None
    m_id = None
    m_type = None
    m_data = None

    m_timeout = 0
    m_error = 0
    m_buffer = []
    raws_list = []

    protocol = protocolHandler()

    print "New connection from : " , addr
    conn.settimeout(TIMEOUT)

    #Clear m_buffer
    del m_buffer[:]

    #Clear raws_data
    raws_data = ""

    #Clear raws_list
    del raws_list[:]


    print "Waiting for sensor infomation : " , addr
    m_timeout = 0
    m_error = 0
    while True:
        try:
            raws_data = conn.recv(BUFFER_SIZE)

            #socket.recv will return None if connection is closed.
            if (not raws_data) :
                print "Client is closed : ", addr
                conn.close()
                print "Close connection from : " , addr
                return

            #Reset m_timeout
            m_timeout = 0

            #Convert char list to int list
            raws_list = list(raws_data)
            for i in range(0, len(raws_list)) :
                m_buffer.append(ord(raws_list[i]))

            #Process income Data
            rslt = 0
            for i in range(0, len(m_buffer)) :
                rslt = protocol.processData(m_buffer[i])
                if (rslt != 0) :
                    break;

            if (rslt > 0) :
                m_error = 0
                m_id = protocol.getID()
                conn_id = m_id
                m_type = protocol.getType()
                m_data = protocol.getData()
                print "Reegister new device id " + str(m_id) + " : ", addr
                devHndl_sem.acquire()
                devHndl.addDevice(m_id, m_type, m_data)
                devHndl_sem.release()
                break
            elif (rslt < 0) :
                m_error = m_error + 1
                print "Process protocol error #" + str(m_error) + " : ", addr

                if (m_error >= MAX_ERROR) :
                    print "Too many error : ", addr
                    conn.close()
                    print "Close connection from : " , addr
                    return

        except socket.timeout, e:
            m_timeout = m_timeout + 1
            print "Receive Timeout #" + str(m_timeout) + " : ",  addr

            if (m_timeout >= MAX_TIMEOUT) :
                print "Too many timeout : ", addr
                conn.close()
                print "Close connection from : " , addr
                return

        except socket.error, e:
            print "Error [" + e.args[0] + "] : ", addr
            return