###################################
#####   ANTENNA INFORMATION   #####
###################################

###################################
# ANTENNA INFO VECTOR SIZE
###################################
# The number of antenna info
# structures in the vector. Each
# entry in this vector is a structure
# with the following elements:
#
# - CARRIER_FREQUENCY
# - PC_OFFSET
# - PC_VARIATION_CORRECTION
# - PC_VARIATION_CORRECTION_UNC
# - SIGNAL_GAIN_CORRECTION
# - SIGNAL_GAIN_CORRECTION_UNC
#
# Notes:
# CARRIER_FREQUENCY
#   The carrier frequency in MHz.
#
# PC = PHASE CENTER
#   PC_OFFSET is a structure with six
#   elements: x, y, z and their associated uncertainties
#   Phase center offset (PCO) is defined with
#   respect to the origin of the Android sensor coordinate system, e.g.,
#   center of primary screen for mobiles
#
# PC_VARIATION_CORRECTION
#   2D vectors representing the phase center variation (PCV) corrections,
#   in millimeters, at regularly spaced azimuthal angle (theta) and zenith angle
#   (phi). The PCV correction is added to the phase measurement to obtain the
#   corrected value.
#   The azimuthal angle, theta, is defined with respect to the X axis of the
#   Android sensor coordinate system, increasing toward the Y axis. The zenith
#   angle, phi, is defined with respect to the Z axis of the Android Sensor
#   coordinate system, increasing toward the X-Y plane.
#   Each row vector (outer vectors) represents a fixed theta. The first row
#   corresponds to a theta angle of 0 degrees. The last row corresponds to a
#   theta angle of (360 - deltaTheta) degrees, where deltaTheta is the regular
#   spacing between azimuthal angles, i.e., deltaTheta = 360 / (number of rows).
#   The columns (inner vectors) represent fixed zenith angles, beginning at 0
#   degrees and ending at 180 degrees. They are separated by deltaPhi, the regular
#   spacing between zenith angles, i.e., deltaPhi = 180 / (number of columns - 1).
#
# PC_VARIATION_CORRECTION_UNC
#   2D vectors of 1-sigma uncertainty in millimeters associated with the PCV
#   correction values.
#
# SIGNAL_GAIN_CORRECTION
#   2D vectors representing the signal gain corrections at regularly spaced
#   azimuthal angle (theta) and zenith angle (phi). The values are calculated or
#   measured at the antenna feed point without considering the radio and receiver
#   noise figure and path loss contribution, in dBi, i.e., decibel over isotropic
#   antenna with the same total power. The signal gain correction is added the
#   signal gain measurement to obtain the corrected value.
#   The azimuthal angle, theta, is defined with respect to the X axis of the
#   Android sensor coordinate system, increasing toward the Y axis. The zenith
#   angle, phi, is defined with respect to the Z axis of the Android Sensor
#   coordinate system, increasing toward the X-Y plane.
#   Each row vector (outer vectors) represents a fixed theta. The first row
#   corresponds to a theta angle of 0 degrees. The last row corresponds to a
#   theta angle of (360 - deltaTheta) degrees, where deltaTheta is the regular
#   spacing between azimuthal angles, i.e., deltaTheta = 360 / (number of rows).
#   The columns (inner vectors) represent fixed zenith angles, beginning at 0
#   degrees and ending at 180 degrees. They are separated by deltaPhi, the regular
#   spacing between zenith angles, i.e., deltaPhi = 180 / (number of columns - 1).
#
# SIGNAL_GAIN_CORRECTION_UNC
#   2D vectors of 1-sigma uncertainty in dBi associated with the signal
#   gain correction values.
#
# The number of rows and columns could be the same for PC variation correction
# and signal gain corrections, or could be different
# If the former then NUMBER_OF_ROWS_ and NUMBER_OF_COLUMNS_ are specified once
# only, if the latter then NUMBER_OF_ROWS_ and NUMBER_OF_COLUMNS_ represent
# the number of rows/columns for PC variation correction and
# NUMBER_OF_ROWS_SGC_ and NUMBER_OF_COLUMNS_SGC_ represent the number of
# rows/columns for signal gain corrections

ANTENNA_INFO_VECTOR_SIZE = 2

CARRIER_FREQUENCY_0 = 1575.42

PC_OFFSET_0 = 1.2 0.1 3.4 0.2 5.6 0.3

NUMBER_OF_ROWS_0 = 3
NUMBER_OF_COLUMNS_0 = 4

PC_VARIATION_CORRECTION_0_ROW_0 = 11.22 33.44 55.66 77.88
PC_VARIATION_CORRECTION_0_ROW_1 = 10.2 30.4 50.6 70.8
PC_VARIATION_CORRECTION_0_ROW_2 = 12.2 34.4 56.6 78.8

PC_VARIATION_CORRECTION_UNC_0_ROW_0 = 0.1 0.2 0.3 0.4
PC_VARIATION_CORRECTION_UNC_0_ROW_1 = 1.1 1.2 1.3 1.4
PC_VARIATION_CORRECTION_UNC_0_ROW_2 = 2.1 2.2 2.3 2.4

SIGNAL_GAIN_CORRECTION_0_ROW_0 = 9.8 8.7 7.6 6.5
SIGNAL_GAIN_CORRECTION_0_ROW_1 = 5.4 4.3 3.2 2.1
SIGNAL_GAIN_CORRECTION_0_ROW_2 = 1.3 2.4 3.5 4.6

SIGNAL_GAIN_CORRECTION_UNC_0_ROW_0 = 0.11 0.22 0.33 0.44
SIGNAL_GAIN_CORRECTION_UNC_0_ROW_1 = 0.55 0.66 0.77 0.88
SIGNAL_GAIN_CORRECTION_UNC_0_ROW_2 = 0.91 0.92 0.93 0.94


CARRIER_FREQUENCY_1 = 1227.6

PC_OFFSET_1 = 3.4 0.2 5.6 0.3 1.2 0.1

NUMBER_OF_ROWS_1 = 4
NUMBER_OF_COLUMNS_1 = 2
NUMBER_OF_ROWS_SGC_1 = 3
NUMBER_OF_COLUMNS_SGC_1 = 4

PC_VARIATION_CORRECTION_1_ROW_0 = 55.66 77.88
PC_VARIATION_CORRECTION_1_ROW_1 = 11.22 33.44
PC_VARIATION_CORRECTION_1_ROW_2 = 56.6 78.8
PC_VARIATION_CORRECTION_1_ROW_3 = 12.2 34.4

PC_VARIATION_CORRECTION_UNC_1_ROW_0 = 0.3 0.4
PC_VARIATION_CORRECTION_UNC_1_ROW_1 = 1.1 1.2
PC_VARIATION_CORRECTION_UNC_1_ROW_2 = 2.1 2.2
PC_VARIATION_CORRECTION_UNC_1_ROW_3 = 0.1 0.2

SIGNAL_GAIN_CORRECTION_1_ROW_0 = 7.6 6.5 5.4 4.3
SIGNAL_GAIN_CORRECTION_1_ROW_1 = 1.3 2.4 9.8 8.7
SIGNAL_GAIN_CORRECTION_1_ROW_2 = 1.4 2.5 3.6 4.7

SIGNAL_GAIN_CORRECTION_UNC_1_ROW_0 = 0.91 0.92 0.55 0.66
SIGNAL_GAIN_CORRECTION_UNC_1_ROW_1 = 0.11 0.22 0.93 0.94
SIGNAL_GAIN_CORRECTION_UNC_1_ROW_2 = 0.95 0.96 0.33 0.44
