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

📄 locationacqmodule.cpp

📁 python s60 1.4.5版本的源代码
💻 CPP
📖 第 1 页 / 共 3 页
字号:
       delete req;
    }
    positioner->requestorStack->Reset();
    delete positioner->requestorStack;
    positioner->requestorStack=NULL;
  }
}

/*
 * Open Sub-Session
 */
TInt opensubsession(Positioner_object *self)
{
  TInt err=KErrNone;
  TRAP(err,{
    if(self->moduleid==TPositionModuleId::Null()){
      // use default module.
      User::LeaveIfError(self->positioner->Open(*(self->positionServer->posServ)));
    }
    else{
      User::LeaveIfError(self->positioner->Open(*(self->positionServer->posServ),self->moduleid));
    }
  });
  if(err==KErrNone){
    self->isSubSessionOpen=ETrue;
  }
  return err;
}
/*
 * Deallocate the Positioner object.
 */
extern "C" {
  static void Positioner_dealloc(Positioner_object *positioner)
  {
    deleteRequestorStack(positioner);

    if(positioner->dataFetcher){
      delete positioner->dataFetcher;
      positioner->dataFetcher=NULL;
    }

    if (positioner->callBackSet) {
      Py_XDECREF(positioner->myCallBack.iCb);
    }

    //debugprint("positioner dealloc"); // ??? debug
    if (positioner->positioner) {
       positioner->positioner->Close();
       delete positioner->positioner;
       positioner->positioner = NULL;
    }   
    if(positioner->positionServer){
      Py_DECREF(positioner->positionServer);
      positioner->positionServer=NULL;
    }
    
    PyObject_Del(positioner);
  }
}

  const static PyMethodDef PositionServer_methods[] = {
    {"positioner", (PyCFunction)PositionServer_positioner, METH_VARARGS | METH_KEYWORDS, NULL},
    {"default_module", (PyCFunction)PositionServer_default_module, METH_NOARGS, NULL},
    {"modules", (PyCFunction)PositionServer_modules, METH_NOARGS, NULL},
    {"module_info", (PyCFunction)PositionServer_module_info, METH_VARARGS, NULL},
    {NULL, NULL, 0 , NULL} 
  };
  
  const static PyMethodDef Positioner_methods[] = {
    {"set_requestors", (PyCFunction)Positioner_set_requestors, METH_VARARGS, NULL},
    {"position", (PyCFunction)Positioner_position, METH_VARARGS, NULL},
    {"stop_position", (PyCFunction)Positioner_stop_position, METH_NOARGS, NULL},    
    {"last_position", (PyCFunction)Positioner_last_position, METH_NOARGS, NULL},
    {NULL, NULL, 0 , NULL} 
  };
  
  static PyObject *
  PositionServer_getattr(PositionServer_object *op, char *name)
  {
    return Py_FindMethod((PyMethodDef*)PositionServer_methods, (PyObject *)op, name);
  }

  static PyObject *
  Positioner_getattr(Positioner_object *op, char *name)
  {
    return Py_FindMethod((PyMethodDef*)Positioner_methods, (PyObject *)op, name);
  }
  
  static const PyTypeObject c_PositionServer_type = {
    PyObject_HEAD_INIT(NULL)
    0,                                        /*ob_size*/
    "locationacq.PositionServer",             /*tp_name*/
    sizeof(PositionServer_object),            /*tp_basicsize*/
    0,                                        /*tp_itemsize*/
    /* methods */
    (destructor)PositionServer_dealloc,       /*tp_dealloc*/
    0,                                        /*tp_print*/
    (getattrfunc)PositionServer_getattr,      /*tp_getattr*/
    0,                                        /*tp_setattr*/
    0,                                        /*tp_compare*/
    0,                                        /*tp_repr*/
    0,                                        /*tp_as_number*/
    0,                                        /*tp_as_sequence*/
    0,                                        /*tp_as_mapping*/
    0,                                        /*tp_hash */
    0,                                        /*tp_call*/
    0,                                        /*tp_str*/
  };

  static const PyTypeObject c_Positioner_type = {
    PyObject_HEAD_INIT(NULL)
    0,                                        /*ob_size*/
    "locationacq.Positioner",                 /*tp_name*/
    sizeof(Positioner_object),                /*tp_basicsize*/
    0,                                        /*tp_itemsize*/
    /* methods */
    (destructor)Positioner_dealloc,           /*tp_dealloc*/
    0,                                        /*tp_print*/
    (getattrfunc)Positioner_getattr,          /*tp_getattr*/
    0,                                        /*tp_setattr*/
    0,                                        /*tp_compare*/
    0,                                        /*tp_repr*/
    0,                                        /*tp_as_number*/
    0,                                        /*tp_as_sequence*/
    0,                                        /*tp_as_mapping*/
    0,                                        /*tp_hash */
    0,                                        /*tp_call*/
    0,                                        /*tp_str*/
  };


extern "C" {
  static const PyMethodDef locationacq_methods[] = {
    {"position_server", (PyCFunction)new_PositionServer_object, METH_NOARGS, NULL},
    {NULL, NULL}           /* sentinel */
  };

  DL_EXPORT(void) initlocationacq(void)
  {
    PyTypeObject* position_server_type = PyObject_New(PyTypeObject, &PyType_Type);
    *position_server_type = c_PositionServer_type;
    position_server_type->ob_type = &PyType_Type;
    SPyAddGlobalString("PositionServerType", (PyObject*)position_server_type);    
    
    PyTypeObject* positioner_type = PyObject_New(PyTypeObject, &PyType_Type);
    *positioner_type = c_Positioner_type;
    positioner_type->ob_type = &PyType_Type;
    SPyAddGlobalString("PositionerType", (PyObject*)positioner_type);  
    
    PyObject *m, *d;
    m = Py_InitModule("_locationacq", (PyMethodDef*)locationacq_methods);
    d = PyModule_GetDict(m);

    // info flags
    PyDict_SetItemString(d,"info_course", PyInt_FromLong(COURSE_INFO));
    PyDict_SetItemString(d,"info_satellites", PyInt_FromLong(SATELLITE_INFO));
        
    // requestor types
    PyDict_SetItemString(d,"req_type_service", PyInt_FromLong(CRequestorBase::ERequestorService));
    PyDict_SetItemString(d,"req_type_contact", PyInt_FromLong(CRequestorBase::ERequestorContact));
    
    // requestor formats
    PyDict_SetItemString(d,"req_format_app", PyInt_FromLong(CRequestorBase::EFormatApplication));
    PyDict_SetItemString(d,"req_format_tel", PyInt_FromLong(CRequestorBase::EFormatTelephone));
    PyDict_SetItemString(d,"req_format_url", PyInt_FromLong(CRequestorBase::EFormatUrl));
    PyDict_SetItemString(d,"req_format_mail", PyInt_FromLong(CRequestorBase::EFormatMail));
    
    // position module capabilities    
    PyDict_SetItemString(d,"cap_none", PyInt_FromLong(TPositionModuleInfo::ECapabilityNone));
    PyDict_SetItemString(d,"cap_horizontal", PyInt_FromLong(TPositionModuleInfo::ECapabilityHorizontal));
    PyDict_SetItemString(d,"cap_vertical", PyInt_FromLong(TPositionModuleInfo::ECapabilityVertical));
    PyDict_SetItemString(d,"cap_speed", PyInt_FromLong(TPositionModuleInfo::ECapabilitySpeed));
    PyDict_SetItemString(d,"cap_direction", PyInt_FromLong(TPositionModuleInfo::ECapabilityDirection));
    PyDict_SetItemString(d,"cap_satellite", PyInt_FromLong(TPositionModuleInfo::ECapabilitySatellite));
    PyDict_SetItemString(d,"cap_compass", PyInt_FromLong(TPositionModuleInfo::ECapabilityCompass));
    PyDict_SetItemString(d,"cap_nmea", PyInt_FromLong(TPositionModuleInfo::ECapabilityNmea));
    PyDict_SetItemString(d,"cap_address", PyInt_FromLong(TPositionModuleInfo::ECapabilityAddress));
    PyDict_SetItemString(d,"cap_building", PyInt_FromLong(TPositionModuleInfo::ECapabilityBuilding));
    PyDict_SetItemString(d,"cap_media", PyInt_FromLong(TPositionModuleInfo::ECapabilityMedia));

    // device location    
    PyDict_SetItemString(d,"dev_loc_unknown", PyInt_FromLong(TPositionModuleInfo::EDeviceUnknown));
    PyDict_SetItemString(d,"dev_loc_internal", PyInt_FromLong(TPositionModuleInfo::EDeviceInternal));
    PyDict_SetItemString(d,"dev_loc_external", PyInt_FromLong(TPositionModuleInfo::EDeviceExternal));
 
    // technology type
    PyDict_SetItemString(d,"technology_unknown", PyInt_FromLong(TPositionModuleInfo::ETechnologyUnknown)); 
    PyDict_SetItemString(d,"technology_terminal", PyInt_FromLong(TPositionModuleInfo::ETechnologyTerminal));
    PyDict_SetItemString(d,"technology_network", PyInt_FromLong(TPositionModuleInfo::ETechnologyNetwork));
    PyDict_SetItemString(d,"technology_assisted", PyInt_FromLong(TPositionModuleInfo::ETechnologyAssisted));

    // power consumption
    PyDict_SetItemString(d,"power_unknown", PyInt_FromLong(TPositionQuality::EPowerUnknown)); 
    PyDict_SetItemString(d,"power_zero", PyInt_FromLong(TPositionQuality::EPowerZero)); 
    PyDict_SetItemString(d,"power_low", PyInt_FromLong(TPositionQuality::EPowerLow)); 
    PyDict_SetItemString(d,"power_medium", PyInt_FromLong(TPositionQuality::EPowerMedium)); 
    PyDict_SetItemString(d,"power_high", PyInt_FromLong(TPositionQuality::EPowerHigh)); 
    
    // cost indicator
    PyDict_SetItemString(d,"cost_unknown", PyInt_FromLong(TPositionQuality::ECostUnknown)); 
    PyDict_SetItemString(d,"cost_zero", PyInt_FromLong(TPositionQuality::ECostZero)); 
    PyDict_SetItemString(d,"cost_possible", PyInt_FromLong(TPositionQuality::ECostPossible)); 
    PyDict_SetItemString(d,"cost_charge", PyInt_FromLong(TPositionQuality::ECostCharge)); 
       
    // device status
    PyDict_SetItemString(d,"status_unknown", PyInt_FromLong(TPositionModuleStatus::EDeviceUnknown)); 
    PyDict_SetItemString(d,"status_error", PyInt_FromLong(TPositionModuleStatus::EDeviceError)); 
    PyDict_SetItemString(d,"status_disabled", PyInt_FromLong(TPositionModuleStatus::EDeviceDisabled)); 
    PyDict_SetItemString(d,"status_inactive", PyInt_FromLong(TPositionModuleStatus::EDeviceInactive)); 
    PyDict_SetItemString(d,"status_initializing", PyInt_FromLong(TPositionModuleStatus::EDeviceInitialising)); 
    PyDict_SetItemString(d,"status_standby", PyInt_FromLong(TPositionModuleStatus::EDeviceStandBy)); 
    PyDict_SetItemString(d,"status_ready", PyInt_FromLong(TPositionModuleStatus::EDeviceReady)); 
    PyDict_SetItemString(d,"status_active", PyInt_FromLong(TPositionModuleStatus::EDeviceActive)); 
   
    // data quality status
    PyDict_SetItemString(d,"data_quality_unknown", PyInt_FromLong(TPositionModuleStatus::EDataQualityUnknown)); 
    PyDict_SetItemString(d,"data_quality_loss", PyInt_FromLong(TPositionModuleStatus::EDataQualityLoss)); 
    PyDict_SetItemString(d,"data_quality_partial", PyInt_FromLong(TPositionModuleStatus::EDataQualityPartial)); 
    PyDict_SetItemString(d,"data_quality_normal", PyInt_FromLong(TPositionModuleStatus::EDataQualityNormal)); 

    // field id:s for HPositionGenericInfo
    PyDict_SetItemString(d,"field_none", PyInt_FromLong(EPositionFieldNone)); 
    PyDict_SetItemString(d,"field_comment", PyInt_FromLong(EPositionFieldComment)); 
    PyDict_SetItemString(d,"field_speed_capabilities_begin", PyInt_FromLong(EPositionFieldSpeedCapabilitiesBegin)); 
    PyDict_SetItemString(d,"field_horizontal_speed", PyInt_FromLong(EPositionFieldHorizontalSpeed)); 
    PyDict_SetItemString(d,"field_horizontal_speed_error", PyInt_FromLong(EPositionFieldHorizontalSpeedError)); 
    PyDict_SetItemString(d,"field_vertical_speed", PyInt_FromLong(EPositionFieldVerticalSpeed)); 
    PyDict_SetItemString(d,"field_vertical_speed_error", PyInt_FromLong(EPositionFieldVerticalSpeedError)); 
    PyDict_SetItemString(d,"field_direction_capabilities_begin", PyInt_FromLong(EPositionFieldDirectionCapabilitiesBegin)); 
    PyDict_SetItemString(d,"field_true_course", PyInt_FromLong(EPositionFieldTrueCourse)); 
    PyDict_SetItemString(d,"field_true_course_error", PyInt_FromLong(EPositionFieldTrueCourseError)); 
    PyDict_SetItemString(d,"field_magnetic_course", PyInt_FromLong(EPositionFieldMagneticCourse)); 
   // PyDict_SetItemString(d,"field_magnetic_course_error", PyInt_FromLong(EPositionFieldMagneticCourseError)); 
    PyDict_SetItemString(d,"field_compass_capabilities_begin", PyInt_FromLong(EPositionFieldCompassCapabilitiesBegin)); 
    PyDict_SetItemString(d,"field_heading", PyInt_FromLong(EPositionFieldHeading)); 
    PyDict_SetItemString(d,"field_heading_error", PyInt_FromLong(EPositionFieldHeadingError)); 
   // PyDict_SetItemString(d,"field_magnetic_heading", PyInt_FromLong(EPositionFieldMagneticHeading)); 
   // PyDict_SetItemString(d,"field_magnetic_heading_error", PyInt_FromLong(EPositionFieldMagneticHeadingError)); 
    PyDict_SetItemString(d,"field_address_capabilities_begin", PyInt_FromLong(EPositionFieldAddressCapabilitiesBegin)); 
    PyDict_SetItemString(d,"field_country", PyInt_FromLong(EPositionFieldCountry)); 
    PyDict_SetItemString(d,"field_country_code", PyInt_FromLong(EPositionFieldCountryCode)); 
    PyDict_SetItemString(d,"field_state", PyInt_FromLong(EPositionFieldState)); 
    PyDict_SetItemString(d,"field_city", PyInt_FromLong(EPositionFieldCity)); 
    PyDict_SetItemString(d,"field_district", PyInt_FromLong(EPositionFieldDistrict)); 
    PyDict_SetItemString(d,"field_street", PyInt_FromLong(EPositionFieldStreet)); 
    PyDict_SetItemString(d,"field_street_extension", PyInt_FromLong(EPositionFieldStreetExtension)); 
    PyDict_SetItemString(d,"field_location_name", PyInt_FromLong(EPositionFieldLocationName)); 
    PyDict_SetItemString(d,"field_postal_code", PyInt_FromLong(EPositionFieldPostalCode)); 
    PyDict_SetItemString(d,"field_locality", PyInt_FromLong(EPositionFieldLocality));
    PyDict_SetItemString(d,"field_crossing1", PyInt_FromLong(EPositionFieldCrossing1));
    PyDict_SetItemString(d,"field_crossing2", PyInt_FromLong(EPositionFieldCrossing2));
    PyDict_SetItemString(d,"field_building_capabilities_begin", PyInt_FromLong(EPositionFieldBuildingCapabilitiesBegin));
    PyDict_SetItemString(d,"field_building_name", PyInt_FromLong(EPositionFieldBuildingName));
    PyDict_SetItemString(d,"field_building_floor", PyInt_FromLong(EPositionFieldBuildingFloor));
    PyDict_SetItemString(d,"field_building_room", PyInt_FromLong(EPositionFieldBuildingRoom));
    PyDict_SetItemString(d,"field_building_zone", PyInt_FromLong(EPositionFieldBuildingZone));
    PyDict_SetItemString(d,"field_building_telephone", PyInt_FromLong(EPositionFieldBuildingTelephone));
    PyDict_SetItemString(d,"field_nmea_capabilities_begin", PyInt_FromLong(EPositionFieldNMEACapabilitiesBegin));
    PyDict_SetItemString(d,"field_nmea_sentences", PyInt_FromLong(EPositionFieldNMEASentences));
    PyDict_SetItemString(d,"field_nmea_sentences_start", PyInt_FromLong(EPositionFieldNMEASentencesStart));
    PyDict_SetItemString(d,"field_satellite_capabilities_begin", PyInt_FromLong(EPositionFieldSatelliteCapabilitiesBegin));
    PyDict_SetItemString(d,"field_satellite_num_in_view", PyInt_FromLong(EPositionFieldSatelliteNumInView));
    PyDict_SetItemString(d,"field_satellite_num_used", PyInt_FromLong(EPositionFieldSatelliteNumUsed));
    PyDict_SetItemString(d,"field_satellite_time", PyInt_FromLong(EPositionFieldSatelliteTime));
    PyDict_SetItemString(d,"field_satellite_horizontal_dop", PyInt_FromLong(EPositionFieldSatelliteHorizontalDoP));
    PyDict_SetItemString(d,"field_satellite_vertical_dop", PyInt_FromLong(EPositionFieldSatelliteVerticalDoP));
    PyDict_SetItemString(d,"field_satellite_time_dop", PyInt_FromLong(EPositionFieldSatelliteTimeDoP));
    PyDict_SetItemString(d,"field_satellite_position_dop", PyInt_FromLong(EPositionFieldSatellitePositionDoP));
    PyDict_SetItemString(d,"field_satellite_sea_level_altitude", PyInt_FromLong(EPositionFieldSatelliteSeaLevelAltitude));
    PyDict_SetItemString(d,"field_satellite_geoidal_separation", PyInt_FromLong(EPositionFieldSatelliteGeoidalSeparation));
    PyDict_SetItemString(d,"field_media_capabilities_begin", PyInt_FromLong(EPositionFieldMediaCapabilitiesBegin));
    PyDict_SetItemString(d,"field_media_links", PyInt_FromLong(EPositionFieldMediaLinks));
    PyDict_SetItemString(d,"field_media_links_start", PyInt_FromLong(EPositionFieldMediaLinksStart));
    //PyDict_SetItemString(d,"field_media_links_end", PyInt_FromLong(EPositionFieldMediaLinksEnd)); // ???
    PyDict_SetItemString(d,"field_proprietary_fields_begin", PyInt_FromLong(EPositionFieldProprietaryFieldsBegin));
    PyDict_SetItemString(d,"field_id_last", PyInt_FromLong(EPositionFieldIdLast));
   
  }
} /* extern "C" */

#ifndef EKA2
GLDEF_C TInt E32Dll(TDllReason)
{
  return KErrNone;
}

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -