#!/usr/bin/env python3

HOME_PATH = './'
CACHE_PATH = '/var/cache/obmc/'
FLASH_DOWNLOAD_PATH = "/tmp"
GPIO_BASE = 320
SYSTEM_NAME = "Palmetto"


# System states
# state can change to next state in 2 ways:
# - a process emits a GotoSystemState signal with state name to goto
# - objects specified in EXIT_STATE_DEPEND have started
SYSTEM_STATES = [
    'BASE_APPS',
    'BMC_STARTING',
    'BMC_READY',
    'HOST_POWERING_ON',
    'HOST_POWERED_ON',
    'HOST_BOOTING',
    'HOST_BOOTED',
    'HOST_POWERED_OFF',
]

EXIT_STATE_DEPEND = {
    'BASE_APPS': {
        '/org/openbmc/sensors': 0,
    },
    'BMC_STARTING': {
        '/org/openbmc/control/chassis0': 0,
        '/org/openbmc/control/power0': 0,
        '/org/openbmc/control/led/identify': 0,
        '/org/openbmc/control/host0': 0,
        '/org/openbmc/control/flash/bios': 0,
    }
}

# method will be called when state is entered
ENTER_STATE_CALLBACK = {
    'HOST_POWERED_ON': {
        'boot': {
            'bus_name': 'org.openbmc.control.Host',
            'obj_name': '/org/openbmc/control/host0',
            'interface_name': 'org.openbmc.control.Host',
        }
    },
    'BMC_READY': {
        'setOn': {
            'bus_name': 'org.openbmc.control.led',
            'obj_name': '/org/openbmc/control/led/identify',
            'interface_name': 'org.openbmc.Led',
        },
        'init': {
            'bus_name': 'org.openbmc.control.Flash',
            'obj_name': '/org/openbmc/control/flash/bios',
            'interface_name': 'org.openbmc.Flash',
        },
    }
}

APPS = {
    'startup_hacks': {
        'system_state': 'BASE_APPS',
        'start_process': True,
        'monitor_process': False,
        'process_name': 'startup_hacks.sh',
    },
    'inventory': {
        'system_state': 'BMC_STARTING',
        'start_process': True,
        'monitor_process': True,
        'process_name': 'inventory_items.py',
        'args': [SYSTEM_NAME]
    },
    'pcie_present': {
        'system_state': 'HOST_POWERED_ON',
        'start_process': False,
        'monitor_process': False,
        'process_name': 'pcie_slot_present.exe',
    },
    'virtual_sensors': {
        'system_state': 'BMC_STARTING',
        'start_process': True,
        'monitor_process': True,
        'process_name': 'hwmon.py',
        'args': [SYSTEM_NAME]
    },
    'sensor_manager': {
        'system_state': 'BASE_APPS',
        'start_process': True,
        'monitor_process': True,
        'process_name': 'sensor_manager2.py',
        'args': [SYSTEM_NAME]
    },
    'host_watchdog': {
        'system_state': 'BMC_STARTING',
        'start_process': True,
        'monitor_process': True,
        'process_name': 'host_watchdog.exe',
    },
    'power_control': {
        'system_state': 'BMC_STARTING',
        'start_process': True,
        'monitor_process': True,
        'process_name': 'power_control.exe',
        'args': ['3000', '10']
    },
    'power_button': {
        'system_state': 'BMC_STARTING',
        'start_process': False,
        'monitor_process': False,
        'process_name': 'button_power.exe',
    },
    'led_control': {
        'system_state': 'BMC_STARTING',
        'start_process': True,
        'monitor_process': True,
        'process_name': 'led_controller.exe',
    },
    'flash_control': {
        'system_state': 'BMC_STARTING',
        'start_process': True,
        'monitor_process': True,
        'process_name': 'flash_bios.exe',
    },
    'bmc_flash_control': {
        'system_state': 'BMC_STARTING',
        'start_process': True,
        'monitor_process': True,
        'process_name': 'bmc_update.py',
    },
    'download_manager': {
        'system_state': 'BMC_STARTING',
        'start_process': True,
        'monitor_process': True,
        'process_name': 'download_manager.py',
        'args': [SYSTEM_NAME]
    },
    'host_control': {
        'system_state': 'BMC_STARTING',
        'start_process': True,
        'monitor_process': True,
        'process_name': 'control_host.exe',
    },
    'chassis_control': {
        'system_state': 'BMC_STARTING',
        'start_process': True,
        'monitor_process': True,
        'process_name': 'chassis_control.py',
    },
    'bmc_control': {
        'system_state': 'BMC_STARTING',
        'start_process': True,
        'monitor_process': True,
        'process_name': 'control_bmc.exe',
    }
}

CACHED_INTERFACES = {
    "org.openbmc.InventoryItem": True,
    "org.openbmc.control.Chassis": True,
}
INVENTORY_ROOT = '/org/openbmc/inventory'

FRU_INSTANCES = {
    '<inventory_root>/system': {'fru_type': 'SYSTEM', 'is_fru': True, },
    '<inventory_root>/system/chassis': {'fru_type': 'SYSTEM', 'is_fru': True, },
    '<inventory_root>/system/chassis/motherboard': {'fru_type': 'MAIN_PLANAR', 'is_fru': True, },

    '<inventory_root>/system/chassis/fan0': {'fru_type': 'FAN', 'is_fru': True, },
    '<inventory_root>/system/chassis/fan1': {'fru_type': 'FAN', 'is_fru': True, },
    '<inventory_root>/system/chassis/fan2': {'fru_type': 'FAN', 'is_fru': True, },
    '<inventory_root>/system/chassis/fan3': {'fru_type': 'FAN', 'is_fru': True, },
    '<inventory_root>/system/chassis/fan4': {'fru_type': 'FAN', 'is_fru': True, },

    '<inventory_root>/system/chassis/motherboard/bmc': {'fru_type': 'BMC', 'is_fru': False,
                                                        'manufacturer': 'ASPEED'},
    '<inventory_root>/system/chassis/motherboard/cpu': {'fru_type': 'CPU', 'is_fru': True, },
    '<inventory_root>/system/chassis/motherboard/cpu/core0': {'fru_type': 'CORE',
                                                              'is_fru': False, },
    '<inventory_root>/system/chassis/motherboard/cpu/core1': {'fru_type': 'CORE',
                                                              'is_fru': False, },
    '<inventory_root>/system/chassis/motherboard/cpu/core2': {'fru_type': 'CORE',
                                                              'is_fru': False, },
    '<inventory_root>/system/chassis/motherboard/cpu/core3': {'fru_type': 'CORE',
                                                              'is_fru': False, },
    '<inventory_root>/system/chassis/motherboard/cpu/core4': {'fru_type': 'CORE',
                                                              'is_fru': False, },
    '<inventory_root>/system/chassis/motherboard/cpu/core5': {'fru_type': 'CORE',
                                                              'is_fru': False, },
    '<inventory_root>/system/chassis/motherboard/cpu/core6': {'fru_type': 'CORE',
                                                              'is_fru': False, },
    '<inventory_root>/system/chassis/motherboard/cpu/core7': {'fru_type': 'CORE',
                                                              'is_fru': False, },
    '<inventory_root>/system/chassis/motherboard/cpu/core8': {'fru_type': 'CORE',
                                                              'is_fru': False, },
    '<inventory_root>/system/chassis/motherboard/cpu/core9': {'fru_type': 'CORE',
                                                              'is_fru': False, },
    '<inventory_root>/system/chassis/motherboard/cpu/core10': {'fru_type': 'CORE',
                                                               'is_fru': False, },
    '<inventory_root>/system/chassis/motherboard/cpu/core11': {'fru_type': 'CORE',
                                                               'is_fru': False, },

    '<inventory_root>/system/chassis/motherboard/membuf': {'fru_type': 'MEMORY_BUFFER',
                                                           'is_fru': False, },

    '<inventory_root>/system/chassis/motherboard/dimm0': {'fru_type': 'DIMM', 'is_fru': True, },
    '<inventory_root>/system/chassis/motherboard/dimm1': {'fru_type': 'DIMM', 'is_fru': True, },
    '<inventory_root>/system/chassis/motherboard/dimm2': {'fru_type': 'DIMM', 'is_fru': True, },
    '<inventory_root>/system/chassis/motherboard/dimm3': {'fru_type': 'DIMM', 'is_fru': True, },

    '<inventory_root>/system/chassis/io_board/pcie_slot0': {'fru_type': 'PCIE_CARD',
                                                            'is_fru': True, },
    '<inventory_root>/system/chassis/io_board/pcie_slot1': {'fru_type': 'PCIE_CARD',
                                                            'is_fru': True, },

    '<inventory_root>/system/systemevent': {'fru_type': 'SYSTEM_EVENT', 'is_fru': False, },
    '<inventory_root>/system/chassis/motherboard/refclock': {'fru_type': 'MAIN_PLANAR',
                                                             'is_fru': False, },
    '<inventory_root>/system/chassis/motherboard/pcieclock': {'fru_type': 'MAIN_PLANAR',
                                                              'is_fru': False, },
    '<inventory_root>/system/chassis/motherboard/todclock': {'fru_type': 'MAIN_PLANAR',
                                                             'is_fru': False, },
    '<inventory_root>/system/chassis/motherboard/apss': {'fru_type': 'MAIN_PLANAR',
                                                         'is_fru': False, },
}

ID_LOOKUP = {
    'FRU': {
        0x0d: '<inventory_root>/system/chassis',
        0x34: '<inventory_root>/system/chassis/motherboard',
        0x01: '<inventory_root>/system/chassis/motherboard/cpu',
        0x02: '<inventory_root>/system/chassis/motherboard/membuf',
        0x03: '<inventory_root>/system/chassis/motherboard/dimm0',
        0x04: '<inventory_root>/system/chassis/motherboard/dimm1',
        0x05: '<inventory_root>/system/chassis/motherboard/dimm2',
        0x06: '<inventory_root>/system/chassis/motherboard/dimm3',
        0x35: '<inventory_root>/system',
    },
    'FRU_STR': {
        'PRODUCT_15': '<inventory_root>/system',
        'CHASSIS_2': '<inventory_root>/system/chassis',
        'BOARD_1': '<inventory_root>/system/chassis/motherboard/cpu',
        'BOARD_2': '<inventory_root>/system/chassis/motherboard/membuf',
        'BOARD_14': '<inventory_root>/system/chassis/motherboard',
        'PRODUCT_3': '<inventory_root>/system/chassis/motherboard/dimm0',
        'PRODUCT_4': '<inventory_root>/system/chassis/motherboard/dimm1',
        'PRODUCT_5': '<inventory_root>/system/chassis/motherboard/dimm2',
        'PRODUCT_6': '<inventory_root>/system/chassis/motherboard/dimm3',
    },
    'SENSOR': {
        0x34: '<inventory_root>/system/chassis/motherboard',
        0x37: '<inventory_root>/system/chassis/motherboard/refclock',
        0x38: '<inventory_root>/system/chassis/motherboard/pcieclock',
        0x39: '<inventory_root>/system/chassis/motherboard/todclock',
        0x3A: '<inventory_root>/system/chassis/apss',
        0x2f: '<inventory_root>/system/chassis/motherboard/cpu',
        0x22: '<inventory_root>/system/chassis/motherboard/cpu/core1',
        0x23: '<inventory_root>/system/chassis/motherboard/cpu/core2',
        0x24: '<inventory_root>/system/chassis/motherboard/cpu/core3',
        0x25: '<inventory_root>/system/chassis/motherboard/cpu/core4',
        0x26: '<inventory_root>/system/chassis/motherboard/cpu/core5',
        0x27: '<inventory_root>/system/chassis/motherboard/cpu/core6',
        0x28: '<inventory_root>/system/chassis/motherboard/cpu/core9',
        0x29: '<inventory_root>/system/chassis/motherboard/cpu/core10',
        0x2a: '<inventory_root>/system/chassis/motherboard/cpu/core11',
        0x2b: '<inventory_root>/system/chassis/motherboard/cpu/core12',
        0x2c: '<inventory_root>/system/chassis/motherboard/cpu/core13',
        0x2d: '<inventory_root>/system/chassis/motherboard/cpu/core14',
        0x2e: '<inventory_root>/system/chassis/motherboard/membuf',
        0x1e: '<inventory_root>/system/chassis/motherboard/dimm0',
        0x1f: '<inventory_root>/system/chassis/motherboard/dimm1',
        0x20: '<inventory_root>/system/chassis/motherboard/dimm2',
        0x21: '<inventory_root>/system/chassis/motherboard/dimm3',
        0x09: '/org/openbmc/sensors/host/BootCount',
        0x05: '/org/openbmc/sensors/host/BootProgress',
        0x08: '/org/openbmc/sensors/host/cpu0/OccStatus',
        0x32: '/org/openbmc/sensors/host/OperatingSystemStatus',
        0x33: '/org/openbmc/sensors/host/PowerCap',
    },
    'GPIO_PRESENT': {
        'SLOT0_PRESENT': '<inventory_root>/system/chassis/io_board/pcie_slot0',
        'SLOT1_PRESENT': '<inventory_root>/system/chassis/io_board/pcie_slot1',
    }
}

GPIO_CONFIG = {}
GPIO_CONFIG['FSI_CLK'] = {'gpio_pin': 'A4', 'direction': 'out'}
GPIO_CONFIG['FSI_DATA'] = {'gpio_pin': 'A5', 'direction': 'out'}
GPIO_CONFIG['FSI_ENABLE'] = {'gpio_pin': 'D0', 'direction': 'out'}
GPIO_CONFIG['POWER_PIN'] = {'gpio_pin': 'E1', 'direction': 'out'}
GPIO_CONFIG['CRONUS_SEL'] = {'gpio_pin': 'A6', 'direction': 'out'}
GPIO_CONFIG['PGOOD'] = {'gpio_pin': 'C7', 'direction': 'in'}
GPIO_CONFIG['BMC_THROTTLE'] = {'gpio_pin': 'J3', 'direction': 'out'}
GPIO_CONFIG['IDBTN'] = {'gpio_pin': 'Q7', 'direction': 'out'}
GPIO_CONFIG['POWER_BUTTON'] = {'gpio_pin': 'E0', 'direction': 'both'}
GPIO_CONFIG['PCIE_RESET'] = {'gpio_pin': 'B5', 'direction': 'out'}
GPIO_CONFIG['USB_RESET'] = {'gpio_pin': 'B6', 'direction': 'out'}
GPIO_CONFIG['SLOT0_RISER_PRESENT'] = {'gpio_pin': 'N0', 'direction': 'in'}
GPIO_CONFIG['SLOT1_RISER_PRESENT'] = {'gpio_pin': 'N1', 'direction': 'in'}
GPIO_CONFIG['SLOT2_RISER_PRESENT'] = {'gpio_pin': 'N2', 'direction': 'in'}
GPIO_CONFIG['SLOT0_PRESENT'] = {'gpio_pin': 'N3', 'direction': 'in'}
GPIO_CONFIG['SLOT1_PRESENT'] = {'gpio_pin': 'N4', 'direction': 'in'}
GPIO_CONFIG['SLOT2_PRESENT'] = {'gpio_pin': 'N5', 'direction': 'in'}
GPIO_CONFIG['MEZZ0_PRESENT'] = {'gpio_pin': 'O0', 'direction': 'in'}
GPIO_CONFIG['MEZZ1_PRESENT'] = {'gpio_pin': 'O1', 'direction': 'in'}


def convertGpio(name):
    name = name.upper()
    c = name[0:1]
    offset = int(name[1:])
    a = ord(c) - 65
    base = a * 8 + GPIO_BASE
    return base + offset


HWMON_CONFIG = {
    '2-004c': {
        'names': {
            'temp1_input': {'object_path': 'temperature/ambient', 'poll_interval': 5000,
                            'scale': 1000, 'units': 'C'},
        }
    },
    '3-0050': {
        'names': {
            'caps_curr_powercap': {'object_path': 'powercap/curr_cap', 'poll_interval': 10000,
                                   'scale': 1, 'units': 'W'},
            'caps_curr_powerreading': {'object_path': 'powercap/system_power',
                                       'poll_interval': 10000, 'scale': 1, 'units': 'W'},
            'caps_max_powercap': {'object_path': 'powercap/max_cap', 'poll_interval': 10000,
                                  'scale': 1, 'units': 'W'},
            'caps_min_powercap': {'object_path': 'powercap/min_cap', 'poll_interval': 10000,
                                  'scale': 1, 'units': 'W'},
            'caps_norm_powercap': {'object_path': 'powercap/n_cap', 'poll_interval': 10000,
                                   'scale': 1, 'units': 'W'},
            'caps_user_powerlimit': {'object_path': 'powercap/user_cap', 'poll_interval': 10000,
                                     'scale': 1, 'units': 'W'},
        }
    }
}

# Miscellaneous non-poll sensor with system specific properties.
# The sensor id is the same as those defined in ID_LOOKUP['SENSOR'].
MISC_SENSORS = {
    0x09: {'class': 'BootCountSensor'},
    0x05: {'class': 'BootProgressSensor'},
    0x08: {'class': 'OccStatusSensor',
           'os_path': '/sys/class/i2c-adapter/i2c-3/3-0050/online'},
    0x32: {'class': 'OperatingSystemStatusSensor'},
    0x33: {'class': 'PowerCap',
           'os_path': '/sys/class/hwmon/hwmon1/user_powercap'},
}
