Sync internal API behavior with product code
[platform/core/system/libsvi.git] / src / devices.h
1 /*
2  * libfeedback
3
4  * Copyright (c) 2012 - 2013 Samsung Electronics Co., Ltd.
5  *
6  * Licensed under the Apache License, Version 2.0 (the License);
7  * you may not use this file except in compliance with the License.
8  * You may obtain a copy of the License at
9  *
10  *     http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing, software
13  * distributed under the License is distributed on an "AS IS" BASIS,
14  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15  * See the License for the specific language governing permissions and
16  * limitations under the License.
17  */
18
19
20 #ifndef __DEVICES_H__
21 #define __DEVICES_H__
22
23 #include <stdbool.h>
24 #include "common.h"
25
26 struct device_ops {
27         int type;
28         const char *name;
29         void (*init) (void);
30         void (*exit) (void);
31         int (*play) (int, bool);
32         int (*play_path) (int, const char *, bool);
33         int (*stop) (void);
34         int (*is_supported) (int, bool *);
35         int (*get_path) (int, char *, unsigned int);
36         int (*set_path) (int, char *);
37 };
38
39 void devices_init(void);
40 void devices_exit(void);
41 int devices_play(int pattern, bool always);
42 int devices_play_soundpath(int pattern, const char *soundpath, bool always);
43 int devices_stop(void);
44
45 #define DEVICE_OPS_REGISTER(dev)        \
46 static void __CONSTRUCTOR__ module_init(void)   \
47 {       \
48         add_device(dev);        \
49 }
50
51 void add_device(const struct device_ops *dev);
52 void remove_device(const struct device_ops *dev);
53 const struct device_ops *find_device(int type);
54
55 #endif