⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sysinfomodule.cpp

📁 python s60 1.4.5版本的源代码
💻 CPP
📖 第 1 页 / 共 2 页
字号:
  }

  // 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 + -