1 /*
2  * Copyright (C) 2016 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 #ifndef CHRE_CORE_EVENT_LOOP_COMMON_H_
18 #define CHRE_CORE_EVENT_LOOP_COMMON_H_
19 
20 #include "chre_api/chre/event.h"
21 
22 #include <cstdint>
23 
24 namespace chre {
25 
26 //! An identifier for a system callback, which is mapped into a CHRE event type
27 //! in the user-defined range.
28 enum class SystemCallbackType : uint16_t {
29   FirstCallbackType = CHRE_EVENT_FIRST_USER_VALUE,
30 
31   MessageToHostComplete,
32   WifiScanMonitorStateChange,
33   WifiRequestScanResponse,
34   WifiHandleScanEvent,
35   NanoappListResponse,
36   SensorLastEventUpdate,
37   FinishLoadingNanoapp,
38   WwanHandleCellInfoResult,
39   HandleUnloadNanoapp,
40   GnssSessionStatusChange,
41   SensorStatusUpdate,
42   PerformDebugDump,
43   TimerPoolTick,
44   AudioHandleDataEvent,
45   WifiHandleRangingEvent,
46   AudioAvailabilityChange,
47   AudioHandleHostAwake,
48   SensorFlushComplete,
49   SensorFlushTimeout,
50   SensorStatusInfoResponse,
51   DeferredMessageToNanoappFromHost,
52   SettingChangeEvent,
53   GnssLocationReportEvent,
54   GnssMeasurementReportEvent,
55   Shutdown,
56   TimerSyncRequest,
57   DelayedFatalError,
58   GnssRequestResyncEvent,
59   SendBufferedLogMessage,
60 };
61 
62 //! Deferred/delayed callbacks use the event subsystem but are invariably sent
63 //! by the system and received by the system, so they are able to make use of an
64 //! extra parameter
65 //! @see Event
66 using SystemEventCallbackFunction = void(uint16_t type, void *data,
67                                          void *extraData);
68 
69 /**
70  * Generic event free callback that can be used by any event where the event
71  * data is allocated via memoryAlloc, and no special processing is needed in the
72  * event complete callback other than freeing the event data.
73  */
74 void freeEventDataCallback(uint16_t eventType, void *eventData);
75 
76 }  // namespace chre
77 
78 #endif  // CHRE_CORE_EVENT_LOOP_COMMON_H_
79