📄 sysinfomodule.cpp
字号:
}
// Get network value:
TInt networkValue = sd->systemAgent.GetState(KUidNetworkBars);
return Py_BuildValue("i", networkValue);
#else
TInt error = KErrNone;
TRequestStatus status = KRequestPending;;
TStaticData* sd = NULL;
sd = GetTelephony();
if(sd==NULL){
return NULL;
}
CTelephony::TSignalStrengthV1 signalStrength;
CTelephony::TSignalStrengthV1Pckg signalStrengthPkg(signalStrength);
Py_BEGIN_ALLOW_THREADS
CAsyncCallHandler* asyncCallHandler = NULL;
TRAP(error,{
asyncCallHandler = CAsyncCallHandler::NewL(*sd->telephony);
asyncCallHandler->GetSignalStrength(signalStrengthPkg,status);
});
delete asyncCallHandler;
Py_END_ALLOW_THREADS
if(error != KErrNone){
return SPyErr_SetFromSymbianOSErr(error);
}
if (status == KErrNone) {
return Py_BuildValue("i", signalStrength.iBar);
}
else {
return NULL;
}
#endif /*SERIES60_VERSION<=26*/
#endif /*__WINS__*/
}
/*
* Returns the signal strength currently in dBm.
*/
#if SERIES60_VERSION>=28
extern "C" PyObject *
sysinfo_signal_dbm(PyObject* /*self*/)
{
#ifdef __WINS__
return Py_BuildValue("i", 0);
#else
TInt error = KErrNone;
TRequestStatus status;
TStaticData* sd = NULL;
sd = GetTelephony();
if(sd==NULL){
return NULL;
}
CTelephony::TSignalStrengthV1 signalStrength;
CTelephony::TSignalStrengthV1Pckg signalStrengthPkg(signalStrength);
Py_BEGIN_ALLOW_THREADS
CAsyncCallHandler* asyncCallHandler = NULL;
TRAP(error,{
asyncCallHandler = CAsyncCallHandler::NewL(*sd->telephony);
asyncCallHandler->GetSignalStrength(signalStrengthPkg,status);
});
delete asyncCallHandler;
Py_END_ALLOW_THREADS
if(error != KErrNone){
return SPyErr_SetFromSymbianOSErr(error);
}
if (status == KErrNone) {
return Py_BuildValue("i", signalStrength.iSignalStrength);
}
else {
return NULL;
}
#endif /*__WINS__*/
}
#endif /* SERIES60_VERSION>=28 */
/*
* Returns the total amount of RAM in the device.
*/
extern "C" PyObject *
sysinfo_memoryram(PyObject* /*self*/)
{
TInt error = KErrNone;
TInt eValue;
if ((error = HAL::Get(HALData::EMemoryRAM, eValue)) != KErrNone)
return SPyErr_SetFromSymbianOSErr(error);
return Py_BuildValue("i", eValue);
}
/*
* Returns the total amount of ROM in the device.
*/
extern "C" PyObject *
sysinfo_memoryrom(PyObject* /*self*/)
{
TInt error = KErrNone;
TInt eValue;
if ((error = HAL::Get(HALData::EMemoryROM, eValue)) != KErrNone)
return SPyErr_SetFromSymbianOSErr(error);
return Py_BuildValue("i", eValue);
}
/*
* Returns the size of RAM drive in the device (normally D:-drive).
*/
extern "C" PyObject *
sysinfo_maxramdrivesize(PyObject* /*self*/)
{
TInt error = KErrNone;
TInt eValue;
if ((error = HAL::Get(HALData::EMaxRAMDriveSize, eValue)) != KErrNone)
return SPyErr_SetFromSymbianOSErr(error);
return Py_BuildValue("i", eValue);
}
/*
* Returns the twips of the device's display.
*/
extern "C" PyObject *
sysinfo_displaytwips(PyObject* /*self*/)
{
TInt error = KErrNone;
TInt xValue;
TInt yValue;
if ((error = HAL::Get(HALData::EDisplayXTwips, xValue)) != KErrNone)
return SPyErr_SetFromSymbianOSErr(error);
if ((error = HAL::Get(HALData::EDisplayYTwips, yValue)) != KErrNone)
return SPyErr_SetFromSymbianOSErr(error);
return Py_BuildValue("(ii)", xValue, yValue);
}
/*
* Returns the pixels in the device's display.
*/
extern "C" PyObject *
sysinfo_displaypixels(PyObject* /*self*/)
{
TInt error = KErrNone;
TInt xValue;
TInt yValue;
if ((error = HAL::Get(HALData::EDisplayXPixels, xValue)) != KErrNone)
return SPyErr_SetFromSymbianOSErr(error);
if ((error = HAL::Get(HALData::EDisplayYPixels, yValue)) != KErrNone)
return SPyErr_SetFromSymbianOSErr(error);
return Py_BuildValue("(ii)", xValue, yValue);
}
/*
* Returns the free ram available.
*/
extern "C" PyObject *
sysinfo_memoryramfree(PyObject* /*self*/)
{
TInt error = KErrNone;
TInt eValue;
if ((error = HAL::Get(HALData::EMemoryRAMFree, eValue)) != KErrNone)
return SPyErr_SetFromSymbianOSErr(error);
return Py_BuildValue("i", eValue);
}
/*
* Returns the ringing type set.
*/
#if SERIES60_VERSION>12
extern "C" PyObject *
sysinfo_ringtype(PyObject* /*self*/)
{
#ifndef EKA2
TInt error = KErrNone;
TInt ret;
CSettingInfo* settings = NULL;
// NULL given since notifications are not needed
TRAP(error,(settings = CSettingInfo::NewL(NULL)));
if (error != KErrNone) {
return SPyErr_SetFromSymbianOSErr(error);
}
if((error = settings->Get(SettingInfo::ERingingType, ret)) != KErrNone) {
delete settings;
settings = NULL;
return SPyErr_SetFromSymbianOSErr(error);
}
delete settings;
settings = NULL;
return Py_BuildValue("i", ret);
#else
TInt error = KErrNone;
TInt ret;
TRAP(error,{
CRepository* rep = CRepository::NewLC(KCRUidProfileEngine);
User::LeaveIfError(rep->Get(KProEngActiveRingingType, ret));
CleanupStack::PopAndDestroy(rep);
});
if(error != KErrNone){
return SPyErr_SetFromSymbianOSErr(error);
}
return Py_BuildValue("i", ret);
#endif /*EKA2*/
}
#endif
/*
* Returns the currently active profile.
*/
#if SERIES60_VERSION>12
extern "C" PyObject *
sysinfo_activeprofile(PyObject* /*self*/)
{
#ifndef EKA2
TInt error = KErrNone;
TInt ret;
CSettingInfo* settings = NULL;
// NULL given since notifications are not needed
TRAP(error,(settings = CSettingInfo::NewL(NULL)));
if (error != KErrNone) {
return SPyErr_SetFromSymbianOSErr(error);
}
if((error = settings->Get(SettingInfo::EActiveProfile, ret)) != KErrNone) {
delete settings;
settings = NULL;
return SPyErr_SetFromSymbianOSErr(error);
}
delete settings;
settings = NULL;
return Py_BuildValue("i", ret);
#else
TInt error = KErrNone;
TInt ret;
TRAP(error,{
CRepository* rep = CRepository::NewLC(KCRUidProfileEngine);
User::LeaveIfError(rep->Get(KProEngActiveProfile, ret));
CleanupStack::PopAndDestroy(rep);
});
if(error != KErrNone){
return SPyErr_SetFromSymbianOSErr(error);
}
return Py_BuildValue("i", ret);
#endif /*EKA2*/
}
#endif
/*
* Returns the drives and the amount of free space in the device.
*/
extern "C" PyObject *
sysinfo_drive_free(PyObject* /*self*/)
{
TInt error = KErrNone;
RFs fsSession;
if ((error = fsSession.Connect()) != KErrNone)
return SPyErr_SetFromSymbianOSErr(error);
PyObject* ret = PyDict_New();
if (ret == NULL)
return PyErr_NoMemory();
TVolumeInfo volumeInfo;
TInt driveNumber;
for (driveNumber = EDriveA; driveNumber <= EDriveZ; driveNumber++) {
TInt err = fsSession.Volume(volumeInfo,driveNumber);
if (err != KErrNone)
continue;
char d[2];
d[0] = 'A'+driveNumber; d[1] = ':';
TInt freeSpace;
#ifndef EKA2
freeSpace = (volumeInfo.iFree).GetTInt();
#else
freeSpace = (volumeInfo.iFree);
#endif /*EKA2*/
PyObject* f = Py_BuildValue("i", freeSpace);
PyObject* v = PyUnicode_Decode(d, 2, NULL, NULL);
if (v == NULL || f == NULL) {
Py_XDECREF(v);
Py_XDECREF(f);
Py_DECREF(ret);
ret = NULL;
break;
}
if ((PyDict_SetItem(ret, (v), f) != 0)) {
Py_DECREF(v);
Py_DECREF(f);
Py_DECREF(ret);
ret = NULL;
break;
}
Py_DECREF(v);
Py_DECREF(f);
}
fsSession.Close();
return ret;
}
extern "C" {
static const PyMethodDef sysinfo_methods[] = {
{"os_version", (PyCFunction)sysinfo_osversion, METH_NOARGS, NULL},
{"sw_version", (PyCFunction)sysinfo_swversion, METH_NOARGS, NULL},
{"imei", (PyCFunction)sysinfo_imei, METH_NOARGS, NULL},
{"battery", (PyCFunction)sysinfo_battery, METH_NOARGS, NULL},
{"signal_bars", (PyCFunction)sysinfo_signal_bars, METH_NOARGS, NULL},
#if SERIES60_VERSION>=28
{"signal_dbm", (PyCFunction)sysinfo_signal_dbm, METH_NOARGS, NULL},
#endif
{"total_ram", (PyCFunction)sysinfo_memoryram, METH_NOARGS, NULL},
{"total_rom", (PyCFunction)sysinfo_memoryrom, METH_NOARGS, NULL},
{"max_ramdrive_size", (PyCFunction)sysinfo_maxramdrivesize, METH_NOARGS, NULL},
{"display_twips", (PyCFunction)sysinfo_displaytwips, METH_NOARGS, NULL},
{"display_pixels", (PyCFunction)sysinfo_displaypixels, METH_NOARGS, NULL},
{"free_ram", (PyCFunction)sysinfo_memoryramfree, METH_NOARGS, NULL},
#if SERIES60_VERSION>12
{"ring_type", (PyCFunction)sysinfo_ringtype, METH_NOARGS, NULL},
{"active_profile", (PyCFunction)sysinfo_activeprofile, METH_NOARGS, NULL},
#endif
{"free_drivespace", (PyCFunction)sysinfo_drive_free, METH_NOARGS, NULL},
{NULL,NULL} /* sentinel */
};
DL_EXPORT(void) initsysinfo(void)
{
Py_InitModule("_sysinfo", (PyMethodDef*)sysinfo_methods);
}
} /* extern "C" */
#ifndef EKA2
GLDEF_C TInt E32Dll(TDllReason)
{
return KErrNone;
}
#endif /*EKA2*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -