53 lines
1.8 KiB
C
53 lines
1.8 KiB
C
#ifndef ZDISTA_WRAPPER_H
|
|
#define ZDISTA_WRAPPER_H
|
|
|
|
#include "mocks_extra.h"
|
|
|
|
// Na systemach Windows, musimy jawnie eksportować symbole, aby były widoczne w DLL.
|
|
#if defined(_WIN32) || defined(_WIN64)
|
|
#define DLL_EXPORT __declspec(dllexport)
|
|
#else
|
|
#define DLL_EXPORT
|
|
#endif
|
|
|
|
// Deklaracja nieprzezroczystej struktury (opaque struct).
|
|
// Dzięki temu, wewnętrzna budowa naszego "uchwytu" jest ukryta przed kodem Python.
|
|
struct ZDistA_handle;
|
|
typedef struct ZDistA_handle ZDistA_handle;
|
|
|
|
/**
|
|
* @brief Inicjalizuje logikę przekaźnika i wszystkie wewnętrzne struktury.
|
|
*
|
|
* @param z1_r Rezystancja nastawcza strefy 1.
|
|
* @param z1_x Reaktancja nastawcza strefy 1.
|
|
* @param line_angle_deg Kąt linii w stopniach.
|
|
* @param kierunek Kierunkowość (0: bezkierunkowy, 1: do linii, 2: do szyn).
|
|
* @return Wskaźnik do "uchwytu" (handle) przechowującego stan przekaźnika, lub NULL w przypadku błędu.
|
|
*/
|
|
DLL_EXPORT ZDistA_handle* ZDistA_init(double z1_r, double z1_x, double line_angle_deg, int kierunek);
|
|
|
|
/**
|
|
* @brief Wykonuje jeden krok obliczeniowy algorytmu.
|
|
*
|
|
* @param handle Uchwyt zwrócony przez ZDistA_init.
|
|
* @param u_re Tablica 3 floatów (U1, U2, U3 - części rzeczywiste).
|
|
* @param u_im Tablica 3 floatów (U1, U2, U3 - części urojone).
|
|
* @param i_re Tablica 3 floatów (I1, I2, I3 - części rzeczywiste).
|
|
* @param i_im Tablica 3 floatów (I1, I2, I3 - części urojone).
|
|
* @return Wartość > 0, jeśli nastąpiło zadziałanie (trip), 0 w przeciwnym razie.
|
|
*/
|
|
DLL_EXPORT int ZDistA_step(
|
|
ZDistA_handle* handle,
|
|
const float u_re[3], const float u_im[3],
|
|
const float i_re[3], const float i_im[3]
|
|
);
|
|
|
|
/**
|
|
* @brief Zwalnia pamięć zaalokowaną dla uchwytu.
|
|
*
|
|
* @param handle Uchwyt do zwolnienia.
|
|
*/
|
|
DLL_EXPORT void ZDistA_cleanup(ZDistA_handle* handle);
|
|
|
|
#endif // ZDISTA_WRAPPER_H
|