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