#!/usr/bin/python

# Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

import mm
import sys

def Usage(prog):
    print ("Usage: %s carrier "
           "<device path substring>") % prog

if len(sys.argv) < 2 or len(sys.argv) > 3:
    Usage(sys.argv[0])
    sys.exit(1)

carrier = sys.argv[1]

if len(sys.argv) < 3:
    modem_pattern = ''
else:
    modem_pattern = sys.argv[2]

manager = mm.ModemManager()
path = mm.PickOneModem(modem_pattern)
gobi_modem = manager.GobiModem(path)
gobi_modem.SetCarrier(carrier)
