普通文本  |  48行  |  1.16 KB

// Copyright 2015 The Weave Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "src/privet/device_ui_kind.h"

#include <unordered_map>

#include <base/logging.h>

namespace weave {
namespace privet {

std::string GetDeviceUiKind(const std::string& manifest_id) {
  // Map of device short id to ui device kind
  static const std::unordered_map<std::string, std::string> device_kind_map = {
    // clang-format off
    {"AC", "accessPoint"},
    {"AK", "aggregator"},
    {"AM", "camera"},
    {"AB", "developmentBoard"},
    {"AH", "acHeating"},
    {"AI", "light"},
    {"AO", "lock"},
    {"AE", "printer"},
    {"AF", "scanner"},
    {"AD", "speaker"},
    {"AL", "storage"},
    {"AJ", "toy"},
    {"AA", "vendor"},
    {"AN", "video"},
    // clang-format on
  };

  CHECK_EQ(5u, manifest_id.size());
  std::string short_id = manifest_id.substr(0, 2);

  auto iter = device_kind_map.find(short_id);
  if (iter != device_kind_map.end())
    return iter->second;

  LOG(FATAL) << "Invalid model id: " << manifest_id;
  return std::string();
}

}  // namespace privet
}  // namespace weave