/*
 * Copyright (c) 2023 Nordic Semiconductor ASA
 *
 * SPDX-License-Identifier: Apache-2.0
 */

#ifndef NSI_COMMON_SRC_INCL_HWS_MODELS_IF_H
#define NSI_COMMON_SRC_INCL_HWS_MODELS_IF_H

#include <stdint.h>
#include "nsi_utils.h"
#include "nsi_hw_scheduler.h"

#ifdef __cplusplus
extern "C" {
#endif

/* Internal structure used to link HW events */
struct nsi_hw_event_st {
	void (*const callback)(void);
	uint64_t *timer;
};

/**
 * Register an event timer and event callback
 *
 * The HW scheduler will keep track of this event, and call its callback whenever its
 * timer is reached.
 * The ordering of events in the same microsecond is given by prio (lowest first).
 * (Normally HW models will not care about the event ordering, and will simply set a prio like 100)
 *
 * Only very particular models will need to execute before or after others.
 *
 * Priority can be a number between 0 and 999.
 */
#define NSI_HW_EVENT(t, fn, prio)					\
	static const struct nsi_hw_event_st NSI_CONCAT(NSI_CONCAT(__nsi_hw_event_, fn), t) \
		__attribute__((__used__))						\
		__attribute__((__section__(".nsi_hw_event_" NSI_STRINGIFY(prio))))	\
		= {			\
			.callback = fn,	\
			.timer = &t,	\
		}

#ifdef __cplusplus
}
#endif

#endif /* NSI_COMMON_SRC_INCL_HWS_MODELS_IF_H */
