Fix for x86_64 build fail
[platform/upstream/connectedhomeip.git] / src / app / util / af-event.h
1 /**
2  *
3  *    Copyright (c) 2020 Project CHIP Authors
4  *
5  *    Licensed under the Apache License, Version 2.0 (the "License");
6  *    you may not use this file except in compliance with the License.
7  *    You may obtain a copy of the License at
8  *
9  *        http://www.apache.org/licenses/LICENSE-2.0
10  *
11  *    Unless required by applicable law or agreed to in writing, software
12  *    distributed under the License is distributed on an "AS IS" BASIS,
13  *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  *    See the License for the specific language governing permissions and
15  *    limitations under the License.
16  */
17
18 /**
19  *
20  *    Copyright (c) 2020 Silicon Labs
21  *
22  *    Licensed under the Apache License, Version 2.0 (the "License");
23  *    you may not use this file except in compliance with the License.
24  *    You may obtain a copy of the License at
25  *
26  *        http://www.apache.org/licenses/LICENSE-2.0
27  *
28  *    Unless required by applicable law or agreed to in writing, software
29  *    distributed under the License is distributed on an "AS IS" BASIS,
30  *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
31  *    See the License for the specific language governing permissions and
32  *    limitations under the License.
33  */
34 /*****************************************************************************
35  * @file
36  * @brief Interface for the application event mechanism
37  *******************************************************************************
38  ******************************************************************************/
39
40 #pragma once
41
42 #include "af.h"
43
44 #define MAX_TIMER_UNITS_HOST 0x7fff
45 #define MAX_TIMER_MILLISECONDS_HOST (MAX_TIMER_UNITS_HOST * MILLISECOND_TICKS_PER_MINUTE)
46
47 /** @brief Complete events with a control and a handler procedure.
48  *
49  * An application typically creates an array of events
50  * along with their handlers.
51  * The main loop passes the array to ::emberRunEvents() to call
52  * the handlers of any events whose time has arrived.
53  */
54 typedef struct EmberEventData EmberEventData;
55
56 // A function used to retrieve the proper NCP timer duration and unit based on a given
57 // passed number of milliseconds.
58 void emAfGetTimerDurationAndUnitFromMS(uint32_t durationMs, uint16_t * duration, EmberEventUnits * units);
59
60 // A function (inverse of the above) to retrieve the number of milliseconds
61 // represented by a given timer duration and unit.
62 uint32_t emAfGetMSFromTimerDurationAndUnit(uint16_t duration, EmberEventUnits units);
63
64 const char * emberAfGetEventString(uint8_t index);
65
66 void emAfInitEvents(void);
67
68 /** @brief Sets this ::EmberEventControl as inactive (no pending event).
69  */
70 void emberEventControlSetInactive(EmberEventControl * control);
71
72 /** @brief Returns true is ::EmberEventControl is active.
73  */
74 bool emberEventControlGetActive(EmberEventControl * control);
75
76 /** @brief Sets this ::EmberEventControl to run as soon as possible.
77  */
78 void emberEventControlSetActive(EmberEventControl * control);