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

# Common utilities for interacting with modems.

#
# For modems managed by org.freedesktop.ModemManager1
#
MM1=org.freedesktop.ModemManager1
MM1_OBJECT=/org/freedesktop/ModemManager1
MM1_IMANAGER=org.freedesktop.ModemManager1
MM1_IMODEM=${MM1_IMANAGER}.Modem
MM1_IMODEM_SIMPLE=${MM1_IMODEM}.Simple
MM1_IMODEM_3GPP=${MM1_IMODEM}.Modem3gpp
MM1_IMODEM_CDMA=${MM1_IMODEM}.ModemCdma
MM1_ISIM=${MM1_IMANAGER}.Sim

mm1_modem_sim() {
  dbus_property "${MM1}" "${modem}" "${MM1_IMODEM}" Sim
}

mm1_modem_properties() {
  local modem="$1"
  local sim=$(mm1_modem_sim "${modem}")

  echo
  echo "Modem ${modem}:"
  echo "  GetStatus:"
  dbus_call "${MM1}" "${modem}" "${MM1_IMODEM_SIMPLE}.GetStatus" \
    | format_dbus_dict | indent 2
  echo "  Properties:"
  dbus_properties "${MM1}" "${modem}" "${MM1_IMODEM}" \
    | format_dbus_dict | indent 2
  echo "  3GPP:"
  dbus_properties "${MM1}" "${modem}" "${MM1_IMODEM_3GPP}" \
    | format_dbus_dict | indent 2
  echo "  CDMA:"
  dbus_properties "${MM1}" "${modem}" "${MM1_IMODEM_CDMA}" \
    | format_dbus_dict | indent 2

  if [ "${#sim}" -gt 1 ]; then
    echo "  SIM ${sim}:"
    dbus_properties "${MM1}" "${sim}" "${MM1_ISIM}" \
      | format_dbus_dict | indent 2
  fi
}

mm1_modems() {
  mmcli -L 2>/dev/null \
    | awk '/\/org\/freedesktop\/ModemManager1\/Modem\// { print $1 }'
}

#
# Common stuff
#
MASKED_PROPERTIES="DeviceIdentifier|EquipmentIdentifier|OwnNumbers|\
ESN|MEID|IMEI|IMSI|SimIdentifier|MDN|MIN|payment_url_postdata|Eid|Iccid"

mask_modem_properties() {
  sed -E "s/\<(${MASKED_PROPERTIES}): (.+)/\1: *** MASKED ***/i"
}

mask_profiles() {
  sed -E "s/(\/profile\/)[0-9]+\/[0-9]+/\1[ ***MASKED*** ]/"
}

all_modem_status() {
  for modem in $(mm1_modems); do
    mm1_modem_properties "${modem}"
  done
}

default_modem() {
  mm1_modems | head -1
}

# Sets the log level of the specified modem manager.
set_modem_manager_logging() {
  local level="$1"

  if [ "${level}" = "error" ]; then
    level=err
  fi
  dbus_call "${MM1}" "${MM1_OBJECT}" "${MM1_IMANAGER}.SetLogging" \
    "string:${level}"
}

#
# For interactions with modemfwd.
#
MODEMFWD=org.chromium.Modemfwd
MODEMFWD_OBJECT=/org/chromium/Modemfwd
MODEMFWD_IFACE=org.chromium.Modemfwd

force_flash() {
  local device="$1"
  local carrier_uuid="$2"
  [ -z "${device}" ] && error_exit "No device_id provided."
  [ -z "${carrier_uuid}" ] && carrier_uuid="generic"

  dbus_call_with_timeout "${MODEMFWD}" 120000 "${MODEMFWD_OBJECT}" \
    "${MODEMFWD_IFACE}.ForceFlash" "string:${device}" \
    dict:string:string:"carrier_uuid","${carrier_uuid}"
}

#
# For eSIM interactions.
#
HERMES=org.chromium.Hermes
HERMES_MANAGER_OBJECT=/org/chromium/Hermes/Manager
HERMES_MANAGER_IFACE=org.chromium.Hermes.Manager

HERMES_EUICC_IFACE=org.chromium.Hermes.Euicc
HERMES_PROFILE_IFACE=org.chromium.Hermes.Profile

# Timeout for Hermes esim operations (in milliseconds)
HERMES_DBUS_TIMEOUT=120000

esim() {
  local command="$1"
  shift

  local euicc
  if [ "$1" = "-euicc" ]; then
    euicc="/org/chromium/Hermes/euicc/$2"
    shift 2
  else
    euicc=$(default_euicc)
  fi
  [ -z "${euicc}" ] && error_exit "No euicc found."

  case "${command}" in
    use_test_certs)
      poll_for_dbus_service "${HERMES}"
      esim_use_test_certs "${euicc}" "$@"
      ;;
    set_test_mode)
      poll_for_dbus_service "${HERMES}"
      esim_set_test_mode "${euicc}" "$@"
      ;;
    refresh_profiles)
      poll_for_dbus_service "${HERMES}"
      esim_refresh_profiles "${euicc}" "$@"
      ;;
    request_pending_profiles)
      poll_for_dbus_service "${HERMES}"
      esim_request_pending_profiles "${euicc}" "$@"
      ;;
    status)
      poll_for_dbus_service "${HERMES}"
      esim_status "$@"
      ;;
    status_feedback)
      poll_for_dbus_service "${HERMES}"
      esim_status_feedback "$@"
      ;;
    install)
      poll_for_dbus_service "${HERMES}"
      esim_install "${euicc}" "$@"
      ;;
    install_pending_profile)
      poll_for_dbus_service "${HERMES}"
      esim_install_pending_profile "${euicc}" "$@"
      ;;
    uninstall)
      if crossystem 'cros_debug?1'; then
        poll_for_dbus_service "${HERMES}"
        esim_uninstall "${euicc}" "$@"
      else
        error_exit "Cannot uninstall profile. Uninstallation allowed in"\
          "dev mode only"
      fi
      ;;
    enable)
      poll_for_dbus_service "${HERMES}"
      esim_enable "${euicc}" "$@"
      ;;
    disable)
      poll_for_dbus_service "${HERMES}"
      esim_disable "${euicc}" "$@"
      ;;
    *)
      error_exit "Expected one of "\
        "{use_test_certs|set_test_mode|"\
        "refresh_profiles|request_pending_profiles|"\
        "status|status_feedback|install|install_pending_profile|uninstall|"\
        "enable|disable}"
      ;;
  esac
}

all_euiccs() {
  dbus_property "${HERMES}" "${HERMES_MANAGER_OBJECT}" \
    "${HERMES_MANAGER_IFACE}" AvailableEuiccs |
    sed 's|^/[[:digit:]]* ||'
}

default_euicc() {
  all_euiccs | head -1
}

esim_profile_from_iccid() {
  local euicc="$1"

  local iccid="$2"
  [ -z "${iccid}" ] && error_exit "No iccid provided."

  local profile_type
  for profile_type in "InstalledProfiles" "PendingProfiles"; do
    local profiles
    profiles="$(dbus_property "${HERMES}" "${euicc}" \
                              "${HERMES_EUICC_IFACE}" "${profile_type}" |
                              sed 's|^/[[:digit:]]* ||' | tr '\n' ' ')"

    if ! echo "${profiles}" | grep -q -E \
      '^(/org/chromium/Hermes/profile/[0-9]+/[0-9]+ )*$'; then

      error_exit "Invalid profile objects received from hermes"

    fi

    local profile
    for profile in ${profiles}; do
      local current
      current="$(dbus_property "${HERMES}" "${profile}" \
                               "${HERMES_PROFILE_IFACE}" Iccid)"
      if [ "${current}" = "${iccid}" ]; then
        echo "${profile}"
        return
      fi
    done
  done
  error_exit "No matching Profile found for iccid ${iccid}."
}

esim_use_test_certs() {
  local euicc="$1"
  dbus_call "${HERMES}" "${euicc}" \
            "${HERMES_EUICC_IFACE}.UseTestCerts" \
            boolean:"$2"
}

esim_set_test_mode() {
  local euicc="$1"
  dbus_call "${HERMES}" "${euicc}" \
            "${HERMES_EUICC_IFACE}.SetTestMode" \
            boolean:"$2"
}

esim_status() {
  local euicc
  for euicc in $(all_euiccs); do
    echo "${euicc}"
    dbus_properties "${HERMES}" "${euicc}" "${HERMES_EUICC_IFACE}" |
      stripindexes

    local profile_type
    for profile_type in "InstalledProfiles" "PendingProfiles"; do
      echo "${profile_type}:" | indent 1
      local profile
      for profile in $(dbus_property "${HERMES}" "${euicc}" \
        "${HERMES_EUICC_IFACE}" "${profile_type}" |
                         sed 's|^/[[:digit:]]* ||'); do
        echo "${profile}" | indent 2
        dbus_properties "${HERMES}" "${profile}" "${HERMES_PROFILE_IFACE}" |
          stripindexes | indent 3
        echo
      done
    done
    echo ""
  done
}

esim_status_feedback() {
  esim_status | mask_modem_properties | mask_profiles
}

esim_refresh_profiles() {
  local euicc="$1"
  local should_not_switch_slot="$2"
  [ -z "${should_not_switch_slot}" ] && should_not_switch_slot="false"

  dbus_call "${HERMES}" "${euicc}" \
           "${HERMES_EUICC_IFACE}.RefreshInstalledProfiles" \
           boolean:"${should_not_switch_slot}"
}

esim_install() {
  local euicc="$1"
  local activation_code="$2"
  local confirmation_code="$3"
  [ -z "${activation_code}" ] && error_exit "No activation_code provided."

  dbus_call_with_timeout "${HERMES}" "${HERMES_DBUS_TIMEOUT}" "${euicc}" \
            "${HERMES_EUICC_IFACE}.InstallProfileFromActivationCode" \
            string:"${activation_code}" string:"${confirmation_code}"
}

esim_install_pending_profile() {
  local euicc="$1"
  local profile
  profile=$(esim_profile_from_iccid "$@")
  dbus_call_with_timeout "${HERMES}" "${HERMES_DBUS_TIMEOUT}" "${euicc}" \
            "${HERMES_EUICC_IFACE}.InstallPendingProfile" \
            objpath:"${profile}" string:"${confirmation_code}"
}

esim_uninstall() {
  local euicc="$1"
  local profile
  profile=$(esim_profile_from_iccid "$@")
  [ -z "${profile}" ] && exit 1
  dbus_call_with_timeout "${HERMES}" "${HERMES_DBUS_TIMEOUT}" "${euicc}" \
            "${HERMES_EUICC_IFACE}.UninstallProfile" objpath:"${profile}"
}

esim_request_pending_profiles() {
  local euicc="$1"
  local smds="$2"

  dbus_call_with_timeout "${HERMES}" "${HERMES_DBUS_TIMEOUT}" "${euicc}" \
            "${HERMES_EUICC_IFACE}.RequestPendingProfiles" string:"${smds}"
}

esim_enable() {
  local profile
  profile=$(esim_profile_from_iccid "$@")
  [ -z "${profile}" ] && exit 1
  dbus_call_with_timeout "${HERMES}" "${HERMES_DBUS_TIMEOUT}" \
                         "${profile}" "${HERMES_PROFILE_IFACE}.Enable"
}

esim_disable() {
  local profile
  profile=$(esim_profile_from_iccid "$@")
  [ -z "${profile}" ] && exit 1
  dbus_call_with_timeout "${HERMES}" "${HERMES_DBUS_TIMEOUT}" "${profile}" \
            "${HERMES_PROFILE_IFACE}.Disable"
}
