#!/usr/bin/python
import sys
import argparse
# Thanks gst for messing with argv
argv = sys.argv
sys.argv = []
from openob.manager import Manager
sys.argv = argv

parser = argparse.ArgumentParser(prog='openob')
parser.add_argument('config_host', type=str, help="The configuration server for this OpenOB Manager")
parser.add_argument('link_name', type=str, help="The link name this OpenOB Manager is operating on; must be the same on both Managers")
subparsers = parser.add_subparsers(help="The link mode to operate in on this end")
parser_tx = subparsers.add_parser('tx')
parser_tx.add_argument('receiver_host', type=str, help="The receiver for this transmitter. The machine at this address must be running an rx-mode Manager for this link name")
parser_tx.add_argument('-a', '--audio_input', type=str, choices=['alsa', 'jack', 'pulseaudio'], default='alsa', help="The audio source type for this end of the link")
parser_tx.add_argument('-d', '--device', type=str, default='hw:0', help="The ALSA audio device when in ALSA audio input mode")
parser_tx.add_argument('-e', '--encoding', type=str, choices=['pcm','celt','opus'], default='opus', help="The audio encoding type for this link; PCM for linear audio (16-bit), CELT or Opus (default) for encoded audio")
parser_tx.add_argument('-b', '--bitrate', type=int, default=96, help="Bitrate if using CELT/Opus (in kbit/s)", choices=[16,24,32,48,64,96,128,192,256,384])
parser_tx.add_argument('-p', '--port', type=int, default=3000, help="The base port to use for audio transport. This port must be accessible on the receiving host")
parser_tx.add_argument('-j', '--jitter_buffer', type=int, default=150, help="The size of the jitter buffer in milliseconds. Affects latency; may be reduced to 5-10ms on fast reliable networks, or increased for poor networks like 3G")
parser_tx.add_argument('-l', '--loss', type=int, default=0, help="Expected packet loss percentage for Opus, between 0 and 100")
parser_tx.add_argument('--dtx', type=bool, default=False, help="Enable Opus Discontinuous Transmission support (true/false, default false)")
parser_tx.add_argument('--fec', type=bool, default=True, help="Enable Opus Inband Forward Error Correction support (true/false, default true)")
parser_tx.add_argument('--framesize', type=int, default=20, help="Opus frame size (ms)", choices=[5, 10, 20, 40, 60])

parser_tx.set_defaults(mode='tx')
parser_rx = subparsers.add_parser('rx')
parser_rx.add_argument('-a', '--audio_output', type=str, choices=['alsa', 'jack', 'pulseaudio'], default='alsa', help="The audio output type for this end of the link")
parser_rx.add_argument('-d', '--device', type=str, default='hw:0', help="The ALSA audio device when in ALSA audio output mode")
parser_rx.set_defaults(mode='rx')
opts = parser.parse_args()
manager = Manager()
manager.run(opts)
