/*
 * Copyright 2017, Data61, CSIRO (ABN 41 687 119 230)
 *
 * SPDX-License-Identifier: BSD-2-Clause
 */

import <std_connector.camkes>;

component Hardware {
    hardware;
    emits Irq e;
}


component Software {
    consumes Irq e;
    control;
}

assembly {
    composition {
        component Hardware h;
        component Software s;

        connection seL4HardwareInterrupt conn(from h.e, to s.e);
    }

    configuration {
        h.e_irq_number = 10;

        h.integrity_label = "s";
    }
}
