Merge "Move local gps/sap configuration to Context" into location.lnx.2.0-dev

This commit is contained in:
Linux Build Service Account 2016-05-28 23:37:56 -07:00 committed by Gerrit - the friendly Code Review server
commit e090bfde99
6 changed files with 92 additions and 88 deletions

View file

@ -40,6 +40,27 @@
namespace loc_core { namespace loc_core {
loc_gps_cfg_s_type ContextBase::mGps_conf {0};
loc_sap_cfg_s_type ContextBase::mSap_conf {0};
uint32_t ContextBase::getCarrierCapabilities() {
#define carrierMSA (uint32_t)0x2
#define carrierMSB (uint32_t)0x1
#define gpsConfMSA (uint32_t)0x4
#define gpsConfMSB (uint32_t)0x2
uint32_t capabilities = mGps_conf.CAPABILITIES;
if ((mGps_conf.SUPL_MODE & carrierMSA) != carrierMSA) {
capabilities &= ~gpsConfMSA;
}
if ((mGps_conf.SUPL_MODE & carrierMSB) != carrierMSB) {
capabilities &= ~gpsConfMSB;
}
LOC_LOGV("getCarrierCapabilities: CAPABILITIES %x, SUPL_MODE %x, carrier capabilities %x",
mGps_conf.CAPABILITIES, mGps_conf.SUPL_MODE, capabilities);
return capabilities;
}
LBSProxyBase* ContextBase::getLBSProxy(const char* libName) LBSProxyBase* ContextBase::getLBSProxy(const char* libName)
{ {
LBSProxyBase* proxy = NULL; LBSProxyBase* proxy = NULL;

View file

@ -35,6 +35,64 @@
#include <LocApiBase.h> #include <LocApiBase.h>
#include <LBSProxyBase.h> #include <LBSProxyBase.h>
#define MAX_XTRA_SERVER_URL_LENGTH 256
/* GPS.conf support */
/* NOTE: the implementaiton of the parser casts number
fields to 32 bit. To ensure all 'n' fields working,
they must all be 32 bit fields. */
typedef struct loc_gps_cfg_s
{
uint32_t INTERMEDIATE_POS;
uint32_t ACCURACY_THRES;
uint32_t SUPL_VER;
uint32_t SUPL_MODE;
uint32_t CAPABILITIES;
uint32_t LPP_PROFILE;
uint32_t XTRA_VERSION_CHECK;
char XTRA_SERVER_1[MAX_XTRA_SERVER_URL_LENGTH];
char XTRA_SERVER_2[MAX_XTRA_SERVER_URL_LENGTH];
char XTRA_SERVER_3[MAX_XTRA_SERVER_URL_LENGTH];
uint32_t USE_EMERGENCY_PDN_FOR_EMERGENCY_SUPL;
uint32_t NMEA_PROVIDER;
uint32_t GPS_LOCK;
uint32_t A_GLONASS_POS_PROTOCOL_SELECT;
uint32_t AGPS_CERT_WRITABLE_MASK;
} loc_gps_cfg_s_type;
/* NOTE: the implementaiton of the parser casts number
fields to 32 bit. To ensure all 'n' fields working,
they must all be 32 bit fields. */
/* Meanwhile, *_valid fields are 8 bit fields, and 'f'
fields are double. Rigid as they are, it is the
the status quo, until the parsing mechanism is
change, that is. */
typedef struct
{
uint8_t GYRO_BIAS_RANDOM_WALK_VALID;
double GYRO_BIAS_RANDOM_WALK;
uint32_t SENSOR_ACCEL_BATCHES_PER_SEC;
uint32_t SENSOR_ACCEL_SAMPLES_PER_BATCH;
uint32_t SENSOR_GYRO_BATCHES_PER_SEC;
uint32_t SENSOR_GYRO_SAMPLES_PER_BATCH;
uint32_t SENSOR_ACCEL_BATCHES_PER_SEC_HIGH;
uint32_t SENSOR_ACCEL_SAMPLES_PER_BATCH_HIGH;
uint32_t SENSOR_GYRO_BATCHES_PER_SEC_HIGH;
uint32_t SENSOR_GYRO_SAMPLES_PER_BATCH_HIGH;
uint32_t SENSOR_CONTROL_MODE;
uint32_t SENSOR_USAGE;
uint32_t SENSOR_ALGORITHM_CONFIG_MASK;
uint8_t ACCEL_RANDOM_WALK_SPECTRAL_DENSITY_VALID;
double ACCEL_RANDOM_WALK_SPECTRAL_DENSITY;
uint8_t ANGLE_RANDOM_WALK_SPECTRAL_DENSITY_VALID;
double ANGLE_RANDOM_WALK_SPECTRAL_DENSITY;
uint8_t RATE_RANDOM_WALK_SPECTRAL_DENSITY_VALID;
double RATE_RANDOM_WALK_SPECTRAL_DENSITY;
uint8_t VELOCITY_RANDOM_WALK_SPECTRAL_DENSITY_VALID;
double VELOCITY_RANDOM_WALK_SPECTRAL_DENSITY;
uint32_t SENSOR_PROVIDER;
} loc_sap_cfg_s_type;
namespace loc_core { namespace loc_core {
class LocAdapterBase; class LocAdapterBase;
@ -67,6 +125,12 @@ public:
return mLBSProxy->getIzatDevId(); return mLBSProxy->getIzatDevId();
} }
inline void sendMsg(const LocMsg *msg) { getMsgTask()->sendMsg(msg); } inline void sendMsg(const LocMsg *msg) { getMsgTask()->sendMsg(msg); }
static loc_gps_cfg_s_type mGps_conf;
static loc_sap_cfg_s_type mSap_conf;
static uint32_t getCarrierCapabilities();
}; };
} // namespace loc_core } // namespace loc_core

View file

@ -46,15 +46,15 @@ protected:
inline virtual ~LocAdapterProxyBase() { inline virtual ~LocAdapterProxyBase() {
delete mLocAdapterBase; delete mLocAdapterBase;
} }
ContextBase* getContext() const {
return mLocAdapterBase->getContext();
}
inline void updateEvtMask(LOC_API_ADAPTER_EVENT_MASK_T event, inline void updateEvtMask(LOC_API_ADAPTER_EVENT_MASK_T event,
loc_registration_mask_status isEnabled) { loc_registration_mask_status isEnabled) {
mLocAdapterBase->updateEvtMask(event,isEnabled); mLocAdapterBase->updateEvtMask(event,isEnabled);
} }
public: public:
inline ContextBase* getContext() const {
return mLocAdapterBase->getContext();
}
inline virtual void handleEngineUpEvent() {}; inline virtual void handleEngineUpEvent() {};
inline virtual void handleEngineDownEvent() {}; inline virtual void handleEngineDownEvent() {};
inline virtual bool reportPosition(UlpLocation &location, inline virtual bool reportPosition(UlpLocation &location,

View file

@ -318,7 +318,7 @@ static int loc_init(GpsCallbacks* callbacks)
loc_afw_data.adapter->mSupportsPositionInjection = !loc_afw_data.adapter->hasCPIExtendedCapabilities(); loc_afw_data.adapter->mSupportsPositionInjection = !loc_afw_data.adapter->hasCPIExtendedCapabilities();
loc_afw_data.adapter->mSupportsTimeInjection = !loc_afw_data.adapter->hasCPIExtendedCapabilities(); loc_afw_data.adapter->mSupportsTimeInjection = !loc_afw_data.adapter->hasCPIExtendedCapabilities();
loc_afw_data.adapter->setGpsLockMsg(0); loc_afw_data.adapter->setGpsLockMsg(0);
loc_afw_data.adapter->requestUlp(getCarrierCapabilities()); loc_afw_data.adapter->requestUlp(ContextBase::getCarrierCapabilities());
loc_afw_data.adapter->setXtraUserAgent(); loc_afw_data.adapter->setXtraUserAgent();
if(retVal) { if(retVal) {

View file

@ -78,8 +78,6 @@ using namespace loc_core;
boolean configAlreadyRead = false; boolean configAlreadyRead = false;
unsigned int agpsStatus = 0; unsigned int agpsStatus = 0;
loc_gps_cfg_s_type gps_conf;
loc_sap_cfg_s_type sap_conf;
/* Parameter spec table */ /* Parameter spec table */
static const loc_param_s_type gps_conf_table[] = static const loc_param_s_type gps_conf_table[] =
@ -488,7 +486,7 @@ struct LocEngSuplMode : public LocMsg {
locallog(); locallog();
} }
inline virtual void proc() const { inline virtual void proc() const {
mUlp->setCapabilities(getCarrierCapabilities()); mUlp->setCapabilities(ContextBase::getCarrierCapabilities());
} }
inline void locallog() const { inline void locallog() const {
} }
@ -1735,24 +1733,6 @@ inline void LocEngReportGnssMeasurement::log() const {
} }
#define INIT_CHECK(ctx, ret) STATE_CHECK(ctx, "instance not initialized", ret) #define INIT_CHECK(ctx, ret) STATE_CHECK(ctx, "instance not initialized", ret)
uint32_t getCarrierCapabilities() {
#define carrierMSA (uint32_t)0x2
#define carrierMSB (uint32_t)0x1
#define gpsConfMSA (uint32_t)0x4
#define gpsConfMSB (uint32_t)0x2
uint32_t capabilities = gps_conf.CAPABILITIES;
if ((gps_conf.SUPL_MODE & carrierMSA) != carrierMSA) {
capabilities &= ~gpsConfMSA;
}
if ((gps_conf.SUPL_MODE & carrierMSB) != carrierMSB) {
capabilities &= ~gpsConfMSB;
}
LOC_LOGV("getCarrierCapabilities: CAPABILITIES %x, SUPL_MODE %x, carrier capabilities %x",
gps_conf.CAPABILITIES, gps_conf.SUPL_MODE, capabilities);
return capabilities;
}
/*=========================================================================== /*===========================================================================
FUNCTION loc_eng_init FUNCTION loc_eng_init

View file

@ -66,7 +66,8 @@ typedef unsigned char boolean;
#define FAILURE FALSE #define FAILURE FALSE
#define INVALID_ATL_CONNECTION_HANDLE -1 #define INVALID_ATL_CONNECTION_HANDLE -1
#define MAX_XTRA_SERVER_URL_LENGTH 256 #define gps_conf ContextBase::mGps_conf
#define sap_conf ContextBase::mSap_conf
enum loc_nmea_provider_e_type { enum loc_nmea_provider_e_type {
NMEA_PROVIDER_AP = 0, // Application Processor Provider of NMEA NMEA_PROVIDER_AP = 0, // Application Processor Provider of NMEA
@ -141,68 +142,6 @@ typedef struct loc_eng_data_s
loc_ext_parser sv_ext_parser; loc_ext_parser sv_ext_parser;
} loc_eng_data_s_type; } loc_eng_data_s_type;
/* GPS.conf support */
/* NOTE: the implementaiton of the parser casts number
fields to 32 bit. To ensure all 'n' fields working,
they must all be 32 bit fields. */
typedef struct loc_gps_cfg_s
{
uint32_t INTERMEDIATE_POS;
uint32_t ACCURACY_THRES;
uint32_t SUPL_VER;
uint32_t SUPL_MODE;
uint32_t CAPABILITIES;
uint32_t LPP_PROFILE;
uint32_t XTRA_VERSION_CHECK;
char XTRA_SERVER_1[MAX_XTRA_SERVER_URL_LENGTH];
char XTRA_SERVER_2[MAX_XTRA_SERVER_URL_LENGTH];
char XTRA_SERVER_3[MAX_XTRA_SERVER_URL_LENGTH];
uint32_t USE_EMERGENCY_PDN_FOR_EMERGENCY_SUPL;
uint32_t NMEA_PROVIDER;
uint32_t GPS_LOCK;
uint32_t A_GLONASS_POS_PROTOCOL_SELECT;
uint32_t AGPS_CERT_WRITABLE_MASK;
} loc_gps_cfg_s_type;
/* NOTE: the implementaiton of the parser casts number
fields to 32 bit. To ensure all 'n' fields working,
they must all be 32 bit fields. */
/* Meanwhile, *_valid fields are 8 bit fields, and 'f'
fields are double. Rigid as they are, it is the
the status quo, until the parsing mechanism is
change, that is. */
typedef struct
{
uint8_t GYRO_BIAS_RANDOM_WALK_VALID;
double GYRO_BIAS_RANDOM_WALK;
uint32_t SENSOR_ACCEL_BATCHES_PER_SEC;
uint32_t SENSOR_ACCEL_SAMPLES_PER_BATCH;
uint32_t SENSOR_GYRO_BATCHES_PER_SEC;
uint32_t SENSOR_GYRO_SAMPLES_PER_BATCH;
uint32_t SENSOR_ACCEL_BATCHES_PER_SEC_HIGH;
uint32_t SENSOR_ACCEL_SAMPLES_PER_BATCH_HIGH;
uint32_t SENSOR_GYRO_BATCHES_PER_SEC_HIGH;
uint32_t SENSOR_GYRO_SAMPLES_PER_BATCH_HIGH;
uint32_t SENSOR_CONTROL_MODE;
uint32_t SENSOR_USAGE;
uint32_t SENSOR_ALGORITHM_CONFIG_MASK;
uint8_t ACCEL_RANDOM_WALK_SPECTRAL_DENSITY_VALID;
double ACCEL_RANDOM_WALK_SPECTRAL_DENSITY;
uint8_t ANGLE_RANDOM_WALK_SPECTRAL_DENSITY_VALID;
double ANGLE_RANDOM_WALK_SPECTRAL_DENSITY;
uint8_t RATE_RANDOM_WALK_SPECTRAL_DENSITY_VALID;
double RATE_RANDOM_WALK_SPECTRAL_DENSITY;
uint8_t VELOCITY_RANDOM_WALK_SPECTRAL_DENSITY_VALID;
double VELOCITY_RANDOM_WALK_SPECTRAL_DENSITY;
uint32_t SENSOR_PROVIDER;
} loc_sap_cfg_s_type;
extern loc_gps_cfg_s_type gps_conf;
extern loc_sap_cfg_s_type sap_conf;
uint32_t getCarrierCapabilities();
//loc_eng functions //loc_eng functions
int loc_eng_init(loc_eng_data_s_type &loc_eng_data, int loc_eng_init(loc_eng_data_s_type &loc_eng_data,
LocCallbacks* callbacks, LocCallbacks* callbacks,