tizen 2.4 release
[framework/system/libfeedback.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);
32         int (*stop) (void);
33         int (*is_supported) (int, bool *);
34         int (*get_path) (int, char *, unsigned int);
35         int (*set_path) (int, char *);
36 };
37
38 void devices_init(void);
39 void devices_exit(void);
40 int devices_play(int pattern);
41 int devices_stop(void);
42
43 #define DEVICE_OPS_REGISTER(dev)        \
44 static void __CONSTRUCTOR__ module_init(void)   \
45 {       \
46         add_device(dev);        \
47 }
48
49 void add_device(const struct device_ops *dev);
50 void remove_device(const struct device_ops *dev);
51 const struct device_ops *find_device(int type);
52
53 #endif