typedef unsigned long long ull;
+typedef enum mmi_state
+{
+ MMI_STATE_NONE,
+ MMI_STATE_INITIATION,
+ MMI_STATE_EXPLORATION,
+ MMI_STATE_EXECUTION,
+ MMI_STATE_FEEDBACK,
+ MMI_STATE_OBSERVATION,
+ MMI_STATE_TERMINATION
+} mmi_state;
+
typedef enum mmi_provider_op_mode
{
MODALITY_PROVIDER_MODE_NONE,
typedef struct _mmi_provider_module mmi_provider_module;
typedef struct _mmi_provider_handle mmi_provider_handle;
+typedef struct _mmi_fusion_module_data mmi_fusion_module_data;
+typedef struct _mmi_fusion_module mmi_fusion_module;
+typedef struct _mmi_fusion_handle mmi_fusion_handle;
+
#endif //__MMI_COMMON_H__
--- /dev/null
+/*
+* Copyright © 2021 Samsung Electronics co., Ltd. All Rights Reserved.
+*
+* Permission is hereby granted, free of charge, to any person obtaining a
+* copy of this software and associated documentation files (the "Software"),
+* to deal in the Software without restriction, including without limitation
+* the rights to use, copy, modify, merge, publish, distribute, sublicense,
+* and/or sell copies of the Software, and to permit persons to whom the
+* Software is furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice (including the next
+* paragraph) shall be included in all copies or substantial portions of the
+* Software.
+*
+* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+* DEALINGS IN THE SOFTWARE.
+*/
+
+#ifndef __MMI_FUSION_IFACE_H__
+#define __MMI_FUSION_IFACE_H__
+
+#include "mmi-common.h"
+
+#define MMI_FUSION_ABI_MAJOR_MASK 0xFFFF0000
+#define MMI_FUSION_ABI_MINOR_MASK 0x0000FFFF
+
+#define MMI_FUSION_GET_ABI_MAJOR(m) (((m) & MMI_FUSION_ABI_MAJOR_MASK) >> 16)
+#define MMI_FUSION_GET_ABI_MINOR(m) ((m) & MMI_FUSION_ABI_MINOR_MASK)
+
+#define MMI_FUSION_SET_ABI_VERSION(major, minor) \
+ ((((major) << 16) & MMI_FUSION_ABI_MAJOR_MASK) \
+ | ((minor) & MMI_FUSION_ABI_MINOR_MASK))
+
+#define MMI_FUSION_API __attribute__ ((visibility("default")))
+
+#ifndef bool
+typedef int bool;
+#endif
+
+struct _mmi_fusion_module
+{
+ const char *name; /**< The name of a fusion module */
+ const char *so_name; /**< The shared library name of a fusion module */
+ unsigned long abi_version; /**< The API version of a fusion module */
+
+ mmi_fusion_module_data *(*fusion_init)(void);
+ void (*fusion_deinit)(mmi_fusion_module_data *fusion_data);
+};
+
+struct _mmi_fusion_handle
+{
+ mmi_fusion_module module_info;
+ mmi_state state;
+};
+
+struct _mmi_fusion_module_data
+{
+ mmi_state (*set_state)(mmi_state state);
+ mmi_state (*get_state)(void);
+};
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+//APIs for fusions
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif //__MMI_FUSION_IFACE_H__