xref: /haiku/headers/private/device/JoystickTweaker.h (revision 393ca9a124efa6630c4823156b8cfceaf4780430)
1 /*
2  * Copyright 2008, Haiku, Inc.
3  * Distributed under the terms of the MIT License.
4  *
5  * Authors:
6  *		Fredrik Modeen
7  */
8 
9 #include <joystick_driver.h>
10 
11 #include <Entry.h>
12 #include <List.h>
13 
14 
15 #if DEBUG
16 #include <stdio.h>
17 #endif
18 
19 #define DEVICE_BASE_PATH			"/dev/joystick/"
20 #define JOYSTICK_CONFIG_BASE_PATH	"/boot/home/config/settings/joysticks/"
21 	// TODO: this should use find_directory() instead and it should take
22 	// common/system into account as well
23 
24 class BJoystick;
25 
26 typedef struct _joystick_info {
27 	joystick_module_info	module_info;
28 	bool					calibration_enable;
29 	bigtime_t				max_latency;
30 	BList					axis_names;
31 	BList					hat_names;
32 	BList					button_names;
33 } joystick_info;
34 
35 
36 class _BJoystickTweaker {
37 public:
38 						_BJoystickTweaker();
39 						_BJoystickTweaker(BJoystick &stick);
40 	virtual				~_BJoystickTweaker();
41 			status_t	SendIOCT(uint32 op);
42 			status_t	GetInfo(_joystick_info* info, const char *ref);
43 
44 			// BeOS R5's joystick pref need these
45 			status_t	save_config(const entry_ref *ref = NULL);
46 			void		scan_including_disabled();
47 			status_t	get_info();
48 
49 private:
50 			void		_BuildFromJoystickDesc(char *string,
51 							_joystick_info *info);
52 			status_t	_ScanIncludingDisabled(const char *rootPath,
53 							BList *list, BEntry *rootEntry = NULL);
54 
55 			void		_EmpyList(BList *list);
56 
57 			BJoystick *	fJoystick;
58 #if DEBUG
59 public:
60 	static	FILE *		sLogFile;
61 #endif
62 };
63