1 /* 2 * Copyright 2006-2015, 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 class DriverSettingsConverter { 18 public: 19 DriverSettingsConverter(); 20 virtual ~DriverSettingsConverter(); 21 22 virtual status_t ConvertFromDriverSettings( 23 const driver_parameter& parameter, 24 const char* name, int32 index, uint32 type, 25 BMessage& target) = 0; 26 virtual status_t ConvertToDriverSettings(const BMessage& source, 27 const char* name, int32 index, 28 uint32 type, BString& value) = 0; 29 }; 30 31 32 struct settings_template { 33 uint32 type; 34 const char* name; 35 const settings_template* sub_template; 36 bool parent_value; 37 DriverSettingsConverter* converter; 38 }; 39 40 41 class DriverSettingsMessageAdapter { 42 public: 43 DriverSettingsMessageAdapter(); 44 ~DriverSettingsMessageAdapter(); 45 46 status_t ConvertFromDriverSettings( 47 const driver_settings& settings, 48 const settings_template* settingsTemplate, 49 BMessage& message); 50 status_t ConvertFromDriverSettings(const char* path, 51 const settings_template* settingsTemplate, 52 BMessage& message); 53 54 status_t ConvertToDriverSettings( 55 const settings_template* settingsTemplate, 56 BString& settings, const BMessage& message); 57 status_t ConvertToDriverSettings(const char* path, 58 const settings_template* settingsTemplate, 59 const BMessage& message); 60 61 private: 62 const settings_template* _FindSettingsTemplate( 63 const settings_template* settingsTemplate, 64 const char* name); 65 const settings_template* _FindParentValueTemplate( 66 const settings_template* settingsTemplate); 67 status_t _AddParameter(const driver_parameter& parameter, 68 const settings_template& settingsTemplate, 69 BMessage& message); 70 71 status_t _ConvertFromDriverParameter( 72 const driver_parameter& parameter, 73 const settings_template* settingsTemplate, 74 BMessage& message); 75 76 status_t _AppendSettings( 77 const settings_template* settingsTemplate, 78 BString& settings, const BMessage& message, 79 const char* name, type_code type, 80 int32 count, 81 const char* settingName = NULL); 82 83 }; 84 85 86 #endif // DRIVER_SETTINGS_MESSAGE_ADAPTER_H 87