// Copyright 2018 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.

#ifndef CHROMEOS_CONFIG_EC_CONFIG_H_
#define CHROMEOS_CONFIG_EC_CONFIG_H_

#include <stdint.h>
#include <stdlib.h>

{% for hwprop in enum_to_elements_map -%}
{% set elems = [] -%}
{% set namespace = hwprop | upper -%}
{% for elem, i in (enum_to_elements_map[hwprop]).items() -%}
{{ elems.append([namespace, '_', elem | string | upper, ' = ', i | string] | join) | default("", True) }}
{%- if loop.last %}
enum {{ hwprop ~ '_type' }} {
  {{ (elems | join(',\n  ')) }}
};

{% endif -%}
{%- endfor -%}
{% endfor -%}

struct sku_info {
  const uint8_t sku;
  {%- for hwprop in hwprops %}
  const uint8_t {{ hwprop }} :{{ hwprop_values_count[hwprop] }};
  {%- endfor %}
};

extern const size_t NUM_SKUS;
extern const struct sku_info ALL_SKUS[];

#endif  // CHROMEOS_CONFIG_EC_CONFIG_H_
