Compare commits
No commits in common. "39c10452e8d4c13e6431d67ed62fcb7af7670ced" and "d9ff3a6e4a5dbc55959b049ded1d6707a65efaa6" have entirely different histories.
39c10452e8
...
d9ff3a6e4a
3
.vscode/settings.json
vendored
3
.vscode/settings.json
vendored
@ -1,3 +0,0 @@
|
|||||||
{
|
|
||||||
"python.pythonPath": "C:\\Users\\User\\AppData\\Local\\Programs\\Python\\Python38-32\\python.exe"
|
|
||||||
}
|
|
||||||
59
__main__.py
59
__main__.py
@ -1,61 +1,23 @@
|
|||||||
import asyncio
|
import asyncio
|
||||||
DEBUG=False
|
|
||||||
try:
|
|
||||||
from winrt.windows.media.control import GlobalSystemMediaTransportControlsSessionManager as MediaManager
|
from winrt.windows.media.control import GlobalSystemMediaTransportControlsSessionManager as MediaManager
|
||||||
except:
|
|
||||||
print("DEBUG; winrt disabled")
|
|
||||||
DEBUG = True
|
|
||||||
import win32com.client
|
import win32com.client
|
||||||
import time
|
|
||||||
import pythoncom
|
import pythoncom
|
||||||
|
import time
|
||||||
|
|
||||||
from resources import LineState, CLMgrMessage
|
from resources import LineState, CLMgrMessage
|
||||||
|
|
||||||
import serial
|
phone_mgr = ""
|
||||||
from serial import SerialException
|
|
||||||
|
|
||||||
portName = 'COM3'
|
|
||||||
|
|
||||||
def sendSerial(byte):
|
|
||||||
try:
|
|
||||||
ser = serial.Serial(port=portName, baudrate=115200)
|
|
||||||
ser.write(byte)
|
|
||||||
except SerialException:
|
|
||||||
print('port already open')
|
|
||||||
|
|
||||||
class PhoneLineEventHandler():
|
|
||||||
phone_mgr = None
|
|
||||||
lines = []
|
lines = []
|
||||||
line_selected = None
|
class PhoneLineEventHandler():
|
||||||
connected = False
|
|
||||||
|
|
||||||
def OnDispOnLineMgrNotification(self, msg, param, returns=""):
|
def OnDispOnLineMgrNotification(self, msg, param, returns=""):
|
||||||
|
if msg == 0:
|
||||||
if not self.phone_mgr:
|
print(CLMgrMessage.s[msg], LineState.s[param])
|
||||||
self.phone_mgr = win32com.client.Dispatch("CLMgr.ClientLineMgr")
|
for line in lines:
|
||||||
if not self.phone_mgr:
|
|
||||||
"Swyx not connected!"
|
|
||||||
else:
|
|
||||||
print("Swyx connected!")
|
|
||||||
if self.phone_mgr:
|
|
||||||
if msg == CLMgrMessage.CLMgrLineStateChangedMessage:
|
|
||||||
line = self.phone_mgr.DispGetLine(param)
|
|
||||||
print("Line: {} {}".format(
|
|
||||||
param,
|
|
||||||
LineState.s[line.DispState])
|
|
||||||
)
|
|
||||||
if line.DispState != LineState.Inactive:
|
if line.DispState != LineState.Inactive:
|
||||||
if line.DispState == LineState.Ringing:
|
|
||||||
sendSerial(b'y')
|
|
||||||
else:
|
|
||||||
sendSerial(b'r')
|
|
||||||
asyncio.run(try_pause())
|
asyncio.run(try_pause())
|
||||||
for linenum in range(self.phone_mgr.DispNumberOfLines):
|
|
||||||
line = self.phone_mgr.DispGetLine(linenum)
|
|
||||||
if line.DispState != LineState.Inactive:
|
|
||||||
return True
|
return True
|
||||||
asyncio.run(try_play())
|
asyncio.run(try_play())
|
||||||
sendSerial(b'o')
|
|
||||||
return True
|
return True
|
||||||
|
|
||||||
# async def get_media_info():
|
# async def get_media_info():
|
||||||
@ -88,7 +50,6 @@ class PhoneLineEventHandler():
|
|||||||
|
|
||||||
async def try_play():
|
async def try_play():
|
||||||
print("try_play")
|
print("try_play")
|
||||||
if not DEBUG:
|
|
||||||
sessions = await MediaManager.request_async()
|
sessions = await MediaManager.request_async()
|
||||||
current_session = sessions.get_current_session()
|
current_session = sessions.get_current_session()
|
||||||
if current_session:
|
if current_session:
|
||||||
@ -96,14 +57,16 @@ async def try_play():
|
|||||||
|
|
||||||
async def try_pause():
|
async def try_pause():
|
||||||
print("try_pause")
|
print("try_pause")
|
||||||
if not DEBUG:
|
|
||||||
sessions = await MediaManager.request_async()
|
sessions = await MediaManager.request_async()
|
||||||
current_session = sessions.get_current_session()
|
current_session = sessions.get_current_session()
|
||||||
if current_session:
|
if current_session:
|
||||||
await current_session.try_pause_async()
|
await current_session.try_pause_async()
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
win32com.client.WithEvents("CLMgr.ClientLineMgr", PhoneLineEventHandler)
|
phone_mgr = win32com.client.Dispatch("CLMgr.ClientLineMgr")
|
||||||
|
phone_mgr_event = win32com.client.WithEvents("CLMgr.ClientLineMgr", PhoneLineEventHandler)
|
||||||
|
for i in range(3):
|
||||||
|
lines.append(phone_mgr.DispGetLine(i))
|
||||||
while True:
|
while True:
|
||||||
pythoncom.PumpWaitingMessages()
|
#pythoncom.PumpWaitingMessages()
|
||||||
time.sleep(0.1) # Don't use up all our CPU checking constantly
|
time.sleep(0.1) # Don't use up all our CPU checking constantly
|
||||||
@ -1,2 +0,0 @@
|
|||||||
winrt
|
|
||||||
pywin32
|
|
||||||
35
resources.py
35
resources.py
@ -16,31 +16,30 @@ class CLMgrMessage():
|
|||||||
"CLMgrLineStateChangedMessage",
|
"CLMgrLineStateChangedMessage",
|
||||||
"CLMgrLineSelectionChangedMessage",
|
"CLMgrLineSelectionChangedMessage",
|
||||||
"CLMgrLineDetailsChangedMessage",
|
"CLMgrLineDetailsChangedMessage",
|
||||||
"3",
|
"",
|
||||||
"CLMgrCallDetailsMessage",
|
"CLMgrCallDetailsMessage",
|
||||||
"CLMgrServerDownMessage",
|
"CLMgrServerDownMessage",
|
||||||
"CLMgrServerUpMessage",
|
"CLMgrServerUpMessage",
|
||||||
"CLMgrWaveDeviceChanged",
|
"CLMgrWaveDeviceChanged",
|
||||||
"CLMgrGroupCallNotificationMessage",
|
"CLMgrGroupCallNotificationMessage",
|
||||||
"9",
|
"",
|
||||||
"CLMgrNumberOfLinesChangedMessage",
|
"CLMgrNumberOfLinesChangedMessage",
|
||||||
"CLMgrClientShutDownRequest",
|
"CLMgrClientShutDownRequest",
|
||||||
"12",
|
"",
|
||||||
"13",
|
"",
|
||||||
"14",
|
"",
|
||||||
"15",
|
"",
|
||||||
"16",
|
"",
|
||||||
"17",
|
"",
|
||||||
"18",
|
"",
|
||||||
"19",
|
"",
|
||||||
"20",
|
"",
|
||||||
"21",
|
"",
|
||||||
"22",
|
"",
|
||||||
"23",
|
"",
|
||||||
"24",
|
"",
|
||||||
"25",
|
"",
|
||||||
"26",
|
"",
|
||||||
"27",
|
|
||||||
"CLMgrLineStateChangedMessageEx"
|
"CLMgrLineStateChangedMessageEx"
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user