#! /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'},
}
