Compare commits

...

6 Commits

Author SHA1 Message Date
Simon Zeyer
39c10452e8 vscode settings 2021-12-05 22:08:55 +01:00
Simon Zeyer
9b23688c10 kthen 2021-12-05 22:08:43 +01:00
Simon Zeyer
a7b14fe39d remake everything, now with serial 2021-12-05 22:07:54 +01:00
Simon Zeyer
3faeb5d6aa Workaround for winrt not importing in debug 2021-12-05 22:07:03 +01:00
Simon Zeyer
d5b1d50105 update CLMgrMessage to print out index if no status known 2021-12-05 22:05:15 +01:00
Simon Zeyer
2941f59e02 set requirements 2021-12-05 22:03:54 +01:00
4 changed files with 83 additions and 40 deletions

3
.vscode/settings.json vendored Normal file
View File

@ -0,0 +1,3 @@
{
"python.pythonPath": "C:\\Users\\User\\AppData\\Local\\Programs\\Python\\Python38-32\\python.exe"
}

View File

@ -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
View File

@ -0,0 +1,2 @@
winrt
pywin32

View File

@ -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"
]