-
Notifications
You must be signed in to change notification settings - Fork 0
/
trig.h
130 lines (106 loc) · 3.61 KB
/
trig.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
/**
* @file trig.h Библиотека триггеров.
*/
#ifndef TRIG_H_
#define TRIG_H_
#include <errors/errors.h>
#include <stdint.h>
#include <stddef.h>
#include <stdbool.h>
#include "q15/q15.h"
//! Максимум каналов.
#define TRIG_COUNT_MAX 16
//! Длина имени.
#define TRIG_NAME_LEN 16
//! Тип значения триггера.
typedef int16_t trig_value_t;
//! Тип источника значений триггера.
typedef enum _Trig_Src {
TRIG_AIN = 0, //!< Аналоговые входа.
TRIG_DIN = 1 //!< Цифровые входа.
} trig_src_t;
//! Тип значения источника.
typedef enum _Trig_Src_Type {
TRIG_INST = 0, //!< Мгновенное значение.
TRIG_EFF = 1 //!< Действующее значение.
} trig_src_type_t;
//!< Тип срабатывания триггера.
typedef enum _Trig_Type {
TRIG_OVF = 0, //!< Превышение.
TRIG_UDF = 1 //!< Понижение.
} trig_type_t;
//! Тип структуры инициализации триггера.
typedef struct _Trig_Init {
trig_src_t src; //!< Источник.
size_t src_channel; //!< Канал источника.
trig_src_type_t src_type; //!< Тип источника.
trig_type_t type; //!< Тип срабатывания.
q15_t time; //!< Время срабатывания, доли секунды.
iq15_t ref; //!< Опорное значение.
const char* name; //!< Имя триггера.
} trig_init_t;
/**
* Инициализирует триггеры.
*/
extern void trig_init(void);
/**
* Сбрасывает триггеры.
*/
extern void trig_reset(void);
/**
* Устанавливает разрешение триггеров.
* @param enabled Разрешение триггеров.
*/
extern void trig_set_enabled(bool enabled);
/**
* Получает разрешение триггеров.
* @param n Номер канала.
* @return Разрешение триггеров.
*/
extern bool trig_enabled(void);
/**
* Проверяет триггеры.
* @param dt Время с последней проверки.
* @return Флаг срабатывания хотя бы одного триггера.
*/
extern bool trig_check(q15_t dt);
/**
* Сбрасывает канал триггеров.
* @param n Номер канала.
* @return Код ошибки.
*/
extern err_t trig_channel_reset(size_t n);
/**
* Инициализирует канал триггеров.
* Источники для триггеров должны быть проинициализированы.
* @param n Номер канала.
* @param init Структура инициализации.
* @return Код ошибки.
*/
extern err_t trig_channel_init(size_t n, trig_init_t* init);
/**
* Устанавливает разрешение канала.
* @param n Номер канала.
* @param enabled Разрешение канала.
* @return Код ошибки.
*/
extern err_t trig_channel_set_enabled(size_t n, bool enabled);
/**
* Получает разрешение канала.
* @param n Номер канала.
* @return Разрешение канала.
*/
extern bool trig_channel_enabled(size_t n);
/**
* Получает флаг активации канала.
* @param n Номер канала.
* @return Флаг активации канала.
*/
extern bool trig_channel_activated(size_t n);
/**
* Получает имя канала.
* @param n Номер канала.
* @return Имя канала.
*/
extern const char* trig_channel_name(size_t n);
#endif /* TRIG_H_ */