#pragma once

#include <tactility/dts.h>
#include <tactility/error.h>
#include <tactility/module.h>

#ifdef __cplusplus
extern "C" {
#endif

/**
 * Initialize the kernel with the provided modules from the device tree
 * @param dts_modules List of modules from devicetree, null-terminated. Non-null parameter.
 * @param dts_devices The list of generated devices from the devicetree. The array must be terminated with DTS_DEVICE_TERMINATOR. Non-null parameter.
 * @return ERROR_NONE on success, otherwise an error code
 */
error_t kernel_init(struct Module* const dts_modules[], const struct DtsDevice dts_devices[]);

#ifdef __cplusplus
}
#endif
