Skip to content
This repository was archived by the owner on Aug 5, 2022. It is now read-only.

Commit 8a46614

Browse files
committed
Merge pull request #49 from pafonso/iminleg_rebase
Iminleg rebase
2 parents d37ca91 + 36423a4 commit 8a46614

37 files changed

+498
-202
lines changed

Schemas/Parameter.xsd

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,12 +34,21 @@
3434
<xs:complexType name="Adaptation">
3535
<xs:attribute name="Offset" type="xs:integer" default="0"/>
3636
</xs:complexType>
37-
<xs:element name="LinearAdaptation">
37+
<xs:complexType name="LinearAdaptationType">
38+
<xs:complexContent>
39+
<xs:extension base="Adaptation">
40+
<xs:attribute name="SlopeNumerator" type="xs:double" default="1"/>
41+
<xs:attribute name="SlopeDenominator" type="xs:double" default="1"/>
42+
</xs:extension>
43+
</xs:complexContent>
44+
</xs:complexType>
45+
<xs:element name="LinearAdaptation" type="LinearAdaptationType"/>
46+
<xs:element name="LogarithmicAdaptation">
3847
<xs:complexType>
3948
<xs:complexContent>
40-
<xs:extension base="Adaptation">
41-
<xs:attribute name="SlopeNumerator" type="xs:double" default="1"/>
42-
<xs:attribute name="SlopeDenominator" type="xs:double" default="1"/>
49+
<xs:extension base="LinearAdaptationType">
50+
<xs:attribute name="LogarithmBase" type="xs:double" default="10"/>
51+
<xs:attribute name="FloorValue" type="xs:double" default="-INF"/>
4352
</xs:extension>
4453
</xs:complexContent>
4554
</xs:complexType>
@@ -63,6 +72,7 @@
6372
<xs:extension base="Parameter">
6473
<xs:choice minOccurs="0">
6574
<xs:element ref="LinearAdaptation"/>
75+
<xs:element ref="LogarithmicAdaptation"/>
6676
</xs:choice>
6777
<xs:attributeGroup ref="IntegerParameterAttributes"/>
6878
<xs:attribute name="Unit" type="xs:token" use="optional"/>

bindings/python/Android.mk

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@ $(generated-sources-dir)/pfw_wrap.h: $(generated-sources-dir)/pfw_wrap.cxx
7676
$(generated-sources-dir)/pfw_wrap.cxx: $(LOCAL_PATH)/pfw.i
7777
@echo "Generating Python binding files"
7878
mkdir -p $(dir $@) # surprisingly, path is not generated by build system
79+
mkdir -p $(HOST_LIBRARY_PATH)
7980
prebuilts/misc/linux-x86_64/swig/swig \
8081
-Iprebuilts/misc/common/swig/include/2.0.11/python/ \
8182
-Iprebuilts/misc/common/swig/include/2.0.11/ \

bindings/python/pfw.i

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -169,10 +169,6 @@ public:
169169
bool exportSingleDomainXml(std::string& strXmlDest, const std::string& strDomainName, bool bWithSettings,
170170
bool bToFile, std::string& strError) const;
171171
%clear std::string& strXmlDest;
172-
173-
%apply std::string &OUTPUT { std::string& strResult }
174-
bool getSystemClassXMLString(std::string& strResult);
175-
%clear std::string& strResult;
176172
};
177173

178174
// SWIG nested class support is not complete - cf.

parameter/Android.mk

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@ common_src_files := \
7979
InstanceDefinition.cpp \
8080
IntegerParameterType.cpp \
8181
LinearParameterAdaptation.cpp \
82+
LogarithmicParameterAdaptation.cpp \
8283
MappingContext.cpp \
8384
MappingData.cpp \
8485
ParameterAccessContext.cpp \
@@ -155,6 +156,8 @@ LOCAL_C_INCLUDES := $(common_c_includes)
155156
LOCAL_SHARED_LIBRARIES := $(common_shared_libraries) libdl
156157
LOCAL_STATIC_LIBRARIES := libxmlserializer libpfw_utility libxml2
157158

159+
LOCAL_REQUIRED_MODULES := libremote-processor
160+
158161
LOCAL_CLANG := false
159162
include external/stlport/libstlport.mk
160163
include $(BUILD_SHARED_LIBRARY)

parameter/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ add_library(parameter SHARED
6464
InstanceDefinition.cpp
6565
IntegerParameterType.cpp
6666
LinearParameterAdaptation.cpp
67+
LogarithmicParameterAdaptation.cpp
6768
MappingContext.cpp
6869
MappingData.cpp
6970
ParameterAccessContext.cpp

parameter/IntegerParameterType.cpp

100755100644
File mode changed.

parameter/IntegerParameterType.h

100755100644
File mode changed.

parameter/LinearParameterAdaptation.cpp

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 2011-2014, Intel Corporation
2+
* Copyright (c) 2011-2015, Intel Corporation
33
* All rights reserved.
44
*
55
* Redistribution and use in source and binary forms, with or without modification,
@@ -37,6 +37,11 @@ CLinearParameterAdaptation::CLinearParameterAdaptation() : base("Linear"), _dSlo
3737
{
3838
}
3939

40+
CLinearParameterAdaptation::CLinearParameterAdaptation(const string& strType) :
41+
base(strType), _dSlopeNumerator(1), _dSlopeDenominator(1)
42+
{
43+
}
44+
4045
// Element properties
4146
void CLinearParameterAdaptation::showProperties(string& strResult) const
4247
{

parameter/LinearParameterAdaptation.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 2011-2014, Intel Corporation
2+
* Copyright (c) 2011-2015, Intel Corporation
33
* All rights reserved.
44
*
55
* Redistribution and use in source and binary forms, with or without modification,
@@ -37,6 +37,7 @@ class CLinearParameterAdaptation : public CParameterAdaptation
3737
{
3838
public:
3939
CLinearParameterAdaptation();
40+
CLinearParameterAdaptation(const std::string& strType);
4041

4142
// Conversions
4243
virtual int64_t fromUserValue(double dValue) const;
Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
/*
2+
* Copyright (c) 2011-2015, Intel Corporation
3+
* All rights reserved.
4+
*
5+
* Redistribution and use in source and binary forms, with or without modification,
6+
* are permitted provided that the following conditions are met:
7+
*
8+
* 1. Redistributions of source code must retain the above copyright notice, this
9+
* list of conditions and the following disclaimer.
10+
*
11+
* 2. Redistributions in binary form must reproduce the above copyright notice,
12+
* this list of conditions and the following disclaimer in the documentation and/or
13+
* other materials provided with the distribution.
14+
*
15+
* 3. Neither the name of the copyright holder nor the names of its contributors
16+
* may be used to endorse or promote products derived from this software without
17+
* specific prior written permission.
18+
*
19+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
20+
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
21+
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
22+
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
23+
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
24+
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
25+
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
26+
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27+
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
28+
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29+
*/
30+
31+
#include "LogarithmicParameterAdaptation.h"
32+
#include <math.h>
33+
34+
#define base CLinearParameterAdaptation
35+
36+
// M_E is the base of the natural logarithm for 'e' from math.h
37+
CLogarithmicParameterAdaptation::CLogarithmicParameterAdaptation() : base("Logarithmic"),
38+
_dLogarithmBase(M_E), _dFloorValue(-INFINITY)
39+
{
40+
}
41+
42+
// Element properties
43+
void CLogarithmicParameterAdaptation::showProperties(std::string& strResult) const
44+
{
45+
base::showProperties(strResult);
46+
47+
strResult += " - LogarithmBase: ";
48+
strResult += toString(_dLogarithmBase);
49+
strResult += "\n";
50+
strResult += " - FloorValue: ";
51+
strResult += toString(_dFloorValue);
52+
strResult += "\n";
53+
}
54+
55+
bool CLogarithmicParameterAdaptation::fromXml(const CXmlElement& xmlElement,
56+
CXmlSerializingContext& serializingContext)
57+
{
58+
59+
if (xmlElement.hasAttribute("LogarithmBase")) {
60+
61+
_dLogarithmBase = xmlElement.getAttributeDouble("LogarithmBase");
62+
63+
// Avoid negative and 1 values
64+
if (_dLogarithmBase <= 0 || _dLogarithmBase == 1) {
65+
serializingContext.setError("LogarithmBase attribute cannot be negative or 1 on element"
66+
+ xmlElement.getPath());
67+
68+
return false;
69+
}
70+
}
71+
72+
if (xmlElement.hasAttribute("FloorValue")) {
73+
_dFloorValue = xmlElement.getAttributeDouble("FloorValue");
74+
}
75+
// Base
76+
return base::fromXml(xmlElement, serializingContext);
77+
}
78+
79+
80+
int64_t CLogarithmicParameterAdaptation::fromUserValue(double dValue) const
81+
{
82+
return fmax(round(base::fromUserValue(log(dValue) / log(_dLogarithmBase))),
83+
_dFloorValue);
84+
}
85+
86+
double CLogarithmicParameterAdaptation::toUserValue(int64_t iValue) const
87+
{
88+
return exp(base::toUserValue(iValue) * log(_dLogarithmBase));
89+
}

0 commit comments

Comments
 (0)