#! /usr/bin/python

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'},
}
