Compare commits
6 Commits
d9ff3a6e4a
...
39c10452e8
Author | SHA1 | Date | |
---|---|---|---|
|
39c10452e8 | ||
|
9b23688c10 | ||
|
a7b14fe39d | ||
|
3faeb5d6aa | ||
|
d5b1d50105 | ||
|
2941f59e02 |
3
.vscode/settings.json
vendored
Normal file
3
.vscode/settings.json
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
{
|
||||
"python.pythonPath": "C:\\Users\\User\\AppData\\Local\\Programs\\Python\\Python38-32\\python.exe"
|
||||
}
|
81
__main__.py
81
__main__.py
@ -1,23 +1,61 @@
|
||||
import asyncio
|
||||
from winrt.windows.media.control import GlobalSystemMediaTransportControlsSessionManager as MediaManager
|
||||
DEBUG=False
|
||||
try:
|
||||
from winrt.windows.media.control import GlobalSystemMediaTransportControlsSessionManager as MediaManager
|
||||
except:
|
||||
print("DEBUG; winrt disabled")
|
||||
DEBUG = True
|
||||
import win32com.client
|
||||
import pythoncom
|
||||
import time
|
||||
import pythoncom
|
||||
|
||||
from resources import LineState, CLMgrMessage
|
||||
|
||||
phone_mgr = ""
|
||||
lines = []
|
||||
import serial
|
||||
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 = []
|
||||
line_selected = None
|
||||
connected = False
|
||||
|
||||
def OnDispOnLineMgrNotification(self, msg, param, returns=""):
|
||||
if msg == 0:
|
||||
print(CLMgrMessage.s[msg], LineState.s[param])
|
||||
for line in lines:
|
||||
|
||||
if not self.phone_mgr:
|
||||
self.phone_mgr = win32com.client.Dispatch("CLMgr.ClientLineMgr")
|
||||
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.Ringing:
|
||||
sendSerial(b'y')
|
||||
else:
|
||||
sendSerial(b'r')
|
||||
asyncio.run(try_pause())
|
||||
return True
|
||||
asyncio.run(try_play())
|
||||
for linenum in range(self.phone_mgr.DispNumberOfLines):
|
||||
line = self.phone_mgr.DispGetLine(linenum)
|
||||
if line.DispState != LineState.Inactive:
|
||||
return True
|
||||
asyncio.run(try_play())
|
||||
sendSerial(b'o')
|
||||
return True
|
||||
|
||||
# async def get_media_info():
|
||||
@ -50,23 +88,22 @@ class PhoneLineEventHandler():
|
||||
|
||||
async def try_play():
|
||||
print("try_play")
|
||||
sessions = await MediaManager.request_async()
|
||||
current_session = sessions.get_current_session()
|
||||
if current_session:
|
||||
await current_session.try_play_async()
|
||||
if not DEBUG:
|
||||
sessions = await MediaManager.request_async()
|
||||
current_session = sessions.get_current_session()
|
||||
if current_session:
|
||||
await current_session.try_play_async()
|
||||
|
||||
async def try_pause():
|
||||
print("try_pause")
|
||||
sessions = await MediaManager.request_async()
|
||||
current_session = sessions.get_current_session()
|
||||
if current_session:
|
||||
await current_session.try_pause_async()
|
||||
if not DEBUG:
|
||||
sessions = await MediaManager.request_async()
|
||||
current_session = sessions.get_current_session()
|
||||
if current_session:
|
||||
await current_session.try_pause_async()
|
||||
|
||||
if __name__ == '__main__':
|
||||
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))
|
||||
win32com.client.WithEvents("CLMgr.ClientLineMgr", PhoneLineEventHandler)
|
||||
while True:
|
||||
#pythoncom.PumpWaitingMessages()
|
||||
pythoncom.PumpWaitingMessages()
|
||||
time.sleep(0.1) # Don't use up all our CPU checking constantly
|
2
requirements.txt
Normal file
2
requirements.txt
Normal file
@ -0,0 +1,2 @@
|
||||
winrt
|
||||
pywin32
|
35
resources.py
35
resources.py
@ -16,30 +16,31 @@ class CLMgrMessage():
|
||||
"CLMgrLineStateChangedMessage",
|
||||
"CLMgrLineSelectionChangedMessage",
|
||||
"CLMgrLineDetailsChangedMessage",
|
||||
"",
|
||||
"3",
|
||||
"CLMgrCallDetailsMessage",
|
||||
"CLMgrServerDownMessage",
|
||||
"CLMgrServerUpMessage",
|
||||
"CLMgrWaveDeviceChanged",
|
||||
"CLMgrGroupCallNotificationMessage",
|
||||
"",
|
||||
"9",
|
||||
"CLMgrNumberOfLinesChangedMessage",
|
||||
"CLMgrClientShutDownRequest",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"12",
|
||||
"13",
|
||||
"14",
|
||||
"15",
|
||||
"16",
|
||||
"17",
|
||||
"18",
|
||||
"19",
|
||||
"20",
|
||||
"21",
|
||||
"22",
|
||||
"23",
|
||||
"24",
|
||||
"25",
|
||||
"26",
|
||||
"27",
|
||||
"CLMgrLineStateChangedMessageEx"
|
||||
]
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user