13 #include <io/status_loggers.h>
14 #include <lib/stdio.h>
15 #include <sys/trigger.h>
16 #include <drv/input/keymap.h>
17 #include "sys/scheduler.h"
18 #include "sys/timer.h"
23 int _FoundFreeIndexTrigger(){
24 for(
int i = 0; i < 1024; i++){
25 if (
Triggers[i].is_not_delete == 0)
return i;
37 qemu_log(
"[Trigger] An attempt to register trigger '%x' was detected.",type);
38 int idx = _FoundFreeIndexTrigger();
40 qemu_err(
"[Trigger] ERROR NO FREE TRIGGERS SPACE!!");
48 qemu_ok(
"[Trigger] Format %x trigger has successfully registered and has index number %d.",type,idx);
57 if (index > 1024 ||
Triggers[index].is_not_delete == 0){
58 qemu_err(
"[Trigger] Unknown #%d trigger",index);
61 qemu_log(
"[Trigger] Trigger #%d has been deleted",index);
70 if (index > 1024 ||
Triggers[index].is_not_delete == 0){
71 qemu_err(
"[Trigger] Unknown #%d trigger",index);
82 if (index > 1024 ||
Triggers[index].is_not_delete == 0){
83 qemu_err(
"[Trigger] Unknown #%d trigger",index);
86 qemu_log(
"[Trigger] Trigger #%d has been disabled",index);
93 void CallTrigger(
int type,
void* data1,
void* data2,
void* data3,
void* data4,
void* data5){
98 Triggers[inx].
cmd(data1, data2, data3, data4, data5);
107 qemu_log(
"[Trigger] Configurate...");
trigger_cmd_t cmd
Команда с 5ю аргументами
size_t index
Индекс триггера
bool ready
Триггер готов к работе
bool is_not_delete
Триггер НЕ удален и НЕ свободен
void DeleteTrigger(int index)
Удаление триггера
void CallTrigger(int type, void *data1, void *data2, void *data3, void *data4, void *data5)
Функция для вызовов триггеров (Если самостоятельно надо вызвать триггер)
void OffTrigger(int index)
Выключить триггер
size_t TriggersCount
Колво активных триггеров
void OnTrigger(int index)
Включить триггер
trigger_t Triggers[1024]
Сетка смонтированных триггеров
void triggersConfig()
Инициализация триггеров
int RegTrigger(int type, trigger_cmd_t handler)
Регистрация триггера