3 * Copyright (c) 2020 Project CHIP Authors
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
9 * http://www.apache.org/licenses/LICENSE-2.0
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.
20 * Copyright (c) 2020 Silicon Labs
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
26 * http://www.apache.org/licenses/LICENSE-2.0
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.
34 /*****************************************************************************
36 * @brief Interface for the application event mechanism
37 *******************************************************************************
38 ******************************************************************************/
44 #define MAX_TIMER_UNITS_HOST 0x7fff
45 #define MAX_TIMER_MILLISECONDS_HOST (MAX_TIMER_UNITS_HOST * MILLISECOND_TICKS_PER_MINUTE)
47 /** @brief Complete events with a control and a handler procedure.
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.
54 typedef struct EmberEventData EmberEventData;
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);
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);
64 const char * emberAfGetEventString(uint8_t index);
66 void emAfInitEvents(void);
68 /** @brief Sets this ::EmberEventControl as inactive (no pending event).
70 void emberEventControlSetInactive(EmberEventControl * control);
72 /** @brief Returns true is ::EmberEventControl is active.
74 bool emberEventControlGetActive(EmberEventControl * control);
76 /** @brief Sets this ::EmberEventControl to run as soon as possible.
78 void emberEventControlSetActive(EmberEventControl * control);