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