--- a/kernel/eka/drivers/hcr/hcr_api.cpp Mon Dec 21 16:14:42 2009 +0000
+++ b/kernel/eka/drivers/hcr/hcr_api.cpp Wed Dec 23 11:43:31 2009 +0000
@@ -44,17 +44,17 @@
HCR_FUNC("GetUValueWordSetting");
if (HCRNotReady)
- HCR_LOG_RETURN(KErrNotReady);
+ HCR_TRACE_RETURN(KErrNotReady);
TSettingRef sref(0,0);
TInt err = 0;
err = HCRSingleton->FindSetting(aId, aType, sref);
if (err != KErrNone)
- HCR_LOG_RETURN(err);
+ HCR_TRACE_RETURN(err);
err = sref.iRep->GetValue(sref, aValue);
if (err != KErrNone)
- HCR_LOG_RETURN(err);
+ HCR_TRACE_RETURN(err);
return KErrNone;
}
@@ -65,17 +65,19 @@
HCR_FUNC("GetUValueLargeSetting64");
if (HCRNotReady)
- HCR_LOG_RETURN(KErrNotReady);
+ HCR_TRACE_RETURN(KErrNotReady);
+ __NK_ASSERT_DEBUG(aType == ETypeInt64 || aType == ETypeUInt64);
+
TSettingRef sref(0,0);
TInt err = 0;
err = HCRSingleton->FindSetting(aId, aType, sref);
if (err != KErrNone)
- HCR_LOG_RETURN(err);
+ HCR_TRACE_RETURN(err);
err = sref.iRep->GetLargeValue(sref, aValue);
if (err != KErrNone)
- HCR_LOG_RETURN(err);
+ HCR_TRACE_RETURN(err);
return KErrNone;
}
@@ -87,22 +89,24 @@
HCR_FUNC("GetUValueLargeSettingTDes8");
if (HCRNotReady)
- HCR_LOG_RETURN(KErrNotReady);
+ HCR_TRACE_RETURN(KErrNotReady);
+ __NK_ASSERT_DEBUG(aType == ETypeBinData || aType == ETypeText8);
+
TSettingRef sref(0,0);
TInt err = 0;
err = HCRSingleton->FindSetting(aId, aType, sref);
if (err != KErrNone)
- HCR_LOG_RETURN(err);
+ HCR_TRACE_RETURN(err);
UValueLarge value;
err = sref.iRep->GetLargeValue(sref, value);
if (err != KErrNone)
- HCR_LOG_RETURN(err);
+ HCR_TRACE_RETURN(err);
TInt len = sref.iRep->GetLength(sref);
if (len > aValue.MaxSize())
- HCR_LOG_RETURN(KErrTooBig);
+ HCR_TRACE_RETURN(KErrTooBig);
if (aType == ETypeBinData)
aValue.Copy(value.iData, len);
@@ -118,22 +122,24 @@
HCR_FUNC("GetUValueLargeSettingTUint8");
if (HCRNotReady)
- HCR_LOG_RETURN(KErrNotReady);
+ HCR_TRACE_RETURN(KErrNotReady);
+ __NK_ASSERT_DEBUG(aType == ETypeBinData || aType == ETypeText8);
+
TSettingRef sref(0,0);
TInt err = 0;
err = HCRSingleton->FindSetting(aId, aType, sref);
if (err != KErrNone)
- HCR_LOG_RETURN(err);
+ HCR_TRACE_RETURN(err);
UValueLarge value;
err = sref.iRep->GetLargeValue(sref, value);
if (err != KErrNone)
- HCR_LOG_RETURN(err);
+ HCR_TRACE_RETURN(err);
aLen = sref.iRep->GetLength(sref);
if (aLen > aMaxLen)
- HCR_LOG_RETURN(KErrTooBig);
+ HCR_TRACE_RETURN(KErrTooBig);
if (aType == ETypeBinData)
memcpy (aValue, value.iData, aLen);
@@ -149,29 +155,28 @@
HCR_FUNC("GetUValueLargeSettingArray");
if (HCRNotReady)
- HCR_LOG_RETURN(KErrNotReady);
+ HCR_TRACE_RETURN(KErrNotReady);
+ __NK_ASSERT_DEBUG(aType == ETypeArrayInt32 || aType == ETypeArrayUInt32);
+
TSettingRef sref(0,0);
TInt err = 0;
err = HCRSingleton->FindSetting(aId, aType, sref);
if (err != KErrNone)
- HCR_LOG_RETURN(err);
+ HCR_TRACE_RETURN(err);
UValueLarge value;
err = sref.iRep->GetLargeValue(sref, value);
- if (err != KErrNone)
- HCR_LOG_RETURN(err);
+ __NK_ASSERT_DEBUG(err == KErrNone);
aLen = sref.iRep->GetLength(sref);
if (aLen > aMaxLen)
- HCR_LOG_RETURN(KErrTooBig);
+ HCR_TRACE_RETURN(KErrTooBig);
if (aType == ETypeArrayInt32)
memcpy (aValue, value.iArrayInt32, aLen);
- else if (aType == ETypeArrayUInt32)
+ else
memcpy (aValue, value.iArrayUInt32, aLen);
- else
- HCR_LOG_RETURN(KErrGeneral);
return KErrNone;
}
@@ -192,12 +197,12 @@
UValueWord value;
TInt err = GetUValueWordSetting(aId, ETypeInt8, value);
if (err != KErrNone)
- HCR_LOG_RETURN(err);
+ HCR_TRACE_RETURN(err);
aValue = value.iInt8;
return KErrNone;
#else
- return KErrNotSupported;
+ HCR_TRACE_RETURN(KErrGeneral);
#endif // MAKE_DEF_FILE
}
@@ -210,12 +215,12 @@
UValueWord value;
TInt err = GetUValueWordSetting(aId, ETypeInt16, value);
if (err != KErrNone)
- HCR_LOG_RETURN(err);
+ HCR_TRACE_RETURN(err);
aValue = value.iInt16;
return KErrNone;
#else
- return KErrNotSupported;
+ HCR_TRACE_RETURN(KErrGeneral);
#endif // MAKE_DEF_FILE
}
@@ -228,12 +233,12 @@
UValueWord value;
TInt err = GetUValueWordSetting(aId, ETypeInt32, value);
if (err != KErrNone)
- HCR_LOG_RETURN(err);
+ HCR_TRACE_RETURN(err);
aValue = value.iInt32;
return KErrNone;
#else
- return KErrNotSupported;
+ HCR_TRACE_RETURN(KErrGeneral);
#endif // MAKE_DEF_FILE
}
@@ -246,12 +251,12 @@
UValueLarge value;
TInt err = GetUValueLargeSetting64(aId, ETypeInt64, value);
if (err != KErrNone)
- HCR_LOG_RETURN(err);
+ HCR_TRACE_RETURN(err);
aValue = *(value.iInt64);
return KErrNone;
#else
- return KErrNotSupported;
+ HCR_TRACE_RETURN(KErrGeneral);
#endif // MAKE_DEF_FILE
}
@@ -264,12 +269,12 @@
UValueWord value;
TInt err = GetUValueWordSetting(aId, ETypeBool, value);
if (err != KErrNone)
- HCR_LOG_RETURN(err);
+ HCR_TRACE_RETURN(err);
aValue = value.iBool;
return KErrNone;
#else
- return KErrNotSupported;
+ HCR_TRACE_RETURN(KErrGeneral);
#endif // MAKE_DEF_FILE
}
@@ -282,12 +287,12 @@
UValueWord value;
TInt err = GetUValueWordSetting(aId, ETypeUInt8, value);
if (err != KErrNone)
- HCR_LOG_RETURN(err);
+ HCR_TRACE_RETURN(err);
aValue = value.iUInt8;
return KErrNone;
#else
- return KErrNotSupported;
+ HCR_TRACE_RETURN(KErrGeneral);
#endif // MAKE_DEF_FILE
}
@@ -300,12 +305,12 @@
UValueWord value;
TInt err = GetUValueWordSetting(aId, ETypeUInt16,value);
if (err != KErrNone)
- HCR_LOG_RETURN(err);
+ HCR_TRACE_RETURN(err);
aValue = value.iUInt16;
return KErrNone;
#else
- return KErrNotSupported;
+ HCR_TRACE_RETURN(KErrGeneral);
#endif // MAKE_DEF_FILE
}
@@ -318,12 +323,12 @@
UValueWord value;
TInt err = GetUValueWordSetting(aId, ETypeUInt32, value);
if (err != KErrNone)
- HCR_LOG_RETURN(err);
+ HCR_TRACE_RETURN(err);
aValue = value.iUInt32;
return KErrNone;
#else
- return KErrNotSupported;
+ HCR_TRACE_RETURN(KErrGeneral);
#endif // MAKE_DEF_FILE
}
@@ -336,12 +341,12 @@
UValueLarge value;
TInt err = GetUValueLargeSetting64(aId, ETypeUInt64, value);
if (err != KErrNone)
- HCR_LOG_RETURN(err);
+ HCR_TRACE_RETURN(err);
aValue = *(value.iUInt64);
return KErrNone;
#else
- return KErrNotSupported;
+ HCR_TRACE_RETURN(KErrGeneral);
#endif // MAKE_DEF_FILE
}
@@ -354,12 +359,12 @@
UValueWord value;
TInt err = GetUValueWordSetting(aId, ETypeLinAddr, value);
if (err != KErrNone)
- HCR_LOG_RETURN(err);
+ HCR_TRACE_RETURN(err);
aValue = value.iAddress;
return KErrNone;
#else
- return KErrNotSupported;
+ HCR_TRACE_RETURN(KErrGeneral);
#endif // MAKE_DEF_FILE
}
@@ -372,11 +377,11 @@
TInt err = GetUValueLargeSettingTUint8(aId, ETypeBinData, aMaxLen, aValue, aLen);
if (err != KErrNone)
- HCR_LOG_RETURN(err);
+ HCR_TRACE_RETURN(err);
return KErrNone;
#else
- return KErrNotSupported;
+ HCR_TRACE_RETURN(KErrGeneral);
#endif // MAKE_DEF_FILE
}
@@ -388,11 +393,11 @@
TInt err = GetUValueLargeSettingTDes8(aId, ETypeBinData, aValue);
if (err != KErrNone)
- HCR_LOG_RETURN(err);
+ HCR_TRACE_RETURN(err);
return KErrNone;
#else
- return KErrNotSupported;
+ HCR_TRACE_RETURN(KErrGeneral);
#endif // MAKE_DEF_FILE
}
@@ -405,11 +410,11 @@
TInt err = GetUValueLargeSettingTUint8(aId, ETypeText8, aMaxLen, aValue, aLen);
if (err != KErrNone)
- HCR_LOG_RETURN(err);
+ HCR_TRACE_RETURN(err);
return KErrNone;
#else
- return KErrNotSupported;
+ HCR_TRACE_RETURN(KErrGeneral);
#endif // MAKE_DEF_FILE
}
@@ -421,11 +426,11 @@
TInt err = GetUValueLargeSettingTDes8(aId, ETypeText8, aValue);
if (err != KErrNone)
- HCR_LOG_RETURN(err);
+ HCR_TRACE_RETURN(err);
return KErrNone;
#else
- return KErrNotSupported;
+ HCR_TRACE_RETURN(KErrGeneral);
#endif // MAKE_DEF_FILE
}
@@ -437,11 +442,11 @@
TInt err = GetUValueLargeSettingArray(aId, ETypeArrayInt32, aMaxLen, (TUint32*)aValue, aLen);
if (err != KErrNone)
- HCR_LOG_RETURN(err);
+ HCR_TRACE_RETURN(err);
return KErrNone;
#else
- return KErrNotSupported;
+ HCR_TRACE_RETURN(KErrGeneral);
#endif // MAKE_DEF_FILE
}
@@ -453,77 +458,168 @@
TInt err = GetUValueLargeSettingArray(aId, ETypeArrayUInt32, aMaxLen, aValue, aLen);
if (err != KErrNone)
- HCR_LOG_RETURN(err);
+ HCR_TRACE_RETURN(err);
return KErrNone;
#else
- return KErrNotSupported;
+ HCR_TRACE_RETURN(KErrGeneral);
#endif // MAKE_DEF_FILE
}
// -- MULTIPLE GETS -----------------------------------------------------------
-EXPORT_C TInt HCR::GetWordSettings(TInt /*aNum*/, const SSettingId /*aIds*/[],
- TInt32 /*aValues*/[], TSettingType /*aTypes*/[], TInt /*aErrors*/[])
+EXPORT_C TInt HCR::GetWordSettings(TInt aNum, const SSettingId aIds[],
+ TInt32 aValues[], TSettingType aTypes[], TInt aErrors[])
{
+
#ifndef MAKE_DEF_FILE
+ HCR_FUNC("GetWordSettings");
+
+ if (HCRNotReady)
+ HCR_TRACE_RETURN(KErrNotReady);
+
+ if(aNum <= 0 || aIds == NULL || aErrors == NULL || aValues == NULL)
+ HCR_TRACE_RETURN(KErrArgument);
+
+ TInt err = KErrNone;
- return KErrNotSupported;
+ //Don't leave while the resources are not fully allocated/deallocated
+ NKern::ThreadEnterCS();
+
+ err = HCRSingleton->GetWordSettings(aNum, aIds, aValues, aTypes, aErrors);
+
+ //All de-allocations are done, leave a critical section
+ NKern::ThreadLeaveCS();
+
+ if(err < KErrNone)
+ HCR_TRACE_RETURN(err);
+
+ return err;
+
#else
- return KErrNotSupported;
+ HCR_TRACE_RETURN(KErrGeneral);
#endif // MAKE_DEF_FILE
}
// -- SETTING PROPERTIES ------------------------------------------------------
-EXPORT_C TInt HCR::GetTypeAndSize(const TSettingId& /*aId*/, TSettingType& /*aType*/,
- TUint16& /*aLen*/)
+EXPORT_C TInt HCR::GetTypeAndSize(const TSettingId& aId, TSettingType& aType,
+ TUint16& aLen)
{
#ifndef MAKE_DEF_FILE
+ HCR_FUNC("GetTypeAndSize");
+ if (HCRNotReady)
+ HCR_TRACE_RETURN(KErrNotReady);
- return KErrNotSupported;
-#else
- return KErrNotSupported;
-#endif // MAKE_DEF_FILE
+ TSettingRef sref(0,0);
+ TInt err = HCRSingleton->FindSettingWithType(aId, aType, sref);
+
+ if(err == KErrNone)
+ {
+ aLen = sref.iRep->GetLength(sref);
+ }
+ else if(err == KErrNotFound)
+ {
+ aLen = 0;
+ HCR_TRACE_RETURN(KErrNotFound);
+ }
+ else
+ HCR_TRACE_RETURN(err);
+
+ return KErrNone;
+
+#else
+ HCR_TRACE_RETURN(KErrGeneral);
+#endif //MAKE_DEF_FILE
}
// -- SETTING SEARCHES --------------------------------------------------------
-EXPORT_C TInt HCR::FindNumSettingsInCategory (TCategoryUid /*aCatUid*/)
+EXPORT_C TInt HCR::FindNumSettingsInCategory (TCategoryUid aCatUid)
{
#ifndef MAKE_DEF_FILE
- return KErrNotSupported;
+ HCR_FUNC("FindNumSettingsInCategory");
+
+ if (HCRNotReady)
+ HCR_TRACE_RETURN(KErrNotReady);
+
+ TInt err = HCRSingleton->FindNumSettingsInCategory(aCatUid);
+
+ if(err < 0)
+ HCR_TRACE_RETURN(err);
+
+ return err;
+
#else
- return KErrNotSupported;
+ HCR_TRACE_RETURN(KErrGeneral);
#endif // MAKE_DEF_FILE
}
-
-EXPORT_C TInt HCR::FindSettings(TCategoryUid /*aCatUid*/,
- TInt /*aMaxNum*/, TUint32& /*aNumFound*/,
- TElementId* /*aElIds*/, TSettingType* /*aTypes*/, TUint16* /*aLens*/)
+
+
+EXPORT_C TInt HCR::FindSettings(TCategoryUid aCat, TInt aMaxNum,
+ TElementId aElIds[], TSettingType aTypes[], TUint16 aLens[])
{
#ifndef MAKE_DEF_FILE
- return KErrNotSupported;
+ HCR_FUNC("FindSettings without pattern/mask");
+
+
+ if (HCRNotReady)
+ HCR_TRACE_RETURN(KErrNotReady);
+
+ if(aMaxNum <= 0 || aElIds == NULL)
+ HCR_TRACE_RETURN(KErrArgument);
+
+ TInt err = HCRSingleton->FindSettings(aCat, aMaxNum, aElIds,
+ aTypes, aLens);
+
+ if(err < 0)
+ HCR_TRACE_RETURN(err);
+
+ return err;
+
#else
- return KErrNotSupported;
+ HCR_TRACE_RETURN(KErrGeneral);
#endif // MAKE_DEF_FILE
}
-EXPORT_C TInt HCR::FindSettings(TCategoryUid /*aCat*/,
- TInt /*aMaxNum*/, TUint32 /*aAtId*/,
- TUint32 /*aMask*/, TUint32 /*aPattern*/, TUint32& /*aNumFound*/,
- TElementId* /*aElIds*/, TSettingType* /*aTypes*/, TUint16* /*aLens*/)
+EXPORT_C TInt HCR::FindSettings(TCategoryUid aCat,
+ TInt aMaxNum, TUint32 aMask, TUint32 aPattern,
+ TElementId aElIds[], TSettingType aTypes[], TUint16 aLens[])
{
#ifndef MAKE_DEF_FILE
- return KErrNotSupported;
+ HCR_FUNC("FindSettings with pattern/mask");
+
+
+ if (HCRNotReady)
+ HCR_TRACE_RETURN(KErrNotReady);
+
+ if(aMaxNum <= 0 || aElIds == NULL)
+ HCR_TRACE_RETURN(KErrArgument);
+
+ TInt err = KErrNone;
+
+ //Don't leave while the resources are not fully allocated/deallocated
+ NKern::ThreadEnterCS();
+
+ err = HCRSingleton->FindSettings(aCat, aMaxNum, aMask, aPattern,
+ aElIds, aTypes, aLens);
+
+ //All de-allocations are done, leave a critical section
+ NKern::ThreadLeaveCS();
+
+ if(err < 0)
+ HCR_TRACE_RETURN(err);
+
+ return err;
+
#else
- return KErrNotSupported;
+ HCR_TRACE_RETURN(KErrGeneral);
#endif // MAKE_DEF_FILE
}