Merge "Loc_Api: Support A-GLONASS Position protocol"
This commit is contained in:
commit
283899e1fe
8 changed files with 75 additions and 1 deletions
|
@ -216,6 +216,9 @@ public:
|
||||||
inline virtual enum loc_api_adapter_err
|
inline virtual enum loc_api_adapter_err
|
||||||
setExtPowerConfig(int isBatteryCharging)
|
setExtPowerConfig(int isBatteryCharging)
|
||||||
{LOC_LOGW("%s: default implementation invoked", __func__); return LOC_API_ADAPTER_ERR_SUCCESS;}
|
{LOC_LOGW("%s: default implementation invoked", __func__); return LOC_API_ADAPTER_ERR_SUCCESS;}
|
||||||
|
inline virtual enum loc_api_adapter_err
|
||||||
|
setAGLONASSProtocol(unsigned long aGlonassProtocol)
|
||||||
|
{LOC_LOGW("%s: default implementation invoked", __func__); return LOC_API_ADAPTER_ERR_SUCCESS;}
|
||||||
|
|
||||||
inline const LocPosMode& getPositionMode() const {return fixCriteria;}
|
inline const LocPosMode& getPositionMode() const {return fixCriteria;}
|
||||||
|
|
||||||
|
|
|
@ -105,6 +105,7 @@ static loc_param_s_type loc_parameter_table[] =
|
||||||
{"SENSOR_ALGORITHM_CONFIG_MASK", &gps_conf.SENSOR_ALGORITHM_CONFIG_MASK, NULL, 'n'},
|
{"SENSOR_ALGORITHM_CONFIG_MASK", &gps_conf.SENSOR_ALGORITHM_CONFIG_MASK, NULL, 'n'},
|
||||||
{"QUIPC_ENABLED", &gps_conf.QUIPC_ENABLED, NULL, 'n'},
|
{"QUIPC_ENABLED", &gps_conf.QUIPC_ENABLED, NULL, 'n'},
|
||||||
{"LPP_PROFILE", &gps_conf.LPP_PROFILE, NULL, 'n'},
|
{"LPP_PROFILE", &gps_conf.LPP_PROFILE, NULL, 'n'},
|
||||||
|
{"A_GLONASS_POS_PROTOCOL_SELECT", &gps_conf.A_GLONASS_POS_PROTOCOL_SELECT, NULL, 'n'},
|
||||||
};
|
};
|
||||||
|
|
||||||
static void loc_default_parameters(void)
|
static void loc_default_parameters(void)
|
||||||
|
@ -145,6 +146,9 @@ static void loc_default_parameters(void)
|
||||||
|
|
||||||
/* LTE Positioning Profile configuration is disable by default*/
|
/* LTE Positioning Profile configuration is disable by default*/
|
||||||
gps_conf.LPP_PROFILE = 0;
|
gps_conf.LPP_PROFILE = 0;
|
||||||
|
|
||||||
|
/*By default no positioning protocol is selected on A-GLONASS system*/
|
||||||
|
gps_conf.A_GLONASS_POS_PROTOCOL_SELECT = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
LocEngContext::LocEngContext(gps_create_thread threadCreator) :
|
LocEngContext::LocEngContext(gps_create_thread threadCreator) :
|
||||||
|
@ -367,6 +371,11 @@ static int loc_eng_reinit(loc_eng_data_s_type &loc_eng_data)
|
||||||
msg_q_snd((void*)((LocEngContext*)(loc_eng_data.context))->deferred_q,
|
msg_q_snd((void*)((LocEngContext*)(loc_eng_data.context))->deferred_q,
|
||||||
sensor_control_config_msg, loc_eng_free_msg);
|
sensor_control_config_msg, loc_eng_free_msg);
|
||||||
|
|
||||||
|
loc_eng_msg_a_glonass_protocol *a_glonass_protocol_msg(new loc_eng_msg_a_glonass_protocol(&loc_eng_data,
|
||||||
|
gps_conf.A_GLONASS_POS_PROTOCOL_SELECT));
|
||||||
|
msg_q_snd((void*)((LocEngContext*)(loc_eng_data.context))->deferred_q,
|
||||||
|
a_glonass_protocol_msg, loc_eng_free_msg);
|
||||||
|
|
||||||
/* Make sure at least one of the sensor property is specified by the user in the gps.conf file. */
|
/* Make sure at least one of the sensor property is specified by the user in the gps.conf file. */
|
||||||
if( gps_conf.GYRO_BIAS_RANDOM_WALK_VALID ||
|
if( gps_conf.GYRO_BIAS_RANDOM_WALK_VALID ||
|
||||||
gps_conf.ACCEL_RANDOM_WALK_SPECTRAL_DENSITY_VALID ||
|
gps_conf.ACCEL_RANDOM_WALK_SPECTRAL_DENSITY_VALID ||
|
||||||
|
@ -1430,6 +1439,13 @@ static void loc_eng_deferred_action_thread(void* arg)
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case LOC_ENG_MSG_A_GLONASS_PROTOCOL:
|
||||||
|
{
|
||||||
|
loc_eng_msg_a_glonass_protocol *svMsg = (loc_eng_msg_a_glonass_protocol*)msg;
|
||||||
|
loc_eng_data_p->client_handle->setAGLONASSProtocol(svMsg->a_glonass_protocol);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
case LOC_ENG_MSG_SUPL_VERSION:
|
case LOC_ENG_MSG_SUPL_VERSION:
|
||||||
{
|
{
|
||||||
loc_eng_msg_suple_version *svMsg = (loc_eng_msg_suple_version*)msg;
|
loc_eng_msg_suple_version *svMsg = (loc_eng_msg_suple_version*)msg;
|
||||||
|
|
1
loc_api/libloc_api_50001/loc_eng.h
Normal file → Executable file
1
loc_api/libloc_api_50001/loc_eng.h
Normal file → Executable file
|
@ -180,6 +180,7 @@ typedef struct loc_gps_cfg_s
|
||||||
unsigned long QUIPC_ENABLED;
|
unsigned long QUIPC_ENABLED;
|
||||||
unsigned long LPP_PROFILE;
|
unsigned long LPP_PROFILE;
|
||||||
unsigned long SENSOR_ALGORITHM_CONFIG_MASK;
|
unsigned long SENSOR_ALGORITHM_CONFIG_MASK;
|
||||||
|
unsigned long A_GLONASS_POS_PROTOCOL_SELECT;
|
||||||
uint8_t ACCEL_RANDOM_WALK_SPECTRAL_DENSITY_VALID;
|
uint8_t ACCEL_RANDOM_WALK_SPECTRAL_DENSITY_VALID;
|
||||||
double ACCEL_RANDOM_WALK_SPECTRAL_DENSITY;
|
double ACCEL_RANDOM_WALK_SPECTRAL_DENSITY;
|
||||||
uint8_t ANGLE_RANDOM_WALK_SPECTRAL_DENSITY_VALID;
|
uint8_t ANGLE_RANDOM_WALK_SPECTRAL_DENSITY_VALID;
|
||||||
|
|
3
loc_api/libloc_api_50001/loc_eng_log.cpp
Normal file → Executable file
3
loc_api/libloc_api_50001/loc_eng_log.cpp
Normal file → Executable file
|
@ -104,7 +104,8 @@ static loc_name_val_s_type loc_eng_msgs[] =
|
||||||
NAME_VAL( ULP_MSG_INJECT_NETWORK_POSITION ),
|
NAME_VAL( ULP_MSG_INJECT_NETWORK_POSITION ),
|
||||||
NAME_VAL( ULP_MSG_REPORT_QUIPC_POSITION ),
|
NAME_VAL( ULP_MSG_REPORT_QUIPC_POSITION ),
|
||||||
NAME_VAL( ULP_MSG_REQUEST_COARSE_POSITION ),
|
NAME_VAL( ULP_MSG_REQUEST_COARSE_POSITION ),
|
||||||
NAME_VAL( LOC_ENG_MSG_LPP_CONFIG )
|
NAME_VAL( LOC_ENG_MSG_LPP_CONFIG ),
|
||||||
|
NAME_VAL( LOC_ENG_MSG_A_GLONASS_PROTOCOL )
|
||||||
};
|
};
|
||||||
static int loc_eng_msgs_num = sizeof(loc_eng_msgs) / sizeof(loc_name_val_s_type);
|
static int loc_eng_msgs_num = sizeof(loc_eng_msgs) / sizeof(loc_name_val_s_type);
|
||||||
|
|
||||||
|
|
|
@ -158,6 +158,16 @@ struct loc_eng_msg {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct loc_eng_msg_a_glonass_protocol : public loc_eng_msg {
|
||||||
|
const unsigned long a_glonass_protocol;
|
||||||
|
inline loc_eng_msg_a_glonass_protocol(void* instance, unsigned long protocol) :
|
||||||
|
loc_eng_msg(instance, LOC_ENG_MSG_A_GLONASS_PROTOCOL),
|
||||||
|
a_glonass_protocol(protocol)
|
||||||
|
{
|
||||||
|
LOC_LOGV("A-GLONASS protocol: 0x%lx", protocol);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
struct loc_eng_msg_suple_version : public loc_eng_msg {
|
struct loc_eng_msg_suple_version : public loc_eng_msg {
|
||||||
const int supl_version;
|
const int supl_version;
|
||||||
inline loc_eng_msg_suple_version(void* instance, int version) :
|
inline loc_eng_msg_suple_version(void* instance, int version) :
|
||||||
|
|
|
@ -128,6 +128,9 @@ enum loc_eng_msg_ids_t {
|
||||||
// Message is sent by Android framework (GpsLocationProvider)
|
// Message is sent by Android framework (GpsLocationProvider)
|
||||||
// to inject the raw command
|
// to inject the raw command
|
||||||
ULP_MSG_INJECT_RAW_COMMAND,
|
ULP_MSG_INJECT_RAW_COMMAND,
|
||||||
|
|
||||||
|
/* Message is sent by HAL to LOC API to select A-GLONASS protocol */
|
||||||
|
LOC_ENG_MSG_A_GLONASS_PROTOCOL,
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
|
|
@ -1441,6 +1441,45 @@ enum loc_api_adapter_err LocApiV02Adapter :: setExtPowerConfig(int isBatteryChar
|
||||||
return LOC_API_ADAPTER_ERR_SUCCESS;
|
return LOC_API_ADAPTER_ERR_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* set the Positioning Protocol on A-GLONASS system */
|
||||||
|
enum loc_api_adapter_err LocApiV02Adapter :: setAGLONASSProtocol(unsigned long aGlonassProtocol)
|
||||||
|
{
|
||||||
|
locClientStatusEnumType result = eLOC_CLIENT_SUCCESS;
|
||||||
|
locClientReqUnionType req_union;
|
||||||
|
qmiLocSetProtocolConfigParametersReqMsgT_v02 aGlonassProtocol_req;
|
||||||
|
qmiLocSetProtocolConfigParametersIndMsgT_v02 aGlonassProtocol_ind;
|
||||||
|
|
||||||
|
memset(&aGlonassProtocol_req, 0, sizeof(aGlonassProtocol_req));
|
||||||
|
memset(&aGlonassProtocol_ind, 0, sizeof(aGlonassProtocol_ind));
|
||||||
|
|
||||||
|
aGlonassProtocol_req.assistedGlonassProtocolMask_valid = 1;
|
||||||
|
aGlonassProtocol_req.assistedGlonassProtocolMask = aGlonassProtocol;
|
||||||
|
|
||||||
|
req_union.pSetProtocolConfigParametersReq = &aGlonassProtocol_req;
|
||||||
|
|
||||||
|
LOC_LOGD("%s:%d]: aGlonassProtocolMask = 0x%lx\n", __func__, __LINE__,
|
||||||
|
aGlonassProtocol_req.assistedGlonassProtocolMask);
|
||||||
|
|
||||||
|
result = loc_sync_send_req(clientHandle,
|
||||||
|
QMI_LOC_SET_PROTOCOL_CONFIG_PARAMETERS_REQ_V02,
|
||||||
|
req_union, LOC_ENGINE_SYNC_REQUEST_TIMEOUT,
|
||||||
|
QMI_LOC_SET_PROTOCOL_CONFIG_PARAMETERS_IND_V02,
|
||||||
|
&aGlonassProtocol_ind);
|
||||||
|
|
||||||
|
if(result != eLOC_CLIENT_SUCCESS ||
|
||||||
|
eQMI_LOC_SUCCESS_V02 != aGlonassProtocol_ind.status)
|
||||||
|
{
|
||||||
|
LOC_LOGE ("%s:%d]: Error status = %s, ind..status = %s ",
|
||||||
|
__func__, __LINE__,
|
||||||
|
loc_get_v02_client_status_name(result),
|
||||||
|
loc_get_v02_qmi_status_name(aGlonassProtocol_ind.status));
|
||||||
|
|
||||||
|
return LOC_API_ADAPTER_ERR_GENERAL_FAILURE;
|
||||||
|
}
|
||||||
|
return LOC_API_ADAPTER_ERR_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Convert event mask from loc eng to loc_api_v02 format */
|
/* Convert event mask from loc eng to loc_api_v02 format */
|
||||||
locClientEventMaskType LocApiV02Adapter :: convertMask(
|
locClientEventMaskType LocApiV02Adapter :: convertMask(
|
||||||
LOC_API_ADAPTER_EVENT_MASK_T mask)
|
LOC_API_ADAPTER_EVENT_MASK_T mask)
|
||||||
|
|
1
loc_api/loc_api_v02/LocApiV02Adapter.h
Normal file → Executable file
1
loc_api/loc_api_v02/LocApiV02Adapter.h
Normal file → Executable file
|
@ -161,6 +161,7 @@ public:
|
||||||
int accelSamplesPerBatchHigh, int accelBatchesPerSecHigh,
|
int accelSamplesPerBatchHigh, int accelBatchesPerSecHigh,
|
||||||
int gyroSamplesPerBatchHigh, int gyroBatchesPerSecHigh, int algorithmConfig);
|
int gyroSamplesPerBatchHigh, int gyroBatchesPerSecHigh, int algorithmConfig);
|
||||||
virtual enum loc_api_adapter_err setExtPowerConfig(int isBatteryCharging);
|
virtual enum loc_api_adapter_err setExtPowerConfig(int isBatteryCharging);
|
||||||
|
virtual enum loc_api_adapter_err setAGLONASSProtocol(unsigned long aGlonassProtocol);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif //LOC_API_V_0_2_ADAPTER_H
|
#endif //LOC_API_V_0_2_ADAPTER_H
|
||||||
|
|
Loading…
Reference in a new issue