xref: /haiku/headers/private/shared/DriverSettingsMessageAdapter.h (revision a07cdb6e9f8e484b6ba9f209fbeb144e906d3405)
1 /*
2  * Copyright 2006-2013, Haiku, Inc. All Rights Reserved.
3  * Distributed under the terms of the MIT License.
4  *
5  * Authors:
6  *		Axel Dörfler, axeld@pinc-software.de
7  *		Michael Lotz <mmlr@mlotz.ch>
8  */
9 #ifndef DRIVER_SETTINGS_MESSAGE_ADAPTER_H
10 #define DRIVER_SETTINGS_MESSAGE_ADAPTER_H
11 
12 
13 #include <driver_settings.h>
14 #include <Message.h>
15 
16 
17 struct settings_template {
18 	uint32		type;
19 	const char*	name;
20 	const settings_template* sub_template;
21 	bool		parent_value;
22 };
23 
24 
25 class DriverSettingsMessageAdapter {
26 public:
27 								DriverSettingsMessageAdapter();
28 								~DriverSettingsMessageAdapter();
29 
30 			status_t			ConvertFromDriverSettings(
31 									const driver_settings& settings,
32 									const settings_template* settingsTemplate,
33 									BMessage& message);
34 			status_t			ConvertFromDriverSettings(const char* path,
35 									const settings_template* settingsTemplate,
36 									BMessage& message);
37 
38 			status_t			ConvertToDriverSettings(
39 									const settings_template* settingsTemplate,
40 									BString& settings, const BMessage& message);
41 			status_t			ConvertToDriverSettings(const char* path,
42 									const settings_template* settingsTemplate,
43 									const BMessage& message);
44 
45 private:
46 			const settings_template* _FindSettingsTemplate(
47 									const settings_template* settingsTemplate,
48 									const char* name);
49 			const settings_template* _FindParentValueTemplate(
50 									const settings_template* settingsTemplate);
51 			status_t			_AddParameter(const driver_parameter& parameter,
52 									const char* name, uint32 type,
53 									BMessage& message);
54 
55 			status_t			_ConvertFromDriverParameter(
56 									const driver_parameter& parameter,
57 									const settings_template* settingsTemplate,
58 									BMessage& message);
59 
60 			status_t			_AppendSettings(
61 									const settings_template* settingsTemplate,
62 									BString& settings, const BMessage& message,
63 									const char* name, type_code type,
64 									int32 count,
65 									const char* settingName = NULL);
66 
67 };
68 
69 
70 #endif	// DRIVER_SETTINGS_MESSAGE_ADAPTER_H
71