/*
 * Copyright (c) 2019 Actinius
 *
 * SPDX-License-Identifier: Apache-2.0
 */

#include <init.h>
#include <drivers/gpio.h>

#include <logging/log.h>
LOG_MODULE_REGISTER(board_control, CONFIG_BOARD_ICARUS_LOG_LEVEL);

#define SIM_SELECT_PIN 8

static void select_sim(void)
{
	const struct device *port = device_get_binding(DT_LABEL(DT_NODELABEL(gpio0)));

	if (!port) {
		LOG_ERR("Could not get GPIO Device Binding");

		return;
	}

	#ifdef CONFIG_BOARD_SELECT_SIM_EXTERNAL
		gpio_pin_configure(port, SIM_SELECT_PIN, GPIO_OUTPUT_LOW);
		LOG_INF("External SIM is selected");
	#else
		gpio_pin_configure(port, SIM_SELECT_PIN, GPIO_OUTPUT_HIGH);
		LOG_INF("eSIM is selected");
	#endif
}

static int board_actinius_icarus_init(const struct device *dev)
{
	ARG_UNUSED(dev);

	select_sim();

	return 0;
}

/* Needs to happen after GPIO driver init */
SYS_INIT(board_actinius_icarus_init, POST_KERNEL, 99);
