mirror of
https://github.com/mjg59/python-broadlink.git
synced 2024-11-22 07:00:12 +01:00
Make communication thread safe
This commit is contained in:
parent
83f1c3fc93
commit
1296c3da48
@ -5,6 +5,7 @@ from Crypto.Cipher import AES
|
|||||||
import time
|
import time
|
||||||
import random
|
import random
|
||||||
import socket
|
import socket
|
||||||
|
import threading
|
||||||
|
|
||||||
def gendevice(devtype, host, mac):
|
def gendevice(devtype, host, mac):
|
||||||
if devtype == 0: # SP1
|
if devtype == 0: # SP1
|
||||||
@ -138,6 +139,7 @@ class device:
|
|||||||
self.cs.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
|
self.cs.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
|
||||||
self.cs.bind(('',0))
|
self.cs.bind(('',0))
|
||||||
self.type = "Unknown"
|
self.type = "Unknown"
|
||||||
|
self.lock = threading.Lock()
|
||||||
|
|
||||||
def auth(self):
|
def auth(self):
|
||||||
payload = bytearray(0x50)
|
payload = bytearray(0x50)
|
||||||
@ -228,16 +230,17 @@ class device:
|
|||||||
packet[0x21] = checksum >> 8
|
packet[0x21] = checksum >> 8
|
||||||
|
|
||||||
starttime = time.time()
|
starttime = time.time()
|
||||||
while True:
|
with self.lock:
|
||||||
try:
|
while True:
|
||||||
self.cs.sendto(packet, self.host)
|
try:
|
||||||
self.cs.settimeout(1)
|
self.cs.sendto(packet, self.host)
|
||||||
response = self.cs.recvfrom(1024)
|
self.cs.settimeout(1)
|
||||||
break
|
response = self.cs.recvfrom(1024)
|
||||||
except socket.timeout:
|
break
|
||||||
if (time.time() - starttime) < self.timeout:
|
except socket.timeout:
|
||||||
pass
|
if (time.time() - starttime) < self.timeout:
|
||||||
raise
|
pass
|
||||||
|
raise
|
||||||
return bytearray(response[0])
|
return bytearray(response[0])
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user