#ifndef __AVM_LED_EVENTS_H__ #define __AVM_LED_EVENTS_H__ #include enum _led_event { #define DEFINE_EVENT_STATE(_name, ...) \ __VA_ARGS__ #define DEFINE_EVENT(_name, _value, ...) \ event_ ## _name = _value, #define DEFINE_EVENT_RAW(_name, _value, ...) \ event_ ## _name = _value, #define _ALL_EVENTS #include }; #ifndef LED_EVENT_VERSION #define LED_EVENT_VERSION 2 #define LED_EVENT_SUBVERSION 30 #endif #ifdef __KERNEL__ // Reuse the old prototype to avoid changes extern int (*led_event_action)(int version, enum _led_event event, unsigned int value); static inline int avm_hui_send_event(enum _led_event event, unsigned int value) { if (!led_event_action) return -EAGAIN; return led_event_action(LED_EVENT_VERSION, event, value); } #endif const char *avm_hui_get_event_name(enum _led_event event); struct avm_hui_event_info { enum _led_event id; const char *name; }; const struct avm_hui_event_info* avm_hui_get_info_by_id(enum _led_event id); const struct avm_hui_event_info* avm_hui_get_info_by_name(const char *name); // Internal, do not use directly extern const struct avm_hui_event_info *_avm_hui_all_events[]; #define foreach_avm_hui_event(_i, _var) \ for (_i = 0, _var = _avm_hui_all_events[0]; _var != NULL; _i++, _var = _avm_hui_all_events[_i]) #endif