

// WARNING: учитываем, что минимальная задержка, к-ю можно сейчас обеспечить - от 110 до 150 мкс. 
// Меньшего разрешения пока добиться не удалось

/**
 * int hsal_sleep_for_s(uint32_t s);
 * @brief Задержка текущего треда на заданное количество секунд
 * @param[in] s Количество секунд 
 * @return Результат операции 
 */
 @EXTERNAL FUNCTION hsal_sleep_for_s : DINT
 VAR_INPUT
    s: DWORD; 
 END_VAR
 END_FUNCTION


/**
 * int hsal_sleep_for_ms(uint64_t ms);
 * @brief Задержка текущего треда на заданное количество милисекунд
 * @param[in] ms Количество милисекунд 
 * @return Результат операции 
 */

@EXTERNAL FUNCTION hsal_sleep_for_ms : DINT
 VAR_INPUT
    ms: LWORD; 
 END_VAR
 END_FUNCTION


/**
 * int hsal_sleep_for_us(uint64_t us);
 * @brief Задержка текущего треда на заданное количество милисекунд
 * @param[in] us Количество милисекунд 
 * @return Результат операции 
 */
@EXTERNAL FUNCTION hsal_sleep_for_us : DINT
 VAR_INPUT
    us: LWORD; 
 END_VAR
 END_FUNCTION
 
 /**
 * @brief Усыпляет текущий тред до указанного момента времени, заданного в миллисекундах.
 * Если целевой момент времени уже прошёл, функция возвращает управление немедленно.
 * 
 * @param[in] target_time_ms Целевой момент времени в миллисекундах относительно некоторой точки отсчёта
 * @return Результат операции
 
int hsal_sleep_to_ms(uint64_t target_time_ms);*/
@EXTERNAL FUNCTION hsal_sleep_to_ms : DINT
 VAR_INPUT
    target_time_ms: LWORD; 
 END_VAR
 END_FUNCTION

/**
 * @brief Усыпляет текущий тред до указанного момента времени, заданного в микросекундах.
 * Если целевой момент времени уже прошёл, функция возвращает управление немедленно.
 * 
 * @param[in] target_time_us Целевой момент времени в микросекундах относительно некоторой точки отсчёта
 * @return Результат операции

int hsal_sleep_to_us(uint64_t target_time_us); */
@EXTERNAL FUNCTION hsal_sleep_to_us : DINT
 VAR_INPUT
    target_time_ms: LWORD; 
 END_VAR
 END_FUNCTION

/**
 * @brief Получение текущего времени в миллисекундах
 * @return Текущее время системы с монотонными часами в миллисекундах

uint64_t hsal_gettime_ms(void); */
@EXTERNAL FUNCTION hsal_gettime_ms : LWORD

 END_FUNCTION

/**
 * @brief Получение текущего времени в микросекундах
 * @return Текущее время системы с монотонными часами в микросекундах
 
uint64_t hsal_gettime_us(void);*/
@EXTERNAL FUNCTION hsal_gettime_us : LWORD

 END_FUNCTION





