2022-07-20 17:22:05 +03:00
|
|
|
#!/usr/bin/env python
|
|
|
|
import pigpio
|
|
|
|
import time
|
|
|
|
import datetime
|
2022-07-20 19:28:27 +03:00
|
|
|
import asyncio
|
2022-07-20 19:03:17 +01:00
|
|
|
import os
|
2022-07-20 19:22:13 +03:00
|
|
|
|
2022-07-21 01:47:08 +01:00
|
|
|
PTT_IS_ON = False
|
|
|
|
modulations = {
|
|
|
|
"ssb":"./modulations/ssb.sh",
|
|
|
|
"fmrds":"./modulations/fmrds.sh"
|
|
|
|
}
|
|
|
|
|
2022-07-20 17:29:35 +03:00
|
|
|
|
|
|
|
# init GPIO
|
|
|
|
pi = pigpio.pi()
|
|
|
|
# button pin
|
|
|
|
pi.set_mode(10, pigpio.INPUT)
|
2022-07-20 17:02:17 +03:00
|
|
|
|
2022-07-20 19:03:17 +01:00
|
|
|
async def run_command(*args):
|
2022-07-21 01:47:08 +01:00
|
|
|
process = await asyncio.create_subprocess_exec(*args, stdout=asyncio.subprocess.PIPE, stderr=asyncio.subprocess.PIPE)
|
2022-07-20 19:03:17 +01:00
|
|
|
print("Started: %s, pid=%s" % (args, process.pid), flush=True)
|
|
|
|
|
|
|
|
|
2022-07-20 19:31:34 +03:00
|
|
|
async def button_press(gpio:int, level) -> bool:
|
2022-07-20 19:03:17 +01:00
|
|
|
global PTT_IS_ON
|
2022-07-20 19:31:34 +03:00
|
|
|
while True:
|
|
|
|
if(pi.read(gpio)!=0):
|
2022-07-21 01:47:08 +01:00
|
|
|
PTT_IS_ON = True
|
2022-07-20 19:31:34 +03:00
|
|
|
if(pi.read(gpio)==0):
|
2022-07-21 01:47:08 +01:00
|
|
|
PTT_IS_ON = False
|
2022-07-20 19:03:17 +01:00
|
|
|
await asyncio.sleep(.5)
|
2022-07-20 15:41:07 +01:00
|
|
|
|
2022-07-21 01:47:08 +01:00
|
|
|
async def main(mod, freq:float):
|
2022-07-20 19:32:26 +03:00
|
|
|
asyncio.create_task(button_press(10, pigpio.EITHER_EDGE))
|
2022-07-20 19:03:17 +01:00
|
|
|
global PTT_IS_ON
|
2022-07-21 01:47:08 +01:00
|
|
|
task_created = False
|
|
|
|
print("Ready")
|
2022-07-20 19:18:34 +03:00
|
|
|
while True:
|
2022-07-21 01:47:08 +01:00
|
|
|
if (PTT_IS_ON and not task_created):
|
|
|
|
asyncio.create_task(run_command(modulations[mod], str(freq)))
|
|
|
|
task_created = True
|
|
|
|
elif (task_created and not PTT_IS_ON):
|
|
|
|
await asyncio.sleep(1)
|
|
|
|
asyncio.create_task(run_command("./kill.sh"))
|
|
|
|
task_created = False
|
2022-07-20 19:03:17 +01:00
|
|
|
await asyncio.sleep(.5)
|
2022-07-20 19:28:27 +03:00
|
|
|
|
2022-07-20 17:29:35 +03:00
|
|
|
if __name__ == "__main__":
|
2022-07-21 01:47:08 +01:00
|
|
|
try:
|
|
|
|
asyncio.run(main("fmrds", 430))
|
|
|
|
except KeyboardInterrupt:
|
|
|
|
print("\n")
|