# Copyright (c) 2013 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.

# mist udev rules for switching supported USB devices into a modem.
# Run after 50-udev-default.rules and before 60-persistent-*.rules.

# TODO(benchan): Generate this file as part of the build process.
# Extract the vendor/product IDs of supported devices from default.conf and
# create corresponding udev rules in this file.

# If MIST_SUPPORTED_DEVICE is set to 1, the device has already been handled once
# due to a prior udev add or change event.
ENV{MIST_SUPPORTED_DEVICE}=="1", GOTO="mist_end"

ACTION!="add|change", GOTO="mist_end"

#-------------------------------------------------------------------------------
# Supported USB devices after switching into a modem
SUBSYSTEM!="usb|tty", GOTO="mist_end"
ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1001", GOTO="mist_mark_device"
ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1400", GOTO="mist_mark_device"
ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1406", GOTO="mist_mark_device"
ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="140b", GOTO="mist_mark_device"
ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="140c", GOTO="mist_mark_device"
ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1412", GOTO="mist_mark_device"
ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="141b", GOTO="mist_mark_device"
ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1432", GOTO="mist_mark_device"
ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1433", GOTO="mist_mark_device"
ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1436", GOTO="mist_mark_device"
ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="14ac", GOTO="mist_mark_device"
ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="14cf", GOTO="mist_mark_device"
ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="14db", GOTO="mist_mark_device"
ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1506", GOTO="mist_mark_device"
ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="150a", GOTO="mist_mark_device"
ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="150f", GOTO="mist_mark_device"
ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1511", GOTO="mist_mark_device"
ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1576", GOTO="mist_mark_device"
ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1c1e", GOTO="mist_mark_device"
ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0015", GOTO="mist_mark_device"
ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0017", GOTO="mist_mark_device"
ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0022", GOTO="mist_mark_device"
ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0104", GOTO="mist_mark_device"
ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0117", GOTO="mist_mark_device"
ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="1008", GOTO="mist_mark_device"
ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="1010", GOTO="mist_mark_device"
ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="1173", GOTO="mist_mark_device"
ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="1177", GOTO="mist_mark_device"
ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="1181", GOTO="mist_mark_device"
ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="1203", GOTO="mist_mark_device"
ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="1254", GOTO="mist_mark_device"
ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="1525", GOTO="mist_mark_device"
ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="1589", GOTO="mist_mark_device"
ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="2003", GOTO="mist_mark_device"
ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="900b", GOTO="mist_mark_device"
ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="ffe9", GOTO="mist_mark_device"
ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="fff1", GOTO="mist_mark_device"
ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="fffe", GOTO="mist_mark_device"
ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="ffff", GOTO="mist_mark_device"
ATTRS{idVendor}=="1c9e", ATTRS{idProduct}=="9605", GOTO="mist_mark_device"
ATTRS{idVendor}=="2001", ATTRS{idProduct}=="7d01", GOTO="mist_mark_device"
ATTRS{idVendor}=="2001", ATTRS{idProduct}=="7d0c", GOTO="mist_mark_device"
ATTRS{idVendor}=="2020", ATTRS{idProduct}=="4010", GOTO="mist_mark_device"

#-------------------------------------------------------------------------------
# Supported USB devices before switching into a modem
SUBSYSTEM!="usb", GOTO="mist_end"
ENV{DEVTYPE}!="usb_device", GOTO="mist_end"
ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1446", GOTO="mist_switch_device"
ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="14fe", GOTO="mist_switch_device"
ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1505", GOTO="mist_switch_device"
ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1526", GOTO="mist_switch_device"
ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="15ca", GOTO="mist_switch_device"
ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1f01", GOTO="mist_switch_device"
ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1f15", GOTO="mist_switch_device"
ATTRS{idVendor}=="12d1", ATTRS{idProduct}=="1f17", GOTO="mist_switch_device"
ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0013", GOTO="mist_switch_device"
ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0040", GOTO="mist_switch_device"
ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0101", GOTO="mist_switch_device"
ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="0154", GOTO="mist_switch_device"
ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="1007", GOTO="mist_switch_device"
ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="1009", GOTO="mist_switch_device"
ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="1171", GOTO="mist_switch_device"
ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="1175", GOTO="mist_switch_device"
ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="1179", GOTO="mist_switch_device"
ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="1201", GOTO="mist_switch_device"
ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="1237", GOTO="mist_switch_device"
ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="1523", GOTO="mist_switch_device"
ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="1588", GOTO="mist_switch_device"
ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="2000", GOTO="mist_switch_device"
ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="fff5", GOTO="mist_switch_device"
ATTRS{idVendor}=="1c9e", ATTRS{idProduct}=="f000", GOTO="mist_switch_device"
ATTRS{idVendor}=="2001", ATTRS{idProduct}=="a403", GOTO="mist_switch_device"
ATTRS{idVendor}=="2001", ATTRS{idProduct}=="a706", GOTO="mist_switch_device"
ATTRS{idVendor}=="2020", ATTRS{idProduct}=="0002", GOTO="mist_switch_device"

GOTO="mist_end"

#-------------------------------------------------------------------------------
# Invoke mist to switch a supported USB device into a modem. mist needs to run
# as a daemon in order to monitor udev events to determine when the device is
# switched into a modem.
LABEL="mist_switch_device"
RUN+="/usr/bin/mist --daemon switch %S%p"
# Fall through to "mist_mark_device"

#-------------------------------------------------------------------------------
# If this device is a 'usb_device' device, set MIST_SUPPORTED_DEVICE to 1 to
# tell cros-disks to hide it from being auto-mounted. If this device is a 'tty'
# device, set MIST_SUPPORTED_DEVICE to 1 to tell 52-mm-modem-permissions.rules
# to set the right permissions on it.
LABEL="mist_mark_device"
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ENV{MIST_SUPPORTED_DEVICE}="1"
SUBSYSTEM=="tty", ENV{MIST_SUPPORTED_DEVICE}="1"

LABEL="mist_end"
