📄 locationacqmodule.cpp
字号:
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 + -