870 lines
24 KiB
C
870 lines
24 KiB
C
/****************************************************************************
|
|
* arch/arm/include/cxd56xx/gnss.h
|
|
*
|
|
* Copyright 2018,2019 Sony Semiconductor Solutions Corporation
|
|
*
|
|
* Redistribution and use in source and binary forms, with or without
|
|
* modification, are permitted provided that the following conditions
|
|
* are met:
|
|
*
|
|
* 1. Redistributions of source code must retain the above copyright
|
|
* notice, this list of conditions and the following disclaimer.
|
|
* 2. Redistributions in binary form must reproduce the above copyright
|
|
* notice, this list of conditions and the following disclaimer in
|
|
* the documentation and/or other materials provided with the
|
|
* distribution.
|
|
* 3. Neither the name of Sony Semiconductor Solutions Corporation nor
|
|
* the names of its contributors may be used to endorse or promote
|
|
* products derived from this software without specific prior written
|
|
* permission.
|
|
*
|
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
|
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
|
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
|
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
|
|
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
|
|
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
|
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
* POSSIBILITY OF SUCH DAMAGE.
|
|
*
|
|
****************************************************************************/
|
|
|
|
#ifndef __ARCH_ARM_INCLUDE_CXD56XX_GNSS_H
|
|
#define __ARCH_ARM_INCLUDE_CXD56XX_GNSS_H
|
|
|
|
#ifdef __cplusplus
|
|
#define EXTERN extern "C"
|
|
extern "C"
|
|
{
|
|
#else
|
|
#define EXTERN extern
|
|
#endif
|
|
|
|
/****************************************************************************
|
|
* include files
|
|
****************************************************************************/
|
|
|
|
#include <arch/chip/gnss_type.h>
|
|
|
|
/* Start the positioning.
|
|
* This command is used to start the positioning.
|
|
*
|
|
* param arg
|
|
* Start mode value of uint32_t. Not address pointer.
|
|
* One of #CXD56_GNSS_STMOD_COLD, #CXD56_GNSS_STMOD_WARM, #CXD56_GNSS_STMOD_HOT
|
|
*/
|
|
|
|
#define CXD56_GNSS_IOCTL_START 1
|
|
|
|
/* Stop the positioning.
|
|
* This command is used to stop the positioning. GNSS will transition to idle
|
|
* mode.
|
|
*
|
|
* param arg
|
|
* Parameter is Unnecessary. Set Zero.
|
|
*/
|
|
|
|
#define CXD56_GNSS_IOCTL_STOP 2
|
|
|
|
/* Select the satellite systems.
|
|
* This command is used to select the satellite systems to be used for
|
|
* positioning.
|
|
* The satellite system is defined as a bit, and you can select multiple
|
|
* satellites using OR value.
|
|
* Do not specify zero, please select at least one system.
|
|
* This command must be issued in idle mode.
|
|
*
|
|
* param[in] arg
|
|
* Satellite system bitmap value of uint32_t. Not address pointer.
|
|
* Bit OR of #CXD56_GNSS_SAT_GPS, #CXD56_GNSS_SAT_GLONASS,
|
|
* #CXD56_GNSS_SAT_SBAS, #CXD56_GNSS_SAT_QZ_L1CA, #CXD56_GNSS_SAT_QZ_L1S.
|
|
*/
|
|
|
|
#define CXD56_GNSS_IOCTL_SELECT_SATELLITE_SYSTEM 3
|
|
|
|
/* Get satellite system to be used for measurement GNSS.
|
|
* The satellite system setting of the subscriber that a
|
|
* SF_COMMAND_COMMON_START command was published is acquired.
|
|
*
|
|
* param[out] arg
|
|
* Address pinting to of uint32_t object.
|
|
* Bit OR of #CXD56_GNSS_SAT_GPS, #CXD56_GNSS_SAT_GLONASS,
|
|
* #CXD56_GNSS_SAT_SBAS, #CXD56_GNSS_SAT_QZ_L1CA, #CXD56_GNSS_SAT_QZ_L1S.
|
|
*/
|
|
|
|
#define CXD56_GNSS_IOCTL_GET_SATELLITE_SYSTEM 4
|
|
|
|
/* Set the receiver approximate position.
|
|
* The receiver position is set using ellipsoidal coordinates (latitude,
|
|
* longitude, altitude).
|
|
* If ellipsoidal coordinates setting, north latitude and east longitude
|
|
* direction as positive.
|
|
* When specifying south latitude or west longitude, set it to a negative
|
|
* value.
|
|
*
|
|
* The receiver position, current time and TCXO offset value, ephemeris data
|
|
* are required in order to initiate a hot start
|
|
* so the position must have been set to GNSS using this command prior to hot
|
|
* start.
|
|
* Set GNSS configure with this command before hot start if receiver position
|
|
* is not stored in the memory.
|
|
* This command must be issued in idle mode.
|
|
*
|
|
* param[in] arg
|
|
* Address pointing to struct #cxd56_gnss_ellipsoidal_position_s object.
|
|
*/
|
|
|
|
#define CXD56_GNSS_IOCTL_SET_RECEIVER_POSITION_ELLIPSOIDAL 5
|
|
|
|
/* Set the receiver approximate position.
|
|
* The receiver position is set using orthogonal coordinates (x, y, z).
|
|
* The receiver position, current time and TCXO offset value, ephemeris data
|
|
* are required in order to initiate a hot start.
|
|
* Set the position with this command before hot start if no position
|
|
* information in GNSS.
|
|
* This command must be issued in idle mode.
|
|
*
|
|
* param[in] arg
|
|
* Address pointing to struct #cxd56_gnss_orthogonal_position_s object.
|
|
*/
|
|
|
|
#define CXD56_GNSS_IOCTL_SET_RECEIVER_POSITION_ORTHOGONAL 6
|
|
|
|
/* Set receiver operation mode.
|
|
* Can set operation mode and measurement cycle.
|
|
* The cycle data is 1000msec aligned only and cannot set 0msec.
|
|
*
|
|
* param[in] arg
|
|
* Address pointing to struct #cxd56_gnss_ope_mode_param_s object.
|
|
*/
|
|
|
|
#define CXD56_GNSS_IOCTL_SET_OPE_MODE 7
|
|
|
|
/* Get receiver operation mode.
|
|
*
|
|
* param[out] arg
|
|
* Address pointing to struct #cxd56_gnss_ope_mode_param_s object.
|
|
*/
|
|
|
|
#define CXD56_GNSS_IOCTL_GET_OPE_MODE 8
|
|
|
|
/* Set receiver TCXO offset value to GNSS.
|
|
* Receiver TCXO offset value set in "Hz". It can specify positive direction
|
|
* or negative direction by a sign int the argument.
|
|
* The receiver position, current time and TCXO offset value, ephemeris data
|
|
* are required in order to initiate a hot start.
|
|
* Set the offset with this command before hot start if no offset information
|
|
* in GNSS.
|
|
* This command must be issued in idle mode.
|
|
*
|
|
* param[in] arg
|
|
* TCXO offset value of uint32_t. Not address pointer.
|
|
* Address pointing to a offset value(int32_t) object.
|
|
*/
|
|
|
|
#define CXD56_GNSS_IOCTL_SET_TCXO_OFFSET 9
|
|
|
|
/* Get receiver TCXO offset value.
|
|
*
|
|
* param[out] arg
|
|
* Address pointing to int32_t object.
|
|
*/
|
|
|
|
#define CXD56_GNSS_IOCTL_GET_TCXO_OFFSET 10
|
|
|
|
/* Set receiver time to GNSS.
|
|
* The UTC time standard is used for the receiver time stored in a argument of
|
|
* cxd56_gnss_datetime type.
|
|
* The receiver position, current time and TCXO offset value, ephemeris data
|
|
* are required in order to initiate a hot start.
|
|
* Set the time with this command before hot start if GPS time is not counted
|
|
* in RTC.
|
|
* This command must be issued in idle mode.
|
|
*
|
|
* param[in] arg
|
|
* Address pointing to struct #cxd56_gnss_datetime_s object.
|
|
*/
|
|
|
|
#define CXD56_GNSS_IOCTL_SET_TIME 11
|
|
|
|
/* Get the latest almanac data extracted from the satellite signal.
|
|
* Almanac data size is 2048(GPS) or 576(GLONASS) bytes.
|
|
* This command must be issued in idle mode.
|
|
*
|
|
* param[out] arg
|
|
* Address pointing to struct #cxd56_gnss_orbital_param_s object.
|
|
*/
|
|
|
|
#define CXD56_GNSS_IOCTL_GET_ALMANAC 12
|
|
|
|
/* Set almanac data.
|
|
* Almanac data size is 2048(GPS) or 576(GLONASS) bytes.
|
|
* This command must be issued in idle mode.
|
|
*
|
|
* param[in] arg
|
|
* Address pointing to struct #cxd56_gnss_orbital_param_s object.
|
|
*/
|
|
|
|
#define CXD56_GNSS_IOCTL_SET_ALMANAC 13
|
|
|
|
/* Get the latest ephemeris data extracted from the satellite signal.
|
|
* Ephemeris data size is 3072(GPS) or 1152(GLONASS) bytes.
|
|
* This command must be issued in idle mode.
|
|
*
|
|
* param[out] arg
|
|
* Address pointing to struct #cxd56_gnss_orbital_param_s object.
|
|
*/
|
|
|
|
#define CXD56_GNSS_IOCTL_GET_EPHEMERIS 14
|
|
|
|
/* Set ephemeris data.
|
|
* Ephemeris data size is 3072(GPS) or 1152(GLONASS) bytes.
|
|
* This command must be issued in idle mode.
|
|
*
|
|
* param[in] arg
|
|
* Address pointing to struct #cxd56_gnss_orbital_param_s object.
|
|
*/
|
|
|
|
#define CXD56_GNSS_IOCTL_SET_EPHEMERIS 15
|
|
|
|
/* This command is used to save the backup data. The backup data contents are
|
|
* saved in the flash memory.
|
|
* The backup data saved in the flash memory is automatically restored at
|
|
* boot-up of GNSS.
|
|
* The receiver position, ephemeris, almanac, TCXO offset and other
|
|
* information required
|
|
* for hot start are included in the backup data.
|
|
* By saving it with this command, you can restore the information necessary
|
|
* for starting except time at boot time.
|
|
* This command must be issued in idle mode.
|
|
*
|
|
* param arg
|
|
* Parameter is Unnecessary. Set Zero.
|
|
*/
|
|
|
|
#define CXD56_GNSS_IOCTL_SAVE_BACKUP_DATA 16
|
|
|
|
/* Erase backup data on flash memory.
|
|
* This command must be issued in idle mode.
|
|
*
|
|
* param arg
|
|
* Parameter is Unnecessary. Set Zero.
|
|
*/
|
|
|
|
#define CXD56_GNSS_IOCTL_ERASE_BACKUP_DATA 17
|
|
|
|
/* Open CEP data file for GNSS device.
|
|
*
|
|
* Open the CEP data file and make the data available from the device.
|
|
* The file name to be opened is specified by Kconfig.
|
|
* This command must be issued in idle mode, between calling open function
|
|
* for GNSS device and issuing the command CXD56_GNSS_IOCTL_START.
|
|
*
|
|
* param[in] arg
|
|
* Parameter is Unnecessary. Set Zero.
|
|
*/
|
|
|
|
#define CXD56_GNSS_IOCTL_OPEN_CEP_DATA 18
|
|
|
|
/* Close the CEP data file opened with the command
|
|
* CXD56_GNSS_IOCTL_OPEN_CEP_DATA.
|
|
* This command must be issued in idle mode.
|
|
*
|
|
* param arg
|
|
* Parameter is Unnecessary. Set Zero.
|
|
*/
|
|
|
|
#define CXD56_GNSS_IOCTL_CLOSE_CEP_DATA 19
|
|
|
|
/* Check the validity of the CEP assist data.
|
|
* Return error code if the data file dose not exist or data is invalid.
|
|
*
|
|
* param arg
|
|
* Parameter is Unnecessary. Set Zero.
|
|
*/
|
|
|
|
#define CXD56_GNSS_IOCTL_CHECK_CEP_DATA 20
|
|
|
|
/* Get age(lifetime) information of assist data.
|
|
* Age includes start date and time represented by the Julian date(MJD), and
|
|
* validity period.
|
|
* Conversion MJD to YMD is following formula.
|
|
* (Assist data start time must 0:00 (GPS time))\n
|
|
* If the data file dose not exist, an error will be returned.
|
|
*
|
|
* JD12 = floor(MJD + 2400001)
|
|
* e = floor((JD12 - 1867216.25) / 36524.25)
|
|
* f = JD12 + (e - floor(e / 4) + 1)
|
|
* g = f + 1524
|
|
* h = floor((g - 122.1) / 365.25)
|
|
* i = floor(365.25 * h)
|
|
* j = floor((g - i) / 30.6001)
|
|
*
|
|
* d = g - i - floor(30.6001 * j)
|
|
* m = j - 12 * floor(j / 14) - 1
|
|
* w = h - 4716 + floor((14 - m) / 12)
|
|
*
|
|
* if w > 0 then y = w else y = w - 1
|
|
*
|
|
* param[in] arg
|
|
* Address pointing to struct #cxd56_gnss_cep_age_s object.
|
|
*/
|
|
|
|
#define CXD56_GNSS_IOCTL_GET_CEP_AGE 21
|
|
|
|
/* Reset CEP assist data init flag & valid flag.
|
|
* This command for notifying that the data has been updated.
|
|
* Execute this command before measurement if assist data updated.
|
|
*
|
|
* param arg
|
|
* Parameter is Unnecessary. Set Zero.
|
|
*/
|
|
|
|
#define CXD56_GNSS_IOCTL_RESET_CEP_FLAG 22
|
|
|
|
/* Currently version not supported. */
|
|
|
|
#define CXD56_GNSS_IOCTL_RTK_START 23
|
|
|
|
/* Currently version not supported. */
|
|
|
|
#define CXD56_GNSS_IOCTL_RTK_STOP 24
|
|
|
|
/* Currently version not supported. */
|
|
|
|
#define CXD56_GNSS_IOCTL_RTK_SET_INTERVAL 25
|
|
|
|
/* Currently version not supported. */
|
|
|
|
#define CXD56_GNSS_IOCTL_RTK_GET_INTERVAL 26
|
|
|
|
/* Currently version not supported. */
|
|
|
|
#define CXD56_GNSS_IOCTL_RTK_SELECT_SATELLITE_SYSTEM 27
|
|
|
|
/* Currently version not supported. */
|
|
|
|
#define CXD56_GNSS_IOCTL_RTK_GET_SATELLITE_SYSTEM 28
|
|
|
|
/* Currently version not supported. */
|
|
|
|
#define CXD56_GNSS_IOCTL_RTK_SET_EPHEMERIS_ENABLER 29
|
|
|
|
/* Currently version not supported. */
|
|
|
|
#define CXD56_GNSS_IOCTL_RTK_GET_EPHEMERIS_ENABLER 30
|
|
|
|
/* Set acquist data.
|
|
*
|
|
* param[in] arg
|
|
* Address pointing to struct #cxd56_gnss_agps_acquist_s object.
|
|
*/
|
|
|
|
#define CXD56_GNSS_IOCTL_AGPS_SET_ACQUIST 31
|
|
|
|
/* Set frame time.
|
|
*
|
|
* param[in] arg
|
|
* Address pointing to struct #cxd56_gnss_agps_frametime_s object.
|
|
*/
|
|
|
|
#define CXD56_GNSS_IOCTL_AGPS_SET_FRAMETIME 32
|
|
|
|
/* Set tau_GPS(τGPS: Differnece of system time between GPS and Glonass
|
|
* system).
|
|
*
|
|
* param[in] arg
|
|
* Address pointing to tau GPS value(τGPS, double) object.
|
|
*/
|
|
|
|
#define CXD56_GNSS_IOCTL_AGPS_SET_TAU_GPS 33
|
|
|
|
/* Set high precision receiver time.
|
|
*
|
|
* param arg
|
|
* Address pointing to struct #cxd56_gnss_agps_time_gps_s object.
|
|
*/
|
|
|
|
#define CXD56_GNSS_IOCTL_AGPS_SET_TIME_GPS 34
|
|
|
|
/* Clear info(s) for hot start.
|
|
*
|
|
* param arg
|
|
* Bit OR of #CXD56_GNSS_GCLR_EPH, #CXD56_GNSS_GCLR_ALM, #CXD56_GNSS_GCLR_PV,
|
|
* #CXD56_GNSS_GCLR_TIME, #CXD56_GNSS_GCLR_TCXO, #CXD56_GNSS_GCLR_ALL.
|
|
*/
|
|
|
|
#define CXD56_GNSS_IOCTL_AGPS_CLEAR_RECEIVER_INFO 35
|
|
|
|
/* Set acquist data.
|
|
*
|
|
* param[in] arg
|
|
* Address pointing to struct #cxd56_gnss_agps_tow_assist_s object.
|
|
*/
|
|
|
|
#define CXD56_GNSS_IOCTL_AGPS_SET_TOW_ASSIST 36
|
|
|
|
/* Set acquist data.
|
|
*
|
|
* param[in] arg
|
|
* Address pointing to struct #cxd56_gnss_agps_utc_model_s object.
|
|
*/
|
|
|
|
#define CXD56_GNSS_IOCTL_AGPS_SET_UTC_MODEL 37
|
|
|
|
/* Enable or not to output spectrum data of GNSS signal.
|
|
*
|
|
* param arg
|
|
* Address pointing to struct #cxd56_gnss_spectrum_control_s object.
|
|
*/
|
|
|
|
#define CXD56_GNSS_IOCTL_SPECTRUM_CONTROL 38
|
|
|
|
/* Start GPS factory test.
|
|
* Test results can get by CXD56_GNSS_IOCTL_FACTORY_GET_TEST_RESULT command
|
|
* after execute this command and waiting 1 second.
|
|
* This command execute during measurement stop.
|
|
* After executing this command, it is not accepted except for
|
|
* CXD56_GNSS_IOCTL_FACTORY_GET_TEST_RESULT and
|
|
* CXD56_GNSS_IOCTL_FACTORY_STOP_TEST.
|
|
*
|
|
* param[in] arg
|
|
* Address pointing to struct #cxd56_gnss_test_info_s object.
|
|
*/
|
|
|
|
#define CXD56_GNSS_IOCTL_FACTORY_START_TEST 39
|
|
|
|
/* Stop GPS factory test.
|
|
*
|
|
* param arg
|
|
* Parameter is Unnecessary. Set Zero.
|
|
*/
|
|
|
|
#define CXD56_GNSS_IOCTL_FACTORY_STOP_TEST 40
|
|
|
|
/* Get GPS factory test result.
|
|
*
|
|
* param[out] arg
|
|
* Address pointing to struct #cxd56_gnss_test_result_s object.
|
|
*/
|
|
|
|
#define CXD56_GNSS_IOCTL_FACTORY_GET_TEST_RESULT 41
|
|
|
|
/* Set signal information for GNSS events from GNSS device driver.
|
|
* The field 'enable' of struct #cxd56_gnss_signal_setting_s to be given
|
|
* as a parameter must be specified as 1 when setting and 0 when unsetting.
|
|
* param[out] arg
|
|
* Address pointing to struct #cxd56_gnss_signal_setting_s object.
|
|
*/
|
|
|
|
#define CXD56_GNSS_IOCTL_SIGNAL_SET 42
|
|
|
|
/* Start PVTLOG.
|
|
* Automatically saves the PVT log in the GNSS core.
|
|
*
|
|
* param arg
|
|
* Address pointing to #cxd56_pvtlog_setting_s object.
|
|
*/
|
|
|
|
#define CXD56_GNSS_IOCTL_PVTLOG_START 43
|
|
|
|
/* Stop PVTLOG.
|
|
* param arg
|
|
* Parameter is Unnecessary. Set Zero.
|
|
*/
|
|
|
|
#define CXD56_GNSS_IOCTL_PVTLOG_STOP 44
|
|
|
|
/* Delete PVTlog data.
|
|
* Delete the log data saved in the GNSS core.
|
|
* param arg
|
|
* Parameter is Unnecessary. Set Zero.
|
|
*/
|
|
|
|
#define CXD56_GNSS_IOCTL_PVTLOG_DELETE_LOG 45
|
|
|
|
/* Get PVTLOG status.
|
|
* This command is for getting the log stored status.
|
|
* The status data include stored log data count and logging time.
|
|
*
|
|
* param arg
|
|
* Address pointing to #cxd56_pvtlog_status_s.
|
|
*/
|
|
|
|
#define CXD56_GNSS_IOCTL_PVTLOG_GET_STATUS 46
|
|
|
|
/* Currently version not supported. */
|
|
|
|
#define CXD56_GNSS_IOCTL_NAVMSG_START 47
|
|
|
|
/* Set ephemeris data.
|
|
* Only satellites with data are output.
|
|
* Ephemeris data size is variable.
|
|
* Ephemeris data max size is 3072(GPS) or 1152(GLONASS) bytes.
|
|
* This command must be issued in idle mode.
|
|
*
|
|
* param[in] arg
|
|
* Address pointing to struct #cxd56_gnss_set_var_ephemeris_s object.
|
|
*/
|
|
|
|
#define CXD56_GNSS_IOCTL_SET_VAR_EPHEMERIS 48
|
|
|
|
/* Get the latest ephemeris data extracted from the satellite signal.
|
|
* Only satellites with data are output.
|
|
* Ephemeris data size is variable.
|
|
* Ephemeris data max size is 3072(GPS) or 1152(GLONASS) bytes.
|
|
* This command must be issued in idle mode.
|
|
*
|
|
* param[out] arg
|
|
* Address pointing to struct #cxd56_gnss_get_var_ephemeris_s object.
|
|
*/
|
|
|
|
#define CXD56_GNSS_IOCTL_GET_VAR_EPHEMERIS 49
|
|
|
|
/* check macros for GNSS commands */
|
|
|
|
#define CXD56_GNSS_IOCTL_INVAL 0
|
|
#define CXD56_GNSS_IOCTL_MAX 50
|
|
|
|
/* Same value to GD Start mode CXD56_GNSS_STMOD_XXXX for GD_Start */
|
|
|
|
#define CXD56_GNSS_STMOD_COLD 0 /* Cold Start */
|
|
#define CXD56_GNSS_STMOD_WARM 1 /* Warm Start */
|
|
#define CXD56_GNSS_STMOD_WARM_ACC2 2 /* Warm Start, better accuracy, less TTFF than WARM */
|
|
#define CXD56_GNSS_STMOD_HOT 3 /* Hot Start */
|
|
#define CXD56_GNSS_STMOD_HOT_ACC 4 /* Hot Start, better accuracy, less TTFF than HOT */
|
|
#define CXD56_GNSS_STMOD_HOT_ACC2 5 /* Hot Start, better accuracy, less TTFF than ACC */
|
|
#define CXD56_GNSS_STMOD_HOT_ACC3 6 /* Optimized hot start, better TTFF than HOT */
|
|
#define CXD56_GNSS_STMOD_GSPQ CXD56_GNSS_STMOD_HOT_ACC3
|
|
|
|
#define CXD56_GNSS_GPS_ALMANAC_SIZE 2048 /* GPS Almanac Size */
|
|
|
|
#define CXD56_GNSS_GPS_EPHEMERIS_SIZE 3072 /* GPS Ephemeris Size */
|
|
|
|
#define CXD56_GNSS_GLONASS_ALMANAC_SIZE 576 /* GLONASS Almanac Size */
|
|
|
|
#define CXD56_GNSS_GLONASS_EPHEMERIS_SIZE 1152 /* GLONASS Ephemeris Size */
|
|
|
|
#define CXD56_GNSS_QZSSL1CA_ALMANAC_SIZE 640 /* GPS Almanac Size */
|
|
|
|
#define CXD56_GNSS_QZSSL1CA_EPHEMERIS_SIZE 960 /* GPS Ephemeris Size */
|
|
|
|
/* PVTLOG notify threshold of the stored data. */
|
|
|
|
#define CXD56_GNSS_PVTLOG_THRESHOLD_FULL 0 /* Limit of the storage size */
|
|
#define CXD56_GNSS_PVTLOG_THRESHOLD_HALF 1 /* 1/2 of the Storage size */
|
|
#define CXD56_GNSS_PVTLOG_THRESHOLD_ONE_DATA 2 /* Each log stored */
|
|
|
|
/* Offset for last GNSS data */
|
|
|
|
#define CXD56_GNSS_READ_OFFSET_LAST_GNSS 0x0000
|
|
|
|
/* Offset for GNSS data */
|
|
|
|
#define CXD56_GNSS_READ_OFFSET_GNSS(N) (0x1000 + 0x800 * (N))
|
|
|
|
/* Offset for AGPS data */
|
|
|
|
#define CXD56_GNSS_READ_OFFSET_AGPS 0x5000
|
|
|
|
/* Offset for RTK data */
|
|
|
|
#define CXD56_GNSS_READ_OFFSET_RTK 0x6000
|
|
|
|
/* Offset for RTK GPS Ephemeris data */
|
|
|
|
#define CXD56_GNSS_READ_OFFSET_GPSEPHEMERIS 0x7000
|
|
|
|
/* Offset for RTK GLONASS Ephemeris data */
|
|
|
|
#define CXD56_GNSS_READ_OFFSET_GLNEPHEMERIS 0x8000
|
|
|
|
/* Offset for SBAS data */
|
|
|
|
#define CXD56_GNSS_READ_OFFSET_SBAS 0x9000
|
|
|
|
/* Offset for DC report */
|
|
|
|
#define CXD56_GNSS_READ_OFFSET_DCREPORT 0x9800
|
|
|
|
/* Offset for Spectrum data */
|
|
|
|
#define CXD56_GNSS_READ_OFFSET_SPECTRUM 0xa000
|
|
|
|
/* Offset for GNSS info */
|
|
|
|
#define CXD56_GNSS_READ_OFFSET_INFO 0xf000
|
|
|
|
/* Offset for PVTLOG data */
|
|
|
|
#define CXD56_GNSS_READ_OFFSET_PVTLOG 0x10000
|
|
|
|
/* Signal types from GNSS */
|
|
|
|
/* Signal type is GNSS */
|
|
|
|
#define CXD56_GNSS_SIG_GNSS 0
|
|
|
|
/* Signal type is PVTLog */
|
|
|
|
#define CXD56_GNSS_SIG_PVTLOG 2
|
|
|
|
/* Signal type is AGPS */
|
|
|
|
#define CXD56_GNSS_SIG_AGPS 3
|
|
|
|
/* Signal type is RTK Career Phase */
|
|
|
|
#define CXD56_GNSS_SIG_RTK 4
|
|
|
|
/* Signal type is Soectrum */
|
|
|
|
#define CXD56_GNSS_SIG_SPECTRUM 5
|
|
|
|
/* Signal type is RTK GPS Ephemeris */
|
|
|
|
#define CXD56_GNSS_SIG_GPSEPHEMERIS 11
|
|
|
|
/* Signal type is RTK GLONASS Ephemeris */
|
|
|
|
#define CXD56_GNSS_SIG_GLNEPHEMERIS 12
|
|
|
|
/* Signal type is SBAS */
|
|
|
|
#define CXD56_GNSS_SIG_SBAS 14
|
|
|
|
/* Signal type is QZSS DC report */
|
|
|
|
#define CXD56_GNSS_SIG_DCREPORT 15
|
|
|
|
/****************************************************************************
|
|
* Public Types
|
|
****************************************************************************/
|
|
|
|
/* GNSS operation mode and cycle */
|
|
|
|
struct cxd56_gnss_ope_mode_param_s
|
|
{
|
|
/* receiver operation mode
|
|
* 0: No Change Operation
|
|
* 1: Normal(default)
|
|
*/
|
|
|
|
uint32_t mode;
|
|
|
|
/* Positioning cycle[ms]
|
|
* The cycle data is 1000msec aligned only and
|
|
* cannot set 0msec.
|
|
* (Init value 1000)
|
|
*/
|
|
|
|
uint32_t cycle;
|
|
};
|
|
|
|
/* Sattelite almanac, ephemeris data */
|
|
|
|
struct cxd56_gnss_orbital_param_s
|
|
{
|
|
uint32_t type; /* One of #CXD56_GNSS_DATA_GPS,
|
|
* #CXD56_GNSS_DATA_GLONASS or
|
|
* #CXD56_GNSS_DATA_QZSSL1CA.
|
|
*/
|
|
FAR uint32_t *data; /* Address pointing to almanac or ephemeris data buffer */
|
|
};
|
|
|
|
/* date and time */
|
|
|
|
struct cxd56_gnss_datetime_s
|
|
{
|
|
struct cxd56_gnss_date_s date; /* date */
|
|
struct cxd56_gnss_time_s time; /* time */
|
|
};
|
|
|
|
/* ellipsoidal position */
|
|
|
|
struct cxd56_gnss_ellipsoidal_position_s
|
|
{
|
|
double latitude; /* latitude[degree] */
|
|
double longitude; /* longitude[degree] */
|
|
double altitude; /* altitude[meter] */
|
|
};
|
|
|
|
/* ellipsoidal position */
|
|
|
|
struct cxd56_gnss_orthogonal_position_s
|
|
{
|
|
int32_t x; /* x[meter] */
|
|
int32_t y; /* y[meter] */
|
|
int32_t z; /* z[meter] */
|
|
};
|
|
|
|
/* Currently version not supported. */
|
|
|
|
struct cxd56_gnss_cep_data_s
|
|
{
|
|
FAR uint32_t *data;
|
|
uint32_t size;
|
|
uint32_t counter;
|
|
};
|
|
|
|
/* CEP age info */
|
|
|
|
struct cxd56_gnss_cep_age_s
|
|
{
|
|
float age; /* age */
|
|
float cepi; /* cepi */
|
|
};
|
|
|
|
/* acquist data and size for AGPS */
|
|
|
|
struct cxd56_gnss_agps_acquist_s
|
|
{
|
|
FAR uint8_t *data; /* Address pointing to aquist data buffer */
|
|
uint16_t size; /* Aquist data size */
|
|
};
|
|
|
|
/* tow assist data and size for AGPS */
|
|
|
|
struct cxd56_gnss_agps_tow_assist_s
|
|
{
|
|
FAR uint8_t *data; /* Address pointing to tow assist data buffer */
|
|
uint16_t size; /* assist data size */
|
|
};
|
|
|
|
/* utc model data and size for AGPS */
|
|
|
|
struct cxd56_gnss_agps_utc_model_s
|
|
{
|
|
FAR uint8_t *data; /* Address pointing to utc model data buffer */
|
|
uint16_t size; /* utc model data size */
|
|
};
|
|
|
|
/* Time from frame start[sec]. */
|
|
|
|
struct cxd56_gnss_agps_frametime_s
|
|
{
|
|
uint16_t sec; /* Integer part */
|
|
uint32_t frac; /* Fraction part */
|
|
};
|
|
|
|
/* High precision receiver time */
|
|
|
|
struct cxd56_gnss_agps_time_gps_s
|
|
{
|
|
struct cxd56_gnss_date_s date; /* Date */
|
|
struct cxd56_gnss_time_s time; /* Time */
|
|
};
|
|
|
|
/* different time between AGPS and GLONASS Time */
|
|
|
|
struct cxd56_gnss_agps_tau_gps_s
|
|
{
|
|
double taugps; /* tau Time */
|
|
};
|
|
|
|
/* Signal spectrum output control parameter */
|
|
|
|
struct cxd56_gnss_spectrum_control_s
|
|
{
|
|
uint8_t enable; /* Spectrum data output enable */
|
|
uint32_t time; /* Passed Time */
|
|
uint8_t point1; /* Monitor point1 (7-9) */
|
|
uint8_t point2; /* Monitor point2 (7-9) */
|
|
uint8_t step1; /* Sampling step1 (0-7) */
|
|
uint8_t step2; /* Sampling step2 (0-7) */
|
|
};
|
|
|
|
struct cxd56_gnss_test_info_s
|
|
{
|
|
uint32_t satellite; /* Specify satellite by svID */
|
|
uint32_t reserve1; /* Reserve (always specify 0) */
|
|
uint32_t reserve2; /* Reserve (always specify 0) */
|
|
uint32_t reserve3; /* Reserve (always specify 0) */
|
|
};
|
|
|
|
struct cxd56_gnss_test_result_s
|
|
{
|
|
float cn; /* CN ratio [dB-Hz] */
|
|
float doppler; /* Doppler [Hz] */
|
|
};
|
|
|
|
/* signal setting for reading data asychronously
|
|
* The field 'enable' of struct #cxd56_gnss_signal_setting_s to be given as a
|
|
* parameter must be specified as 1 when setting and 0 when unsetting.
|
|
* Field 'gnsssig' specifies the value of 'Signal types from GNSS',
|
|
* this is not POSIX signal.
|
|
* Field 'signo' is application specific number of POSIX signal.
|
|
* 'data' will be passed as an argument to the handler.
|
|
*/
|
|
|
|
struct cxd56_gnss_signal_setting_s
|
|
{
|
|
int fd; /* The descriptor for signal handler */
|
|
uint8_t enable; /* 1 when set this setting, 0 is clear */
|
|
uint8_t gnsssig; /* GNSS signal as CXD56_GNSS_SIG_GNSS, _AGPS, etc. */
|
|
int signo; /* system signal number to notify read completion */
|
|
FAR void *data; /* user data */
|
|
};
|
|
|
|
/* Information for use after being signaled to read data asychronously */
|
|
|
|
struct cxd56_gnss_signal_info_s
|
|
{
|
|
int fd; /* The file descriptor to use in signal handler */
|
|
uint8_t gnsssig; /* GNSS signal as CXD56_GNSS_SIG_GNSS, _AGPS, etc. */
|
|
int signo; /* system signal number to notify read completion */
|
|
FAR void *data; /* user data */
|
|
};
|
|
|
|
/* PVTLOG setting Parameter.
|
|
* If the log interval(cycle) is smaller than the positioning interval,
|
|
* it is logged every positioning interval.
|
|
* The output timing is specified by the ratio to the log buffer in the
|
|
* GNSS device by threshold. Possible values are
|
|
* #CXD56_GNSS_PVTLOG_THRESHOLD_FULL, #CXD56_GNSS_PVTLOG_THRESHOLD_HALF,
|
|
* and #CXD56_GNSS_PVTLOG_THRESHOLD_ONE_DATA.
|
|
*/
|
|
|
|
struct cxd56_pvtlog_setting_s
|
|
{
|
|
uint32_t cycle; /* PVT log interval in seconds */
|
|
uint32_t threshold; /* Notification threshold of log storage amount */
|
|
};
|
|
|
|
struct cxd56_pvtlog_status_s
|
|
{
|
|
struct cxd56_gnss_status_s status; /* The stored logs status */
|
|
};
|
|
|
|
struct cxd56_rtk_setting_s
|
|
{
|
|
int interval; /* RTK data output interval */
|
|
uint32_t gnss; /* RTK satellite setting */
|
|
int ephout; /* Ephemeris notify enable setting */
|
|
uint64_t sbasout; /* sbas notify enable setting */
|
|
};
|
|
|
|
struct cxd56_gnss_set_var_ephemeris_s
|
|
{
|
|
uint32_t *data; /* Address pointing to ephemeris data buffer */
|
|
uint32_t size; /* ephemeris data buffer size */
|
|
};
|
|
|
|
struct cxd56_gnss_get_var_ephemeris_s
|
|
{
|
|
uint32_t type; /* One of #CXD56_GNSS_DATA_GPS, #CXD56_GNSS_DATA_GLONASS. */
|
|
uint32_t *data; /* Address pointing to ephemeris data buffer */
|
|
uint32_t size; /* ephemeris data buffer size */
|
|
};
|
|
|
|
#undef EXTERN
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* __ARCH_ARM_INCLUDE_CXD56XX_GNSS_H */
|