mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-08-19 16:30:35 +08:00
Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| dd58bd6df2 |
@@ -105,7 +105,6 @@ pipeline {
|
||||
"px4_fmu-v5_stackcheck",
|
||||
"px4_fmu-v5_uavcanv0periph",
|
||||
"px4_fmu-v5x_default",
|
||||
"px4_fmu-v6c_default",
|
||||
"px4_fmu-v6u_default",
|
||||
"px4_fmu-v6x_default",
|
||||
"px4_io-v2_default",
|
||||
|
||||
@@ -794,7 +794,7 @@ void resetParameters() {
|
||||
void runTests() {
|
||||
|
||||
// test loading a range of airframes
|
||||
sh './Tools/HIL/test_airframes.sh `find /dev/serial -name *usb-*` 2100 3000 4001 6001 8001 10016'
|
||||
sh './Tools/HIL/test_airframes.sh `find /dev/serial -name *usb-*` 1000 1001 2100 3000 4001 6001 8001 10016'
|
||||
|
||||
resetParameters()
|
||||
|
||||
|
||||
@@ -1,34 +1,32 @@
|
||||
---
|
||||
name: 🐛 Bug report
|
||||
name: Bug report
|
||||
about: Create a report to help us improve
|
||||
labels: bug-report
|
||||
|
||||
---
|
||||
|
||||
## Describe the bug
|
||||
**Describe the bug**
|
||||
A clear and concise description of the bug.
|
||||
|
||||
## To Reproduce
|
||||
**To Reproduce**
|
||||
Steps to reproduce the behavior:
|
||||
1. Drone switched on '...'
|
||||
2. Uploaded mission '....' (attach QGC mission file)
|
||||
3. Took off '....'
|
||||
4. See error
|
||||
|
||||
## Expected behavior
|
||||
**Expected behavior**
|
||||
A clear and concise description of what you expected to happen.
|
||||
|
||||
## Log Files and Screenshots
|
||||
**Log Files and Screenshots**
|
||||
*Always* provide a link to the flight log file:
|
||||
- Download the flight log file from the vehicle ([tutorial](https://docs.px4.io/master/en/getting_started/flight_reporting.html)).
|
||||
- Upload the log to the [PX4 Flight Review](http://logs.px4.io/)
|
||||
- Share the link to the log (Copy and paste the URL of the log)
|
||||
- Share the link to a log showing the problem on [PX4 Flight Review](http://logs.px4.io/).
|
||||
|
||||
Add screenshots to help explain your problem.
|
||||
|
||||
## Drone (please complete the following information):
|
||||
**Drone (please complete the following information):**
|
||||
- Describe the type of drone.
|
||||
- Photo of the IMU / autopilot setup if possible.
|
||||
|
||||
## Additional context
|
||||
**Additional context**
|
||||
Add any other context about the problem here.
|
||||
|
||||
@@ -1,20 +1,19 @@
|
||||
---
|
||||
name: 🚀 Feature Request
|
||||
about: Suggest an idea for this project
|
||||
labels: feature-request
|
||||
|
||||
---
|
||||
|
||||
For general questions please use [PX4 Discuss](http://discuss.px4.io/) or Slack (you can find an invite link on this project README).
|
||||
|
||||
## Describe problem solved by the proposed feature
|
||||
**Describe problem solved by the proposed feature**
|
||||
A clear and concise description of the problem, if any, this feature will solve. E.g. I'm always frustrated when ...
|
||||
|
||||
## Describe your preferred solution
|
||||
**Describe your preferred solution**
|
||||
A clear and concise description of what you want to happen.
|
||||
|
||||
## Describe possible alternatives
|
||||
**Describe possible alternatives**
|
||||
A clear and concise description of alternative solutions or features you've considered.
|
||||
|
||||
## Additional context
|
||||
**Additional context**
|
||||
Add any other context or screenshots for the feature request here.
|
||||
|
||||
@@ -1,13 +1,10 @@
|
||||
---
|
||||
name: ⛔ Support Question
|
||||
about: See http://discuss.px4.io/ for questions about using PX4.
|
||||
about: See [PX4 Discuss](http://discuss.px4.io/) for questions about using PX4.
|
||||
|
||||
---
|
||||
|
||||
## Attention! Please read the note below
|
||||
|
||||
We use GitHub issues only to discuss PX4 bugs and new features.
|
||||
|
||||
**For questions about using PX4 or related components, please use [PX4 Discuss](http://discuss.px4.io/).**
|
||||
We use GitHub issues only to discuss PX4 bugs and new features. For
|
||||
questions about using PX4 or related components, please use [PX4 Discuss](http://discuss.px4.io/).
|
||||
|
||||
Thanks!
|
||||
|
||||
@@ -1,11 +1,9 @@
|
||||
---
|
||||
name: ⛔ Documentation Issue
|
||||
about: See https://github.com/PX4/px4_user_guide for documentation issues
|
||||
about: See https://github.com/PX4/Devguide for documentation issues
|
||||
|
||||
---
|
||||
|
||||
## Attention! Please read the note below
|
||||
|
||||
**Please submit the documentation issue to the [User Guide](https://github.com/PX4/px4_user_guide) repository.**
|
||||
PX4 has dedicated repositories for developer documentation (https://github.com/PX4/Devguide) and user documentation (https://github.com/PX4/px4_user_guide).
|
||||
|
||||
Thanks!
|
||||
|
||||
@@ -61,7 +61,6 @@ jobs:
|
||||
px4_fmu-v4pro,
|
||||
px4_fmu-v5,
|
||||
px4_fmu-v5x,
|
||||
px4_fmu-v6c,
|
||||
px4_fmu-v6u,
|
||||
px4_fmu-v6x,
|
||||
raspberrypi_pico,
|
||||
|
||||
@@ -325,7 +325,6 @@ px4io_update: px4_io-v2_default cubepilot_io-v2_default
|
||||
cp build/px4_io-v2_default/px4_io-v2_default.bin boards/px4/fmu-v5/extras/px4_io-v2_default.bin
|
||||
cp build/px4_io-v2_default/px4_io-v2_default.bin boards/px4/fmu-v5x/extras/px4_io-v2_default.bin
|
||||
cp build/px4_io-v2_default/px4_io-v2_default.bin boards/px4/fmu-v6x/extras/px4_io-v2_default.bin
|
||||
cp build/px4_io-v2_default/px4_io-v2_default.bin boards/px4/fmu-v6c/extras/px4_io-v2_default.bin
|
||||
# cubepilot_io-v2_default
|
||||
cp build/cubepilot_io-v2_default/cubepilot_io-v2_default.bin boards/cubepilot/cubeorange/extras/cubepilot_io-v2_default.bin
|
||||
cp build/cubepilot_io-v2_default/cubepilot_io-v2_default.bin boards/cubepilot/cubeyellow/extras/cubepilot_io-v2_default.bin
|
||||
|
||||
@@ -1,17 +1,17 @@
|
||||
Please use [PX4 Discuss](http://discuss.px4.io/) or [Slack](http://slack.px4.io/) to align on pull requests if necessary. You can then open draft pull requests to get early feedback.
|
||||
|
||||
## Describe problem solved by this pull request
|
||||
A clear and concise description of the problem this proposed change will solve. Or, what it will improve.
|
||||
**Describe problem solved by this pull request**
|
||||
A clear and concise description of the problem this proposed change will solve.
|
||||
E.g. For this use case I ran into...
|
||||
|
||||
## Describe your solution
|
||||
**Describe your solution**
|
||||
A clear and concise description of what you have implemented.
|
||||
|
||||
## Describe possible alternatives
|
||||
**Describe possible alternatives**
|
||||
A clear and concise description of alternative solutions or features you've considered.
|
||||
|
||||
## Test data / coverage
|
||||
**Test data / coverage**
|
||||
How was it tested? What cases were covered? Logs uploaded to https://review.px4.io/ and screenshots of the important plot parts.
|
||||
|
||||
## Additional context
|
||||
**Additional context**
|
||||
Add any other related context or media.
|
||||
@@ -61,8 +61,6 @@ param set-default HIL_ACT_FUNC6 400
|
||||
|
||||
param set SYS_HITL 1
|
||||
|
||||
param set UAVCAN_ENABLE 0
|
||||
|
||||
# disable some checks to allow to fly
|
||||
# - with usb
|
||||
param set-default CBRK_USB_CHK 197848
|
||||
|
||||
@@ -15,8 +15,6 @@ set MIXER quad_x
|
||||
|
||||
param set SYS_HITL 1
|
||||
|
||||
param set UAVCAN_ENABLE 0
|
||||
|
||||
param set-default CA_ROTOR_COUNT 4
|
||||
param set-default CA_ROTOR0_PX 0.15
|
||||
param set-default CA_ROTOR0_PY 0.15
|
||||
|
||||
@@ -94,8 +94,6 @@ param set-default HIL_ACT_FUNC8 203
|
||||
|
||||
param set SYS_HITL 1
|
||||
|
||||
param set UAVCAN_ENABLE 0
|
||||
|
||||
# disable some checks to allow to fly
|
||||
# - with usb
|
||||
param set-default CBRK_USB_CHK 197848
|
||||
|
||||
@@ -181,6 +181,30 @@ then
|
||||
pcf8583 start -X -a 0x51
|
||||
fi
|
||||
|
||||
# INA226 digital power monitor
|
||||
if param compare SENS_EN_INA226 1
|
||||
then
|
||||
ina226 -X start
|
||||
fi
|
||||
|
||||
# INA228 digital power monitor
|
||||
if param compare SENS_EN_INA228 1
|
||||
then
|
||||
ina228 -X start
|
||||
fi
|
||||
|
||||
# INA231 digital power monitor
|
||||
if param compare SENS_EN_INA231 1
|
||||
then
|
||||
ina231 -X start
|
||||
fi
|
||||
|
||||
# INA238 digital power monitor
|
||||
if param compare SENS_EN_INA238 1
|
||||
then
|
||||
ina238 -X start
|
||||
fi
|
||||
|
||||
# probe for optional external I2C devices
|
||||
if param compare SENS_EXT_I2C_PRB 1
|
||||
then
|
||||
|
||||
@@ -136,11 +136,8 @@ class firmware(object):
|
||||
|
||||
self.image = bytearray(zlib.decompress(base64.b64decode(self.desc['image'])))
|
||||
|
||||
# PX4 bootloader in theory requires only 4-byte padding,
|
||||
# but a bug exists with the flash block caching where if the data
|
||||
# does not fill up the block, it will not be written (left as all 1s).
|
||||
# So pad up to the flash block size (8 words).
|
||||
while ((len(self.image) % (4 * 8)) != 0):
|
||||
# pad image to 4-byte length
|
||||
while ((len(self.image) % 4) != 0):
|
||||
self.image.extend(b'\xff')
|
||||
|
||||
def property(self, propname):
|
||||
|
||||
+1
-1
Submodule Tools/sitl_gazebo updated: 5eb5df8045...2cf56d0bf8
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -9,4 +9,5 @@ CONFIG_DRIVERS_DISTANCE_SENSOR_LIGHTWARE_LASER_I2C=y
|
||||
CONFIG_DRIVERS_DISTANCE_SENSOR_LIGHTWARE_LASER_SERIAL=y
|
||||
CONFIG_MODULES_AIRSPEED_SELECTOR=y
|
||||
CONFIG_MODULES_FW_ATT_CONTROL=y
|
||||
CONFIG_MODULES_FW_AUTOTUNE_ATTITUDE_CONTROL=y
|
||||
CONFIG_MODULES_FW_POS_CONTROL_L1=y
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -33,6 +33,7 @@ CONFIG_DRIVERS_PCA9685=y
|
||||
CONFIG_DRIVERS_PCA9685_PWM_OUT=y
|
||||
CONFIG_DRIVERS_POWER_MONITOR_INA226=y
|
||||
CONFIG_DRIVERS_POWER_MONITOR_INA228=y
|
||||
CONFIG_DRIVERS_POWER_MONITOR_INA231=y
|
||||
CONFIG_DRIVERS_POWER_MONITOR_INA238=y
|
||||
CONFIG_DRIVERS_PWM_INPUT=y
|
||||
CONFIG_DRIVERS_PWM_OUT=y
|
||||
|
||||
Binary file not shown.
@@ -1,3 +0,0 @@
|
||||
CONFIG_BOARD_TOOLCHAIN="arm-none-eabi"
|
||||
CONFIG_BOARD_ARCHITECTURE="cortex-m7"
|
||||
CONFIG_BOARD_ROMFSROOT=""
|
||||
@@ -1,91 +0,0 @@
|
||||
CONFIG_BOARD_TOOLCHAIN="arm-none-eabi"
|
||||
CONFIG_BOARD_ARCHITECTURE="cortex-m7"
|
||||
CONFIG_BOARD_SERIAL_GPS1="/dev/ttyS0"
|
||||
CONFIG_BOARD_SERIAL_GPS2="/dev/ttyS6"
|
||||
CONFIG_BOARD_SERIAL_TEL1="/dev/ttyS5"
|
||||
CONFIG_BOARD_SERIAL_TEL2="/dev/ttyS3"
|
||||
CONFIG_BOARD_SERIAL_TEL3="/dev/ttyS1"
|
||||
CONFIG_DRIVERS_ADC_BOARD_ADC=y
|
||||
CONFIG_COMMON_BAROMETERS=y
|
||||
CONFIG_DRIVERS_BATT_SMBUS=y
|
||||
CONFIG_DRIVERS_CAMERA_CAPTURE=y
|
||||
CONFIG_DRIVERS_CAMERA_TRIGGER=y
|
||||
CONFIG_COMMON_DIFFERENTIAL_PRESSURE=y
|
||||
CONFIG_COMMON_DISTANCE_SENSOR=y
|
||||
CONFIG_DRIVERS_DSHOT=y
|
||||
CONFIG_DRIVERS_GPS=y
|
||||
CONFIG_DRIVERS_HEATER=y
|
||||
CONFIG_DRIVERS_IMU_BOSCH_BMI055=y
|
||||
CONFIG_DRIVERS_IMU_INVENSENSE_ICM42688P=y
|
||||
CONFIG_COMMON_LIGHT=y
|
||||
CONFIG_COMMON_MAGNETOMETER=y
|
||||
CONFIG_COMMON_OPTICAL_FLOW=y
|
||||
CONFIG_DRIVERS_POWER_MONITOR_INA226=y
|
||||
CONFIG_DRIVERS_POWER_MONITOR_INA228=y
|
||||
CONFIG_DRIVERS_POWER_MONITOR_INA238=y
|
||||
CONFIG_DRIVERS_PWM_OUT=y
|
||||
CONFIG_DRIVERS_PWM_OUT_SIM=y
|
||||
CONFIG_DRIVERS_PX4IO=y
|
||||
CONFIG_COMMON_TELEMETRY=y
|
||||
CONFIG_DRIVERS_TONE_ALARM=y
|
||||
CONFIG_DRIVERS_UAVCAN=y
|
||||
CONFIG_BOARD_UAVCAN_TIMER_OVERRIDE=2
|
||||
CONFIG_MODULES_AIRSPEED_SELECTOR=y
|
||||
CONFIG_MODULES_BATTERY_STATUS=y
|
||||
CONFIG_MODULES_CAMERA_FEEDBACK=y
|
||||
CONFIG_MODULES_COMMANDER=y
|
||||
CONFIG_MODULES_CONTROL_ALLOCATOR=y
|
||||
CONFIG_MODULES_DATAMAN=y
|
||||
CONFIG_MODULES_EKF2=y
|
||||
CONFIG_MODULES_ESC_BATTERY=y
|
||||
CONFIG_MODULES_EVENTS=y
|
||||
CONFIG_MODULES_FLIGHT_MODE_MANAGER=y
|
||||
CONFIG_MODULES_FW_ATT_CONTROL=y
|
||||
CONFIG_MODULES_FW_AUTOTUNE_ATTITUDE_CONTROL=y
|
||||
CONFIG_MODULES_FW_POS_CONTROL_L1=y
|
||||
CONFIG_MODULES_GIMBAL=y
|
||||
CONFIG_MODULES_GYRO_CALIBRATION=y
|
||||
CONFIG_MODULES_GYRO_FFT=y
|
||||
CONFIG_MODULES_LAND_DETECTOR=y
|
||||
CONFIG_MODULES_LANDING_TARGET_ESTIMATOR=y
|
||||
CONFIG_MODULES_LOAD_MON=y
|
||||
CONFIG_MODULES_LOGGER=y
|
||||
CONFIG_MODULES_MAG_BIAS_ESTIMATOR=y
|
||||
CONFIG_MODULES_MANUAL_CONTROL=y
|
||||
CONFIG_MODULES_MAVLINK=y
|
||||
CONFIG_MODULES_MC_ATT_CONTROL=y
|
||||
CONFIG_MODULES_MC_AUTOTUNE_ATTITUDE_CONTROL=y
|
||||
CONFIG_MODULES_MC_HOVER_THRUST_ESTIMATOR=y
|
||||
CONFIG_MODULES_MC_POS_CONTROL=y
|
||||
CONFIG_MODULES_MC_RATE_CONTROL=y
|
||||
CONFIG_MODULES_NAVIGATOR=y
|
||||
CONFIG_MODULES_RC_UPDATE=y
|
||||
CONFIG_MODULES_ROVER_POS_CONTROL=y
|
||||
CONFIG_MODULES_SENSORS=y
|
||||
CONFIG_MODULES_SIH=y
|
||||
CONFIG_MODULES_TEMPERATURE_COMPENSATION=y
|
||||
CONFIG_MODULES_VTOL_ATT_CONTROL=y
|
||||
CONFIG_SYSTEMCMDS_ACTUATOR_TEST=y
|
||||
CONFIG_SYSTEMCMDS_BL_UPDATE=y
|
||||
CONFIG_SYSTEMCMDS_DMESG=y
|
||||
CONFIG_SYSTEMCMDS_HARDFAULT_LOG=y
|
||||
CONFIG_SYSTEMCMDS_I2CDETECT=y
|
||||
CONFIG_SYSTEMCMDS_LED_CONTROL=y
|
||||
CONFIG_SYSTEMCMDS_MFT=y
|
||||
CONFIG_SYSTEMCMDS_MIXER=y
|
||||
CONFIG_SYSTEMCMDS_MOTOR_TEST=y
|
||||
CONFIG_SYSTEMCMDS_MTD=y
|
||||
CONFIG_SYSTEMCMDS_NSHTERM=y
|
||||
CONFIG_SYSTEMCMDS_PARAM=y
|
||||
CONFIG_SYSTEMCMDS_PERF=y
|
||||
CONFIG_SYSTEMCMDS_PWM=y
|
||||
CONFIG_SYSTEMCMDS_REBOOT=y
|
||||
CONFIG_SYSTEMCMDS_SD_BENCH=y
|
||||
CONFIG_SYSTEMCMDS_SERIAL_TEST=y
|
||||
CONFIG_SYSTEMCMDS_SYSTEM_TIME=y
|
||||
CONFIG_SYSTEMCMDS_TOP=y
|
||||
CONFIG_SYSTEMCMDS_TOPIC_LISTENER=y
|
||||
CONFIG_SYSTEMCMDS_TUNE_CONTROL=y
|
||||
CONFIG_SYSTEMCMDS_UORB=y
|
||||
CONFIG_SYSTEMCMDS_VER=y
|
||||
CONFIG_SYSTEMCMDS_WORK_QUEUE=y
|
||||
Binary file not shown.
Binary file not shown.
@@ -1,13 +0,0 @@
|
||||
{
|
||||
"board_id": 56,
|
||||
"magic": "PX4FWv1",
|
||||
"description": "Firmware for the PX4FMUv6C board",
|
||||
"image": "",
|
||||
"build_time": 0,
|
||||
"summary": "PX4FMUv6C",
|
||||
"version": "0.1",
|
||||
"image_size": 0,
|
||||
"image_maxsize": 1966080,
|
||||
"git_identity": "",
|
||||
"board_revision": 0
|
||||
}
|
||||
@@ -1,20 +0,0 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# board specific defaults
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
|
||||
param set-default BAT1_V_DIV 18.1
|
||||
param set-default BAT2_V_DIV 18.1
|
||||
|
||||
param set-default BAT1_A_PER_V 36.367515152
|
||||
param set-default BAT2_A_PER_V 36.367515152
|
||||
|
||||
# Mavlink ethernet (CFG 1000)
|
||||
param set-default MAV_2_CONFIG 1000
|
||||
param set-default MAV_2_BROADCAST 1
|
||||
param set-default MAV_2_MODE 0
|
||||
param set-default MAV_2_RADIO_CTL 0
|
||||
param set-default MAV_2_RATE 100000
|
||||
param set-default MAV_2_REMOTE_PRT 14550
|
||||
param set-default MAV_2_UDP_PRT 14550
|
||||
@@ -1,21 +0,0 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# PX4 FMUv6C specific board sensors init
|
||||
#------------------------------------------------------------------------------
|
||||
board_adc start
|
||||
|
||||
# Internal SPI bus BMI055 accel/gyro
|
||||
bmi055 -A -R 4 -s start
|
||||
bmi055 -G -R 4 -s start
|
||||
|
||||
# Internal SPI bus ICM42688p
|
||||
icm42688p -R 6 -s start
|
||||
|
||||
# Internal barometer on I2C4
|
||||
ms5611 -I -b 4 -a 0x77 start
|
||||
|
||||
# Internal compass on IMU I2C4
|
||||
ist8310 -I -b 4 -a 0xc -R 6 start
|
||||
|
||||
# External compass on GPS/I2C1 (the 3rd external bus): standard Holybro Pixhawk 4 or CUAV V5 GPS/compass puck (with lights, safety button, and buzzer)
|
||||
ist8310 -X -b 1 -R 10 start
|
||||
@@ -1,17 +0,0 @@
|
||||
#
|
||||
# For a description of the syntax of this configuration file,
|
||||
# see misc/tools/kconfig-language.txt.
|
||||
#
|
||||
config BOARD_HAS_PROBES
|
||||
bool "Board provides GPIO or other Hardware for signaling to timing analyze."
|
||||
default y
|
||||
---help---
|
||||
This board provides GPIO FMU-CH1-5, CAP1-6 as PROBE_1-11 to provide timing signals from selected drivers.
|
||||
|
||||
config BOARD_USE_PROBES
|
||||
bool "Enable the use the board provided FMU-CH1-5, CAP1-6 as PROBE_1-11"
|
||||
default n
|
||||
depends on BOARD_HAS_PROBES
|
||||
|
||||
---help---
|
||||
Select to use GPIO FMU-CH1-5, CAP1-6 to provide timing signals from selected drivers.
|
||||
@@ -1,96 +0,0 @@
|
||||
#
|
||||
# This file is autogenerated: PLEASE DO NOT EDIT IT.
|
||||
#
|
||||
# You can use "make menuconfig" to make any modifications to the installed .config file.
|
||||
# You can then do "make savedefconfig" to generate a new defconfig file that includes your
|
||||
# modifications.
|
||||
#
|
||||
# CONFIG_DEV_CONSOLE is not set
|
||||
# CONFIG_DISABLE_PSEUDOFS_OPERATIONS is not set
|
||||
# CONFIG_SPI_EXCHANGE is not set
|
||||
# CONFIG_STM32H7_SYSCFG is not set
|
||||
CONFIG_ARCH="arm"
|
||||
CONFIG_ARCH_BOARD_CUSTOM=y
|
||||
CONFIG_ARCH_BOARD_CUSTOM_DIR="../../../../boards/px4/fmu-v6c/nuttx-config"
|
||||
CONFIG_ARCH_BOARD_CUSTOM_DIR_RELPATH=y
|
||||
CONFIG_ARCH_BOARD_CUSTOM_NAME="px4"
|
||||
CONFIG_ARCH_CHIP="stm32h7"
|
||||
CONFIG_ARCH_CHIP_STM32H753II=y
|
||||
CONFIG_ARCH_CHIP_STM32H7=y
|
||||
CONFIG_ARCH_INTERRUPTSTACK=512
|
||||
CONFIG_ARMV7M_BASEPRI_WAR=y
|
||||
CONFIG_ARMV7M_ICACHE=y
|
||||
CONFIG_ARMV7M_MEMCPY=y
|
||||
CONFIG_ARMV7M_USEBASEPRI=y
|
||||
CONFIG_BOARDCTL_RESET=y
|
||||
CONFIG_BOARD_INITTHREAD_PRIORITY=254
|
||||
CONFIG_BOARD_LATE_INITIALIZE=y
|
||||
CONFIG_BOARD_LOOPSPERMSEC=95150
|
||||
CONFIG_BOARD_RESET_ON_ASSERT=2
|
||||
CONFIG_C99_BOOL8=y
|
||||
CONFIG_CDCACM=y
|
||||
CONFIG_CDCACM_IFLOWCONTROL=y
|
||||
CONFIG_CDCACM_PRODUCTID=0x0038
|
||||
CONFIG_CDCACM_PRODUCTSTR="PX4 BL FMU v6C.x"
|
||||
CONFIG_CDCACM_RXBUFSIZE=600
|
||||
CONFIG_CDCACM_TXBUFSIZE=12000
|
||||
CONFIG_CDCACM_VENDORID=0x3185
|
||||
CONFIG_CDCACM_VENDORSTR="Auterion"
|
||||
CONFIG_CLOCK_MONOTONIC=y
|
||||
CONFIG_DEBUG_FULLOPT=y
|
||||
CONFIG_DEBUG_SYMBOLS=y
|
||||
CONFIG_DEFAULT_SMALL=y
|
||||
CONFIG_DISABLE_MQUEUE=y
|
||||
CONFIG_DISABLE_PTHREAD=y
|
||||
CONFIG_EXPERIMENTAL=y
|
||||
CONFIG_FDCLONE_DISABLE=y
|
||||
CONFIG_FDCLONE_STDIO=y
|
||||
CONFIG_HAVE_CXX=y
|
||||
CONFIG_HAVE_CXXINITIALIZE=y
|
||||
CONFIG_IDLETHREAD_STACKSIZE=750
|
||||
CONFIG_LIBC_FLOATINGPOINT=y
|
||||
CONFIG_LIBC_LONG_LONG=y
|
||||
CONFIG_LIBC_STRERROR=y
|
||||
CONFIG_LIB_BOARDCTL=y
|
||||
CONFIG_MEMSET_64BIT=y
|
||||
CONFIG_MEMSET_OPTSPEED=y
|
||||
CONFIG_PREALLOC_TIMERS=50
|
||||
CONFIG_PTHREAD_STACK_MIN=512
|
||||
CONFIG_RAM_SIZE=245760
|
||||
CONFIG_RAM_START=0x20010000
|
||||
CONFIG_RAW_BINARY=y
|
||||
CONFIG_SDCLONE_DISABLE=y
|
||||
CONFIG_SERIAL_TERMIOS=y
|
||||
CONFIG_SIG_DEFAULT=y
|
||||
CONFIG_SIG_SIGALRM_ACTION=y
|
||||
CONFIG_SIG_SIGUSR1_ACTION=y
|
||||
CONFIG_SIG_SIGUSR2_ACTION=y
|
||||
CONFIG_SPI=y
|
||||
CONFIG_STACK_COLORATION=y
|
||||
CONFIG_START_DAY=30
|
||||
CONFIG_START_MONTH=11
|
||||
CONFIG_STDIO_BUFFER_SIZE=32
|
||||
CONFIG_STM32H7_BKPSRAM=y
|
||||
CONFIG_STM32H7_DMA1=y
|
||||
CONFIG_STM32H7_DMA2=y
|
||||
CONFIG_STM32H7_OTGFS=y
|
||||
CONFIG_STM32H7_PROGMEM=y
|
||||
CONFIG_STM32H7_SERIAL_DISABLE_REORDERING=y
|
||||
CONFIG_STM32H7_TIM1=y
|
||||
CONFIG_STM32H7_UART7=y
|
||||
CONFIG_SYSTEMTICK_HOOK=y
|
||||
CONFIG_SYSTEM_CDCACM=y
|
||||
CONFIG_TASK_NAME_SIZE=24
|
||||
CONFIG_TTY_SIGINT=y
|
||||
CONFIG_TTY_SIGINT_CHAR=0x03
|
||||
CONFIG_TTY_SIGTSTP=y
|
||||
CONFIG_UART7_RXBUFSIZE=512
|
||||
CONFIG_UART7_RXDMA=y
|
||||
CONFIG_UART7_TXBUFSIZE=512
|
||||
CONFIG_UART7_TXDMA=y
|
||||
CONFIG_USBDEV=y
|
||||
CONFIG_USBDEV_BUSPOWERED=y
|
||||
CONFIG_USBDEV_MAXPOWER=500
|
||||
CONFIG_USEC_PER_TICK=1000
|
||||
CONFIG_USERMAIN_STACKSIZE=2944
|
||||
CONFIG_USER_ENTRYPOINT="bootloader_main"
|
||||
@@ -1,505 +0,0 @@
|
||||
/************************************************************************************
|
||||
* nuttx-configs/px4_fmu-v6c/include/board.h
|
||||
*
|
||||
* Copyright (C) 2016-2019 Gregory Nutt. All rights reserved.
|
||||
* Authors: David Sidrane <david.sidrane@nscdg.com>
|
||||
*
|
||||
* 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 NuttX 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 __NUTTX_CONFIG_PX4_FMU_V6C_INCLUDE_BOARD_H
|
||||
#define __NUTTX_CONFIG_PX4_FMU_V6C_INCLUDE_BOARD_H
|
||||
|
||||
/************************************************************************************
|
||||
* Included Files
|
||||
************************************************************************************/
|
||||
|
||||
#include "board_dma_map.h"
|
||||
|
||||
#include <nuttx/config.h>
|
||||
|
||||
#ifndef __ASSEMBLY__
|
||||
# include <stdint.h>
|
||||
#endif
|
||||
|
||||
#include "stm32_rcc.h"
|
||||
#include "stm32_sdmmc.h"
|
||||
|
||||
/************************************************************************************
|
||||
* Pre-processor Definitions
|
||||
************************************************************************************/
|
||||
|
||||
/* Clocking *************************************************************************/
|
||||
/* The px4_fmu-v6C board provides the following clock sources:
|
||||
*
|
||||
* X1: 16 MHz crystal for HSE
|
||||
*
|
||||
* So we have these clock source available within the STM32
|
||||
*
|
||||
* HSI: 16 MHz RC factory-trimmed
|
||||
* HSE: 16 MHz crystal for HSE
|
||||
*/
|
||||
|
||||
#define STM32_BOARD_XTAL 16000000ul
|
||||
|
||||
#define STM32_HSI_FREQUENCY 16000000ul
|
||||
#define STM32_LSI_FREQUENCY 32000
|
||||
#define STM32_HSE_FREQUENCY STM32_BOARD_XTAL
|
||||
#define STM32_LSE_FREQUENCY 32768
|
||||
|
||||
/* Main PLL Configuration.
|
||||
*
|
||||
* PLL source is HSE = 16,000,000
|
||||
*
|
||||
* PLL_VCOx = (STM32_HSE_FREQUENCY / PLLM) * PLLN
|
||||
* Subject to:
|
||||
*
|
||||
* 1 <= PLLM <= 63
|
||||
* 4 <= PLLN <= 512
|
||||
* 150 MHz <= PLL_VCOL <= 420MHz
|
||||
* 192 MHz <= PLL_VCOH <= 836MHz
|
||||
*
|
||||
* SYSCLK = PLL_VCO / PLLP
|
||||
* CPUCLK = SYSCLK / D1CPRE
|
||||
* Subject to
|
||||
*
|
||||
* PLLP1 = {2, 4, 6, 8, ..., 128}
|
||||
* PLLP2,3 = {2, 3, 4, ..., 128}
|
||||
* CPUCLK <= 480 MHz
|
||||
*/
|
||||
|
||||
#define STM32_BOARD_USEHSE
|
||||
|
||||
#define STM32_PLLCFG_PLLSRC RCC_PLLCKSELR_PLLSRC_HSE
|
||||
|
||||
/* PLL1, wide 4 - 8 MHz input, enable DIVP, DIVQ, DIVR
|
||||
*
|
||||
* PLL1_VCO = (16,000,000 / 1) * 60 = 960 MHz
|
||||
*
|
||||
* PLL1P = PLL1_VCO/2 = 960 MHz / 2 = 480 MHz
|
||||
* PLL1Q = PLL1_VCO/4 = 960 MHz / 4 = 240 MHz
|
||||
* PLL1R = PLL1_VCO/8 = 960 MHz / 8 = 120 MHz
|
||||
*/
|
||||
|
||||
#define STM32_PLLCFG_PLL1CFG (RCC_PLLCFGR_PLL1VCOSEL_WIDE | \
|
||||
RCC_PLLCFGR_PLL1RGE_4_8_MHZ | \
|
||||
RCC_PLLCFGR_DIVP1EN | \
|
||||
RCC_PLLCFGR_DIVQ1EN | \
|
||||
RCC_PLLCFGR_DIVR1EN)
|
||||
#define STM32_PLLCFG_PLL1M RCC_PLLCKSELR_DIVM1(1)
|
||||
#define STM32_PLLCFG_PLL1N RCC_PLL1DIVR_N1(60)
|
||||
#define STM32_PLLCFG_PLL1P RCC_PLL1DIVR_P1(2)
|
||||
#define STM32_PLLCFG_PLL1Q RCC_PLL1DIVR_Q1(4)
|
||||
#define STM32_PLLCFG_PLL1R RCC_PLL1DIVR_R1(8)
|
||||
|
||||
#define STM32_VCO1_FREQUENCY ((STM32_HSE_FREQUENCY / 1) * 60)
|
||||
#define STM32_PLL1P_FREQUENCY (STM32_VCO1_FREQUENCY / 2)
|
||||
#define STM32_PLL1Q_FREQUENCY (STM32_VCO1_FREQUENCY / 4)
|
||||
#define STM32_PLL1R_FREQUENCY (STM32_VCO1_FREQUENCY / 8)
|
||||
|
||||
/* PLL2 */
|
||||
|
||||
#define STM32_PLLCFG_PLL2CFG (RCC_PLLCFGR_PLL2VCOSEL_WIDE | \
|
||||
RCC_PLLCFGR_PLL2RGE_4_8_MHZ | \
|
||||
RCC_PLLCFGR_DIVP2EN | \
|
||||
RCC_PLLCFGR_DIVQ2EN | \
|
||||
RCC_PLLCFGR_DIVR2EN)
|
||||
#define STM32_PLLCFG_PLL2M RCC_PLLCKSELR_DIVM2(4)
|
||||
#define STM32_PLLCFG_PLL2N RCC_PLL2DIVR_N2(48)
|
||||
#define STM32_PLLCFG_PLL2P RCC_PLL2DIVR_P2(2)
|
||||
#define STM32_PLLCFG_PLL2Q RCC_PLL2DIVR_Q2(2)
|
||||
#define STM32_PLLCFG_PLL2R RCC_PLL2DIVR_R2(2)
|
||||
|
||||
#define STM32_VCO2_FREQUENCY ((STM32_HSE_FREQUENCY / 4) * 48)
|
||||
#define STM32_PLL2P_FREQUENCY (STM32_VCO2_FREQUENCY / 2)
|
||||
#define STM32_PLL2Q_FREQUENCY (STM32_VCO2_FREQUENCY / 2)
|
||||
#define STM32_PLL2R_FREQUENCY (STM32_VCO2_FREQUENCY / 2)
|
||||
|
||||
/* PLL3 */
|
||||
|
||||
#define STM32_PLLCFG_PLL3CFG (RCC_PLLCFGR_PLL3VCOSEL_WIDE | \
|
||||
RCC_PLLCFGR_PLL3RGE_4_8_MHZ | \
|
||||
RCC_PLLCFGR_DIVQ3EN)
|
||||
#define STM32_PLLCFG_PLL3M RCC_PLLCKSELR_DIVM3(4)
|
||||
#define STM32_PLLCFG_PLL3N RCC_PLL3DIVR_N3(48)
|
||||
#define STM32_PLLCFG_PLL3P RCC_PLL3DIVR_P3(2)
|
||||
#define STM32_PLLCFG_PLL3Q RCC_PLL3DIVR_Q3(4)
|
||||
#define STM32_PLLCFG_PLL3R RCC_PLL3DIVR_R3(2)
|
||||
|
||||
#define STM32_VCO3_FREQUENCY ((STM32_HSE_FREQUENCY / 4) * 48)
|
||||
#define STM32_PLL3P_FREQUENCY (STM32_VCO3_FREQUENCY / 2)
|
||||
#define STM32_PLL3Q_FREQUENCY (STM32_VCO3_FREQUENCY / 4)
|
||||
#define STM32_PLL3R_FREQUENCY (STM32_VCO3_FREQUENCY / 2)
|
||||
|
||||
/* SYSCLK = PLL1P = 480MHz
|
||||
* CPUCLK = SYSCLK / 1 = 480 MHz
|
||||
*/
|
||||
|
||||
#define STM32_RCC_D1CFGR_D1CPRE (RCC_D1CFGR_D1CPRE_SYSCLK)
|
||||
#define STM32_SYSCLK_FREQUENCY (STM32_PLL1P_FREQUENCY)
|
||||
#define STM32_CPUCLK_FREQUENCY (STM32_SYSCLK_FREQUENCY / 1)
|
||||
|
||||
/* Configure Clock Assignments */
|
||||
|
||||
/* AHB clock (HCLK) is SYSCLK/2 (240 MHz max)
|
||||
* HCLK1 = HCLK2 = HCLK3 = HCLK4 = 240
|
||||
*/
|
||||
|
||||
#define STM32_RCC_D1CFGR_HPRE RCC_D1CFGR_HPRE_SYSCLKd2 /* HCLK = SYSCLK / 2 */
|
||||
#define STM32_ACLK_FREQUENCY (STM32_CPUCLK_FREQUENCY / 2) /* ACLK in D1, HCLK3 in D1 */
|
||||
#define STM32_HCLK_FREQUENCY (STM32_CPUCLK_FREQUENCY / 2) /* HCLK in D2, HCLK4 in D3 */
|
||||
#define STM32_BOARD_HCLK STM32_HCLK_FREQUENCY /* same as above, to satisfy compiler */
|
||||
|
||||
/* APB1 clock (PCLK1) is HCLK/2 (120 MHz) */
|
||||
|
||||
#define STM32_RCC_D2CFGR_D2PPRE1 RCC_D2CFGR_D2PPRE1_HCLKd2 /* PCLK1 = HCLK / 2 */
|
||||
#define STM32_PCLK1_FREQUENCY (STM32_HCLK_FREQUENCY/2)
|
||||
|
||||
/* APB2 clock (PCLK2) is HCLK/2 (120 MHz) */
|
||||
|
||||
#define STM32_RCC_D2CFGR_D2PPRE2 RCC_D2CFGR_D2PPRE2_HCLKd2 /* PCLK2 = HCLK / 2 */
|
||||
#define STM32_PCLK2_FREQUENCY (STM32_HCLK_FREQUENCY/2)
|
||||
|
||||
/* APB3 clock (PCLK3) is HCLK/2 (120 MHz) */
|
||||
|
||||
#define STM32_RCC_D1CFGR_D1PPRE RCC_D1CFGR_D1PPRE_HCLKd2 /* PCLK3 = HCLK / 2 */
|
||||
#define STM32_PCLK3_FREQUENCY (STM32_HCLK_FREQUENCY/2)
|
||||
|
||||
/* APB4 clock (PCLK4) is HCLK/4 (120 MHz) */
|
||||
|
||||
#define STM32_RCC_D3CFGR_D3PPRE RCC_D3CFGR_D3PPRE_HCLKd2 /* PCLK4 = HCLK / 2 */
|
||||
#define STM32_PCLK4_FREQUENCY (STM32_HCLK_FREQUENCY/2)
|
||||
|
||||
/* Timer clock frequencies */
|
||||
|
||||
/* Timers driven from APB1 will be twice PCLK1 */
|
||||
|
||||
#define STM32_APB1_TIM2_CLKIN (2*STM32_PCLK1_FREQUENCY)
|
||||
#define STM32_APB1_TIM3_CLKIN (2*STM32_PCLK1_FREQUENCY)
|
||||
#define STM32_APB1_TIM4_CLKIN (2*STM32_PCLK1_FREQUENCY)
|
||||
#define STM32_APB1_TIM5_CLKIN (2*STM32_PCLK1_FREQUENCY)
|
||||
#define STM32_APB1_TIM6_CLKIN (2*STM32_PCLK1_FREQUENCY)
|
||||
#define STM32_APB1_TIM7_CLKIN (2*STM32_PCLK1_FREQUENCY)
|
||||
#define STM32_APB1_TIM12_CLKIN (2*STM32_PCLK1_FREQUENCY)
|
||||
#define STM32_APB1_TIM13_CLKIN (2*STM32_PCLK1_FREQUENCY)
|
||||
#define STM32_APB1_TIM14_CLKIN (2*STM32_PCLK1_FREQUENCY)
|
||||
|
||||
/* Timers driven from APB2 will be twice PCLK2 */
|
||||
|
||||
#define STM32_APB2_TIM1_CLKIN (2*STM32_PCLK2_FREQUENCY)
|
||||
#define STM32_APB2_TIM8_CLKIN (2*STM32_PCLK2_FREQUENCY)
|
||||
#define STM32_APB2_TIM15_CLKIN (2*STM32_PCLK2_FREQUENCY)
|
||||
#define STM32_APB2_TIM16_CLKIN (2*STM32_PCLK2_FREQUENCY)
|
||||
#define STM32_APB2_TIM17_CLKIN (2*STM32_PCLK2_FREQUENCY)
|
||||
|
||||
/* Kernel Clock Configuration
|
||||
*
|
||||
* Note: look at Table 54 in ST Manual
|
||||
*/
|
||||
|
||||
/* I2C123 clock source */
|
||||
|
||||
#define STM32_RCC_D2CCIP2R_I2C123SRC RCC_D2CCIP2R_I2C123SEL_HSI
|
||||
|
||||
/* I2C4 clock source */
|
||||
|
||||
#define STM32_RCC_D3CCIPR_I2C4SRC RCC_D3CCIPR_I2C4SEL_HSI
|
||||
|
||||
/* SPI123 clock source */
|
||||
|
||||
#define STM32_RCC_D2CCIP1R_SPI123SRC RCC_D2CCIP1R_SPI123SEL_PLL2
|
||||
|
||||
/* SPI45 clock source */
|
||||
|
||||
#define STM32_RCC_D2CCIP1R_SPI45SRC RCC_D2CCIP1R_SPI45SEL_PLL2
|
||||
|
||||
/* SPI6 clock source */
|
||||
|
||||
#define STM32_RCC_D3CCIPR_SPI6SRC RCC_D3CCIPR_SPI6SEL_PLL2
|
||||
|
||||
/* USB 1 and 2 clock source */
|
||||
|
||||
#define STM32_RCC_D2CCIP2R_USBSRC RCC_D2CCIP2R_USBSEL_PLL3
|
||||
|
||||
/* ADC 1 2 3 clock source */
|
||||
|
||||
#define STM32_RCC_D3CCIPR_ADCSEL RCC_D3CCIPR_ADCSEL_PLL2
|
||||
|
||||
/* FDCAN 1 2 clock source */
|
||||
|
||||
#define STM32_RCC_D2CCIP1R_FDCANSEL RCC_D2CCIP1R_FDCANSEL_HSE /* FDCAN 1 2 clock source */
|
||||
|
||||
#define STM32_FDCANCLK STM32_HSE_FREQUENCY
|
||||
|
||||
/* FLASH wait states
|
||||
*
|
||||
* ------------ ---------- -----------
|
||||
* Vcore MAX ACLK WAIT STATES
|
||||
* ------------ ---------- -----------
|
||||
* 1.15-1.26 V 70 MHz 0
|
||||
* (VOS1 level) 140 MHz 1
|
||||
* 210 MHz 2
|
||||
* 1.05-1.15 V 55 MHz 0
|
||||
* (VOS2 level) 110 MHz 1
|
||||
* 165 MHz 2
|
||||
* 220 MHz 3
|
||||
* 0.95-1.05 V 45 MHz 0
|
||||
* (VOS3 level) 90 MHz 1
|
||||
* 135 MHz 2
|
||||
* 180 MHz 3
|
||||
* 225 MHz 4
|
||||
* ------------ ---------- -----------
|
||||
*/
|
||||
|
||||
#define BOARD_FLASH_WAITSTATES 2
|
||||
|
||||
/* SDMMC definitions ********************************************************/
|
||||
|
||||
/* Init 400kHz, freq = PLL1Q/(2*div) div = PLL1Q/(2*freq) */
|
||||
|
||||
#define STM32_SDMMC_INIT_CLKDIV (300 << STM32_SDMMC_CLKCR_CLKDIV_SHIFT)
|
||||
|
||||
/* 25 MHz Max for now, 25 mHZ = PLL1Q/(2*div), div = PLL1Q/(2*freq)
|
||||
* div = 4.8 = 240 / 50, So round up to 5 for default speed 24 MB/s
|
||||
*/
|
||||
|
||||
#if defined(CONFIG_STM32H7_SDMMC_XDMA) || defined(CONFIG_STM32H7_SDMMC_IDMA)
|
||||
# define STM32_SDMMC_MMCXFR_CLKDIV (5 << STM32_SDMMC_CLKCR_CLKDIV_SHIFT)
|
||||
#else
|
||||
# define STM32_SDMMC_MMCXFR_CLKDIV (100 << STM32_SDMMC_CLKCR_CLKDIV_SHIFT)
|
||||
#endif
|
||||
#if defined(CONFIG_STM32H7_SDMMC_XDMA) || defined(CONFIG_STM32H7_SDMMC_IDMA)
|
||||
# define STM32_SDMMC_SDXFR_CLKDIV (5 << STM32_SDMMC_CLKCR_CLKDIV_SHIFT)
|
||||
#else
|
||||
# define STM32_SDMMC_SDXFR_CLKDIV (100 << STM32_SDMMC_CLKCR_CLKDIV_SHIFT)
|
||||
#endif
|
||||
|
||||
#define STM32_SDMMC_CLKCR_EDGE STM32_SDMMC_CLKCR_NEGEDGE
|
||||
|
||||
/* LED definitions ******************************************************************/
|
||||
/* The PX4 FMUV6C board has three, LED_GREEN a Green LED, LED_BLUE a Blue LED and
|
||||
* LED_RED a Red LED, that can be controlled by software.
|
||||
*
|
||||
* If CONFIG_ARCH_LEDS is not defined, then the user can control the LEDs in any way.
|
||||
* The following definitions are used to access individual LEDs.
|
||||
*/
|
||||
|
||||
/* LED index values for use with board_userled() */
|
||||
|
||||
/* LED definitions ******************************************************************/
|
||||
/* The px4_fmu-v6c board has three, LED_GREEN a Green LED, LED_BLUE a Blue LED and
|
||||
* LED_RED a Red LED, that can be controlled by software.
|
||||
*
|
||||
* If CONFIG_ARCH_LEDS is not defined, then the user can control the LEDs in any way.
|
||||
* The following definitions are used to access individual LEDs.
|
||||
*/
|
||||
|
||||
/* LED index values for use with board_userled() */
|
||||
|
||||
#define BOARD_LED1 0
|
||||
#define BOARD_LED2 1
|
||||
#define BOARD_LED3 2
|
||||
#define BOARD_NLEDS 3
|
||||
|
||||
#define BOARD_LED_RED BOARD_LED1
|
||||
#define BOARD_LED_GREEN BOARD_LED2
|
||||
#define BOARD_LED_BLUE BOARD_LED3
|
||||
|
||||
/* LED bits for use with board_userled_all() */
|
||||
|
||||
#define BOARD_LED1_BIT (1 << BOARD_LED1)
|
||||
#define BOARD_LED2_BIT (1 << BOARD_LED2)
|
||||
#define BOARD_LED3_BIT (1 << BOARD_LED3)
|
||||
|
||||
/* If CONFIG_ARCH_LEDS is defined, the usage by the board port is defined in
|
||||
* include/board.h and src/stm32_leds.c. The LEDs are used to encode OS-related
|
||||
* events as follows:
|
||||
*
|
||||
*
|
||||
* SYMBOL Meaning LED state
|
||||
* Red Green Blue
|
||||
* ---------------------- -------------------------- ------ ------ ----*/
|
||||
|
||||
#define LED_STARTED 0 /* NuttX has been started OFF OFF OFF */
|
||||
#define LED_HEAPALLOCATE 1 /* Heap has been allocated OFF OFF ON */
|
||||
#define LED_IRQSENABLED 2 /* Interrupts enabled OFF ON OFF */
|
||||
#define LED_STACKCREATED 3 /* Idle stack created OFF ON ON */
|
||||
#define LED_INIRQ 4 /* In an interrupt N/C N/C GLOW */
|
||||
#define LED_SIGNAL 5 /* In a signal handler N/C GLOW N/C */
|
||||
#define LED_ASSERTION 6 /* An assertion failed GLOW N/C GLOW */
|
||||
#define LED_PANIC 7 /* The system has crashed Blink OFF N/C */
|
||||
#define LED_IDLE 8 /* MCU is is sleep mode ON OFF OFF */
|
||||
|
||||
/* Thus if the Green LED is statically on, NuttX has successfully booted and
|
||||
* is, apparently, running normally. If the Red LED is flashing at
|
||||
* approximately 2Hz, then a fatal error has been detected and the system
|
||||
* has halted.
|
||||
*/
|
||||
|
||||
/* Alternate function pin selections ************************************************/
|
||||
|
||||
#define GPIO_USART1_RX GPIO_USART1_RX_2 /* PA10 */
|
||||
#define GPIO_USART1_TX GPIO_USART1_TX_3 /* PB6 */
|
||||
|
||||
#define GPIO_USART2_RX GPIO_USART2_RX_1 /* PA3 */
|
||||
#define GPIO_USART2_TX GPIO_USART2_TX_2 /* PD5 */
|
||||
|
||||
#define GPIO_USART3_RX GPIO_USART3_RX_3 /* PD9 */
|
||||
#define GPIO_USART3_TX GPIO_USART3_TX_3 /* PD8 */
|
||||
|
||||
#define GPIO_UART5_RX GPIO_UART5_RX_3 /* PD2 */
|
||||
#define GPIO_UART5_TX GPIO_UART5_TX_3 /* PC12 */
|
||||
// GPIO_UART5_RTS no remap /* PC8 */
|
||||
// GPIO_UART5_CTS No remap /* PC9 */
|
||||
|
||||
#define GPIO_USART6_RX GPIO_USART6_RX_1 /* PC7 */
|
||||
#define GPIO_USART6_TX GPIO_USART6_TX_1 /* PC6 */
|
||||
|
||||
#define GPIO_UART7_RX GPIO_UART7_RX_3 /* PE7 */
|
||||
#define GPIO_UART7_TX GPIO_UART7_TX_3 /* PE8 */
|
||||
#define GPIO_UART7_RTS GPIO_UART7_RTS_1 /* PE9 */
|
||||
#define GPIO_UART7_CTS GPIO_UART7_CTS_1 /* PE10 */
|
||||
|
||||
#define GPIO_UART8_RX GPIO_UART8_RX_1 /* PE0 */
|
||||
#define GPIO_UART8_TX GPIO_UART8_TX_1 /* PE1 */
|
||||
|
||||
|
||||
/* CAN
|
||||
*
|
||||
* CAN1 is routed to transceiver.
|
||||
* CAN2 is routed to transceiver.
|
||||
*/
|
||||
#define GPIO_CAN1_RX GPIO_CAN1_RX_3 /* PD0 */
|
||||
#define GPIO_CAN1_TX GPIO_CAN1_TX_3 /* PD1 */
|
||||
#define GPIO_CAN2_RX GPIO_CAN2_RX_2 /* PB5 */
|
||||
#define GPIO_CAN2_TX GPIO_CAN2_TX_1 /* PB13 */
|
||||
|
||||
/* SPI
|
||||
* SPI1 is sensors
|
||||
* SPI2 is FRAM
|
||||
*
|
||||
*/
|
||||
|
||||
#define ADJ_SLEW_RATE(p) (((p) & ~GPIO_SPEED_MASK) | (GPIO_SPEED_2MHz))
|
||||
|
||||
#define GPIO_SPI1_MISO GPIO_SPI1_MISO_1 /* PA6 */
|
||||
#define GPIO_SPI1_MOSI GPIO_SPI1_MOSI_1 /* PA7 */
|
||||
#define GPIO_SPI1_SCK ADJ_SLEW_RATE(GPIO_SPI1_SCK_1) /* PA5 */
|
||||
|
||||
#define GPIO_SPI2_MISO GPIO_SPI2_MISO_2 /* PC2 */
|
||||
#define GPIO_SPI2_MOSI GPIO_SPI2_MOSI_3 /* PC3 */
|
||||
#define GPIO_SPI2_SCK ADJ_SLEW_RATE(GPIO_SPI2_SCK_5) /* PD3 */
|
||||
|
||||
/* I2C
|
||||
*
|
||||
* The optional _GPIO configurations allow the I2C driver to manually
|
||||
* reset the bus to clear stuck slaves. They match the pin configuration,
|
||||
* but are normally-high GPIOs.
|
||||
*
|
||||
*/
|
||||
|
||||
#define GPIO_I2C1_SCL GPIO_I2C1_SCL_2 /* PB8 */
|
||||
#define GPIO_I2C1_SDA GPIO_I2C1_SDA_1 /* PB7 */
|
||||
|
||||
#define GPIO_I2C1_SCL_GPIO (GPIO_OUTPUT | GPIO_OPENDRAIN |GPIO_SPEED_50MHz | GPIO_OUTPUT_SET | GPIO_PORTB | GPIO_PIN8)
|
||||
#define GPIO_I2C1_SDA_GPIO (GPIO_OUTPUT | GPIO_OPENDRAIN |GPIO_SPEED_50MHz | GPIO_OUTPUT_SET | GPIO_PORTB | GPIO_PIN7)
|
||||
|
||||
#define GPIO_I2C2_SCL GPIO_I2C2_SCL_1 /* PB10 */
|
||||
#define GPIO_I2C2_SDA GPIO_I2C2_SDA_1 /* PB11*/
|
||||
|
||||
#define GPIO_I2C2_SCL_GPIO (GPIO_OUTPUT | GPIO_OPENDRAIN |GPIO_SPEED_50MHz | GPIO_OUTPUT_SET | GPIO_PORTB | GPIO_PIN10)
|
||||
#define GPIO_I2C2_SDA_GPIO (GPIO_OUTPUT | GPIO_OPENDRAIN |GPIO_SPEED_50MHz | GPIO_OUTPUT_SET | GPIO_PORTB | GPIO_PIN11)
|
||||
|
||||
#define GPIO_I2C4_SCL GPIO_I2C4_SCL_1 /* PD12 */
|
||||
#define GPIO_I2C4_SDA GPIO_I2C4_SDA_1 /* PD13 */
|
||||
|
||||
#define GPIO_I2C4_SCL_GPIO (GPIO_OUTPUT | GPIO_OPENDRAIN | GPIO_SPEED_50MHz | GPIO_OUTPUT_SET | GPIO_PORTD | GPIO_PIN12)
|
||||
#define GPIO_I2C4_SDA_GPIO (GPIO_OUTPUT | GPIO_OPENDRAIN | GPIO_SPEED_50MHz | GPIO_OUTPUT_SET | GPIO_PORTD | GPIO_PIN13)
|
||||
|
||||
/* SDMMC2
|
||||
*
|
||||
* VDD 3.3
|
||||
* GND
|
||||
* SDMMC2_CK PD6
|
||||
* SDMMC2_CMD PD7
|
||||
* SDMMC2_D0 PB14
|
||||
* SDMMC2_D1 PB15
|
||||
* SDMMC2_D2 PB3
|
||||
* SDMMC2_D3 PB4
|
||||
*/
|
||||
|
||||
#define GPIO_SDMMC2_CK GPIO_SDMMC2_CK_1 /* PD6 */
|
||||
#define GPIO_SDMMC2_CMD GPIO_SDMMC2_CMD_1 /* PD7 */
|
||||
// GPIO_SDMMC2_D0 No Remap /* PB14 */
|
||||
// GPIO_SDMMC2_D1 No Remap /* PB15 */
|
||||
#define GPIO_SDMMC2_D2 GPIO_SDMMC2_D2_2 /* PB3 */
|
||||
// GPIO_SDMMC2_D3 No Remap /* PB4 */
|
||||
|
||||
/* USB
|
||||
*
|
||||
* OTG_FS_DM PA11
|
||||
* OTG_FS_DP PA12
|
||||
* VBUS PA9
|
||||
*/
|
||||
|
||||
|
||||
/* Board provides GPIO or other Hardware for signaling to timing analyzer */
|
||||
|
||||
#if defined(CONFIG_BOARD_USE_PROBES)
|
||||
# include "stm32_gpio.h"
|
||||
# define PROBE_N(n) (1<<((n)-1))
|
||||
# define PROBE_1 (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTA|GPIO_PIN8) /* PA8 AUX1 */
|
||||
# define PROBE_2 (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTE|GPIO_PIN11) /* PE11 AUX2 */
|
||||
# define PROBE_3 (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTE|GPIO_PIN13) /* PE13 AUX3 */
|
||||
# define PROBE_4 (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTE|GPIO_PIN14) /* PE14 AUX4 */
|
||||
# define PROBE_5 (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTD|GPIO_PIN14) /* PD14 AUX5 */
|
||||
# define PROBE_6 (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTD|GPIO_PIN15) /* PD15 AUX6 */
|
||||
# define PROBE_7 (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTA|GPIO_PIN0) /* PA0 AUX7 */
|
||||
# define PROBE_8 (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTA|GPIO_PIN2) /* PA1 AUX8 */
|
||||
|
||||
# define PROBE_INIT(mask) \
|
||||
do { \
|
||||
if ((mask)& PROBE_N(1)) { stm32_configgpio(PROBE_1); } \
|
||||
if ((mask)& PROBE_N(2)) { stm32_configgpio(PROBE_2); } \
|
||||
if ((mask)& PROBE_N(3)) { stm32_configgpio(PROBE_3); } \
|
||||
if ((mask)& PROBE_N(4)) { stm32_configgpio(PROBE_4); } \
|
||||
if ((mask)& PROBE_N(5)) { stm32_configgpio(PROBE_5); } \
|
||||
if ((mask)& PROBE_N(6)) { stm32_configgpio(PROBE_6); } \
|
||||
if ((mask)& PROBE_N(7)) { stm32_configgpio(PROBE_7); } \
|
||||
if ((mask)& PROBE_N(8)) { stm32_configgpio(PROBE_8); } \
|
||||
} while(0)
|
||||
|
||||
# define PROBE(n,s) do {stm32_gpiowrite(PROBE_##n,(s));}while(0)
|
||||
# define PROBE_MARK(n) PROBE(n,false);PROBE(n,true)
|
||||
#else
|
||||
# define PROBE_INIT(mask)
|
||||
# define PROBE(n,s)
|
||||
# define PROBE_MARK(n)
|
||||
#endif
|
||||
|
||||
#endif /*__NUTTX_CONFIG_PX4_FMU_V6C_INCLUDE_BOARD_H */
|
||||
@@ -1,79 +0,0 @@
|
||||
/****************************************************************************
|
||||
*
|
||||
* Copyright (c) 2020 PX4 Development Team. All rights reserved.
|
||||
*
|
||||
* 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 PX4 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.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#pragma once
|
||||
|
||||
// DMAMUX1 Using at most 8 Channels on DMA1 -------- Assigned
|
||||
// V
|
||||
|
||||
#define DMAMAP_SPI1_RX DMAMAP_DMA12_SPI1RX_0 /* 1 DMA1:37 BMI055, ICM-42688-P */
|
||||
#define DMAMAP_SPI1_TX DMAMAP_DMA12_SPI1TX_0 /* 2 DMA1:38 BMI055, ICM-42688-P */
|
||||
|
||||
#define DMAMAP_SPI2_RX DMAMAP_DMA12_SPI2RX_0 /* 3 DMA1:39 FRAM */
|
||||
#define DMAMAP_SPI2_TX DMAMAP_DMA12_SPI2TX_0 /* 4 DMA1:40 FRAM */
|
||||
|
||||
//#define DMAMAP_USART1_RX DMAMAP_DMA12_USART1RX_0 /* DMA1:41 GPS1 */
|
||||
//#define DMAMAP_USART1_TX DMAMAP_DMA12_USART1TX_0 /* DMA1:42 GPS1 */
|
||||
|
||||
//#define DMAMAP_USART2_RX DMAMAP_DMA12_USART2RX_0 /* DMA1:43 Telem3 */
|
||||
//#define DMAMAP_USART2_TX DMAMAP_DMA12_USART2TX_0 /* DMA1:44 Telem3 */
|
||||
|
||||
//#define DMAMAP_USART3_RX DMAMAP_DMA12_USART3RX_0 /* DMA1:45 DEBUG */
|
||||
//#define DMAMAP_USART3_TX DMAMAP_DMA12_USART3TX_0 /* DMA1:46 DEBUG */
|
||||
|
||||
//#define DMAMAP_UART4_RX DMAMAP_DMA12_UART4RX_0 /* DMA1:63 EXT2 */
|
||||
//#define DMAMAP_UART4_TX DMAMAP_DMA12_UART4TX_0 /* DMA1:64 EXT2 */
|
||||
|
||||
#define DMAMAP_USART6_RX DMAMAP_DMA12_USART6RX_0 /* 5 DMA1:71 PX4IO */
|
||||
#define DMAMAP_USART6_TX DMAMAP_DMA12_USART6TX_0 /* 6 DMA1:72 PX4IO */
|
||||
|
||||
// Assigned in timer_config.cpp
|
||||
|
||||
// Timer 4 /* 7 DMA1:32 TIM4UP */
|
||||
// Timer 5 /* 8 DMA1:50 TIM5UP */
|
||||
|
||||
// DMAMUX2 Using at most 8 Channels on DMA2 -------- Assigned
|
||||
// V
|
||||
|
||||
|
||||
#define DMAMAP_USART3_RX DMAMAP_DMA12_USART3RX_1 /* 3 DMA2:45 DEBUG */
|
||||
#define DMAMAP_USART3_TX DMAMAP_DMA12_USART3TX_1 /* 4 DMA2:46 DEBUG */
|
||||
|
||||
#define DMAMAP_UART5_RX DMAMAP_DMA12_UART5RX_1 /* 5 DMA2:65 TELEM2 */
|
||||
#define DMAMAP_UART5_TX DMAMAP_DMA12_UART5TX_1 /* 6 DMA2:66 TELEM2 */
|
||||
|
||||
#define DMAMAP_UART7_RX DMAMAP_DMA12_UART7RX_1 /* 7 DMA1:79 TELEM1 */
|
||||
#define DMAMAP_UART7_TX DMAMAP_DMA12_UART7TX_1 /* 8 DMA1:80 TELEM1 */
|
||||
|
||||
//#define DMAMAP_UART8_RX DMAMAP_DMA12_UART8RX_1 /* DMA1:81 GPS2 */
|
||||
//#define DMAMAP_UART8_TX DMAMAP_DMA12_UART8TX_1 /* DMA1:82 GPS2 */
|
||||
@@ -1,241 +0,0 @@
|
||||
#
|
||||
# This file is autogenerated: PLEASE DO NOT EDIT IT.
|
||||
#
|
||||
# You can use "make menuconfig" to make any modifications to the installed .config file.
|
||||
# You can then do "make savedefconfig" to generate a new defconfig file that includes your
|
||||
# modifications.
|
||||
#
|
||||
# CONFIG_DISABLE_ENVIRON is not set
|
||||
# CONFIG_DISABLE_PSEUDOFS_OPERATIONS is not set
|
||||
# CONFIG_MMCSD_HAVE_CARDDETECT is not set
|
||||
# CONFIG_MMCSD_HAVE_WRITEPROTECT is not set
|
||||
# CONFIG_MMCSD_MMCSUPPORT is not set
|
||||
# CONFIG_MMCSD_SPI is not set
|
||||
# CONFIG_NSH_DISABLEBG is not set
|
||||
# CONFIG_NSH_DISABLESCRIPT is not set
|
||||
# CONFIG_NSH_DISABLE_DF is not set
|
||||
# CONFIG_NSH_DISABLE_EXEC is not set
|
||||
# CONFIG_NSH_DISABLE_EXIT is not set
|
||||
# CONFIG_NSH_DISABLE_GET is not set
|
||||
# CONFIG_NSH_DISABLE_ITEF is not set
|
||||
# CONFIG_NSH_DISABLE_LOOPS is not set
|
||||
# CONFIG_NSH_DISABLE_MKFATFS is not set
|
||||
# CONFIG_NSH_DISABLE_SEMICOLON is not set
|
||||
# CONFIG_NSH_DISABLE_TIME is not set
|
||||
CONFIG_ARCH="arm"
|
||||
CONFIG_ARCH_BOARD_CUSTOM=y
|
||||
CONFIG_ARCH_BOARD_CUSTOM_DIR="../../../../boards/px4/fmu-v6c/nuttx-config"
|
||||
CONFIG_ARCH_BOARD_CUSTOM_DIR_RELPATH=y
|
||||
CONFIG_ARCH_BOARD_CUSTOM_NAME="px4"
|
||||
CONFIG_ARCH_CHIP="stm32h7"
|
||||
CONFIG_ARCH_CHIP_STM32H743VI=y
|
||||
CONFIG_ARCH_CHIP_STM32H7=y
|
||||
CONFIG_ARCH_INTERRUPTSTACK=512
|
||||
CONFIG_ARCH_STACKDUMP=y
|
||||
CONFIG_ARMV7M_BASEPRI_WAR=y
|
||||
CONFIG_ARMV7M_DCACHE=y
|
||||
CONFIG_ARMV7M_DTCM=y
|
||||
CONFIG_ARMV7M_ICACHE=y
|
||||
CONFIG_ARMV7M_MEMCPY=y
|
||||
CONFIG_ARMV7M_USEBASEPRI=y
|
||||
CONFIG_ARM_MPU_EARLY_RESET=y
|
||||
CONFIG_BOARDCTL_RESET=y
|
||||
CONFIG_BOARD_CRASHDUMP=y
|
||||
CONFIG_BOARD_LOOPSPERMSEC=95751
|
||||
CONFIG_BOARD_RESET_ON_ASSERT=2
|
||||
CONFIG_BUILTIN=y
|
||||
CONFIG_C99_BOOL8=y
|
||||
CONFIG_CDCACM=y
|
||||
CONFIG_CDCACM_IFLOWCONTROL=y
|
||||
CONFIG_CDCACM_PRODUCTID=0x0038
|
||||
CONFIG_CDCACM_PRODUCTSTR="PX4 FMU v6C.x"
|
||||
CONFIG_CDCACM_RXBUFSIZE=600
|
||||
CONFIG_CDCACM_TXBUFSIZE=12000
|
||||
CONFIG_CDCACM_VENDORID=0x3185
|
||||
CONFIG_CDCACM_VENDORSTR="Auterion"
|
||||
CONFIG_CLOCK_MONOTONIC=y
|
||||
CONFIG_DEBUG_FULLOPT=y
|
||||
CONFIG_DEBUG_HARDFAULT_ALERT=y
|
||||
CONFIG_DEBUG_MEMFAULT=y
|
||||
CONFIG_DEBUG_SYMBOLS=y
|
||||
CONFIG_DEFAULT_SMALL=y
|
||||
CONFIG_DEV_FIFO_SIZE=0
|
||||
CONFIG_DEV_PIPE_MAXSIZE=1024
|
||||
CONFIG_DEV_PIPE_SIZE=70
|
||||
CONFIG_EXPERIMENTAL=y
|
||||
CONFIG_FAT_DMAMEMORY=y
|
||||
CONFIG_FAT_LCNAMES=y
|
||||
CONFIG_FAT_LFN=y
|
||||
CONFIG_FAT_LFN_ALIAS_HASH=y
|
||||
CONFIG_FDCLONE_STDIO=y
|
||||
CONFIG_FS_BINFS=y
|
||||
CONFIG_FS_CROMFS=y
|
||||
CONFIG_FS_FAT=y
|
||||
CONFIG_FS_FATTIME=y
|
||||
CONFIG_FS_PROCFS=y
|
||||
CONFIG_FS_PROCFS_INCLUDE_PROGMEM=y
|
||||
CONFIG_FS_PROCFS_MAX_TASKS=64
|
||||
CONFIG_FS_PROCFS_REGISTER=y
|
||||
CONFIG_FS_ROMFS=y
|
||||
CONFIG_GRAN=y
|
||||
CONFIG_GRAN_INTR=y
|
||||
CONFIG_HAVE_CXX=y
|
||||
CONFIG_HAVE_CXXINITIALIZE=y
|
||||
CONFIG_I2C=y
|
||||
CONFIG_I2C_RESET=y
|
||||
CONFIG_IDLETHREAD_STACKSIZE=750
|
||||
CONFIG_IOB_NBUFFERS=24
|
||||
CONFIG_IOB_NCHAINS=24
|
||||
CONFIG_LIBC_FLOATINGPOINT=y
|
||||
CONFIG_LIBC_LONG_LONG=y
|
||||
CONFIG_LIBC_STRERROR=y
|
||||
CONFIG_MEMSET_64BIT=y
|
||||
CONFIG_MEMSET_OPTSPEED=y
|
||||
CONFIG_MMCSD=y
|
||||
CONFIG_MMCSD_SDIO=y
|
||||
CONFIG_MMCSD_SDIOWAIT_WRCOMPLETE=y
|
||||
CONFIG_MM_IOB=y
|
||||
CONFIG_MM_REGIONS=4
|
||||
CONFIG_MTD=y
|
||||
CONFIG_MTD_BYTE_WRITE=y
|
||||
CONFIG_MTD_PARTITION=y
|
||||
CONFIG_MTD_PROGMEM=y
|
||||
CONFIG_MTD_RAMTRON=y
|
||||
CONFIG_NAME_MAX=40
|
||||
CONFIG_NSH_ARCHINIT=y
|
||||
CONFIG_NSH_ARGCAT=y
|
||||
CONFIG_NSH_BUILTIN_APPS=y
|
||||
CONFIG_NSH_CMDPARMS=y
|
||||
CONFIG_NSH_CROMFSETC=y
|
||||
CONFIG_NSH_LINELEN=128
|
||||
CONFIG_NSH_MAXARGUMENTS=15
|
||||
CONFIG_NSH_NESTDEPTH=8
|
||||
CONFIG_NSH_QUOTE=y
|
||||
CONFIG_NSH_ROMFSETC=y
|
||||
CONFIG_NSH_ROMFSSECTSIZE=128
|
||||
CONFIG_NSH_STRERROR=y
|
||||
CONFIG_NSH_VARS=y
|
||||
CONFIG_OTG_ID_GPIO_DISABLE=y
|
||||
CONFIG_PIPES=y
|
||||
CONFIG_PREALLOC_TIMERS=50
|
||||
CONFIG_PRIORITY_INHERITANCE=y
|
||||
CONFIG_PTHREAD_MUTEX_ROBUST=y
|
||||
CONFIG_PTHREAD_STACK_MIN=512
|
||||
CONFIG_RAMTRON_SETSPEED=y
|
||||
CONFIG_RAM_SIZE=245760
|
||||
CONFIG_RAM_START=0x20010000
|
||||
CONFIG_RAW_BINARY=y
|
||||
CONFIG_READLINE_CMD_HISTORY=y
|
||||
CONFIG_READLINE_TABCOMPLETION=y
|
||||
CONFIG_RTC_DATETIME=y
|
||||
CONFIG_SCHED_ATEXIT=y
|
||||
CONFIG_SCHED_HPWORK=y
|
||||
CONFIG_SCHED_HPWORKPRIORITY=249
|
||||
CONFIG_SCHED_HPWORKSTACKSIZE=1280
|
||||
CONFIG_SCHED_INSTRUMENTATION=y
|
||||
CONFIG_SCHED_INSTRUMENTATION_EXTERNAL=y
|
||||
CONFIG_SCHED_LPWORK=y
|
||||
CONFIG_SCHED_LPWORKPRIORITY=50
|
||||
CONFIG_SCHED_LPWORKSTACKSIZE=1632
|
||||
CONFIG_SCHED_WAITPID=y
|
||||
CONFIG_SDCLONE_DISABLE=y
|
||||
CONFIG_SEM_NNESTPRIO=8
|
||||
CONFIG_SEM_PREALLOCHOLDERS=0
|
||||
CONFIG_SERIAL_IFLOWCONTROL_WATERMARKS=y
|
||||
CONFIG_SERIAL_TERMIOS=y
|
||||
CONFIG_SIG_DEFAULT=y
|
||||
CONFIG_SIG_SIGALRM_ACTION=y
|
||||
CONFIG_SIG_SIGUSR1_ACTION=y
|
||||
CONFIG_SIG_SIGUSR2_ACTION=y
|
||||
CONFIG_SIG_SIGWORK=4
|
||||
CONFIG_STACK_COLORATION=y
|
||||
CONFIG_START_DAY=30
|
||||
CONFIG_START_MONTH=11
|
||||
CONFIG_STDIO_BUFFER_SIZE=256
|
||||
CONFIG_STM32H7_ADC1=y
|
||||
CONFIG_STM32H7_ADC3=y
|
||||
CONFIG_STM32H7_BBSRAM=y
|
||||
CONFIG_STM32H7_BBSRAM_FILES=5
|
||||
CONFIG_STM32H7_BDMA=y
|
||||
CONFIG_STM32H7_BKPSRAM=y
|
||||
CONFIG_STM32H7_DMA1=y
|
||||
CONFIG_STM32H7_DMA2=y
|
||||
CONFIG_STM32H7_DMACAPABLE=y
|
||||
CONFIG_STM32H7_FLOWCONTROL_BROKEN=y
|
||||
CONFIG_STM32H7_I2C1=y
|
||||
CONFIG_STM32H7_I2C2=y
|
||||
CONFIG_STM32H7_I2C4=y
|
||||
CONFIG_STM32H7_I2C_DYNTIMEO=y
|
||||
CONFIG_STM32H7_I2C_DYNTIMEO_STARTSTOP=10
|
||||
CONFIG_STM32H7_OTGFS=y
|
||||
CONFIG_STM32H7_PROGMEM=y
|
||||
CONFIG_STM32H7_RTC=y
|
||||
CONFIG_STM32H7_RTC_HSECLOCK=y
|
||||
CONFIG_STM32H7_RTC_MAGIC_REG=1
|
||||
CONFIG_STM32H7_SAVE_CRASHDUMP=y
|
||||
CONFIG_STM32H7_SDMMC2=y
|
||||
CONFIG_STM32H7_SERIALBRK_BSDCOMPAT=y
|
||||
CONFIG_STM32H7_SERIAL_DISABLE_REORDERING=y
|
||||
CONFIG_STM32H7_SPI1=y
|
||||
CONFIG_STM32H7_SPI1_DMA=y
|
||||
CONFIG_STM32H7_SPI1_DMA_BUFFER=1024
|
||||
CONFIG_STM32H7_SPI2=y
|
||||
CONFIG_STM32H7_SPI2_DMA=y
|
||||
CONFIG_STM32H7_SPI2_DMA_BUFFER=4096
|
||||
CONFIG_STM32H7_SPI_DMA=y
|
||||
CONFIG_STM32H7_TIM12=y
|
||||
CONFIG_STM32H7_TIM1=y
|
||||
CONFIG_STM32H7_TIM4=y
|
||||
CONFIG_STM32H7_TIM5=y
|
||||
CONFIG_STM32H7_UART5=y
|
||||
CONFIG_STM32H7_UART7=y
|
||||
CONFIG_STM32H7_UART8=y
|
||||
CONFIG_STM32H7_USART1=y
|
||||
CONFIG_STM32H7_USART2=y
|
||||
CONFIG_STM32H7_USART3=y
|
||||
CONFIG_STM32H7_USART6=y
|
||||
CONFIG_STM32H7_USART_BREAKS=y
|
||||
CONFIG_STM32H7_USART_INVERT=y
|
||||
CONFIG_STM32H7_USART_SINGLEWIRE=y
|
||||
CONFIG_STM32H7_USART_SWAP=y
|
||||
CONFIG_SYSTEM_CDCACM=y
|
||||
CONFIG_SYSTEM_NSH=y
|
||||
CONFIG_TASK_NAME_SIZE=24
|
||||
CONFIG_UART5_IFLOWCONTROL=y
|
||||
CONFIG_UART5_OFLOWCONTROL=y
|
||||
CONFIG_UART5_RXDMA=y
|
||||
CONFIG_UART5_TXBUFSIZE=3000
|
||||
CONFIG_UART5_TXDMA=y
|
||||
CONFIG_UART7_BAUD=57600
|
||||
CONFIG_UART7_IFLOWCONTROL=y
|
||||
CONFIG_UART7_OFLOWCONTROL=y
|
||||
CONFIG_UART7_RXBUFSIZE=600
|
||||
CONFIG_UART7_RXDMA=y
|
||||
CONFIG_UART7_TXBUFSIZE=3000
|
||||
CONFIG_UART7_TXDMA=y
|
||||
CONFIG_UART8_BAUD=57600
|
||||
CONFIG_UART8_RXBUFSIZE=600
|
||||
CONFIG_UART8_TXBUFSIZE=1500
|
||||
CONFIG_USART1_BAUD=57600
|
||||
CONFIG_USART1_RXBUFSIZE=600
|
||||
CONFIG_USART1_TXBUFSIZE=1500
|
||||
CONFIG_USART2_BAUD=57600
|
||||
CONFIG_USART2_RXBUFSIZE=600
|
||||
CONFIG_USART2_TXBUFSIZE=3000
|
||||
CONFIG_USART3_BAUD=57600
|
||||
CONFIG_USART3_RXBUFSIZE=180
|
||||
CONFIG_USART3_RXDMA=y
|
||||
CONFIG_USART3_SERIAL_CONSOLE=y
|
||||
CONFIG_USART3_TXBUFSIZE=1500
|
||||
CONFIG_USART3_TXDMA=y
|
||||
CONFIG_USART6_BAUD=57600
|
||||
CONFIG_USART6_RXBUFSIZE=600
|
||||
CONFIG_USART6_TXBUFSIZE=1500
|
||||
CONFIG_USBDEV=y
|
||||
CONFIG_USBDEV_BUSPOWERED=y
|
||||
CONFIG_USBDEV_MAXPOWER=500
|
||||
CONFIG_USEC_PER_TICK=1000
|
||||
CONFIG_USERMAIN_STACKSIZE=2944
|
||||
CONFIG_USER_ENTRYPOINT="nsh_main"
|
||||
CONFIG_WATCHDOG=y
|
||||
CONFIG_WQUEUE_NOTIFIER=y
|
||||
@@ -1,215 +0,0 @@
|
||||
/****************************************************************************
|
||||
* scripts/script.ld
|
||||
*
|
||||
* Copyright (C) 2016, 2019 Gregory Nutt. All rights reserved.
|
||||
* Author: Gregory Nutt <gnutt@nuttx.org>
|
||||
*
|
||||
*
|
||||
* 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 NuttX 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.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
/* The PX4 FMUV6C uses an STM32H753II has 2048Kb of main FLASH memory.
|
||||
* The flash memory is partitioned into a User Flash memory and a System
|
||||
* Flash memory. Each of these memories has two banks:
|
||||
*
|
||||
* 1) User Flash memory:
|
||||
*
|
||||
* Bank 1: Start address 0x0800:0000 to 0x080F:FFFF with 8 sectors, 128Kb each
|
||||
* Bank 2: Start address 0x0810:0000 to 0x081F:FFFF with 8 sectors, 128Kb each
|
||||
*
|
||||
* 2) System Flash memory:
|
||||
*
|
||||
* Bank 1: Start address 0x1FF0:0000 to 0x1FF1:FFFF with 1 x 128Kb sector
|
||||
* Bank 1: Start address 0x1FF4:0000 to 0x1FF5:FFFF with 1 x 128Kb sector
|
||||
*
|
||||
* 3) User option bytes for user configuration, only in Bank 1.
|
||||
*
|
||||
* In the STM32H743II, two different boot spaces can be selected through
|
||||
* the BOOT pin and the boot base address programmed in the BOOT_ADD0 and
|
||||
* BOOT_ADD1 option bytes:
|
||||
*
|
||||
* 1) BOOT=0: Boot address defined by user option byte BOOT_ADD0[15:0].
|
||||
* ST programmed value: Flash memory at 0x0800:0000
|
||||
* 2) BOOT=1: Boot address defined by user option byte BOOT_ADD1[15:0].
|
||||
* ST programmed value: System bootloader at 0x1FF0:0000
|
||||
*
|
||||
* The PX4 FMUV6C has a test point on board, the BOOT0 pin is at ground so by
|
||||
* default, the STM32 will boot to address 0x0800:0000 in FLASH unless the test
|
||||
* point is pulled to 3.3V.then the boot will be from 0x1FF0:0000
|
||||
*
|
||||
* The STM32H743II also has 1024Kb of data SRAM.
|
||||
* SRAM is split up into several blocks and into three power domains:
|
||||
*
|
||||
* 1) TCM SRAMs are dedicated to the Cortex-M7 and are accessible with
|
||||
* 0 wait states by the Cortex-M7 and by MDMA through AHBS slave bus
|
||||
*
|
||||
* 1.1) 128Kb of DTCM-RAM beginning at address 0x2000:0000
|
||||
*
|
||||
* The DTCM-RAM is organized as 2 x 64Kb DTCM-RAMs on 2 x 32 bit
|
||||
* DTCM ports. The DTCM-RAM could be used for critical real-time
|
||||
* data, such as interrupt service routines or stack / heap memory.
|
||||
* Both DTCM-RAMs can be used in parallel (for load/store operations)
|
||||
* thanks to the Cortex-M7 dual issue capability.
|
||||
*
|
||||
* 1.2) 64Kb of ITCM-RAM beginning at address 0x0000:0000
|
||||
*
|
||||
* This RAM is connected to ITCM 64-bit interface designed for
|
||||
* execution of critical real-times routines by the CPU.
|
||||
*
|
||||
* 2) AXI SRAM (D1 domain) accessible by all system masters except BDMA
|
||||
* through D1 domain AXI bus matrix
|
||||
*
|
||||
* 2.1) 512Kb of SRAM beginning at address 0x2400:0000
|
||||
*
|
||||
* 3) AHB SRAM (D2 domain) accessible by all system masters except BDMA
|
||||
* through D2 domain AHB bus matrix
|
||||
*
|
||||
* 3.1) 128Kb of SRAM1 beginning at address 0x3000:0000
|
||||
* 3.2) 128Kb of SRAM2 beginning at address 0x3002:0000
|
||||
* 3.3) 32Kb of SRAM3 beginning at address 0x3004:0000
|
||||
*
|
||||
* SRAM1 - SRAM3 are one contiguous block: 288Kb at address 0x3000:0000
|
||||
*
|
||||
* 4) AHB SRAM (D3 domain) accessible by most of system masters
|
||||
* through D3 domain AHB bus matrix
|
||||
*
|
||||
* 4.1) 64Kb of SRAM4 beginning at address 0x3800:0000
|
||||
* 4.1) 4Kb of backup RAM beginning at address 0x3880:0000
|
||||
*
|
||||
* When booting from FLASH, FLASH memory is aliased to address 0x0000:0000
|
||||
* where the code expects to begin execution by jumping to the entry point in
|
||||
* the 0x0800:0000 address range.
|
||||
*
|
||||
* The bootloader uses the first sector of the flash, which is 128K in length.
|
||||
*/
|
||||
|
||||
MEMORY
|
||||
{
|
||||
itcm (rwx) : ORIGIN = 0x00000000, LENGTH = 64K
|
||||
flash (rx) : ORIGIN = 0x08000000, LENGTH = 128K
|
||||
dtcm1 (rwx) : ORIGIN = 0x20000000, LENGTH = 64K
|
||||
dtcm2 (rwx) : ORIGIN = 0x20010000, LENGTH = 64K
|
||||
sram (rwx) : ORIGIN = 0x24000000, LENGTH = 512K
|
||||
sram1 (rwx) : ORIGIN = 0x30000000, LENGTH = 128K
|
||||
sram2 (rwx) : ORIGIN = 0x30020000, LENGTH = 128K
|
||||
sram3 (rwx) : ORIGIN = 0x30040000, LENGTH = 32K
|
||||
sram4 (rwx) : ORIGIN = 0x38000000, LENGTH = 64K
|
||||
bbram (rwx) : ORIGIN = 0x38800000, LENGTH = 4K
|
||||
}
|
||||
|
||||
OUTPUT_ARCH(arm)
|
||||
EXTERN(_vectors)
|
||||
ENTRY(_stext)
|
||||
|
||||
/*
|
||||
* Ensure that abort() is present in the final object. The exception handling
|
||||
* code pulled in by libgcc.a requires it (and that code cannot be easily avoided).
|
||||
*/
|
||||
EXTERN(abort)
|
||||
EXTERN(_bootdelay_signature)
|
||||
|
||||
SECTIONS
|
||||
{
|
||||
.text : {
|
||||
_stext = ABSOLUTE(.);
|
||||
*(.vectors)
|
||||
. = ALIGN(32);
|
||||
/*
|
||||
This signature provides the bootloader with a way to delay booting
|
||||
*/
|
||||
_bootdelay_signature = ABSOLUTE(.);
|
||||
FILL(0xffecc2925d7d05c5)
|
||||
. += 8;
|
||||
*(.text .text.*)
|
||||
*(.fixup)
|
||||
*(.gnu.warning)
|
||||
*(.rodata .rodata.*)
|
||||
*(.gnu.linkonce.t.*)
|
||||
*(.glue_7)
|
||||
*(.glue_7t)
|
||||
*(.got)
|
||||
*(.gcc_except_table)
|
||||
*(.gnu.linkonce.r.*)
|
||||
_etext = ABSOLUTE(.);
|
||||
|
||||
} > flash
|
||||
|
||||
/*
|
||||
* Init functions (static constructors and the like)
|
||||
*/
|
||||
.init_section : {
|
||||
_sinit = ABSOLUTE(.);
|
||||
KEEP(*(.init_array .init_array.*))
|
||||
_einit = ABSOLUTE(.);
|
||||
} > flash
|
||||
|
||||
|
||||
.ARM.extab : {
|
||||
*(.ARM.extab*)
|
||||
} > flash
|
||||
|
||||
__exidx_start = ABSOLUTE(.);
|
||||
.ARM.exidx : {
|
||||
*(.ARM.exidx*)
|
||||
} > flash
|
||||
__exidx_end = ABSOLUTE(.);
|
||||
|
||||
_eronly = ABSOLUTE(.);
|
||||
|
||||
.data : {
|
||||
_sdata = ABSOLUTE(.);
|
||||
*(.data .data.*)
|
||||
*(.gnu.linkonce.d.*)
|
||||
CONSTRUCTORS
|
||||
_edata = ABSOLUTE(.);
|
||||
} > sram AT > flash
|
||||
|
||||
.bss : {
|
||||
_sbss = ABSOLUTE(.);
|
||||
*(.bss .bss.*)
|
||||
*(.gnu.linkonce.b.*)
|
||||
*(COMMON)
|
||||
. = ALIGN(4);
|
||||
_ebss = ABSOLUTE(.);
|
||||
} > sram
|
||||
|
||||
/* Stabs debugging sections. */
|
||||
.stab 0 : { *(.stab) }
|
||||
.stabstr 0 : { *(.stabstr) }
|
||||
.stab.excl 0 : { *(.stab.excl) }
|
||||
.stab.exclstr 0 : { *(.stab.exclstr) }
|
||||
.stab.index 0 : { *(.stab.index) }
|
||||
.stab.indexstr 0 : { *(.stab.indexstr) }
|
||||
.comment 0 : { *(.comment) }
|
||||
.debug_abbrev 0 : { *(.debug_abbrev) }
|
||||
.debug_info 0 : { *(.debug_info) }
|
||||
.debug_line 0 : { *(.debug_line) }
|
||||
.debug_pubnames 0 : { *(.debug_pubnames) }
|
||||
.debug_aranges 0 : { *(.debug_aranges) }
|
||||
}
|
||||
@@ -1,223 +0,0 @@
|
||||
/****************************************************************************
|
||||
* scripts/script.ld
|
||||
*
|
||||
* Copyright (C) 2016, 2019 Gregory Nutt. All rights reserved.
|
||||
* Author: Gregory Nutt <gnutt@nuttx.org>
|
||||
*
|
||||
*
|
||||
* 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 NuttX 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.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
/* The PX4 FMUV6C uses an STM32H753II has 2048Kb of main FLASH memory.
|
||||
* The flash memory is partitioned into a User Flash memory and a System
|
||||
* Flash memory. Each of these memories has two banks:
|
||||
*
|
||||
* 1) User Flash memory:
|
||||
*
|
||||
* Bank 1: Start address 0x0800:0000 to 0x080F:FFFF with 8 sectors, 128Kb each
|
||||
* Bank 2: Start address 0x0810:0000 to 0x081F:FFFF with 8 sectors, 128Kb each
|
||||
*
|
||||
* 2) System Flash memory:
|
||||
*
|
||||
* Bank 1: Start address 0x1FF0:0000 to 0x1FF1:FFFF with 1 x 128Kb sector
|
||||
* Bank 1: Start address 0x1FF4:0000 to 0x1FF5:FFFF with 1 x 128Kb sector
|
||||
*
|
||||
* 3) User option bytes for user configuration, only in Bank 1.
|
||||
*
|
||||
* In the STM32H743II, two different boot spaces can be selected through
|
||||
* the BOOT pin and the boot base address programmed in the BOOT_ADD0 and
|
||||
* BOOT_ADD1 option bytes:
|
||||
*
|
||||
* 1) BOOT=0: Boot address defined by user option byte BOOT_ADD0[15:0].
|
||||
* ST programmed value: Flash memory at 0x0800:0000
|
||||
* 2) BOOT=1: Boot address defined by user option byte BOOT_ADD1[15:0].
|
||||
* ST programmed value: System bootloader at 0x1FF0:0000
|
||||
*
|
||||
* The PX4 FMUV6C has a test point on board, the BOOT0 pin is at ground so by
|
||||
* default, the STM32 will boot to address 0x0800:0000 in FLASH unless the test
|
||||
* point is pulled to 3.3V.then the boot will be from 0x1FF0:0000
|
||||
*
|
||||
* The STM32H743II also has 1024Kb of data SRAM.
|
||||
* SRAM is split up into several blocks and into three power domains:
|
||||
*
|
||||
* 1) TCM SRAMs are dedicated to the Cortex-M7 and are accessible with
|
||||
* 0 wait states by the Cortex-M7 and by MDMA through AHBS slave bus
|
||||
*
|
||||
* 1.1) 128Kb of DTCM-RAM beginning at address 0x2000:0000
|
||||
*
|
||||
* The DTCM-RAM is organized as 2 x 64Kb DTCM-RAMs on 2 x 32 bit
|
||||
* DTCM ports. The DTCM-RAM could be used for critical real-time
|
||||
* data, such as interrupt service routines or stack / heap memory.
|
||||
* Both DTCM-RAMs can be used in parallel (for load/store operations)
|
||||
* thanks to the Cortex-M7 dual issue capability.
|
||||
*
|
||||
* 1.2) 64Kb of ITCM-RAM beginning at address 0x0000:0000
|
||||
*
|
||||
* This RAM is connected to ITCM 64-bit interface designed for
|
||||
* execution of critical real-times routines by the CPU.
|
||||
*
|
||||
* 2) AXI SRAM (D1 domain) accessible by all system masters except BDMA
|
||||
* through D1 domain AXI bus matrix
|
||||
*
|
||||
* 2.1) 512Kb of SRAM beginning at address 0x2400:0000
|
||||
*
|
||||
* 3) AHB SRAM (D2 domain) accessible by all system masters except BDMA
|
||||
* through D2 domain AHB bus matrix
|
||||
*
|
||||
* 3.1) 128Kb of SRAM1 beginning at address 0x3000:0000
|
||||
* 3.2) 128Kb of SRAM2 beginning at address 0x3002:0000
|
||||
* 3.3) 32Kb of SRAM3 beginning at address 0x3004:0000
|
||||
*
|
||||
* SRAM1 - SRAM3 are one contiguous block: 288Kb at address 0x3000:0000
|
||||
*
|
||||
* 4) AHB SRAM (D3 domain) accessible by most of system masters
|
||||
* through D3 domain AHB bus matrix
|
||||
*
|
||||
* 4.1) 64Kb of SRAM4 beginning at address 0x3800:0000
|
||||
* 4.1) 4Kb of backup RAM beginning at address 0x3880:0000
|
||||
*
|
||||
* When booting from FLASH, FLASH memory is aliased to address 0x0000:0000
|
||||
* where the code expects to begin execution by jumping to the entry point in
|
||||
* the 0x0800:0000 address range.
|
||||
*/
|
||||
|
||||
MEMORY
|
||||
{
|
||||
itcm (rwx) : ORIGIN = 0x00000000, LENGTH = 64K
|
||||
flash (rx) : ORIGIN = 0x08020000, LENGTH = 1920K
|
||||
dtcm1 (rwx) : ORIGIN = 0x20000000, LENGTH = 64K
|
||||
dtcm2 (rwx) : ORIGIN = 0x20010000, LENGTH = 64K
|
||||
sram (rwx) : ORIGIN = 0x24000000, LENGTH = 512K
|
||||
sram1 (rwx) : ORIGIN = 0x30000000, LENGTH = 128K
|
||||
sram2 (rwx) : ORIGIN = 0x30020000, LENGTH = 128K
|
||||
sram3 (rwx) : ORIGIN = 0x30040000, LENGTH = 32K
|
||||
sram4 (rwx) : ORIGIN = 0x38000000, LENGTH = 64K
|
||||
bbram (rwx) : ORIGIN = 0x38800000, LENGTH = 4K
|
||||
}
|
||||
|
||||
OUTPUT_ARCH(arm)
|
||||
EXTERN(_vectors)
|
||||
ENTRY(_stext)
|
||||
|
||||
/*
|
||||
* Ensure that abort() is present in the final object. The exception handling
|
||||
* code pulled in by libgcc.a requires it (and that code cannot be easily avoided).
|
||||
*/
|
||||
EXTERN(abort)
|
||||
EXTERN(_bootdelay_signature)
|
||||
EXTERN(board_get_manifest)
|
||||
|
||||
SECTIONS
|
||||
{
|
||||
.text : {
|
||||
_stext = ABSOLUTE(.);
|
||||
*(.vectors)
|
||||
. = ALIGN(32);
|
||||
/*
|
||||
This signature provides the bootloader with a way to delay booting
|
||||
*/
|
||||
_bootdelay_signature = ABSOLUTE(.);
|
||||
FILL(0xffecc2925d7d05c5)
|
||||
. += 8;
|
||||
*(.text .text.*)
|
||||
*(.fixup)
|
||||
*(.gnu.warning)
|
||||
*(.rodata .rodata.*)
|
||||
*(.gnu.linkonce.t.*)
|
||||
*(.glue_7)
|
||||
*(.glue_7t)
|
||||
*(.got)
|
||||
*(.gcc_except_table)
|
||||
*(.gnu.linkonce.r.*)
|
||||
_etext = ABSOLUTE(.);
|
||||
|
||||
} > flash
|
||||
|
||||
/*
|
||||
* Init functions (static constructors and the like)
|
||||
*/
|
||||
.init_section : {
|
||||
_sinit = ABSOLUTE(.);
|
||||
KEEP(*(.init_array .init_array.*))
|
||||
_einit = ABSOLUTE(.);
|
||||
} > flash
|
||||
|
||||
|
||||
.ARM.extab : {
|
||||
*(.ARM.extab*)
|
||||
} > flash
|
||||
|
||||
__exidx_start = ABSOLUTE(.);
|
||||
.ARM.exidx : {
|
||||
*(.ARM.exidx*)
|
||||
} > flash
|
||||
__exidx_end = ABSOLUTE(.);
|
||||
|
||||
_eronly = ABSOLUTE(.);
|
||||
|
||||
.data : {
|
||||
_sdata = ABSOLUTE(.);
|
||||
*(.data .data.*)
|
||||
*(.gnu.linkonce.d.*)
|
||||
CONSTRUCTORS
|
||||
_edata = ABSOLUTE(.);
|
||||
} > sram AT > flash
|
||||
|
||||
.bss : {
|
||||
_sbss = ABSOLUTE(.);
|
||||
*(.bss .bss.*)
|
||||
*(.gnu.linkonce.b.*)
|
||||
*(COMMON)
|
||||
. = ALIGN(4);
|
||||
_ebss = ABSOLUTE(.);
|
||||
} > sram
|
||||
|
||||
/* Emit the the D3 power domain section for locating BDMA data */
|
||||
|
||||
.sram4_reserve (NOLOAD) :
|
||||
{
|
||||
*(.sram4)
|
||||
. = ALIGN(4);
|
||||
_sram4_heap_start = ABSOLUTE(.);
|
||||
} > sram4
|
||||
|
||||
/* Stabs debugging sections. */
|
||||
.stab 0 : { *(.stab) }
|
||||
.stabstr 0 : { *(.stabstr) }
|
||||
.stab.excl 0 : { *(.stab.excl) }
|
||||
.stab.exclstr 0 : { *(.stab.exclstr) }
|
||||
.stab.index 0 : { *(.stab.index) }
|
||||
.stab.indexstr 0 : { *(.stab.indexstr) }
|
||||
.comment 0 : { *(.comment) }
|
||||
.debug_abbrev 0 : { *(.debug_abbrev) }
|
||||
.debug_info 0 : { *(.debug_info) }
|
||||
.debug_line 0 : { *(.debug_line) }
|
||||
.debug_pubnames 0 : { *(.debug_pubnames) }
|
||||
.debug_aranges 0 : { *(.debug_aranges) }
|
||||
}
|
||||
@@ -1,321 +0,0 @@
|
||||
/****************************************************************************
|
||||
*
|
||||
* Copyright (c) 2022 PX4 Development Team. All rights reserved.
|
||||
*
|
||||
* 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 PX4 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.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
/**
|
||||
* @file board_config.h
|
||||
*
|
||||
* PX4FMU-v6c internal definitions
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
/****************************************************************************************************
|
||||
* Included Files
|
||||
****************************************************************************************************/
|
||||
|
||||
#include <px4_platform_common/px4_config.h>
|
||||
#include <nuttx/compiler.h>
|
||||
#include <stdint.h>
|
||||
|
||||
|
||||
#include <stm32_gpio.h>
|
||||
|
||||
/****************************************************************************************************
|
||||
* Definitions
|
||||
****************************************************************************************************/
|
||||
|
||||
#undef TRACE_PINS
|
||||
|
||||
/* PX4IO connection configuration */
|
||||
|
||||
#define BOARD_USES_PX4IO_VERSION 2
|
||||
#define PX4IO_SERIAL_DEVICE "/dev/ttyS4"
|
||||
#define PX4IO_SERIAL_TX_GPIO GPIO_USART6_TX
|
||||
#define PX4IO_SERIAL_RX_GPIO GPIO_USART6_RX
|
||||
#define PX4IO_SERIAL_BASE STM32_USART6_BASE
|
||||
#define PX4IO_SERIAL_VECTOR STM32_IRQ_USART6
|
||||
#define PX4IO_SERIAL_TX_DMAMAP DMAMAP_USART6_TX
|
||||
#define PX4IO_SERIAL_RX_DMAMAP DMAMAP_USART6_RX
|
||||
#define PX4IO_SERIAL_RCC_REG STM32_RCC_APB2ENR
|
||||
#define PX4IO_SERIAL_RCC_EN RCC_APB2ENR_USART6EN
|
||||
#define PX4IO_SERIAL_CLOCK STM32_PCLK2_FREQUENCY
|
||||
#define PX4IO_SERIAL_BITRATE 1500000 /* 1.5Mbps -> max rate for IO */
|
||||
|
||||
/* PX4FMU GPIOs ***********************************************************************************/
|
||||
|
||||
|
||||
/* LEDs are driven with push pull Anodes to 3.3V */
|
||||
|
||||
#define GPIO_nLED_RED /* PD10 */ (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_50MHz|GPIO_OUTPUT_SET|GPIO_PORTD|GPIO_PIN10)
|
||||
#define GPIO_nLED_BLUE /* PD11 */ (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_50MHz|GPIO_OUTPUT_SET|GPIO_PORTD|GPIO_PIN11)
|
||||
|
||||
#define BOARD_HAS_CONTROL_STATUS_LEDS 1
|
||||
#define BOARD_OVERLOAD_LED LED_RED
|
||||
#define BOARD_ARMED_STATE_LED LED_BLUE
|
||||
|
||||
/*
|
||||
* ADC channels
|
||||
*
|
||||
* These are the channel numbers of the ADCs of the microcontroller that
|
||||
* can be used by the Px4 Firmware in the adc driver
|
||||
*/
|
||||
|
||||
/* ADC defines to be used in sensors.cpp to read from a particular channel */
|
||||
|
||||
#define ADC1_CH(n) (n)
|
||||
|
||||
/* N.B. there is no offset mapping needed for ADC3 because */
|
||||
#define ADC3_CH(n) (n)
|
||||
|
||||
/* We are only use ADC3 for REV/VER. */
|
||||
|
||||
/* Define GPIO pins used as ADC N.B. Channel numbers must match below */
|
||||
|
||||
#define PX4_ADC_GPIO \
|
||||
/* PC4 */ GPIO_ADC12_INP4, \
|
||||
/* PB1 */ GPIO_ADC12_INP5, \
|
||||
/* PC5 */ GPIO_ADC12_INP8, \
|
||||
/* PC0 */ GPIO_ADC123_INP10, \
|
||||
/* PC1 */ GPIO_ADC123_INP11, \
|
||||
/* PA2 */ GPIO_ADC12_INP14, \
|
||||
/* PA4 */ GPIO_ADC12_INP18 \
|
||||
|
||||
/* Define Channel numbers must match above GPIO pin IN(n)*/
|
||||
#define ADC_BATTERY1_CURRENT_CHANNEL /* PC4 */ ADC1_CH(4)
|
||||
#define ADC_BATTERY2_VOLTAGE_CHANNEL /* PB1 */ ADC1_CH(5)
|
||||
#define ADC_BATTERY1_VOLTAGE_CHANNEL /* PC5 */ ADC1_CH(8)
|
||||
#define ADC_HW_REV_SENSE_CHANNEL /* PC0 */ ADC3_CH(10)
|
||||
#define ADC_HW_VER_SENSE_CHANNEL /* PC1 */ ADC3_CH(11)
|
||||
#define ADC_BATTERY2_CURRENT_CHANNEL /* PA2 */ ADC1_CH(14)
|
||||
#define ADC_SCALED_V5_CHANNEL /* PA4 */ ADC1_CH(18)
|
||||
|
||||
#define ADC_CHANNELS \
|
||||
((1 << ADC_BATTERY1_CURRENT_CHANNEL) | \
|
||||
(1 << ADC_BATTERY2_VOLTAGE_CHANNEL) | \
|
||||
(1 << ADC_BATTERY1_VOLTAGE_CHANNEL) | \
|
||||
(1 << ADC_BATTERY2_CURRENT_CHANNEL) | \
|
||||
(1 << ADC_SCALED_V5_CHANNEL ))
|
||||
|
||||
#define HW_REV_VER_ADC_BASE STM32_ADC3_BASE
|
||||
|
||||
#define SYSTEM_ADC_BASE STM32_ADC1_BASE
|
||||
|
||||
/* HW has to large of R termination on ADC todo:change when HW value is chosen */
|
||||
#define BOARD_ADC_OPEN_CIRCUIT_V (5.6f)
|
||||
|
||||
/* HW Version and Revision drive signals Default to 1 to detect */
|
||||
#define BOARD_HAS_HW_VERSIONING
|
||||
|
||||
#define GPIO_HW_VER_REV_DRIVE /* PE12 */ (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_SET|GPIO_PORTE|GPIO_PIN12)
|
||||
#define GPIO_HW_REV_SENSE /* PC0 */ GPIO_ADC123_INP10
|
||||
#define GPIO_HW_VER_SENSE /* PC1 */ GPIO_ADC123_INP11
|
||||
#define HW_INFO_INIT {'V','6','C','x', 'x',0}
|
||||
#define HW_INFO_INIT_VER 3 /* Offset in above string of the VER */
|
||||
#define HW_INFO_INIT_REV 4 /* Offset in above string of the REV */
|
||||
|
||||
#define BOARD_NUM_SPI_CFG_HW_VERSIONS 2 // Rev 0, 10 Sensor sets
|
||||
// Base/FMUM
|
||||
#define V6C00 HW_VER_REV(0x0,0x0) // FMUV6C, Rev 0
|
||||
#define V6C10 HW_VER_REV(0x1,0x0) // NO PX4IO, Rev 0
|
||||
|
||||
|
||||
/* HEATER
|
||||
* PWM in future
|
||||
*/
|
||||
#define GPIO_HEATER_OUTPUT /* PB9 T17CH1 */ (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTB|GPIO_PIN9)
|
||||
#define HEATER_OUTPUT_EN(on_true) px4_arch_gpiowrite(GPIO_HEATER_OUTPUT, (on_true))
|
||||
|
||||
/* PWM
|
||||
*/
|
||||
#define DIRECT_PWM_OUTPUT_CHANNELS 8
|
||||
|
||||
|
||||
/* Power supply control and monitoring GPIOs */
|
||||
|
||||
#define GPIO_nPOWER_IN_A /* PA15 */ (GPIO_INPUT|GPIO_PULLUP|GPIO_PORTA|GPIO_PIN15)
|
||||
#define GPIO_nPOWER_IN_B /* PB12 */ (GPIO_INPUT|GPIO_PULLUP|GPIO_PORTB|GPIO_PIN12)
|
||||
#define GPIO_nPOWER_IN_C /* PE15 */ (GPIO_INPUT|GPIO_PULLUP|GPIO_PORTE|GPIO_PIN15)
|
||||
|
||||
#define GPIO_nVDD_BRICK1_VALID GPIO_nPOWER_IN_A /* Brick 1 Is Chosen */
|
||||
#define GPIO_nVDD_BRICK2_VALID GPIO_nPOWER_IN_B /* Brick 2 Is Chosen */
|
||||
#define BOARD_NUMBER_BRICKS 2
|
||||
#define GPIO_nVDD_USB_VALID GPIO_nPOWER_IN_C /* USB Is Chosen */
|
||||
|
||||
#define GPIO_VDD_5V_PERIPH_nEN /* PE2 */ (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_SET|GPIO_PORTE|GPIO_PIN2)
|
||||
#define GPIO_VDD_5V_PERIPH_nOC /* PE3 */ (GPIO_INPUT |GPIO_FLOAT|GPIO_PORTE|GPIO_PIN3)
|
||||
#define GPIO_VDD_5V_HIPOWER_nEN /* PC10 */ (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_SET|GPIO_PORTC|GPIO_PIN10)
|
||||
#define GPIO_VDD_5V_HIPOWER_nOC /* PC11 */ (GPIO_INPUT |GPIO_FLOAT|GPIO_PORTC|GPIO_PIN11)
|
||||
#define GPIO_VDD_3V3_SENSORS_EN /* PB2 */ (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTB|GPIO_PIN2)
|
||||
|
||||
/* Define True logic Power Control in arch agnostic form */
|
||||
|
||||
#define VDD_5V_PERIPH_EN(on_true) px4_arch_gpiowrite(GPIO_VDD_5V_PERIPH_nEN, !(on_true))
|
||||
#define VDD_5V_HIPOWER_EN(on_true) px4_arch_gpiowrite(GPIO_VDD_5V_HIPOWER_nEN, !(on_true))
|
||||
#define VDD_3V3_SENSORS_EN(on_true) px4_arch_gpiowrite(GPIO_VDD_3V3_SENSORS4_EN, (on_true))
|
||||
|
||||
/* Tone alarm output */
|
||||
|
||||
#define TONE_ALARM_TIMER 3 /* Timer 3 */
|
||||
#define TONE_ALARM_CHANNEL 3 /* PB0 GPIO_TIM3_CH3OUT_1 */
|
||||
|
||||
#define GPIO_BUZZER_1 /* PPB0 */ (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_CLEAR|GPIO_PORTB|GPIO_PIN0)
|
||||
|
||||
#define GPIO_TONE_ALARM_IDLE GPIO_BUZZER_1
|
||||
#define GPIO_TONE_ALARM GPIO_TIM3_CH3OUT_1
|
||||
|
||||
/* USB OTG FS
|
||||
*
|
||||
* PA9 OTG_FS_VBUS VBUS sensing
|
||||
*/
|
||||
#define GPIO_OTGFS_VBUS /* PA9 */ (GPIO_INPUT|GPIO_PULLDOWN|GPIO_SPEED_100MHz|GPIO_PORTA|GPIO_PIN9)
|
||||
|
||||
/* High-resolution timer */
|
||||
#define HRT_TIMER 8 /* use timer8 for the HRT */
|
||||
#define HRT_TIMER_CHANNEL 3 /* use capture/compare channel 3 */
|
||||
|
||||
/* PWM input driver. Use FMU AUX5 pins attached to timer4 channel 3 */
|
||||
#define PWMIN_TIMER 4
|
||||
#define PWMIN_TIMER_CHANNEL /* T4C3 */ 3
|
||||
#define GPIO_PWM_IN /* PD14 */ GPIO_TIM4_CH3IN_2
|
||||
|
||||
#define SDIO_SLOTNO 0 /* Only one slot */
|
||||
#define SDIO_MINOR 0
|
||||
|
||||
/* SD card bringup does not work if performed on the IDLE thread because it
|
||||
* will cause waiting. Use either:
|
||||
*
|
||||
* CONFIG_LIB_BOARDCTL=y, OR
|
||||
* CONFIG_BOARD_INITIALIZE=y && CONFIG_BOARD_INITTHREAD=y
|
||||
*/
|
||||
|
||||
#if defined(CONFIG_BOARD_INITIALIZE) && !defined(CONFIG_LIB_BOARDCTL) && \
|
||||
!defined(CONFIG_BOARD_INITTHREAD)
|
||||
# warning SDIO initialization cannot be perfomed on the IDLE thread
|
||||
#endif
|
||||
|
||||
/* By Providing BOARD_ADC_USB_CONNECTED (using the px4_arch abstraction)
|
||||
* this board support the ADC system_power interface, and therefore
|
||||
* provides the true logic GPIO BOARD_ADC_xxxx macros.
|
||||
*/
|
||||
#define BOARD_ADC_USB_CONNECTED (px4_arch_gpioread(GPIO_OTGFS_VBUS))
|
||||
#define BOARD_ADC_USB_VALID (!px4_arch_gpioread(GPIO_nVDD_USB_VALID))
|
||||
|
||||
/* FMUv6C never powers off the Servo rail */
|
||||
|
||||
#define BOARD_ADC_SERVO_VALID (1)
|
||||
|
||||
#define BOARD_ADC_BRICK1_VALID (!px4_arch_gpioread(GPIO_nVDD_BRICK1_VALID))
|
||||
#define BOARD_ADC_BRICK2_VALID (!px4_arch_gpioread(GPIO_nVDD_BRICK2_VALID))
|
||||
|
||||
#define BOARD_ADC_PERIPH_5V_OC (!px4_arch_gpioread(GPIO_VDD_5V_PERIPH_nOC))
|
||||
#define BOARD_ADC_HIPOWER_5V_OC (!px4_arch_gpioread(GPIO_VDD_5V_HIPOWER_nOC))
|
||||
|
||||
|
||||
/* This board provides a DMA pool and APIs */
|
||||
#define BOARD_DMA_ALLOC_POOL_SIZE 5120
|
||||
|
||||
/* This board provides the board_on_reset interface */
|
||||
|
||||
#define BOARD_HAS_ON_RESET 1
|
||||
|
||||
#define PX4_GPIO_INIT_LIST { \
|
||||
PX4_ADC_GPIO, \
|
||||
GPIO_HW_VER_REV_DRIVE, \
|
||||
GPIO_CAN1_TX, \
|
||||
GPIO_CAN1_RX, \
|
||||
GPIO_CAN2_TX, \
|
||||
GPIO_CAN2_RX, \
|
||||
GPIO_HEATER_OUTPUT, \
|
||||
GPIO_nPOWER_IN_A, \
|
||||
GPIO_nPOWER_IN_B, \
|
||||
GPIO_nPOWER_IN_C, \
|
||||
GPIO_VDD_5V_PERIPH_nEN, \
|
||||
GPIO_VDD_5V_PERIPH_nOC, \
|
||||
GPIO_VDD_5V_HIPOWER_nEN, \
|
||||
GPIO_VDD_5V_HIPOWER_nOC, \
|
||||
GPIO_VDD_3V3_SENSORS_EN, \
|
||||
GPIO_TONE_ALARM_IDLE, \
|
||||
}
|
||||
|
||||
#define BOARD_ENABLE_CONSOLE_BUFFER
|
||||
|
||||
#define PX4_I2C_BUS_MTD 4,5
|
||||
|
||||
|
||||
#define BOARD_NUM_IO_TIMERS 5
|
||||
|
||||
__BEGIN_DECLS
|
||||
|
||||
/****************************************************************************************************
|
||||
* Public Types
|
||||
****************************************************************************************************/
|
||||
|
||||
/****************************************************************************************************
|
||||
* Public data
|
||||
****************************************************************************************************/
|
||||
|
||||
#ifndef __ASSEMBLY__
|
||||
|
||||
/****************************************************************************************************
|
||||
* Public Functions
|
||||
****************************************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Name: stm32_sdio_initialize
|
||||
*
|
||||
* Description:
|
||||
* Initialize SDIO-based MMC/SD card support
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
int stm32_sdio_initialize(void);
|
||||
|
||||
/****************************************************************************************************
|
||||
* Name: stm32_spiinitialize
|
||||
*
|
||||
* Description:
|
||||
* Called to configure SPI chip select GPIO pins for the PX4FMU board.
|
||||
*
|
||||
****************************************************************************************************/
|
||||
|
||||
extern void stm32_spiinitialize(void);
|
||||
|
||||
extern void stm32_usbinitialize(void);
|
||||
|
||||
extern void board_peripheral_reset(int ms);
|
||||
|
||||
#include <px4_platform_common/board_common.h>
|
||||
|
||||
#endif /* __ASSEMBLY__ */
|
||||
|
||||
__END_DECLS
|
||||
@@ -1,128 +0,0 @@
|
||||
/****************************************************************************
|
||||
*
|
||||
* Copyright (C) 2012 PX4 Development Team. All rights reserved.
|
||||
*
|
||||
* 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 PX4 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.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
/**
|
||||
* @file px4fmu_can.c
|
||||
*
|
||||
* Board-specific CAN functions.
|
||||
*/
|
||||
|
||||
#ifdef CONFIG_CAN
|
||||
|
||||
#include <errno.h>
|
||||
#include <debug.h>
|
||||
|
||||
#include <nuttx/can/can.h>
|
||||
#include <arch/board/board.h>
|
||||
|
||||
#include "chip.h"
|
||||
#include "arm_arch.h"
|
||||
|
||||
#include "chip.h"
|
||||
#include "stm32_can.h"
|
||||
#include "board_config.h"
|
||||
|
||||
#ifdef CONFIG_CAN
|
||||
|
||||
/************************************************************************************
|
||||
* Pre-processor Definitions
|
||||
************************************************************************************/
|
||||
/* Configuration ********************************************************************/
|
||||
|
||||
#if defined(CONFIG_STM32_CAN1) && defined(CONFIG_STM32_CAN2)
|
||||
# warning "Both CAN1 and CAN2 are enabled. Assuming only CAN1."
|
||||
# undef CONFIG_STM32_CAN2
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_STM32_CAN1
|
||||
# define CAN_PORT 1
|
||||
#else
|
||||
# define CAN_PORT 2
|
||||
#endif
|
||||
|
||||
/************************************************************************************
|
||||
* Private Functions
|
||||
************************************************************************************/
|
||||
|
||||
/************************************************************************************
|
||||
* Public Functions
|
||||
************************************************************************************/
|
||||
int can_devinit(void);
|
||||
|
||||
/************************************************************************************
|
||||
* Name: can_devinit
|
||||
*
|
||||
* Description:
|
||||
* All STM32 architectures must provide the following interface to work with
|
||||
* examples/can.
|
||||
*
|
||||
************************************************************************************/
|
||||
|
||||
int can_devinit(void)
|
||||
{
|
||||
static bool initialized = false;
|
||||
struct can_dev_s *can;
|
||||
int ret;
|
||||
|
||||
/* Check if we have already initialized */
|
||||
|
||||
if (!initialized) {
|
||||
/* Call stm32_caninitialize() to get an instance of the CAN interface */
|
||||
|
||||
can = stm32_caninitialize(CAN_PORT);
|
||||
|
||||
if (can == NULL) {
|
||||
canerr("ERROR: Failed to get CAN interface\n");
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
/* Register the CAN driver at "/dev/can0" */
|
||||
|
||||
ret = can_register("/dev/can0", can);
|
||||
|
||||
if (ret < 0) {
|
||||
canerr("ERROR: can_register failed: %d\n", ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* Now we are initialized */
|
||||
|
||||
initialized = true;
|
||||
}
|
||||
|
||||
return OK;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
#endif /* CONFIG_CAN */
|
||||
@@ -1,128 +0,0 @@
|
||||
/*
|
||||
* hw_config.h
|
||||
*
|
||||
* Created on: May 17, 2015
|
||||
* Author: david_s5
|
||||
*/
|
||||
|
||||
#ifndef HW_CONFIG_H_
|
||||
#define HW_CONFIG_H_
|
||||
|
||||
/****************************************************************************
|
||||
* 10-8--2016:
|
||||
* To simplify the ripple effect on the tools, we will be using
|
||||
* /dev/serial/by-id/<asterisk>PX4<asterisk> to locate PX4 devices. Therefore
|
||||
* moving forward all Bootloaders must contain the prefix "PX4 BL "
|
||||
* in the USBDEVICESTRING
|
||||
* This Change will be made in an upcoming BL release
|
||||
****************************************************************************/
|
||||
/*
|
||||
* Define usage to configure a bootloader
|
||||
*
|
||||
*
|
||||
* Constant example Usage
|
||||
* APP_LOAD_ADDRESS 0x08004000 - The address in Linker Script, where the app fw is org-ed
|
||||
* BOOTLOADER_DELAY 5000 - Ms to wait while under USB pwr or bootloader request
|
||||
* BOARD_FMUV2
|
||||
* INTERFACE_USB 1 - (Optional) Scan and use the USB interface for bootloading
|
||||
* INTERFACE_USART 1 - (Optional) Scan and use the Serial interface for bootloading
|
||||
* USBDEVICESTRING "PX4 BL FMU v2.x" - USB id string
|
||||
* USBPRODUCTID 0x0011 - PID Should match defconfig
|
||||
* BOOT_DELAY_ADDRESS 0x000001a0 - (Optional) From the linker script from Linker Script to get a custom
|
||||
* delay provided by an APP FW
|
||||
* BOARD_TYPE 9 - Must match .prototype boad_id
|
||||
* _FLASH_KBYTES (*(uint16_t *)0x1fff7a22) - Run time flash size detection
|
||||
* BOARD_FLASH_SECTORS ((_FLASH_KBYTES == 0x400) ? 11 : 23) - Run time determine the physical last sector
|
||||
* BOARD_FLASH_SECTORS 11 - Hard coded zero based last sector
|
||||
* BOARD_FLASH_SIZE (_FLASH_KBYTES*1024)- Total Flash size of device, determined at run time.
|
||||
* (1024 * 1024) - Hard coded Total Flash of device - The bootloader and app reserved will be deducted
|
||||
* programmatically
|
||||
*
|
||||
* BOARD_FIRST_FLASH_SECTOR_TO_ERASE 2 - Optional sectors index in the flash_sectors table (F4 only), to begin erasing.
|
||||
* This is to allow sectors to be reserved for app fw usage. That will NOT be erased
|
||||
* during a FW upgrade.
|
||||
* The default is 0, and selects the first sector to be erased, as the 0th entry in the
|
||||
* flash_sectors table. Which is the second physical sector of FLASH in the device.
|
||||
* The first physical sector of FLASH is used by the bootloader, and is not defined
|
||||
* in the table.
|
||||
*
|
||||
* APP_RESERVATION_SIZE (BOARD_FIRST_FLASH_SECTOR_TO_ERASE * 16 * 1024) - Number of bytes reserved by the APP FW. This number plus
|
||||
* BOOTLOADER_RESERVATION_SIZE will be deducted from
|
||||
* BOARD_FLASH_SIZE to determine the size of the App FW
|
||||
* and hence the address space of FLASH to erase and program.
|
||||
* USBMFGSTRING "PX4 AP" - Optional USB MFG string (default is '3D Robotics' if not defined.)
|
||||
* SERIAL_BREAK_DETECT_DISABLED - Optional prevent break selection on Serial port from entering or staying in BL
|
||||
*
|
||||
* * Other defines are somewhat self explanatory.
|
||||
*/
|
||||
|
||||
/* Boot device selection list*/
|
||||
#define USB0_DEV 0x01
|
||||
#define SERIAL0_DEV 0x02
|
||||
#define SERIAL1_DEV 0x04
|
||||
|
||||
#define APP_LOAD_ADDRESS 0x08020000
|
||||
#define BOOTLOADER_DELAY 5000
|
||||
#define INTERFACE_USB 1
|
||||
#define INTERFACE_USB_CONFIG "/dev/ttyACM0"
|
||||
#define BOARD_VBUS MK_GPIO_INPUT(GPIO_OTGFS_VBUS)
|
||||
|
||||
//#define USE_VBUS_PULL_DOWN
|
||||
#define INTERFACE_USART 1
|
||||
#define INTERFACE_USART_CONFIG "/dev/ttyS0,115200"
|
||||
#define BOOT_DELAY_ADDRESS 0x000001a0
|
||||
#define BOARD_TYPE 56
|
||||
#define _FLASH_KBYTES (*(uint32_t *)0x1FF1E880)
|
||||
#define BOARD_FLASH_SECTORS (15)
|
||||
#define BOARD_FLASH_SIZE (_FLASH_KBYTES * 1024)
|
||||
|
||||
#define OSC_FREQ 16
|
||||
|
||||
#define BOARD_PIN_LED_ACTIVITY GPIO_nLED_BLUE // BLUE
|
||||
#define BOARD_PIN_LED_BOOTLOADER GPIO_nLED_RED // RED
|
||||
#define BOARD_LED_ON 0
|
||||
#define BOARD_LED_OFF 1
|
||||
|
||||
#define SERIAL_BREAK_DETECT_DISABLED 1
|
||||
|
||||
/*
|
||||
* Uncommenting this allows to force the bootloader through
|
||||
* a PWM output pin. As this can accidentally initialize
|
||||
* an ESC prematurely, it is not recommended. This feature
|
||||
* has not been used and hence defaults now to off.
|
||||
*
|
||||
* # define BOARD_FORCE_BL_PIN_OUT (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_SET|GPIO_PORTE|GPIO_PIN14)
|
||||
* # define BOARD_FORCE_BL_PIN_IN (GPIO_INPUT|GPIO_PULLUP|GPIO_PORTE|GPIO_PIN11)
|
||||
*
|
||||
* # define BOARD_POWER_PIN_OUT (GPIO_OUTPUT|GPIO_PUSHPULL|GPIO_SPEED_2MHz|GPIO_OUTPUT_SET|GPIO_PORTA|GPIO_PIN4)
|
||||
* # define BOARD_POWER_ON 1
|
||||
* # define BOARD_POWER_OFF 0
|
||||
* # undef BOARD_POWER_PIN_RELEASE // Leave pin enabling Power - un comment to release (disable power)
|
||||
*
|
||||
*/
|
||||
|
||||
#if !defined(ARCH_SN_MAX_LENGTH)
|
||||
# define ARCH_SN_MAX_LENGTH 12
|
||||
#endif
|
||||
|
||||
#if !defined(APP_RESERVATION_SIZE)
|
||||
# define APP_RESERVATION_SIZE 0
|
||||
#endif
|
||||
|
||||
#if !defined(BOARD_FIRST_FLASH_SECTOR_TO_ERASE)
|
||||
# define BOARD_FIRST_FLASH_SECTOR_TO_ERASE 1
|
||||
#endif
|
||||
|
||||
#if !defined(USB_DATA_ALIGN)
|
||||
# define USB_DATA_ALIGN
|
||||
#endif
|
||||
|
||||
#ifndef BOOT_DEVICES_SELECTION
|
||||
# define BOOT_DEVICES_SELECTION USB0_DEV|SERIAL0_DEV|SERIAL1_DEV
|
||||
#endif
|
||||
|
||||
#ifndef BOOT_DEVICES_FILTER_ONUSB
|
||||
# define BOOT_DEVICES_FILTER_ONUSB USB0_DEV|SERIAL0_DEV|SERIAL1_DEV
|
||||
#endif
|
||||
|
||||
#endif /* HW_CONFIG_H_ */
|
||||
@@ -1,40 +0,0 @@
|
||||
/****************************************************************************
|
||||
*
|
||||
* Copyright (C) 2020 PX4 Development Team. All rights reserved.
|
||||
*
|
||||
* 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 PX4 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.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#include <px4_arch/i2c_hw_description.h>
|
||||
|
||||
constexpr px4_i2c_bus_t px4_i2c_buses[I2C_BUS_MAX_BUS_ITEMS] = {
|
||||
initI2CBusExternal(1),
|
||||
initI2CBusExternal(2),
|
||||
initI2CBusInternal(4),
|
||||
};
|
||||
@@ -1,259 +0,0 @@
|
||||
/****************************************************************************
|
||||
*
|
||||
* Copyright (c) 2012-2022 PX4 Development Team. All rights reserved.
|
||||
*
|
||||
* 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 PX4 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.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
/**
|
||||
* @file init.c
|
||||
*
|
||||
* PX4FMU-specific early startup code. This file implements the
|
||||
* board_app_initialize() function that is called early by nsh during startup.
|
||||
*
|
||||
* Code here is run before the rcS script is invoked; it should start required
|
||||
* subsystems and perform board-specific initialization.
|
||||
*/
|
||||
|
||||
/****************************************************************************
|
||||
* Included Files
|
||||
****************************************************************************/
|
||||
|
||||
#include "board_config.h"
|
||||
|
||||
#include <stdbool.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <debug.h>
|
||||
#include <errno.h>
|
||||
#include <syslog.h>
|
||||
|
||||
#include <nuttx/config.h>
|
||||
#include <nuttx/board.h>
|
||||
#include <nuttx/spi/spi.h>
|
||||
#include <nuttx/sdio.h>
|
||||
#include <nuttx/mmcsd.h>
|
||||
#include <nuttx/analog/adc.h>
|
||||
#include <nuttx/mm/gran.h>
|
||||
#include <chip.h>
|
||||
#include <stm32_uart.h>
|
||||
#include <arch/board/board.h>
|
||||
#include "arm_internal.h"
|
||||
|
||||
#include <drivers/drv_hrt.h>
|
||||
#include <drivers/drv_board_led.h>
|
||||
#include <systemlib/px4_macros.h>
|
||||
#include <px4_arch/io_timer.h>
|
||||
#include <px4_platform_common/init.h>
|
||||
#include <px4_platform/gpio.h>
|
||||
#include <px4_platform/board_determine_hw_info.h>
|
||||
#include <px4_platform/board_dma_alloc.h>
|
||||
|
||||
/****************************************************************************
|
||||
* Pre-Processor Definitions
|
||||
****************************************************************************/
|
||||
|
||||
/* Configuration ************************************************************/
|
||||
|
||||
/*
|
||||
* Ideally we'd be able to get these from arm_internal.h,
|
||||
* but since we want to be able to disable the NuttX use
|
||||
* of leds for system indication at will and there is no
|
||||
* separate switch, we need to build independent of the
|
||||
* CONFIG_ARCH_LEDS configuration switch.
|
||||
*/
|
||||
__BEGIN_DECLS
|
||||
extern void led_init(void);
|
||||
extern void led_on(int led);
|
||||
extern void led_off(int led);
|
||||
__END_DECLS
|
||||
|
||||
|
||||
/************************************************************************************
|
||||
* Name: board_peripheral_reset
|
||||
*
|
||||
* Description:
|
||||
*
|
||||
************************************************************************************/
|
||||
__EXPORT void board_peripheral_reset(int ms)
|
||||
{
|
||||
/* set the peripheral rails off */
|
||||
|
||||
VDD_5V_PERIPH_EN(false);
|
||||
board_control_spi_sensors_power(false, 0xffff);
|
||||
|
||||
/* wait for the peripheral rail to reach GND */
|
||||
usleep(ms * 1000);
|
||||
syslog(LOG_DEBUG, "reset done, %d ms\n", ms);
|
||||
|
||||
/* re-enable power */
|
||||
|
||||
/* switch the peripheral rail back on */
|
||||
board_control_spi_sensors_power(true, 0xffff);
|
||||
VDD_5V_PERIPH_EN(true);
|
||||
|
||||
}
|
||||
|
||||
/************************************************************************************
|
||||
* Name: board_on_reset
|
||||
*
|
||||
* Description:
|
||||
* Optionally provided function called on entry to board_system_reset
|
||||
* It should perform any house keeping prior to the rest.
|
||||
*
|
||||
* status - 1 if resetting to boot loader
|
||||
* 0 if just resetting
|
||||
*
|
||||
************************************************************************************/
|
||||
__EXPORT void board_on_reset(int status)
|
||||
{
|
||||
for (int i = 0; i < DIRECT_PWM_OUTPUT_CHANNELS; ++i) {
|
||||
px4_arch_configgpio(io_timer_channel_get_gpio_output(i));
|
||||
}
|
||||
|
||||
if (status >= 0) {
|
||||
up_mdelay(6);
|
||||
}
|
||||
}
|
||||
|
||||
/************************************************************************************
|
||||
* Name: stm32_boardinitialize
|
||||
*
|
||||
* Description:
|
||||
* All STM32 architectures must provide the following entry point. This entry point
|
||||
* is called early in the initialization -- after all memory has been configured
|
||||
* and mapped but before any devices have been initialized.
|
||||
*
|
||||
************************************************************************************/
|
||||
|
||||
__EXPORT void
|
||||
stm32_boardinitialize(void)
|
||||
{
|
||||
board_on_reset(-1); /* Reset PWM first thing */
|
||||
|
||||
/* configure LEDs */
|
||||
|
||||
board_autoled_initialize();
|
||||
|
||||
/* configure pins */
|
||||
|
||||
const uint32_t gpio[] = PX4_GPIO_INIT_LIST;
|
||||
px4_gpio_init(gpio, arraySize(gpio));
|
||||
|
||||
/* configure USB interfaces */
|
||||
|
||||
stm32_usbinitialize();
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Name: board_app_initialize
|
||||
*
|
||||
* Description:
|
||||
* Perform application specific initialization. This function is never
|
||||
* called directly from application code, but only indirectly via the
|
||||
* (non-standard) boardctl() interface using the command BOARDIOC_INIT.
|
||||
*
|
||||
* Input Parameters:
|
||||
* arg - The boardctl() argument is passed to the board_app_initialize()
|
||||
* implementation without modification. The argument has no
|
||||
* meaning to NuttX; the meaning of the argument is a contract
|
||||
* between the board-specific initalization logic and the the
|
||||
* matching application logic. The value cold be such things as a
|
||||
* mode enumeration value, a set of DIP switch switch settings, a
|
||||
* pointer to configuration data read from a file or serial FLASH,
|
||||
* or whatever you would like to do with it. Every implementation
|
||||
* should accept zero/NULL as a default configuration.
|
||||
*
|
||||
* Returned Value:
|
||||
* Zero (OK) is returned on success; a negated errno value is returned on
|
||||
* any failure to indicate the nature of the failure.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
__EXPORT int board_app_initialize(uintptr_t arg)
|
||||
{
|
||||
#if !defined(BOOTLOADER)
|
||||
|
||||
/* Power on Interfaces */
|
||||
VDD_5V_PERIPH_EN(true);
|
||||
VDD_5V_HIPOWER_EN(true);
|
||||
|
||||
/* Need hrt running before using the ADC */
|
||||
|
||||
px4_platform_init();
|
||||
|
||||
|
||||
if (OK == board_determine_hw_info()) {
|
||||
syslog(LOG_INFO, "[boot] Rev 0x%1x : Ver 0x%1x %s\n", board_get_hw_revision(), board_get_hw_version(),
|
||||
board_get_hw_type_name());
|
||||
|
||||
} else {
|
||||
syslog(LOG_ERR, "[boot] Failed to read HW revision and version\n");
|
||||
}
|
||||
|
||||
stm32_spiinitialize();
|
||||
|
||||
board_spi_reset(10, 0xffff);
|
||||
|
||||
/* configure the DMA allocator */
|
||||
|
||||
if (board_dma_alloc_init() < 0) {
|
||||
syslog(LOG_ERR, "[boot] DMA alloc FAILED\n");
|
||||
}
|
||||
|
||||
# if defined(SERIAL_HAVE_RXDMA)
|
||||
// set up the serial DMA polling at 1ms intervals for received bytes that have not triggered a DMA event.
|
||||
static struct hrt_call serial_dma_call;
|
||||
hrt_call_every(&serial_dma_call, 1000, 1000, (hrt_callout)stm32_serial_dma_poll, NULL);
|
||||
# endif
|
||||
|
||||
/* initial LED state */
|
||||
drv_led_start();
|
||||
led_off(LED_RED);
|
||||
led_off(LED_BLUE);
|
||||
|
||||
if (board_hardfault_init(2, true) != 0) {
|
||||
led_on(LED_RED);
|
||||
}
|
||||
|
||||
# ifdef CONFIG_MMCSD
|
||||
int ret = stm32_sdio_initialize();
|
||||
|
||||
if (ret != OK) {
|
||||
led_on(LED_RED);
|
||||
}
|
||||
|
||||
# endif /* CONFIG_MMCSD */
|
||||
|
||||
/* Configure the HW based on the manifest */
|
||||
|
||||
px4_platform_configure();
|
||||
#endif
|
||||
return OK;
|
||||
}
|
||||
@@ -1,235 +0,0 @@
|
||||
/****************************************************************************
|
||||
*
|
||||
* Copyright (c) 2013 PX4 Development Team. All rights reserved.
|
||||
*
|
||||
* 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 PX4 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.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
/**
|
||||
* @file px4fmu2_led.c
|
||||
*
|
||||
* PX4FMU LED backend.
|
||||
*/
|
||||
|
||||
#include <px4_platform_common/px4_config.h>
|
||||
|
||||
#include <stdbool.h>
|
||||
|
||||
#include "chip.h"
|
||||
#include "stm32_gpio.h"
|
||||
#include "board_config.h"
|
||||
|
||||
#include <nuttx/board.h>
|
||||
#include <arch/board/board.h>
|
||||
|
||||
/*
|
||||
* Ideally we'd be able to get these from arm_internal.h,
|
||||
* but since we want to be able to disable the NuttX use
|
||||
* of leds for system indication at will and there is no
|
||||
* separate switch, we need to build independent of the
|
||||
* CONFIG_ARCH_LEDS configuration switch.
|
||||
*/
|
||||
__BEGIN_DECLS
|
||||
extern void led_init(void);
|
||||
extern void led_on(int led);
|
||||
extern void led_off(int led);
|
||||
extern void led_toggle(int led);
|
||||
__END_DECLS
|
||||
|
||||
#ifdef CONFIG_ARCH_LEDS
|
||||
static bool nuttx_owns_leds = true;
|
||||
// B R S G
|
||||
// 0 1 2 3
|
||||
static const uint8_t xlatpx4[] = {1, 2, 4, 0};
|
||||
# define xlat(p) xlatpx4[(p)]
|
||||
static uint32_t g_ledmap[] = {
|
||||
GPIO_nLED_GREEN, // Indexed by BOARD_LED_GREEN
|
||||
GPIO_nLED_BLUE, // Indexed by BOARD_LED_BLUE
|
||||
GPIO_nLED_RED, // Indexed by BOARD_LED_RED
|
||||
GPIO_nSAFETY_SWITCH_LED_OUT, // Indexed by LED_SAFETY by xlatpx4
|
||||
};
|
||||
|
||||
#else
|
||||
|
||||
# define xlat(p) (p)
|
||||
static uint32_t g_ledmap[] = {
|
||||
GPIO_nLED_BLUE, // Indexed by LED_BLUE
|
||||
GPIO_nLED_RED, // Indexed by LED_RED, LED_AMBER
|
||||
0, // Indexed by LED_SAFETY (defaulted to an input)
|
||||
0, // Indexed by LED_GREEN
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
__EXPORT void led_init(void)
|
||||
{
|
||||
for (size_t l = 0; l < (sizeof(g_ledmap) / sizeof(g_ledmap[0])); l++) {
|
||||
if (g_ledmap[l] != 0) {
|
||||
stm32_configgpio(g_ledmap[l]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void phy_set_led(int led, bool state)
|
||||
{
|
||||
/* Drive Low to switch on */
|
||||
|
||||
if (g_ledmap[led] != 0) {
|
||||
stm32_gpiowrite(g_ledmap[led], !state);
|
||||
}
|
||||
}
|
||||
|
||||
static bool phy_get_led(int led)
|
||||
{
|
||||
/* If Low it is on */
|
||||
if (g_ledmap[led] != 0) {
|
||||
return !stm32_gpioread(g_ledmap[led]);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
__EXPORT void led_on(int led)
|
||||
{
|
||||
phy_set_led(xlat(led), true);
|
||||
}
|
||||
|
||||
__EXPORT void led_off(int led)
|
||||
{
|
||||
phy_set_led(xlat(led), false);
|
||||
}
|
||||
|
||||
__EXPORT void led_toggle(int led)
|
||||
{
|
||||
phy_set_led(xlat(led), !phy_get_led(xlat(led)));
|
||||
}
|
||||
|
||||
#ifdef CONFIG_ARCH_LEDS
|
||||
/****************************************************************************
|
||||
* Public Functions
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Name: board_autoled_initialize
|
||||
****************************************************************************/
|
||||
|
||||
void board_autoled_initialize(void)
|
||||
{
|
||||
led_init();
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Name: board_autoled_on
|
||||
****************************************************************************/
|
||||
|
||||
void board_autoled_on(int led)
|
||||
{
|
||||
if (!nuttx_owns_leds) {
|
||||
return;
|
||||
}
|
||||
|
||||
switch (led) {
|
||||
default:
|
||||
break;
|
||||
|
||||
case LED_HEAPALLOCATE:
|
||||
phy_set_led(BOARD_LED_BLUE, true);
|
||||
break;
|
||||
|
||||
case LED_IRQSENABLED:
|
||||
phy_set_led(BOARD_LED_BLUE, false);
|
||||
phy_set_led(BOARD_LED_GREEN, true);
|
||||
break;
|
||||
|
||||
case LED_STACKCREATED:
|
||||
phy_set_led(BOARD_LED_GREEN, true);
|
||||
phy_set_led(BOARD_LED_BLUE, true);
|
||||
break;
|
||||
|
||||
case LED_INIRQ:
|
||||
phy_set_led(BOARD_LED_BLUE, true);
|
||||
break;
|
||||
|
||||
case LED_SIGNAL:
|
||||
phy_set_led(BOARD_LED_GREEN, true);
|
||||
break;
|
||||
|
||||
case LED_ASSERTION:
|
||||
phy_set_led(BOARD_LED_RED, true);
|
||||
phy_set_led(BOARD_LED_BLUE, true);
|
||||
break;
|
||||
|
||||
case LED_PANIC:
|
||||
phy_set_led(BOARD_LED_RED, true);
|
||||
break;
|
||||
|
||||
case LED_IDLE : /* IDLE */
|
||||
phy_set_led(BOARD_LED_RED, true);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* Name: board_autoled_off
|
||||
****************************************************************************/
|
||||
|
||||
void board_autoled_off(int led)
|
||||
{
|
||||
if (!nuttx_owns_leds) {
|
||||
return;
|
||||
}
|
||||
|
||||
switch (led) {
|
||||
default:
|
||||
break;
|
||||
|
||||
case LED_SIGNAL:
|
||||
phy_set_led(BOARD_LED_GREEN, false);
|
||||
break;
|
||||
|
||||
case LED_INIRQ:
|
||||
phy_set_led(BOARD_LED_BLUE, false);
|
||||
break;
|
||||
|
||||
case LED_ASSERTION:
|
||||
phy_set_led(BOARD_LED_RED, false);
|
||||
phy_set_led(BOARD_LED_BLUE, false);
|
||||
break;
|
||||
|
||||
case LED_PANIC:
|
||||
phy_set_led(BOARD_LED_RED, false);
|
||||
break;
|
||||
|
||||
case LED_IDLE : /* IDLE */
|
||||
phy_set_led(BOARD_LED_RED, false);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
#endif /* CONFIG_ARCH_LEDS */
|
||||
@@ -1,147 +0,0 @@
|
||||
/****************************************************************************
|
||||
*
|
||||
* Copyright (c) 2018, 2021 PX4 Development Team. All rights reserved.
|
||||
*
|
||||
* 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 PX4 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.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
/**
|
||||
* @file manifest.c
|
||||
*
|
||||
* This module supplies the interface to the manifest of hardware that is
|
||||
* optional and dependent on the HW REV and HW VER IDs
|
||||
*
|
||||
* The manifest allows the system to know whether a hardware option
|
||||
* say for example the PX4IO is an no-pop option vs it is broken.
|
||||
*
|
||||
*/
|
||||
|
||||
/****************************************************************************
|
||||
* Included Files
|
||||
****************************************************************************/
|
||||
|
||||
#include <nuttx/config.h>
|
||||
#include <board_config.h>
|
||||
|
||||
#include <inttypes.h>
|
||||
#include <stdbool.h>
|
||||
#include <syslog.h>
|
||||
|
||||
#include "systemlib/px4_macros.h"
|
||||
|
||||
/****************************************************************************
|
||||
* Pre-Processor Definitions
|
||||
****************************************************************************/
|
||||
|
||||
typedef struct {
|
||||
uint32_t hw_ver_rev; /* the version and revision */
|
||||
const px4_hw_mft_item_t *mft; /* The first entry */
|
||||
uint32_t entries; /* the lenght of the list */
|
||||
} px4_hw_mft_list_entry_t;
|
||||
|
||||
typedef px4_hw_mft_list_entry_t *px4_hw_mft_list_entry;
|
||||
#define px4_hw_mft_list_uninitialized (px4_hw_mft_list_entry) -1
|
||||
|
||||
static const px4_hw_mft_item_t device_unsupported = {0, 0, 0};
|
||||
|
||||
// List of components on a specific board configuration
|
||||
// The index of those components is given by the enum (px4_hw_mft_item_id_t)
|
||||
// declared in board_common.h
|
||||
static const px4_hw_mft_item_t hw_mft_list_v0600[] = {
|
||||
{
|
||||
.present = 1,
|
||||
.mandatory = 1,
|
||||
.connection = px4_hw_con_onboard,
|
||||
},
|
||||
};
|
||||
|
||||
static const px4_hw_mft_item_t hw_mft_list_v0610[] = {
|
||||
{
|
||||
.present = 0,
|
||||
.mandatory = 0,
|
||||
.connection = px4_hw_con_unknown,
|
||||
},
|
||||
{
|
||||
.present = 1,
|
||||
.mandatory = 1,
|
||||
.connection = px4_hw_con_onboard,
|
||||
},
|
||||
};
|
||||
|
||||
|
||||
static px4_hw_mft_list_entry_t mft_lists[] = {
|
||||
// ver_rev
|
||||
{V6C00, hw_mft_list_v0600, arraySize(hw_mft_list_v0600)},
|
||||
{V6C10, hw_mft_list_v0610, arraySize(hw_mft_list_v0610)}, // No PX4IO
|
||||
};
|
||||
|
||||
/************************************************************************************
|
||||
* Name: board_query_manifest
|
||||
*
|
||||
* Description:
|
||||
* Optional returns manifest item.
|
||||
*
|
||||
* Input Parameters:
|
||||
* manifest_id - the ID for the manifest item to retrieve
|
||||
*
|
||||
* Returned Value:
|
||||
* 0 - item is not in manifest => assume legacy operations
|
||||
* pointer to a manifest item
|
||||
*
|
||||
************************************************************************************/
|
||||
|
||||
__EXPORT px4_hw_mft_item board_query_manifest(px4_hw_mft_item_id_t id)
|
||||
{
|
||||
static px4_hw_mft_list_entry boards_manifest = px4_hw_mft_list_uninitialized;
|
||||
|
||||
if (boards_manifest == px4_hw_mft_list_uninitialized) {
|
||||
uint32_t ver_rev = board_get_hw_version() << 8;
|
||||
ver_rev |= board_get_hw_revision();
|
||||
|
||||
for (unsigned i = 0; i < arraySize(mft_lists); i++) {
|
||||
if (mft_lists[i].hw_ver_rev == ver_rev) {
|
||||
boards_manifest = &mft_lists[i];
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (boards_manifest == px4_hw_mft_list_uninitialized) {
|
||||
syslog(LOG_ERR, "[boot] Board %4" PRIx32 " is not supported!\n", ver_rev);
|
||||
}
|
||||
}
|
||||
|
||||
px4_hw_mft_item rv = &device_unsupported;
|
||||
|
||||
if (boards_manifest != px4_hw_mft_list_uninitialized &&
|
||||
id < boards_manifest->entries) {
|
||||
rv = &boards_manifest->mft[id];
|
||||
}
|
||||
|
||||
return rv;
|
||||
}
|
||||
@@ -1,104 +0,0 @@
|
||||
/****************************************************************************
|
||||
*
|
||||
* Copyright (C) 2020 PX4 Development Team. All rights reserved.
|
||||
*
|
||||
* 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 PX4 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.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#include <nuttx/spi/spi.h>
|
||||
#include <px4_platform_common/px4_manifest.h>
|
||||
// KiB BS nB
|
||||
static const px4_mft_device_t spi2 = { // FM25V02A on FMUM 32K 512 X 64
|
||||
.bus_type = px4_mft_device_t::SPI,
|
||||
.devid = SPIDEV_FLASH(0)
|
||||
};
|
||||
|
||||
static const px4_mft_device_t i2c4 = { // 24LC64T on IMU 8K 32 X 256
|
||||
.bus_type = px4_mft_device_t::I2C,
|
||||
.devid = PX4_MK_I2C_DEVID(4, 0x50)
|
||||
};
|
||||
|
||||
|
||||
static const px4_mtd_entry_t fmum_fram = {
|
||||
.device = &spi2,
|
||||
.npart = 2,
|
||||
.partd = {
|
||||
{
|
||||
.type = MTD_PARAMETERS,
|
||||
.path = "/fs/mtd_params",
|
||||
.nblocks = 32
|
||||
},
|
||||
{
|
||||
.type = MTD_WAYPOINTS,
|
||||
.path = "/fs/mtd_waypoints",
|
||||
.nblocks = 32
|
||||
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
static const px4_mtd_entry_t imu_eeprom = {
|
||||
.device = &i2c4,
|
||||
.npart = 2,
|
||||
.partd = {
|
||||
{
|
||||
.type = MTD_CALDATA,
|
||||
.path = "/fs/mtd_caldata",
|
||||
.nblocks = 248
|
||||
},
|
||||
{
|
||||
.type = MTD_ID,
|
||||
.path = "/fs/mtd_id",
|
||||
.nblocks = 8 // 256 = 32 * 8
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
static const px4_mtd_manifest_t board_mtd_config = {
|
||||
.nconfigs = 2,
|
||||
.entries = {
|
||||
&fmum_fram,
|
||||
&imu_eeprom
|
||||
}
|
||||
};
|
||||
|
||||
static const px4_mft_entry_s mtd_mft = {
|
||||
.type = MTD,
|
||||
.pmft = (void *) &board_mtd_config,
|
||||
};
|
||||
|
||||
static const px4_mft_s mft = {
|
||||
.nmft = 1,
|
||||
.mfts = &mtd_mft
|
||||
};
|
||||
|
||||
const px4_mft_s *board_get_manifest(void)
|
||||
{
|
||||
return &mft;
|
||||
}
|
||||
@@ -1,177 +0,0 @@
|
||||
/****************************************************************************
|
||||
*
|
||||
* Copyright (C) 2014, 2016 Gregory Nutt. All rights reserved.
|
||||
* Author: Gregory Nutt <gnutt@nuttx.org>
|
||||
*
|
||||
* 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 NuttX 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.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Included Files
|
||||
****************************************************************************/
|
||||
|
||||
#include <nuttx/config.h>
|
||||
#include <board_config.h>
|
||||
|
||||
#include <stdbool.h>
|
||||
#include <stdio.h>
|
||||
#include <debug.h>
|
||||
#include <errno.h>
|
||||
|
||||
#include <nuttx/sdio.h>
|
||||
#include <nuttx/mmcsd.h>
|
||||
|
||||
#include "chip.h"
|
||||
#include "board_config.h"
|
||||
#include "stm32_gpio.h"
|
||||
#include "stm32_sdmmc.h"
|
||||
|
||||
#ifdef CONFIG_MMCSD
|
||||
|
||||
|
||||
/****************************************************************************
|
||||
* Pre-processor Definitions
|
||||
****************************************************************************/
|
||||
|
||||
/* Card detections requires card support and a card detection GPIO */
|
||||
|
||||
#define HAVE_NCD 1
|
||||
#if !defined(GPIO_SDMMC1_NCD)
|
||||
# undef HAVE_NCD
|
||||
#endif
|
||||
|
||||
/****************************************************************************
|
||||
* Private Data
|
||||
****************************************************************************/
|
||||
|
||||
static FAR struct sdio_dev_s *sdio_dev;
|
||||
#ifdef HAVE_NCD
|
||||
static bool g_sd_inserted = 0xff; /* Impossible value */
|
||||
#endif
|
||||
|
||||
/****************************************************************************
|
||||
* Private Functions
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Name: stm32_ncd_interrupt
|
||||
*
|
||||
* Description:
|
||||
* Card detect interrupt handler.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifdef HAVE_NCD
|
||||
static int stm32_ncd_interrupt(int irq, FAR void *context)
|
||||
{
|
||||
bool present;
|
||||
|
||||
present = !stm32_gpioread(GPIO_SDMMC1_NCD);
|
||||
|
||||
if (sdio_dev && present != g_sd_inserted) {
|
||||
sdio_mediachange(sdio_dev, present);
|
||||
g_sd_inserted = present;
|
||||
}
|
||||
|
||||
return OK;
|
||||
}
|
||||
#endif
|
||||
|
||||
/****************************************************************************
|
||||
* Public Functions
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Name: stm32_sdio_initialize
|
||||
*
|
||||
* Description:
|
||||
* Initialize SDIO-based MMC/SD card support
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
int stm32_sdio_initialize(void)
|
||||
{
|
||||
int ret;
|
||||
|
||||
#ifdef HAVE_NCD
|
||||
/* Card detect */
|
||||
|
||||
bool cd_status;
|
||||
|
||||
/* Configure the card detect GPIO */
|
||||
|
||||
stm32_configgpio(GPIO_SDMMC1_NCD);
|
||||
|
||||
/* Register an interrupt handler for the card detect pin */
|
||||
|
||||
stm32_gpiosetevent(GPIO_SDMMC1_NCD, true, true, true, stm32_ncd_interrupt);
|
||||
#endif
|
||||
|
||||
/* Mount the SDIO-based MMC/SD block driver */
|
||||
/* First, get an instance of the SDIO interface */
|
||||
|
||||
finfo("Initializing SDIO slot %d\n", SDIO_SLOTNO);
|
||||
|
||||
sdio_dev = sdio_initialize(SDIO_SLOTNO);
|
||||
|
||||
if (!sdio_dev) {
|
||||
syslog(LOG_ERR, "[boot] Failed to initialize SDIO slot %d\n", SDIO_SLOTNO);
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
/* Now bind the SDIO interface to the MMC/SD driver */
|
||||
|
||||
finfo("Bind SDIO to the MMC/SD driver, minor=%d\n", SDIO_MINOR);
|
||||
|
||||
ret = mmcsd_slotinitialize(SDIO_MINOR, sdio_dev);
|
||||
|
||||
if (ret != OK) {
|
||||
syslog(LOG_ERR, "[boot] Failed to bind SDIO to the MMC/SD driver: %d\n", ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
finfo("Successfully bound SDIO to the MMC/SD driver\n");
|
||||
|
||||
#ifdef HAVE_NCD
|
||||
/* Use SD card detect pin to check if a card is g_sd_inserted */
|
||||
|
||||
cd_status = !stm32_gpioread(GPIO_SDMMC1_NCD);
|
||||
finfo("Card detect : %d\n", cd_status);
|
||||
|
||||
sdio_mediachange(sdio_dev, cd_status);
|
||||
#else
|
||||
/* Assume that the SD card is inserted. What choice do we have? */
|
||||
|
||||
sdio_mediachange(sdio_dev, true);
|
||||
#endif
|
||||
|
||||
return OK;
|
||||
}
|
||||
|
||||
#endif /* CONFIG_MMCSD */
|
||||
@@ -1,61 +0,0 @@
|
||||
/****************************************************************************
|
||||
*
|
||||
* Copyright (C) 2020, 2022 PX4 Development Team. All rights reserved.
|
||||
*
|
||||
* 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 PX4 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.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#include <px4_arch/spi_hw_description.h>
|
||||
#include <drivers/drv_sensor.h>
|
||||
#include <nuttx/spi/spi.h>
|
||||
|
||||
constexpr px4_spi_bus_all_hw_t px4_spi_buses_all_hw[BOARD_NUM_SPI_CFG_HW_VERSIONS] = {
|
||||
initSPIHWVersion(V6C00, {
|
||||
initSPIBus(SPI::Bus::SPI1, {
|
||||
initSPIDevice(DRV_GYR_DEVTYPE_BMI055, SPI::CS{GPIO::PortC, GPIO::Pin14}, SPI::DRDY{GPIO::PortE, GPIO::Pin5}),
|
||||
initSPIDevice(DRV_ACC_DEVTYPE_BMI055, SPI::CS{GPIO::PortC, GPIO::Pin15}, SPI::DRDY{GPIO::PortE, GPIO::Pin4}),
|
||||
initSPIDevice(DRV_IMU_DEVTYPE_ICM42688P, SPI::CS{GPIO::PortC, GPIO::Pin13}, SPI::DRDY{GPIO::PortE, GPIO::Pin6}),
|
||||
}, {GPIO::PortB, GPIO::Pin2}),
|
||||
initSPIBus(SPI::Bus::SPI2, {
|
||||
initSPIDevice(SPIDEV_FLASH(0), SPI::CS{GPIO::PortD, GPIO::Pin4})
|
||||
}),
|
||||
}),
|
||||
initSPIHWVersion(V6C10, {
|
||||
initSPIBus(SPI::Bus::SPI1, {
|
||||
initSPIDevice(DRV_GYR_DEVTYPE_BMI055, SPI::CS{GPIO::PortC, GPIO::Pin14}, SPI::DRDY{GPIO::PortE, GPIO::Pin5}),
|
||||
initSPIDevice(DRV_ACC_DEVTYPE_BMI055, SPI::CS{GPIO::PortC, GPIO::Pin15}, SPI::DRDY{GPIO::PortE, GPIO::Pin4}),
|
||||
initSPIDevice(DRV_IMU_DEVTYPE_ICM42688P, SPI::CS{GPIO::PortC, GPIO::Pin13}, SPI::DRDY{GPIO::PortE, GPIO::Pin6}),
|
||||
}, {GPIO::PortB, GPIO::Pin2}),
|
||||
initSPIBus(SPI::Bus::SPI2, {
|
||||
initSPIDevice(SPIDEV_FLASH(0), SPI::CS{GPIO::PortD, GPIO::Pin4})
|
||||
}),
|
||||
}),
|
||||
};
|
||||
|
||||
static constexpr bool unused = validateSPIConfig(px4_spi_buses_all_hw);
|
||||
@@ -1,73 +0,0 @@
|
||||
/****************************************************************************
|
||||
*
|
||||
* Copyright (C) 2012 PX4 Development Team. All rights reserved.
|
||||
*
|
||||
* 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 PX4 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.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#include <px4_arch/io_timer_hw_description.h>
|
||||
|
||||
/* Timer allocation
|
||||
*
|
||||
* TIM1_CH1 T FMU_CH1
|
||||
* TIM1_CH2 T FMU_CH2
|
||||
* TIM1_CH3 T FMU_CH3
|
||||
* TIM1_CH4 T FMU_CH4
|
||||
*
|
||||
* TIM4_CH3 T FMU_CH5
|
||||
* TIM4_CH4 T FMU_CH6
|
||||
*
|
||||
* TIM5_CH1 T FMU_CH7
|
||||
* TIM5_CH2 T FMU_CH8
|
||||
*
|
||||
* TIM17_CH1 T HEATER > PWM OUT or GPIO
|
||||
*
|
||||
* TIM3_CH3 T BUZZER_1 - Driven by other driver
|
||||
*/
|
||||
|
||||
constexpr io_timers_t io_timers[MAX_IO_TIMERS] = {
|
||||
initIOTimer(Timer::Timer1, DMA{DMA::Index1}),
|
||||
initIOTimer(Timer::Timer4, DMA{DMA::Index1}),
|
||||
initIOTimer(Timer::Timer5),
|
||||
initIOTimer(Timer::Timer17),
|
||||
};
|
||||
|
||||
constexpr timer_io_channels_t timer_io_channels[MAX_TIMER_IO_CHANNELS] = {
|
||||
initIOTimerChannel(io_timers, {Timer::Timer1, Timer::Channel1}, {GPIO::PortA, GPIO::Pin8}),
|
||||
initIOTimerChannel(io_timers, {Timer::Timer1, Timer::Channel2}, {GPIO::PortE, GPIO::Pin11}),
|
||||
initIOTimerChannel(io_timers, {Timer::Timer1, Timer::Channel3}, {GPIO::PortE, GPIO::Pin13}),
|
||||
initIOTimerChannel(io_timers, {Timer::Timer1, Timer::Channel4}, {GPIO::PortE, GPIO::Pin14}),
|
||||
initIOTimerChannel(io_timers, {Timer::Timer4, Timer::Channel3}, {GPIO::PortD, GPIO::Pin14}),
|
||||
initIOTimerChannel(io_timers, {Timer::Timer4, Timer::Channel4}, {GPIO::PortD, GPIO::Pin15}),
|
||||
initIOTimerChannel(io_timers, {Timer::Timer5, Timer::Channel1}, {GPIO::PortA, GPIO::Pin0}),
|
||||
initIOTimerChannel(io_timers, {Timer::Timer5, Timer::Channel2}, {GPIO::PortA, GPIO::Pin1}),
|
||||
};
|
||||
|
||||
constexpr io_timers_channel_mapping_t io_timers_channel_mapping =
|
||||
initIOTimerChannelMapping(io_timers, timer_io_channels);
|
||||
@@ -1,105 +0,0 @@
|
||||
/****************************************************************************
|
||||
*
|
||||
* Copyright (C) 2016 PX4 Development Team. All rights reserved.
|
||||
*
|
||||
* 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 PX4 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.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
/**
|
||||
* @file px4fmu_usb.c
|
||||
*
|
||||
* Board-specific USB functions.
|
||||
*/
|
||||
|
||||
/************************************************************************************
|
||||
* Included Files
|
||||
************************************************************************************/
|
||||
|
||||
#include <px4_platform_common/px4_config.h>
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <stdint.h>
|
||||
#include <stdbool.h>
|
||||
#include <debug.h>
|
||||
|
||||
#include <nuttx/usb/usbdev.h>
|
||||
#include <nuttx/usb/usbdev_trace.h>
|
||||
|
||||
#include <arm_arch.h>
|
||||
#include <chip.h>
|
||||
#include <stm32_gpio.h>
|
||||
#include <stm32_otg.h>
|
||||
#include "board_config.h"
|
||||
|
||||
/************************************************************************************
|
||||
* Definitions
|
||||
************************************************************************************/
|
||||
|
||||
/************************************************************************************
|
||||
* Private Functions
|
||||
************************************************************************************/
|
||||
|
||||
/************************************************************************************
|
||||
* Public Functions
|
||||
************************************************************************************/
|
||||
|
||||
/************************************************************************************
|
||||
* Name: stm32_usbinitialize
|
||||
*
|
||||
* Description:
|
||||
* Called to setup USB-related GPIO pins for the PX4FMU board.
|
||||
*
|
||||
************************************************************************************/
|
||||
|
||||
__EXPORT void stm32_usbinitialize(void)
|
||||
{
|
||||
/* The OTG FS has an internal soft pull-up */
|
||||
|
||||
/* Configure the OTG FS VBUS sensing GPIO, Power On, and Overcurrent GPIOs */
|
||||
|
||||
#ifdef CONFIG_STM32H7_OTGFS
|
||||
stm32_configgpio(GPIO_OTGFS_VBUS);
|
||||
#endif
|
||||
}
|
||||
|
||||
/************************************************************************************
|
||||
* Name: stm32_usbsuspend
|
||||
*
|
||||
* Description:
|
||||
* Board logic must provide the stm32_usbsuspend logic if the USBDEV driver is
|
||||
* used. This function is called whenever the USB enters or leaves suspend mode.
|
||||
* This is an opportunity for the board logic to shutdown clocks, power, etc.
|
||||
* while the USB is suspended.
|
||||
*
|
||||
************************************************************************************/
|
||||
|
||||
__EXPORT void stm32_usbsuspend(FAR struct usbdev_s *dev, bool resume)
|
||||
{
|
||||
uinfo("resume: %d\n", resume);
|
||||
}
|
||||
Binary file not shown.
@@ -25,23 +25,17 @@ then
|
||||
ina238 -X -b 2 -t 2 -k start
|
||||
fi
|
||||
|
||||
if ver hwtypecmp V6X04 V6X14
|
||||
then
|
||||
# Internal SPI bus ICM20649
|
||||
icm20649 -s -R 6 start
|
||||
else
|
||||
# Internal SPI BMI088
|
||||
bmi088 -A -R 4 -s start
|
||||
bmi088 -G -R 4 -s start
|
||||
fi
|
||||
bmi088 -A -R 4 -s start
|
||||
bmi088 -G -R 4 -s start
|
||||
|
||||
# Internal SPI bus ICM42688p
|
||||
icm42688p -R 6 -s start
|
||||
|
||||
if ver hwtypecmp V6X03 V6X13 V6X04 V6X14
|
||||
if ver hwtypecmp V6X03 V6X13
|
||||
then
|
||||
# Internal SPI bus ICM-42670-P (hard-mounted)
|
||||
icm42670p -R 10 -s start
|
||||
icm42670p -R 14 -s start
|
||||
else
|
||||
# Internal SPI bus ICM-20649 (hard-mounted)
|
||||
icm20649 -R 14 -s start
|
||||
|
||||
@@ -215,15 +215,13 @@
|
||||
#define HW_INFO_INIT_VER 3 /* Offset in above string of the VER */
|
||||
#define HW_INFO_INIT_REV 4 /* Offset in above string of the REV */
|
||||
|
||||
#define BOARD_NUM_SPI_CFG_HW_VERSIONS 3 // Rev 0 and Rev 3,4 Sensor sets
|
||||
#define BOARD_NUM_SPI_CFG_HW_VERSIONS 2 // Rev 0 and Rev 3 Sensor sets
|
||||
// Base/FMUM
|
||||
#define V6X00 HW_VER_REV(0x0,0x0) // FMUV6X, Rev 0
|
||||
#define V6X01 HW_VER_REV(0x0,0x1) // FMUV6X, BMI388 I2C2 Rev 1
|
||||
#define V6X03 HW_VER_REV(0x0,0x3) // FMUV6X, Sensor Set Rev 3
|
||||
#define V6X04 HW_VER_REV(0x0,0x4) // FMUV6X, Sensor Set Rev 4
|
||||
#define V6X10 HW_VER_REV(0x1,0x0) // NO PX4IO, Rev 0
|
||||
#define V6X13 HW_VER_REV(0x1,0x3) // NO PX4IO, Sensor Set Rev 3
|
||||
#define V6X14 HW_VER_REV(0x1,0x4) // NO PX4IO, Sensor Set Rev 4
|
||||
|
||||
|
||||
/* HEATER
|
||||
|
||||
@@ -102,8 +102,6 @@ static px4_hw_mft_list_entry_t mft_lists[] = {
|
||||
{V6X01, hw_mft_list_v0600, arraySize(hw_mft_list_v0600)}, // BMP388 moved to I2C2
|
||||
{V6X03, hw_mft_list_v0600, arraySize(hw_mft_list_v0600)}, // BMP388 moved to I2C2, Sensor Set 3
|
||||
{V6X13, hw_mft_list_v0610, arraySize(hw_mft_list_v0610)}, // No PX4IO BMP388 moved to I2C2, Sensor Set 3
|
||||
{V6X04, hw_mft_list_v0600, arraySize(hw_mft_list_v0600)}, // BMP388 moved to I2C2, Sensor Set 4
|
||||
{V6X14, hw_mft_list_v0610, arraySize(hw_mft_list_v0610)}, // No PX4IO BMP388 moved to I2C2, Sensor Set 4
|
||||
};
|
||||
|
||||
/************************************************************************************
|
||||
|
||||
@@ -83,29 +83,6 @@ constexpr px4_spi_bus_all_hw_t px4_spi_buses_all_hw[BOARD_NUM_SPI_CFG_HW_VERSION
|
||||
initSPIConfigExternal(SPI::CS{GPIO::PortA, GPIO::Pin15}, SPI::DRDY{GPIO::PortD, GPIO::Pin12}),
|
||||
}),
|
||||
}),
|
||||
|
||||
initSPIHWVersion(HW_VER_REV(0, 4), {
|
||||
initSPIBus(SPI::Bus::SPI1, {
|
||||
initSPIDevice(DRV_IMU_DEVTYPE_ICM42670P, SPI::CS{GPIO::PortI, GPIO::Pin9}, SPI::DRDY{GPIO::PortF, GPIO::Pin2}),
|
||||
}, {GPIO::PortI, GPIO::Pin11}),
|
||||
initSPIBus(SPI::Bus::SPI2, {
|
||||
initSPIDevice(DRV_IMU_DEVTYPE_ICM42688P, SPI::CS{GPIO::PortH, GPIO::Pin5}, SPI::DRDY{GPIO::PortA, GPIO::Pin10}),
|
||||
}, {GPIO::PortF, GPIO::Pin4}),
|
||||
initSPIBus(SPI::Bus::SPI3, {
|
||||
initSPIDevice(DRV_IMU_DEVTYPE_ICM20649, SPI::CS{GPIO::PortI, GPIO::Pin4}, SPI::DRDY{GPIO::PortI, GPIO::Pin7}),
|
||||
}, {GPIO::PortE, GPIO::Pin7}),
|
||||
// initSPIBus(SPI::Bus::SPI4, {
|
||||
// // no devices
|
||||
// TODO: if enabled, remove GPIO_VDD_3V3_SENSORS4_EN from board_config.h
|
||||
// }, {GPIO::PortG, GPIO::Pin8}),
|
||||
initSPIBus(SPI::Bus::SPI5, {
|
||||
initSPIDevice(SPIDEV_FLASH(0), SPI::CS{GPIO::PortG, GPIO::Pin7})
|
||||
}),
|
||||
initSPIBusExternal(SPI::Bus::SPI6, {
|
||||
initSPIConfigExternal(SPI::CS{GPIO::PortI, GPIO::Pin10}, SPI::DRDY{GPIO::PortD, GPIO::Pin11}),
|
||||
initSPIConfigExternal(SPI::CS{GPIO::PortA, GPIO::Pin15}, SPI::DRDY{GPIO::PortD, GPIO::Pin12}),
|
||||
}),
|
||||
}),
|
||||
};
|
||||
|
||||
static constexpr bool unused = validateSPIConfig(px4_spi_buses_all_hw);
|
||||
|
||||
@@ -137,6 +137,7 @@ set(msg_files
|
||||
rc_parameter_map.msg
|
||||
rpm.msg
|
||||
rtl_time_estimate.msg
|
||||
safety.msg
|
||||
satellite_info.msg
|
||||
sensor_accel.msg
|
||||
sensor_accel_fifo.msg
|
||||
|
||||
@@ -19,7 +19,7 @@ bool status_rc_ppm
|
||||
bool status_rc_sbus
|
||||
bool status_rc_st24
|
||||
bool status_rc_sumd
|
||||
bool status_safety_button_event # px4io safety button was pressed for longer than 1 second
|
||||
bool status_safety_off
|
||||
|
||||
# PX4IO alarms (PX4IO_P_STATUS_ALARMS)
|
||||
bool alarm_pwm_error
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
uint64 timestamp # time since system start (microseconds)
|
||||
bool safety_switch_available # Set to true if a safety switch is connected
|
||||
bool safety_off # Set to true if safety is off
|
||||
@@ -116,6 +116,3 @@ uint8 latest_disarming_reason
|
||||
uint64 armed_time # Arming timestamp (microseconds)
|
||||
|
||||
uint64 takeoff_time # Takeoff timestamp (microseconds)
|
||||
|
||||
bool safety_button_available # Set to true if a safety button is connected
|
||||
bool safety_off # Set to true if safety is off
|
||||
|
||||
@@ -92,13 +92,7 @@ enum Timer {
|
||||
Timer13,
|
||||
Timer14,
|
||||
#ifdef STM32_TIM15_BASE
|
||||
Timer15,
|
||||
#endif
|
||||
#ifdef STM32_TIM16_BASE
|
||||
Timer16,
|
||||
#endif
|
||||
#ifdef STM32_TIM17_BASE
|
||||
Timer17
|
||||
Timer15
|
||||
#endif
|
||||
};
|
||||
enum Channel {
|
||||
@@ -167,16 +161,6 @@ static inline constexpr uint32_t timerBaseRegister(Timer::Timer timer)
|
||||
case Timer::Timer15: return STM32_TIM15_BASE;
|
||||
#endif
|
||||
|
||||
#ifdef STM32_TIM16_BASE
|
||||
|
||||
case Timer::Timer16: return STM32_TIM16_BASE;
|
||||
#endif
|
||||
|
||||
#ifdef STM32_TIM17_BASE
|
||||
|
||||
case Timer::Timer17: return STM32_TIM17_BASE;
|
||||
#endif
|
||||
|
||||
default: break;
|
||||
}
|
||||
|
||||
|
||||
@@ -86,8 +86,6 @@ static inline constexpr uint32_t getTimerUpdateDMAMap(Timer::Timer timer, const
|
||||
case Timer::Timer13:
|
||||
case Timer::Timer14:
|
||||
case Timer::Timer15:
|
||||
case Timer::Timer16:
|
||||
case Timer::Timer17:
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
@@ -49,8 +49,6 @@ static inline constexpr timer_io_channels_t initIOTimerGPIOInOut(Timer::TimerCha
|
||||
switch (timer.timer) {
|
||||
case Timer::Timer1:
|
||||
case Timer::Timer2:
|
||||
case Timer::Timer16:
|
||||
case Timer::Timer17:
|
||||
gpio_af = GPIO_AF1;
|
||||
break;
|
||||
|
||||
@@ -276,28 +274,6 @@ static inline constexpr io_timers_t initIOTimer(Timer::Timer timer, DMA dshot_dm
|
||||
ret.vectorno = STM32_IRQ_TIM15;
|
||||
#ifdef CONFIG_STM32_TIM15
|
||||
nuttx_config_timer_enabled = true;
|
||||
#endif
|
||||
break;
|
||||
|
||||
case Timer::Timer16:
|
||||
ret.base = STM32_TIM16_BASE;
|
||||
ret.clock_register = STM32_RCC_APB2ENR;
|
||||
ret.clock_bit = RCC_APB2ENR_TIM16EN;
|
||||
ret.clock_freq = STM32_APB2_TIM16_CLKIN;
|
||||
ret.vectorno = STM32_IRQ_TIM16;
|
||||
#ifdef CONFIG_STM32_TIM16
|
||||
nuttx_config_timer_enabled = true;
|
||||
#endif
|
||||
break;
|
||||
|
||||
case Timer::Timer17:
|
||||
ret.base = STM32_TIM17_BASE;
|
||||
ret.clock_register = STM32_RCC_APB2ENR;
|
||||
ret.clock_bit = RCC_APB2ENR_TIM17EN;
|
||||
ret.clock_freq = STM32_APB2_TIM17_CLKIN;
|
||||
ret.vectorno = STM32_IRQ_TIM17;
|
||||
#ifdef CONFIG_STM32_TIM17
|
||||
nuttx_config_timer_enabled = true;
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -188,6 +188,12 @@ typedef uint16_t servo_position_t;
|
||||
/** get the maximum PWM value the output will send */
|
||||
#define PWM_SERVO_GET_MAX_PWM _PX4_IOC(_PWM_SERVO_BASE, 19)
|
||||
|
||||
/** force safety switch off (to disable use of safety switch) */
|
||||
#define PWM_SERVO_SET_FORCE_SAFETY_OFF _PX4_IOC(_PWM_SERVO_BASE, 25)
|
||||
|
||||
/** force safety switch on (to enable use of safety switch) */
|
||||
#define PWM_SERVO_SET_FORCE_SAFETY_ON _PX4_IOC(_PWM_SERVO_BASE, 28)
|
||||
|
||||
/*
|
||||
*
|
||||
*
|
||||
|
||||
@@ -149,9 +149,6 @@
|
||||
#define DRV_DIST_DEVTYPE_SRF02 0x74
|
||||
#define DRV_DIST_DEVTYPE_TERARANGER 0x75
|
||||
#define DRV_DIST_DEVTYPE_VL53L0X 0x76
|
||||
#define DRV_POWER_DEVTYPE_INA226 0x77
|
||||
#define DRV_POWER_DEVTYPE_INA228 0x78
|
||||
#define DRV_POWER_DEVTYPE_VOXLPM 0x79
|
||||
|
||||
#define DRV_LED_DEVTYPE_RGBLED 0x7a
|
||||
#define DRV_LED_DEVTYPE_RGBLED_NCP5623C 0x7b
|
||||
@@ -188,7 +185,6 @@
|
||||
#define DRV_DIST_DEVTYPE_GY_US42 0x9C
|
||||
|
||||
#define DRV_BAT_DEVTYPE_BATMON_SMBUS 0x9d
|
||||
#define DRV_POWER_DEVTYPE_INA238 0x9E
|
||||
#define DRV_GPIO_DEVTYPE_MCP23009 0x9F
|
||||
|
||||
#define DRV_GPS_DEVTYPE_ASHTECH 0xA0
|
||||
@@ -208,6 +204,12 @@
|
||||
|
||||
#define DRV_HYGRO_DEVTYPE_SHT3X 0xB1
|
||||
|
||||
#define DRV_POWER_DEVTYPE_INA226 0xC0
|
||||
#define DRV_POWER_DEVTYPE_INA228 0xC1
|
||||
#define DRV_POWER_DEVTYPE_INA231 0xC2
|
||||
#define DRV_POWER_DEVTYPE_INA238 0xC3
|
||||
#define DRV_POWER_DEVTYPE_VOXLPM 0xC4
|
||||
|
||||
#define DRV_DEVTYPE_UNUSED 0xff
|
||||
|
||||
#endif /* _DRV_SENSOR_H */
|
||||
|
||||
@@ -492,7 +492,9 @@ int PCA9685Wrapper::ioctl(cdev::file_t *filep, int cmd, unsigned long arg)
|
||||
break;
|
||||
|
||||
case PWM_SERVO_SET_ARM_OK:
|
||||
case PWM_SERVO_SET_FORCE_SAFETY_OFF:
|
||||
case PWM_SERVO_CLEAR_ARM_OK:
|
||||
case PWM_SERVO_SET_FORCE_SAFETY_ON:
|
||||
case PWM_SERVO_ARM:
|
||||
case PWM_SERVO_DISARM:
|
||||
break;
|
||||
|
||||
+12
-43
@@ -1,6 +1,6 @@
|
||||
############################################################################
|
||||
#
|
||||
# Copyright (c) 2016 PX4 Development Team. All rights reserved.
|
||||
# Copyright (c) 2022 PX4 Development Team. All rights reserved.
|
||||
#
|
||||
# Redistribution and use in source and binary forms, with or without
|
||||
# modification, are permitted provided that the following conditions
|
||||
@@ -30,46 +30,15 @@
|
||||
# POSSIBILITY OF SUCH DAMAGE.
|
||||
#
|
||||
############################################################################
|
||||
if("${PX4_BOARD_LABEL}" STREQUAL "bootloader")
|
||||
add_compile_definitions(BOOTLOADER)
|
||||
add_library(drivers_board
|
||||
bootloader_main.c
|
||||
init.c
|
||||
usb.c
|
||||
timer_config.cpp
|
||||
px4_add_module(
|
||||
MODULE drivers__power_monitor__ina231
|
||||
MAIN ina231
|
||||
COMPILE_FLAGS
|
||||
-Wno-cast-align # TODO: fix and enable
|
||||
SRCS
|
||||
ina231_main.cpp
|
||||
ina231.cpp
|
||||
DEPENDS
|
||||
battery
|
||||
px4_work_queue
|
||||
)
|
||||
target_link_libraries(drivers_board
|
||||
PRIVATE
|
||||
nuttx_arch # sdio
|
||||
nuttx_drivers # sdio
|
||||
px4_layer #gpio
|
||||
arch_io_pins # iotimer
|
||||
bootloader
|
||||
)
|
||||
target_include_directories(drivers_board PRIVATE ${PX4_SOURCE_DIR}/platforms/nuttx/src/bootloader/common)
|
||||
|
||||
else()
|
||||
add_library(drivers_board
|
||||
can.c
|
||||
i2c.cpp
|
||||
init.c
|
||||
led.c
|
||||
mtd.cpp
|
||||
manifest.c
|
||||
sdio.c
|
||||
spi.cpp
|
||||
timer_config.cpp
|
||||
usb.c
|
||||
)
|
||||
add_dependencies(drivers_board arch_board_hw_info)
|
||||
|
||||
target_link_libraries(drivers_board
|
||||
PRIVATE
|
||||
arch_spi
|
||||
arch_board_hw_info
|
||||
drivers__led # drv_led_start
|
||||
nuttx_arch # sdio
|
||||
nuttx_drivers # sdio
|
||||
px4_layer
|
||||
)
|
||||
endif()
|
||||
@@ -0,0 +1,5 @@
|
||||
menuconfig DRIVERS_POWER_MONITOR_INA231
|
||||
bool "ina231"
|
||||
default n
|
||||
---help---
|
||||
Enable support for ina231
|
||||
@@ -0,0 +1,322 @@
|
||||
/****************************************************************************
|
||||
*
|
||||
* Copyright (c) 2022 PX4 Development Team. All rights reserved.
|
||||
*
|
||||
* 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 PX4 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.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#include "ina231.h"
|
||||
|
||||
INA231::INA231(const I2CSPIDriverConfig &config, int battery_index) :
|
||||
I2C(config),
|
||||
ModuleParams(nullptr),
|
||||
I2CSPIDriver(config),
|
||||
_sample_perf(perf_alloc(PC_ELAPSED, "ina231_read")),
|
||||
_comms_errors(perf_alloc(PC_COUNT, "ina231_com_err")),
|
||||
_collection_errors(perf_alloc(PC_COUNT, "ina231_collection_err")),
|
||||
_measure_errors(perf_alloc(PC_COUNT, "ina231_measurement_err")),
|
||||
_battery(battery_index, this, INA231_SAMPLE_INTERVAL_US, battery_status_s::BATTERY_SOURCE_POWER_MODULE)
|
||||
{
|
||||
float fvalue = MAX_CURRENT;
|
||||
_max_current = fvalue;
|
||||
param_t ph = param_find("INA231_CURRENT");
|
||||
|
||||
if (ph != PARAM_INVALID && param_get(ph, &fvalue) == PX4_OK) {
|
||||
_max_current = fvalue;
|
||||
}
|
||||
|
||||
fvalue = INA231_SHUNT;
|
||||
_rshunt = fvalue;
|
||||
ph = param_find("INA231_SHUNT");
|
||||
|
||||
if (ph != PARAM_INVALID && param_get(ph, &fvalue) == PX4_OK) {
|
||||
_rshunt = fvalue;
|
||||
}
|
||||
|
||||
ph = param_find("INA231_CONFIG");
|
||||
int32_t value = INA231_CONFIG;
|
||||
_config = (uint16_t)value;
|
||||
|
||||
if (ph != PARAM_INVALID && param_get(ph, &value) == PX4_OK) {
|
||||
_config = (uint16_t)value;
|
||||
}
|
||||
|
||||
_mode_triggered = ((_config & INA231_MODE_MASK) >> INA231_MODE_SHIFTS) <=
|
||||
((INA231_MODE_SHUNT_BUS_TRIG & INA231_MODE_MASK) >>
|
||||
INA231_MODE_SHIFTS);
|
||||
|
||||
_current_lsb = _max_current / DN_MAX;
|
||||
_power_lsb = 25 * _current_lsb;
|
||||
|
||||
// We need to publish immediately, to guarantee that the first instance of the driver publishes to uORB instance 0
|
||||
_battery.setConnected(false);
|
||||
_battery.updateVoltage(0.f);
|
||||
_battery.updateCurrent(0.f);
|
||||
_battery.updateAndPublishBatteryStatus(hrt_absolute_time());
|
||||
}
|
||||
|
||||
INA231::~INA231()
|
||||
{
|
||||
/* free perf counters */
|
||||
perf_free(_sample_perf);
|
||||
perf_free(_comms_errors);
|
||||
perf_free(_collection_errors);
|
||||
perf_free(_measure_errors);
|
||||
}
|
||||
|
||||
int INA231::read(uint8_t address, int16_t &data)
|
||||
{
|
||||
// read desired little-endian value via I2C
|
||||
uint16_t received_bytes;
|
||||
int ret = PX4_ERROR;
|
||||
|
||||
for (size_t i = 0; i < 3; i++) {
|
||||
ret = transfer(&address, 1, (uint8_t *)&received_bytes, sizeof(received_bytes));
|
||||
|
||||
if (ret == PX4_OK) {
|
||||
data = swap16(received_bytes);
|
||||
break;
|
||||
|
||||
} else {
|
||||
perf_count(_comms_errors);
|
||||
PX4_DEBUG("i2c::transfer returned %d", ret);
|
||||
}
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
int INA231::write(uint8_t address, uint16_t value)
|
||||
{
|
||||
uint8_t data[3] = {address, ((uint8_t)((value & 0xff00) >> 8)), (uint8_t)(value & 0xff)};
|
||||
return transfer(data, sizeof(data), nullptr, 0);
|
||||
}
|
||||
|
||||
int
|
||||
INA231::init()
|
||||
{
|
||||
int ret = PX4_ERROR;
|
||||
|
||||
/* do I2C init (and probe) first */
|
||||
if (I2C::init() != PX4_OK) {
|
||||
return ret;
|
||||
}
|
||||
|
||||
write(INA231_REG_CONFIGURATION, INA231_RST);
|
||||
|
||||
_cal = INA231_CONST / (_current_lsb * _rshunt);
|
||||
|
||||
if (write(INA231_REG_CALIBRATION, _cal) < 0) {
|
||||
return -3;
|
||||
}
|
||||
|
||||
// If we run in continuous mode then start it here
|
||||
|
||||
if (!_mode_triggered) {
|
||||
ret = write(INA231_REG_CONFIGURATION, _config);
|
||||
|
||||
} else {
|
||||
ret = PX4_OK;
|
||||
}
|
||||
|
||||
start();
|
||||
_sensor_ok = true;
|
||||
|
||||
_initialized = ret == PX4_OK;
|
||||
return ret;
|
||||
}
|
||||
|
||||
int
|
||||
INA231::force_init()
|
||||
{
|
||||
int ret = init();
|
||||
|
||||
start();
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
int
|
||||
INA231::probe()
|
||||
{
|
||||
int16_t read1 = 0;
|
||||
|
||||
if (read(INA231_REG_CONFIGURATION, read1) != PX4_OK) {
|
||||
return PX4_ERROR;
|
||||
}
|
||||
|
||||
int16_t read2 = 0;
|
||||
|
||||
if (read(INA231_REG_CONFIGURATION, read2) != PX4_OK) {
|
||||
return PX4_ERROR;
|
||||
}
|
||||
|
||||
if (read1 != read2) {
|
||||
return PX4_ERROR;
|
||||
}
|
||||
|
||||
return PX4_OK;
|
||||
}
|
||||
|
||||
int
|
||||
INA231::measure()
|
||||
{
|
||||
int ret = PX4_OK;
|
||||
|
||||
if (_mode_triggered) {
|
||||
ret = write(INA231_REG_CONFIGURATION, _config);
|
||||
|
||||
if (ret < 0) {
|
||||
perf_count(_comms_errors);
|
||||
PX4_DEBUG("i2c::transfer returned %d", ret);
|
||||
}
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
int
|
||||
INA231::collect()
|
||||
{
|
||||
perf_begin(_sample_perf);
|
||||
|
||||
if (_parameter_update_sub.updated()) {
|
||||
// Read from topic to clear updated flag
|
||||
parameter_update_s parameter_update;
|
||||
_parameter_update_sub.copy(¶meter_update);
|
||||
|
||||
updateParams();
|
||||
}
|
||||
|
||||
// read from the sensor
|
||||
// Note: If the power module is connected backwards, then the values of _power, _current, and _shunt will be negative but otherwise valid.
|
||||
bool success{true};
|
||||
success = success && (read(INA231_REG_BUSVOLTAGE, _bus_voltage) == PX4_OK);
|
||||
// success = success && (read(INA231_REG_POWER, _power) == PX4_OK);
|
||||
success = success && (read(INA231_REG_CURRENT, _current) == PX4_OK);
|
||||
// success = success && (read(INA231_REG_SHUNTVOLTAGE, _shunt) == PX4_OK);
|
||||
|
||||
if (!success) {
|
||||
PX4_DEBUG("error reading from sensor");
|
||||
_bus_voltage = _power = _current = _shunt = 0;
|
||||
}
|
||||
|
||||
_battery.setConnected(success);
|
||||
_battery.updateVoltage(static_cast<float>(_bus_voltage * INA231_VSCALE));
|
||||
_battery.updateCurrent(static_cast<float>(_current * _current_lsb));
|
||||
_battery.updateAndPublishBatteryStatus(hrt_absolute_time());
|
||||
|
||||
perf_end(_sample_perf);
|
||||
|
||||
if (success) {
|
||||
return PX4_OK;
|
||||
|
||||
} else {
|
||||
return PX4_ERROR;
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
INA231::start()
|
||||
{
|
||||
ScheduleClear();
|
||||
|
||||
/* reset the report ring and state machine */
|
||||
_collect_phase = false;
|
||||
|
||||
_measure_interval = INA231_CONVERSION_INTERVAL;
|
||||
|
||||
/* schedule a cycle to start things */
|
||||
ScheduleDelayed(5);
|
||||
}
|
||||
|
||||
void
|
||||
INA231::RunImpl()
|
||||
{
|
||||
if (_initialized) {
|
||||
if (_collect_phase) {
|
||||
/* perform collection */
|
||||
if (collect() != PX4_OK) {
|
||||
perf_count(_collection_errors);
|
||||
/* if error restart the measurement state machine */
|
||||
start();
|
||||
return;
|
||||
}
|
||||
|
||||
/* next phase is measurement */
|
||||
_collect_phase = !_mode_triggered;
|
||||
|
||||
if (_measure_interval > INA231_CONVERSION_INTERVAL) {
|
||||
/* schedule a fresh cycle call when we are ready to measure again */
|
||||
ScheduleDelayed(_measure_interval - INA231_CONVERSION_INTERVAL);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
/* Measurement phase */
|
||||
|
||||
/* Perform measurement */
|
||||
if (measure() != PX4_OK) {
|
||||
perf_count(_measure_errors);
|
||||
}
|
||||
|
||||
/* next phase is collection */
|
||||
_collect_phase = true;
|
||||
|
||||
/* schedule a fresh cycle call when the measurement is done */
|
||||
ScheduleDelayed(INA231_CONVERSION_INTERVAL);
|
||||
|
||||
} else {
|
||||
_battery.setConnected(false);
|
||||
_battery.updateVoltage(0.f);
|
||||
_battery.updateCurrent(0.f);
|
||||
_battery.updateAndPublishBatteryStatus(hrt_absolute_time());
|
||||
|
||||
if (init() != PX4_OK) {
|
||||
ScheduleDelayed(INA231_INIT_RETRY_INTERVAL_US);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
INA231::print_status()
|
||||
{
|
||||
I2CSPIDriverBase::print_status();
|
||||
|
||||
if (_initialized) {
|
||||
perf_print_counter(_sample_perf);
|
||||
perf_print_counter(_comms_errors);
|
||||
|
||||
printf("poll interval: %u \n", _measure_interval);
|
||||
|
||||
} else {
|
||||
PX4_INFO("Device not initialized. Retrying every %d ms until battery is plugged in.",
|
||||
INA231_INIT_RETRY_INTERVAL_US / 1000);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,216 @@
|
||||
/****************************************************************************
|
||||
*
|
||||
* Copyright (C) 2022 PX4 Development Team. All rights reserved.
|
||||
*
|
||||
* 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 PX4 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.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
/**
|
||||
* @file ina231.h
|
||||
*
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <px4_platform_common/px4_config.h>
|
||||
#include <px4_platform_common/getopt.h>
|
||||
#include <drivers/device/i2c.h>
|
||||
#include <lib/perf/perf_counter.h>
|
||||
#include <battery/battery.h>
|
||||
#include <drivers/drv_hrt.h>
|
||||
#include <uORB/SubscriptionInterval.hpp>
|
||||
#include <uORB/topics/parameter_update.h>
|
||||
#include <px4_platform_common/i2c_spi_buses.h>
|
||||
|
||||
using namespace time_literals;
|
||||
|
||||
/* Configuration Constants */
|
||||
#define INA231_BASEADDR 0x40 /* 7-bit address. 8-bit address is 0x44 */
|
||||
// If initialization is forced (with the -f flag on the command line), but it fails, the drive will try again to
|
||||
// connect to the INA231 every this many microseconds
|
||||
#define INA231_INIT_RETRY_INTERVAL_US 500000
|
||||
|
||||
/* INA231 Registers addresses */
|
||||
#define INA231_REG_CONFIGURATION (0x00)
|
||||
#define INA231_REG_SHUNTVOLTAGE (0x01)
|
||||
#define INA231_REG_BUSVOLTAGE (0x02)
|
||||
#define INA231_REG_POWER (0x03)
|
||||
#define INA231_REG_CURRENT (0x04)
|
||||
#define INA231_REG_CALIBRATION (0x05)
|
||||
#define INA231_REG_MASKENABLE (0x06)
|
||||
#define INA231_REG_ALERTLIMIT (0x07)
|
||||
#define INA231_MFG_ID (0xfe)
|
||||
#define INA231_MFG_DIEID (0xff)
|
||||
|
||||
/* INA231 Configuration Register */
|
||||
#define INA231_MODE_SHIFTS (0)
|
||||
#define INA231_MODE_MASK (7 << INA231_MODE_SHIFTS)
|
||||
#define INA231_MODE_SHUTDOWN (0 << INA231_MODE_SHIFTS)
|
||||
#define INA231_MODE_SHUNT_TRIG (1 << INA231_MODE_SHIFTS)
|
||||
#define INA231_MODE_BUS_TRIG (2 << INA231_MODE_SHIFTS)
|
||||
#define INA231_MODE_SHUNT_BUS_TRIG (3 << INA231_MODE_SHIFTS)
|
||||
#define INA231_MODE_ADC_OFF (4 << INA231_MODE_SHIFTS)
|
||||
#define INA231_MODE_SHUNT_CONT (5 << INA231_MODE_SHIFTS)
|
||||
#define INA231_MODE_BUS_CONT (6 << INA231_MODE_SHIFTS)
|
||||
#define INA231_MODE_SHUNT_BUS_CONT (7 << INA231_MODE_SHIFTS)
|
||||
|
||||
#define INA231_VSHCT_SHIFTS (3)
|
||||
#define INA231_VSHCT_MASK (7 << INA231_VSHCT_SHIFTS)
|
||||
#define INA231_VSHCT_140US (0 << INA231_VSHCT_SHIFTS)
|
||||
#define INA231_VSHCT_204US (1 << INA231_VSHCT_SHIFTS)
|
||||
#define INA231_VSHCT_332US (2 << INA231_VSHCT_SHIFTS)
|
||||
#define INA231_VSHCT_588US (3 << INA231_VSHCT_SHIFTS)
|
||||
#define INA231_VSHCT_1100US (4 << INA231_VSHCT_SHIFTS)
|
||||
#define INA231_VSHCT_2116US (5 << INA231_VSHCT_SHIFTS)
|
||||
#define INA231_VSHCT_4156US (6 << INA231_VSHCT_SHIFTS)
|
||||
#define INA231_VSHCT_8244US (7 << INA231_VSHCT_SHIFTS)
|
||||
|
||||
#define INA231_VBUSCT_SHIFTS (6)
|
||||
#define INA231_VBUSCT_MASK (7 << INA231_VBUSCT_SHIFTS)
|
||||
#define INA231_VBUSCT_140US (0 << INA231_VBUSCT_SHIFTS)
|
||||
#define INA231_VBUSCT_204US (1 << INA231_VBUSCT_SHIFTS)
|
||||
#define INA231_VBUSCT_332US (2 << INA231_VBUSCT_SHIFTS)
|
||||
#define INA231_VBUSCT_588US (3 << INA231_VBUSCT_SHIFTS)
|
||||
#define INA231_VBUSCT_1100US (4 << INA231_VBUSCT_SHIFTS)
|
||||
#define INA231_VBUSCT_2116US (5 << INA231_VBUSCT_SHIFTS)
|
||||
#define INA231_VBUSCT_4156US (6 << INA231_VBUSCT_SHIFTS)
|
||||
#define INA231_VBUSCT_8244US (7 << INA231_VBUSCT_SHIFTS)
|
||||
|
||||
#define INA231_AVERAGES_SHIFTS (9)
|
||||
#define INA231_AVERAGES_MASK (7 << INA231_AVERAGES_SHIFTS)
|
||||
#define INA231_AVERAGES_1 (0 << INA231_AVERAGES_SHIFTS)
|
||||
#define INA231_AVERAGES_4 (1 << INA231_AVERAGES_SHIFTS)
|
||||
#define INA231_AVERAGES_16 (2 << INA231_AVERAGES_SHIFTS)
|
||||
#define INA231_AVERAGES_64 (3 << INA231_AVERAGES_SHIFTS)
|
||||
#define INA231_AVERAGES_128 (4 << INA231_AVERAGES_SHIFTS)
|
||||
#define INA231_AVERAGES_256 (5 << INA231_AVERAGES_SHIFTS)
|
||||
#define INA231_AVERAGES_512 (6 << INA231_AVERAGES_SHIFTS)
|
||||
#define INA231_AVERAGES_1024 (7 << INA231_AVERAGES_SHIFTS)
|
||||
|
||||
#define INA231_CONFIG (INA231_MODE_SHUNT_BUS_CONT | INA231_VSHCT_588US | INA231_VBUSCT_588US | INA231_AVERAGES_64)
|
||||
|
||||
#define INA231_RST (1 << 15)
|
||||
|
||||
/* INA231 Enable / Mask Register */
|
||||
|
||||
#define INA231_LEN (1 << 0)
|
||||
#define INA231_APOL (1 << 1)
|
||||
#define INA231_OVF (1 << 2)
|
||||
#define INA231_CVRF (1 << 3)
|
||||
#define INA231_AFF (1 << 4)
|
||||
|
||||
#define INA231_CNVR (1 << 10)
|
||||
#define INA231_POL (1 << 11)
|
||||
#define INA231_BUL (1 << 12)
|
||||
#define INA231_BOL (1 << 13)
|
||||
#define INA231_SUL (1 << 14)
|
||||
#define INA231_SOL (1 << 15)
|
||||
|
||||
#define INA231_SAMPLE_FREQUENCY_HZ 10
|
||||
#define INA231_SAMPLE_INTERVAL_US (1_s / INA231_SAMPLE_FREQUENCY_HZ)
|
||||
#define INA231_CONVERSION_INTERVAL (INA231_SAMPLE_INTERVAL_US - 7)
|
||||
#define MAX_CURRENT 164.0f /* 164 Amps */
|
||||
#define DN_MAX 32768.0f /* 2^15 */
|
||||
#define INA231_CONST 0.00512f /* is an internal fixed value used to ensure scaling is maintained properly */
|
||||
#define INA231_SHUNT 0.0005f /* Shunt is 500 uOhm */
|
||||
#define INA231_VSCALE 0.00125f /* LSB of voltage is 1.25 mV */
|
||||
|
||||
#define swap16(w) __builtin_bswap16((w))
|
||||
|
||||
class INA231 : public device::I2C, public ModuleParams, public I2CSPIDriver<INA231>
|
||||
{
|
||||
public:
|
||||
INA231(const I2CSPIDriverConfig &config, int battery_index);
|
||||
virtual ~INA231();
|
||||
|
||||
static I2CSPIDriverBase *instantiate(const I2CSPIDriverConfig &config, int runtime_instance);
|
||||
static void print_usage();
|
||||
|
||||
void RunImpl();
|
||||
|
||||
int init() override;
|
||||
|
||||
/**
|
||||
* Tries to call the init() function. If it fails, then it will schedule to retry again in
|
||||
* INA231_INIT_RETRY_INTERVAL_US microseconds. It will keep retrying at this interval until initialization succeeds.
|
||||
*
|
||||
* @return PX4_OK if initialization succeeded on the first try. Negative value otherwise.
|
||||
*/
|
||||
int force_init();
|
||||
|
||||
/**
|
||||
* Diagnostics - print some basic information about the driver.
|
||||
*/
|
||||
void print_status() override;
|
||||
|
||||
protected:
|
||||
int probe() override;
|
||||
|
||||
private:
|
||||
bool _sensor_ok{false};
|
||||
unsigned _measure_interval{0};
|
||||
bool _collect_phase{false};
|
||||
bool _initialized{false};
|
||||
|
||||
perf_counter_t _sample_perf;
|
||||
perf_counter_t _comms_errors;
|
||||
perf_counter_t _collection_errors;
|
||||
perf_counter_t _measure_errors;
|
||||
|
||||
int16_t _bus_voltage{0};
|
||||
int16_t _power{0};
|
||||
int16_t _current{0};
|
||||
int16_t _shunt{0};
|
||||
int16_t _cal{0};
|
||||
bool _mode_triggered{false};
|
||||
|
||||
float _max_current{MAX_CURRENT};
|
||||
float _rshunt{INA231_SHUNT};
|
||||
uint16_t _config{INA231_CONFIG};
|
||||
float _current_lsb{_max_current / DN_MAX};
|
||||
float _power_lsb{25.0f * _current_lsb};
|
||||
|
||||
Battery _battery;
|
||||
uORB::SubscriptionInterval _parameter_update_sub{ORB_ID(parameter_update), 1_s};
|
||||
|
||||
int read(uint8_t address, int16_t &data);
|
||||
int write(uint8_t address, uint16_t data);
|
||||
|
||||
/**
|
||||
* Initialise the automatic measurement state machine and start it.
|
||||
*
|
||||
* @note This function is called at open and error time. It might make sense
|
||||
* to make it more aggressive about resetting the bus in case of errors.
|
||||
*/
|
||||
void start();
|
||||
|
||||
int measure();
|
||||
int collect();
|
||||
|
||||
};
|
||||
@@ -0,0 +1,131 @@
|
||||
/****************************************************************************
|
||||
*
|
||||
* Copyright (C) 2022 PX4 Development Team. All rights reserved.
|
||||
*
|
||||
* 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 PX4 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.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#include <px4_platform_common/getopt.h>
|
||||
#include <px4_platform_common/module.h>
|
||||
|
||||
#include "ina231.h"
|
||||
|
||||
I2CSPIDriverBase *INA231::instantiate(const I2CSPIDriverConfig &config, int runtime_instance)
|
||||
{
|
||||
INA231 *instance = new INA231(config, config.custom1);
|
||||
|
||||
if (instance == nullptr) {
|
||||
PX4_ERR("alloc failed");
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
if (config.keep_running) {
|
||||
if (instance->force_init() != PX4_OK) {
|
||||
PX4_INFO("Failed to init INA231 on bus %d, but will try again periodically.", config.bus);
|
||||
}
|
||||
|
||||
} else if (instance->init() != PX4_OK) {
|
||||
delete instance;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
return instance;
|
||||
}
|
||||
|
||||
void
|
||||
INA231::print_usage()
|
||||
{
|
||||
PRINT_MODULE_DESCRIPTION(
|
||||
R"DESCR_STR(
|
||||
### Description
|
||||
Driver for the INA231 power monitor.
|
||||
|
||||
Multiple instances of this driver can run simultaneously, if each instance has a separate bus OR I2C address.
|
||||
|
||||
For example, one instance can run on Bus 2, address 0x44, and one can run on Bus 2, address 0x45.
|
||||
|
||||
If the INA231 module is not powered, then by default, initialization of the driver will fail. To change this, use
|
||||
the -f flag. If this flag is set, then if initialization fails, the driver will keep trying to initialize again
|
||||
every 0.5 seconds. With this flag set, you can plug in a battery after the driver starts, and it will work. Without
|
||||
this flag set, the battery must be plugged in before starting the driver.
|
||||
|
||||
)DESCR_STR");
|
||||
|
||||
PRINT_MODULE_USAGE_NAME("ina231", "driver");
|
||||
|
||||
PRINT_MODULE_USAGE_COMMAND("start");
|
||||
PRINT_MODULE_USAGE_PARAMS_I2C_SPI_DRIVER(true, false);
|
||||
PRINT_MODULE_USAGE_PARAMS_I2C_ADDRESS(0x40);
|
||||
PRINT_MODULE_USAGE_PARAMS_I2C_KEEP_RUNNING_FLAG();
|
||||
PRINT_MODULE_USAGE_PARAM_INT('t', 1, 1, 2, "battery index for calibration values (1 or 2)", true);
|
||||
PRINT_MODULE_USAGE_DEFAULT_COMMANDS();
|
||||
}
|
||||
|
||||
extern "C" int
|
||||
ina231_main(int argc, char *argv[])
|
||||
{
|
||||
int ch;
|
||||
using ThisDriver = INA231;
|
||||
BusCLIArguments cli{true, false};
|
||||
cli.i2c_address = INA231_BASEADDR;
|
||||
cli.default_i2c_frequency = 100000;
|
||||
cli.support_keep_running = true;
|
||||
cli.custom1 = 1;
|
||||
|
||||
while ((ch = cli.getOpt(argc, argv, "t:")) != EOF) {
|
||||
switch (ch) {
|
||||
case 't': // battery index
|
||||
cli.custom1 = (int)strtol(cli.optArg(), NULL, 0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
const char *verb = cli.optArg();
|
||||
if (!verb) {
|
||||
ThisDriver::print_usage();
|
||||
return -1;
|
||||
}
|
||||
|
||||
BusInstanceIterator iterator(MODULE_NAME, cli, DRV_POWER_DEVTYPE_INA231);
|
||||
|
||||
if (!strcmp(verb, "start")) {
|
||||
return ThisDriver::module_start(cli, iterator);
|
||||
}
|
||||
|
||||
if (!strcmp(verb, "stop")) {
|
||||
return ThisDriver::module_stop(iterator);
|
||||
}
|
||||
|
||||
if (!strcmp(verb, "status")) {
|
||||
return ThisDriver::module_status(iterator);
|
||||
}
|
||||
|
||||
ThisDriver::print_usage();
|
||||
return -1;
|
||||
}
|
||||
+38
-24
@@ -1,6 +1,6 @@
|
||||
/****************************************************************************
|
||||
*
|
||||
* Copyright (c) 2019, 2021 PX4 Development Team. All rights reserved.
|
||||
* Copyright (c) 2022 PX4 Development Team. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
@@ -32,31 +32,45 @@
|
||||
****************************************************************************/
|
||||
|
||||
/**
|
||||
* @file bootloader_main.c
|
||||
* Enable INA231 Power Monitor
|
||||
*
|
||||
* FMU-specific early startup code for bootloader
|
||||
* For systems a INA231 Power Monitor, this should be set to true
|
||||
*
|
||||
* @group Sensors
|
||||
* @boolean
|
||||
* @reboot_required true
|
||||
*/
|
||||
PARAM_DEFINE_INT32(SENS_EN_INA231, 0);
|
||||
|
||||
#include "board_config.h"
|
||||
#include "bl.h"
|
||||
/**
|
||||
* INA231 Power Monitor Config
|
||||
*
|
||||
* @group Sensors
|
||||
* @min 0
|
||||
* @max 65535
|
||||
* @decimal 1
|
||||
* @increment 1
|
||||
*/
|
||||
PARAM_DEFINE_INT32(INA231_CONFIG, 18139);
|
||||
|
||||
#include <nuttx/config.h>
|
||||
#include <nuttx/board.h>
|
||||
#include <chip.h>
|
||||
#include <stm32_uart.h>
|
||||
#include <arch/board/board.h>
|
||||
#include "arm_internal.h"
|
||||
#include <px4_platform_common/init.h>
|
||||
/**
|
||||
* INA231 Power Monitor Max Current
|
||||
*
|
||||
* @group Sensors
|
||||
* @min 0.1
|
||||
* @max 200.0
|
||||
* @decimal 2
|
||||
* @increment 0.1
|
||||
*/
|
||||
PARAM_DEFINE_FLOAT(INA231_CURRENT, 164.0f);
|
||||
|
||||
extern int sercon_main(int c, char **argv);
|
||||
|
||||
void board_late_initialize(void)
|
||||
{
|
||||
sercon_main(0, NULL);
|
||||
}
|
||||
|
||||
extern void sys_tick_handler(void);
|
||||
void board_timerhook(void)
|
||||
{
|
||||
sys_tick_handler();
|
||||
}
|
||||
/**
|
||||
* INA231 Power Monitor Shunt
|
||||
*
|
||||
* @group Sensors
|
||||
* @min 0.000000001
|
||||
* @max 0.1
|
||||
* @decimal 10
|
||||
* @increment .000000001
|
||||
*/
|
||||
PARAM_DEFINE_FLOAT(INA231_SHUNT, 0.0005f);
|
||||
@@ -717,6 +717,8 @@ int PWMOut::pwm_ioctl(device::file_t *filp, int cmd, unsigned long arg)
|
||||
|
||||
case PWM_SERVO_SET_ARM_OK:
|
||||
case PWM_SERVO_CLEAR_ARM_OK:
|
||||
case PWM_SERVO_SET_FORCE_SAFETY_OFF:
|
||||
case PWM_SERVO_SET_FORCE_SAFETY_ON:
|
||||
break;
|
||||
|
||||
case PWM_SERVO_DISARM:
|
||||
|
||||
+104
-30
@@ -74,7 +74,6 @@
|
||||
#include <uORB/topics/input_rc.h>
|
||||
#include <uORB/topics/vehicle_command.h>
|
||||
#include <uORB/topics/vehicle_command_ack.h>
|
||||
#include <uORB/topics/vehicle_status.h>
|
||||
#include <uORB/topics/px4io_status.h>
|
||||
#include <uORB/topics/parameter_update.h>
|
||||
|
||||
@@ -197,8 +196,7 @@ private:
|
||||
uint16_t _last_written_arming_c{0}; ///< the last written arming state reg
|
||||
|
||||
uORB::Subscription _t_actuator_armed{ORB_ID(actuator_armed)}; ///< system armed control topic
|
||||
uORB::Subscription _t_vehicle_command{ORB_ID(vehicle_command)}; ///< vehicle command topic
|
||||
uORB::Subscription _t_vehicle_status{ORB_ID(vehicle_status)}; ///< vehicle status topic
|
||||
uORB::Subscription _t_vehicle_command{ORB_ID(vehicle_command)}; ///< vehicle command topic
|
||||
|
||||
uORB::SubscriptionInterval _parameter_update_sub{ORB_ID(parameter_update), 1_s};
|
||||
|
||||
@@ -445,14 +443,15 @@ int PX4IO::init()
|
||||
// the startup script to be able to load a new IO
|
||||
// firmware
|
||||
|
||||
// If IO has already safety off it won't accept going into bootloader mode,
|
||||
// therefore we need to set safety on first.
|
||||
io_reg_set(PX4IO_PAGE_SETUP, PX4IO_P_SETUP_FORCE_SAFETY_ON, PX4IO_FORCE_SAFETY_MAGIC);
|
||||
|
||||
// Now the reboot into bootloader mode should succeed.
|
||||
io_reg_set(PX4IO_PAGE_SETUP, PX4IO_P_SETUP_REBOOT_BL, PX4IO_REBOOT_BL_MAGIC);
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* Set safety_off to false when FMU boot*/
|
||||
io_reg_set(PX4IO_PAGE_SETUP, PX4IO_P_SETUP_SAFETY_OFF, 0);
|
||||
|
||||
if (_max_rc_input > input_rc_s::RC_INPUT_MAX_CHANNELS) {
|
||||
_max_rc_input = input_rc_s::RC_INPUT_MAX_CHANNELS;
|
||||
}
|
||||
@@ -477,6 +476,14 @@ int PX4IO::init()
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* set safety to off if circuit breaker enabled */
|
||||
if (circuit_breaker_enabled("CBRK_IO_SAFETY", CBRK_IO_SAFETY_KEY)) {
|
||||
io_reg_set(PX4IO_PAGE_SETUP, PX4IO_P_SETUP_FORCE_SAFETY_OFF, PX4IO_FORCE_SAFETY_MAGIC);
|
||||
|
||||
} else {
|
||||
io_reg_set(PX4IO_PAGE_SETUP, PX4IO_P_SETUP_FORCE_SAFETY_ON, PX4IO_FORCE_SAFETY_MAGIC);
|
||||
}
|
||||
|
||||
/* try to claim the generic PWM output device node as well - it's OK if we fail at this */
|
||||
if (_param_sys_hitl.get() <= 0 && _param_sys_use_io.get() == 1) {
|
||||
_class_instance = register_class_devname(PWM_OUTPUT_BASE_DEVICE_PATH);
|
||||
@@ -614,6 +621,11 @@ void PX4IO::Run()
|
||||
|
||||
update_params();
|
||||
|
||||
/* Check if the IO safety circuit breaker has been updated */
|
||||
bool circuit_breaker_io_safety_enabled = circuit_breaker_enabled("CBRK_IO_SAFETY", CBRK_IO_SAFETY_KEY);
|
||||
/* Bypass IO safety switch logic by setting FORCE_SAFETY_OFF */
|
||||
io_reg_set(PX4IO_PAGE_SETUP, PX4IO_P_SETUP_FORCE_SAFETY_OFF, circuit_breaker_io_safety_enabled);
|
||||
|
||||
/* Check if the flight termination circuit breaker has been updated */
|
||||
bool disable_flighttermination = circuit_breaker_enabled("CBRK_FLIGHTTERM", CBRK_FLIGHTTERM_KEY);
|
||||
/* Tell IO that it can terminate the flight if FMU is not responding or if a failure has been reported by the FailureDetector logic */
|
||||
@@ -962,12 +974,15 @@ int PX4IO::io_handle_status(uint16_t status)
|
||||
*/
|
||||
|
||||
/* check for IO reset - force it back to armed if necessary */
|
||||
if (!(status & PX4IO_P_STATUS_FLAGS_ARM_SYNC)) {
|
||||
if (_status & PX4IO_P_STATUS_FLAGS_SAFETY_OFF && !(status & PX4IO_P_STATUS_FLAGS_SAFETY_OFF)
|
||||
&& !(status & PX4IO_P_STATUS_FLAGS_ARM_SYNC)) {
|
||||
/* set the arming flag */
|
||||
ret = io_reg_modify(PX4IO_PAGE_STATUS, PX4IO_P_STATUS_FLAGS, 0, PX4IO_P_STATUS_FLAGS_ARM_SYNC);
|
||||
ret = io_reg_modify(PX4IO_PAGE_STATUS, PX4IO_P_STATUS_FLAGS, 0,
|
||||
PX4IO_P_STATUS_FLAGS_SAFETY_OFF | PX4IO_P_STATUS_FLAGS_ARM_SYNC);
|
||||
|
||||
/* set new status */
|
||||
_status = status;
|
||||
_status &= PX4IO_P_STATUS_FLAGS_SAFETY_OFF;
|
||||
|
||||
} else if (!(_status & PX4IO_P_STATUS_FLAGS_ARM_SYNC)) {
|
||||
|
||||
@@ -984,26 +999,18 @@ int PX4IO::io_handle_status(uint16_t status)
|
||||
}
|
||||
|
||||
/**
|
||||
* Get and handle the safety button status
|
||||
* Get and handle the safety status
|
||||
*/
|
||||
const bool safety_button_pressed = status & PX4IO_P_STATUS_FLAGS_SAFETY_BUTTON_EVENT;
|
||||
const bool safety_off = status & PX4IO_P_STATUS_FLAGS_SAFETY_OFF;
|
||||
|
||||
if (safety_button_pressed) {
|
||||
io_reg_set(PX4IO_PAGE_SETUP, PX4IO_P_SETUP_SAFETY_BUTTON_ACK, 0);
|
||||
/* px4io board will change safety_off from false to true and stay like that until the vehicle is rebooted
|
||||
* where safety will change back to false. Here we are triggering the safety button event once.
|
||||
* TODO: change px4io firmware to act on the event. This will enable the "force safety on disarming" feature. */
|
||||
if (_previous_safety_off != safety_off) {
|
||||
_button_publisher.safetyButtonTriggerEvent();
|
||||
}
|
||||
|
||||
/**
|
||||
* Inform PX4IO board about safety_off state for LED control
|
||||
*/
|
||||
vehicle_status_s vehicle_status;
|
||||
|
||||
if (_t_vehicle_status.update(&vehicle_status)) {
|
||||
if (_previous_safety_off != vehicle_status.safety_off) {
|
||||
io_reg_set(PX4IO_PAGE_SETUP, PX4IO_P_SETUP_SAFETY_OFF, vehicle_status.safety_off);
|
||||
_previous_safety_off = vehicle_status.safety_off;
|
||||
}
|
||||
}
|
||||
_previous_safety_off = safety_off;
|
||||
|
||||
return ret;
|
||||
}
|
||||
@@ -1026,17 +1033,37 @@ int PX4IO::dsm_bind_ioctl(int dsmMode)
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
// Check if safety was off
|
||||
bool safety_off = (_status & PX4IO_P_STATUS_FLAGS_SAFETY_OFF);
|
||||
int ret = -1;
|
||||
|
||||
// Put safety on
|
||||
if (safety_off) {
|
||||
// re-enable safety
|
||||
ret = io_reg_modify(PX4IO_PAGE_STATUS, PX4IO_P_STATUS_FLAGS, PX4IO_P_STATUS_FLAGS_SAFETY_OFF, 0);
|
||||
|
||||
// set new status
|
||||
_status &= ~(PX4IO_P_STATUS_FLAGS_SAFETY_OFF);
|
||||
}
|
||||
|
||||
PX4_INFO("Binding DSM%s RX", (dsmMode == DSM2_BIND_PULSES) ? "2" : ((dsmMode == DSMX_BIND_PULSES) ? "-X" : "-X8"));
|
||||
|
||||
int ret = OK;
|
||||
ret |= io_reg_set(PX4IO_PAGE_SETUP, PX4IO_P_SETUP_DSM, dsm_bind_power_down);
|
||||
io_reg_set(PX4IO_PAGE_SETUP, PX4IO_P_SETUP_DSM, dsm_bind_power_down);
|
||||
px4_usleep(500000);
|
||||
ret |= io_reg_set(PX4IO_PAGE_SETUP, PX4IO_P_SETUP_DSM, dsm_bind_set_rx_out);
|
||||
ret |= io_reg_set(PX4IO_PAGE_SETUP, PX4IO_P_SETUP_DSM, dsm_bind_power_up);
|
||||
io_reg_set(PX4IO_PAGE_SETUP, PX4IO_P_SETUP_DSM, dsm_bind_set_rx_out);
|
||||
io_reg_set(PX4IO_PAGE_SETUP, PX4IO_P_SETUP_DSM, dsm_bind_power_up);
|
||||
px4_usleep(72000);
|
||||
ret |= io_reg_set(PX4IO_PAGE_SETUP, PX4IO_P_SETUP_DSM, dsm_bind_send_pulses | (dsmMode << 4));
|
||||
io_reg_set(PX4IO_PAGE_SETUP, PX4IO_P_SETUP_DSM, dsm_bind_send_pulses | (dsmMode << 4));
|
||||
px4_usleep(50000);
|
||||
ret |= io_reg_set(PX4IO_PAGE_SETUP, PX4IO_P_SETUP_DSM, dsm_bind_reinit_uart);
|
||||
io_reg_set(PX4IO_PAGE_SETUP, PX4IO_P_SETUP_DSM, dsm_bind_reinit_uart);
|
||||
ret = OK;
|
||||
|
||||
// Put safety back off
|
||||
if (safety_off) {
|
||||
ret = io_reg_modify(PX4IO_PAGE_STATUS, PX4IO_P_STATUS_FLAGS, 0,
|
||||
PX4IO_P_STATUS_FLAGS_SAFETY_OFF);
|
||||
_status |= PX4IO_P_STATUS_FLAGS_SAFETY_OFF;
|
||||
}
|
||||
|
||||
if (ret != OK) {
|
||||
PX4_INFO("Binding DSM failed");
|
||||
@@ -1106,7 +1133,7 @@ int PX4IO::io_get_status()
|
||||
status.status_arm_sync = STATUS_FLAGS & PX4IO_P_STATUS_FLAGS_ARM_SYNC;
|
||||
status.status_init_ok = STATUS_FLAGS & PX4IO_P_STATUS_FLAGS_INIT_OK;
|
||||
status.status_failsafe = STATUS_FLAGS & PX4IO_P_STATUS_FLAGS_FAILSAFE;
|
||||
status.status_safety_button_event = STATUS_FLAGS & PX4IO_P_STATUS_FLAGS_SAFETY_BUTTON_EVENT;
|
||||
status.status_safety_off = STATUS_FLAGS & PX4IO_P_STATUS_FLAGS_SAFETY_OFF;
|
||||
|
||||
// PX4IO_P_STATUS_ALARMS
|
||||
status.alarm_rc_lost = STATUS_ALARMS & PX4IO_P_STATUS_ALARMS_RC_LOST;
|
||||
@@ -1617,6 +1644,18 @@ int PX4IO::ioctl(file *filep, int cmd, unsigned long arg)
|
||||
*(unsigned *)arg = _max_actuators;
|
||||
break;
|
||||
|
||||
case PWM_SERVO_SET_FORCE_SAFETY_OFF:
|
||||
PX4_DEBUG("PWM_SERVO_SET_FORCE_SAFETY_OFF");
|
||||
/* force safety swith off */
|
||||
ret = io_reg_set(PX4IO_PAGE_SETUP, PX4IO_P_SETUP_FORCE_SAFETY_OFF, PX4IO_FORCE_SAFETY_MAGIC);
|
||||
break;
|
||||
|
||||
case PWM_SERVO_SET_FORCE_SAFETY_ON:
|
||||
PX4_DEBUG("PWM_SERVO_SET_FORCE_SAFETY_ON");
|
||||
/* force safety switch on */
|
||||
ret = io_reg_set(PX4IO_PAGE_SETUP, PX4IO_P_SETUP_FORCE_SAFETY_ON, PX4IO_FORCE_SAFETY_MAGIC);
|
||||
break;
|
||||
|
||||
case DSM_BIND_START:
|
||||
/* bind a DSM receiver */
|
||||
ret = dsm_bind_ioctl(arg);
|
||||
@@ -1686,6 +1725,16 @@ int PX4IO::ioctl(file *filep, int cmd, unsigned long arg)
|
||||
|
||||
}
|
||||
|
||||
// re-enable safety
|
||||
ret = io_reg_set(PX4IO_PAGE_SETUP, PX4IO_P_SETUP_FORCE_SAFETY_ON, PX4IO_FORCE_SAFETY_MAGIC);
|
||||
|
||||
if (ret != PX4_OK) {
|
||||
PX4_WARN("IO refused to re-enable safety");
|
||||
}
|
||||
|
||||
// set new status
|
||||
_status &= ~(PX4IO_P_STATUS_FLAGS_SAFETY_OFF);
|
||||
|
||||
/* reboot into bootloader - arg must be PX4IO_REBOOT_BL_MAGIC */
|
||||
usleep(1);
|
||||
ret = io_reg_set(PX4IO_PAGE_SETUP, PX4IO_P_SETUP_REBOOT_BL, arg);
|
||||
@@ -2009,6 +2058,29 @@ int PX4IO::custom_command(int argc, char *argv[])
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
if (!strcmp(verb, "safety_off")) {
|
||||
int ret = get_instance()->ioctl(NULL, PWM_SERVO_SET_FORCE_SAFETY_OFF, 0);
|
||||
|
||||
if (ret != OK) {
|
||||
PX4_ERR("failed to disable safety (%i)", ret);
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (!strcmp(verb, "safety_on")) {
|
||||
int ret = get_instance()->ioctl(NULL, PWM_SERVO_SET_FORCE_SAFETY_ON, 0);
|
||||
|
||||
if (ret != OK) {
|
||||
PX4_ERR("failed to enable safety (%i)", ret);
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (!strcmp(verb, "debug")) {
|
||||
if (argc <= 1) {
|
||||
PX4_ERR("usage: px4io debug LEVEL");
|
||||
@@ -2090,6 +2162,8 @@ Output driver communicating with the IO co-processor.
|
||||
PRINT_MODULE_USAGE_ARG("<filename>", "Firmware file", false);
|
||||
PRINT_MODULE_USAGE_COMMAND_DESCR("update", "Update IO firmware");
|
||||
PRINT_MODULE_USAGE_ARG("<filename>", "Firmware file", true);
|
||||
PRINT_MODULE_USAGE_COMMAND_DESCR("safety_off", "Turn off safety (force)");
|
||||
PRINT_MODULE_USAGE_COMMAND_DESCR("safety_on", "Turn on safety (force)");
|
||||
PRINT_MODULE_USAGE_COMMAND_DESCR("debug", "set IO debug level");
|
||||
PRINT_MODULE_USAGE_ARG("<debug_level>", "0=disabled, 9=max verbosity", false);
|
||||
PRINT_MODULE_USAGE_COMMAND_DESCR("bind", "DSM bind");
|
||||
|
||||
@@ -951,6 +951,8 @@ UavcanNode::ioctl(file *filp, int cmd, unsigned long arg)
|
||||
switch (cmd) {
|
||||
case PWM_SERVO_SET_ARM_OK:
|
||||
case PWM_SERVO_CLEAR_ARM_OK:
|
||||
case PWM_SERVO_SET_FORCE_SAFETY_OFF:
|
||||
// these are no-ops, as no safety switch
|
||||
break;
|
||||
|
||||
case MIXERIOCRESET:
|
||||
|
||||
@@ -146,34 +146,38 @@
|
||||
"description": "mission start"
|
||||
},
|
||||
"6": {
|
||||
"name": "safety_button",
|
||||
"description": "safety button"
|
||||
},
|
||||
"7": {
|
||||
"name": "auto_disarm_land",
|
||||
"description": "landing"
|
||||
},
|
||||
"7": {
|
||||
"8": {
|
||||
"name": "auto_disarm_preflight",
|
||||
"description": "auto preflight disarming"
|
||||
},
|
||||
"8": {
|
||||
"9": {
|
||||
"name": "kill_switch",
|
||||
"description": "kill switch"
|
||||
},
|
||||
"9": {
|
||||
"10": {
|
||||
"name": "lockdown",
|
||||
"description": "lockdown"
|
||||
},
|
||||
"10": {
|
||||
"11": {
|
||||
"name": "failure_detector",
|
||||
"description": "failure detector"
|
||||
},
|
||||
"11": {
|
||||
"12": {
|
||||
"name": "shutdown",
|
||||
"description": "shutdown request"
|
||||
},
|
||||
"12": {
|
||||
"13": {
|
||||
"name": "unit_test",
|
||||
"description": "unit tests"
|
||||
},
|
||||
"13": {
|
||||
"14": {
|
||||
"name": "rc_button",
|
||||
"description": "RC (button)"
|
||||
}
|
||||
|
||||
@@ -47,80 +47,80 @@ static constexpr int LON_DIM = 37;
|
||||
// Magnetic declination data in radians * 10^-4
|
||||
// Model: WMM-2020,
|
||||
// Version: 0.5.1.11,
|
||||
// Date: 2022.3835,
|
||||
// Date: 2022.2767,
|
||||
static constexpr const int16_t declination_table[19][37] {
|
||||
// LONGITUDE: -180, -170, -160, -150, -140, -130, -120, -110, -100, -90, -80, -70, -60, -50, -40, -30, -20, -10, 0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120, 130, 140, 150, 160, 170, 180,
|
||||
/* LAT: -90 */ { 25991, 24246, 22500, 20755, 19010, 17264, 15519, 13774, 12028, 10283, 8538, 6792, 5047, 3302, 1557, -189, -1934, -3679, -5425, -7170, -8915,-10660,-12406,-14151,-15896,-17642,-19387,-21133,-22878,-24623,-26369,-28114,-29859, 31227, 29482, 27736, 25991, },
|
||||
/* LAT: -80 */ { 22558, 20425, 18485, 16710, 15069, 13531, 12067, 10655, 9280, 7930, 6598, 5279, 3970, 2665, 1357, 38, -1303, -2674, -4084, -5535, -7029, -8565,-10142,-11761,-13425,-15142,-16927,-18799,-20781,-22899,-25173,-27607,-30176, 30016, 27397, 24889, 22558, },
|
||||
/* LAT: -70 */ { 14975, 13577, 12452, 11491, 10623, 9792, 8951, 8064, 7112, 6093, 5023, 3929, 2844, 1788, 766, -244, -1281, -2385, -3585, -4884, -6264, -7693, -9140,-10581,-12007,-13423,-14851,-16336,-17958,-19870,-22386,-26179, 30734, 24153, 19624, 16847, 14975, },
|
||||
/* LAT: -60 */ { 8410, 8167, 7888, 7615, 7364, 7112, 6805, 6373, 5759, 4941, 3940, 2829, 1708, 679, -203, -962, -1691, -2513, -3514, -4710, -6038, -7407, -8728, -9938,-11003,-11903,-12619,-13114,-13286,-12837,-10739, -3521, 4880, 7637, 8413, 8542, 8410, },
|
||||
/* LAT: -50 */ { 5477, 5514, 5460, 5372, 5300, 5264, 5231, 5105, 4763, 4101, 3092, 1820, 479, -703, -1576, -2143, -2541, -2980, -3662, -4672, -5914, -7190, -8331, -9234, -9834,-10075, -9883, -9128, -7621, -5261, -2357, 390, 2499, 3923, 4798, 5272, 5477, },
|
||||
/* LAT: -40 */ { 3948, 4042, 4051, 4008, 3949, 3916, 3922, 3912, 3740, 3208, 2187, 747, -818, -2134, -3001, -3455, -3641, -3701, -3868, -4433, -5406, -6482, -7368, -7909, -8019, -7644, -6757, -5374, -3662, -1959, -499, 723, 1766, 2631, 3287, 3717, 3948, },
|
||||
/* LAT: -30 */ { 2978, 3065, 3097, 3084, 3027, 2949, 2890, 2857, 2732, 2256, 1223, -294, -1902, -3158, -3901, -4249, -4331, -4124, -3690, -3465, -3823, -4569, -5269, -5621, -5499, -4914, -3956, -2750, -1540, -595, 83, 683, 1307, 1909, 2418, 2779, 2978, },
|
||||
/* LAT: -20 */ { 2336, 2382, 2401, 2405, 2364, 2271, 2165, 2089, 1945, 1451, 398, -1089, -2568, -3633, -4169, -4288, -4088, -3533, -2673, -1873, -1592, -1944, -2594, -3064, -3103, -2746, -2111, -1295, -518, -28, 235, 536, 977, 1454, 1876, 2183, 2336, },
|
||||
/* LAT: -10 */ { 1942, 1937, 1917, 1916, 1889, 1806, 1698, 1608, 1424, 875, -184, -1560, -2835, -3668, -3939, -3715, -3142, -2362, -1516, -760, -293, -323, -791, -1298, -1512, -1424, -1111, -612, -114, 128, 177, 337, 707, 1144, 1536, 1823, 1942, },
|
||||
/* LAT: 0 */ { 1729, 1696, 1642, 1635, 1625, 1558, 1455, 1342, 1089, 470, -569, -1795, -2851, -3441, -3445, -2948, -2182, -1400, -747, -210, 204, 318, 41, -376, -632, -688, -590, -328, -38, 52, -9, 80, 420, 862, 1281, 1600, 1729, },
|
||||
/* LAT: 10 */ { 1594, 1602, 1561, 1579, 1606, 1559, 1439, 1254, 879, 162, -858, -1934, -2763, -3107, -2907, -2303, -1528, -815, -298, 83, 409, 559, 399, 77, -158, -266, -290, -209, -104, -145, -285, -258, 43, 497, 977, 1384, 1594, },
|
||||
/* LAT: 20 */ { 1411, 1560, 1621, 1715, 1802, 1783, 1630, 1330, 786, -69, -1112, -2064, -2664, -2777, -2453, -1853, -1143, -492, -31, 280, 539, 686, 597, 354, 154, 35, -56, -120, -200, -390, -626, -685, -452, -5, 536, 1054, 1411, },
|
||||
/* LAT: 30 */ { 1111, 1478, 1738, 1963, 2124, 2135, 1949, 1528, 802, -226, -1344, -2224, -2642, -2583, -2187, -1609, -954, -335, 129, 436, 668, 815, 796, 647, 498, 373, 216, 5, -277, -651, -1020, -1180, -1021, -596, -20, 590, 1111, },
|
||||
/* LAT: 40 */ { 755, 1341, 1836, 2229, 2478, 2523, 2308, 1777, 866, -361, -1601, -2470, -2795, -2645, -2201, -1609, -956, -326, 186, 552, 823, 1022, 1117, 1107, 1031, 883, 614, 204, -334, -941, -1462, -1707, -1592, -1176, -577, 95, 755, },
|
||||
/* LAT: 50 */ { 466, 1213, 1895, 2452, 2819, 2926, 2698, 2045, 904, -593, -2018, -2937, -3234, -3044, -2555, -1910, -1199, -500, 117, 624, 1043, 1400, 1681, 1852, 1872, 1685, 1241, 533, -360, -1263, -1943, -2231, -2107, -1666, -1031, -298, 466, },
|
||||
/* LAT: 60 */ { 273, 1126, 1932, 2627, 3132, 3345, 3132, 2321, 806, -1155, -2876, -3859, -4114, -3854, -3282, -2536, -1709, -867, -58, 695, 1388, 2020, 2564, 2961, 3122, 2937, 2299, 1184, -230, -1551, -2421, -2732, -2567, -2073, -1379, -578, 273, },
|
||||
/* LAT: 70 */ { 42, 978, 1876, 2676, 3291, 3585, 3333, 2199, -41, -2759, -4714, -5542, -5551, -5066, -4295, -3360, -2334, -1266, -190, 871, 1897, 2865, 3734, 4442, 4891, 4926, 4319, 2850, 658, -1451, -2752, -3197, -3039, -2507, -1756, -886, 42, },
|
||||
/* LAT: 80 */ { -650, 272, 1126, 1818, 2203, 2020, 821, -1791, -5004, -7127, -7878, -7749, -7120, -6201, -5109, -3909, -2642, -1335, -9, 1320, 2635, 3918, 5146, 6285, 7283, 8044, 8389, 7950, 6035, 2276, -1323, -3048, -3419, -3095, -2421, -1572, -650, },
|
||||
/* LAT: 90 */ { -29901,-28155,-26410,-24665,-22919,-21174,-19428,-17683,-15938,-14193,-12447,-10702, -8957, -7212, -5467, -3722, -1976, -231, 1514, 3259, 5004, 6750, 8495, 10240, 11986, 13731, 15476, 17222, 18967, 20713, 22458, 24204, 25949, 27695, 29440, 31186,-29901, },
|
||||
/* LAT: -90 */ { 25994, 24248, 22503, 20758, 19012, 17267, 15522, 13776, 12031, 10286, 8540, 6795, 5050, 3304, 1559, -186, -1931, -3677, -5422, -7167, -8912,-10658,-12403,-14148,-15894,-17639,-19384,-21130,-22875,-24621,-26366,-28111,-29857, 31230, 29484, 27739, 25994, },
|
||||
/* LAT: -80 */ { 22561, 20428, 18487, 16712, 15071, 13532, 12068, 10657, 9281, 7931, 6599, 5280, 3971, 2666, 1359, 40, -1301, -2672, -4082, -5533, -7026, -8562,-10139,-11758,-13421,-15139,-16924,-18795,-20777,-22895,-25169,-27603,-30172, 30020, 27400, 24893, 22561, },
|
||||
/* LAT: -70 */ { 14974, 13576, 12451, 11491, 10623, 9793, 8952, 8065, 7113, 6094, 5024, 3931, 2845, 1789, 767, -244, -1280, -2384, -3584, -4882, -6261, -7690, -9137,-10578,-12004,-13419,-14847,-16332,-17953,-19864,-22379,-26169, 30744, 24158, 19625, 16846, 14974, },
|
||||
/* LAT: -60 */ { 8407, 8164, 7886, 7614, 7363, 7111, 6805, 6374, 5760, 4942, 3942, 2830, 1709, 680, -204, -963, -1692, -2513, -3514, -4708, -6036, -7404, -8724, -9935,-11000,-11899,-12616,-13111,-13283,-12834,-10737, -3530, 4869, 7630, 8408, 8538, 8407, },
|
||||
/* LAT: -50 */ { 5474, 5512, 5458, 5371, 5299, 5264, 5230, 5105, 4763, 4102, 3094, 1822, 481, -702, -1577, -2145, -2543, -2982, -3663, -4671, -5911, -7186, -8327, -9231, -9831,-10074, -9883, -9128, -7622, -5263, -2360, 387, 2496, 3921, 4795, 5270, 5474, },
|
||||
/* LAT: -40 */ { 3947, 4040, 4049, 4007, 3949, 3916, 3922, 3913, 3741, 3209, 2189, 749, -815, -2133, -3001, -3457, -3643, -3705, -3871, -4433, -5403, -6478, -7364, -7906, -8017, -7644, -6759, -5376, -3664, -1960, -499, 722, 1765, 2630, 3285, 3715, 3947, },
|
||||
/* LAT: -30 */ { 2977, 3063, 3095, 3083, 3027, 2950, 2891, 2858, 2733, 2258, 1226, -290, -1898, -3156, -3900, -4250, -4333, -4128, -3695, -3466, -3821, -4566, -5266, -5620, -5499, -4916, -3959, -2752, -1542, -595, 83, 683, 1307, 1908, 2417, 2778, 2977, },
|
||||
/* LAT: -20 */ { 2334, 2381, 2400, 2405, 2365, 2272, 2166, 2090, 1946, 1453, 401, -1085, -2564, -3630, -4169, -4290, -4091, -3538, -2678, -1876, -1593, -1942, -2591, -3063, -3103, -2747, -2113, -1296, -518, -28, 235, 537, 977, 1454, 1875, 2182, 2334, },
|
||||
/* LAT: -10 */ { 1941, 1935, 1916, 1915, 1890, 1807, 1699, 1609, 1425, 877, -181, -1556, -2832, -3666, -3940, -3717, -3146, -2367, -1521, -764, -295, -323, -790, -1297, -1512, -1424, -1112, -612, -114, 128, 178, 338, 708, 1144, 1536, 1822, 1941, },
|
||||
/* LAT: 0 */ { 1728, 1695, 1641, 1635, 1626, 1559, 1456, 1344, 1091, 472, -565, -1792, -2849, -3441, -3446, -2952, -2186, -1404, -750, -212, 202, 317, 41, -375, -632, -689, -591, -328, -37, 53, -7, 82, 422, 862, 1281, 1599, 1728, },
|
||||
/* LAT: 10 */ { 1593, 1601, 1561, 1579, 1607, 1559, 1440, 1256, 881, 165, -855, -1932, -2762, -3107, -2909, -2307, -1531, -818, -301, 81, 407, 558, 399, 77, -159, -267, -290, -209, -104, -144, -283, -256, 45, 497, 977, 1383, 1593, },
|
||||
/* LAT: 20 */ { 1410, 1559, 1621, 1715, 1803, 1784, 1632, 1332, 788, -67, -1110, -2063, -2664, -2779, -2455, -1856, -1146, -495, -33, 278, 538, 685, 596, 353, 153, 35, -56, -120, -199, -388, -625, -683, -450, -4, 536, 1054, 1410, },
|
||||
/* LAT: 30 */ { 1111, 1478, 1739, 1964, 2125, 2136, 1951, 1530, 804, -224, -1343, -2223, -2643, -2586, -2190, -1612, -957, -338, 126, 434, 666, 814, 795, 647, 497, 372, 216, 6, -276, -650, -1018, -1179, -1020, -595, -19, 590, 1111, },
|
||||
/* LAT: 40 */ { 756, 1343, 1837, 2230, 2480, 2524, 2310, 1778, 868, -359, -1600, -2472, -2797, -2648, -2204, -1613, -959, -329, 183, 549, 821, 1021, 1116, 1106, 1030, 882, 614, 205, -332, -939, -1461, -1706, -1591, -1175, -576, 97, 756, },
|
||||
/* LAT: 50 */ { 469, 1216, 1897, 2454, 2821, 2928, 2700, 2046, 905, -593, -2020, -2939, -3238, -3048, -2559, -1914, -1203, -504, 113, 621, 1041, 1397, 1679, 1851, 1871, 1685, 1241, 535, -357, -1260, -1941, -2229, -2106, -1665, -1029, -296, 469, },
|
||||
/* LAT: 60 */ { 277, 1130, 1936, 2631, 3136, 3348, 3134, 2322, 806, -1158, -2881, -3865, -4120, -3860, -3287, -2541, -1714, -872, -62, 690, 1384, 2016, 2561, 2958, 3120, 2936, 2300, 1187, -226, -1547, -2419, -2730, -2566, -2071, -1377, -574, 277, },
|
||||
/* LAT: 70 */ { 50, 987, 1885, 2684, 3298, 3592, 3338, 2200, -46, -2770, -4727, -5553, -5561, -5076, -4304, -3367, -2341, -1273, -196, 865, 1892, 2860, 3729, 4438, 4888, 4924, 4320, 2853, 664, -1445, -2747, -3193, -3034, -2502, -1751, -879, 50, },
|
||||
/* LAT: 80 */ { -631, 292, 1145, 1838, 2223, 2036, 828, -1805, -5037, -7161, -7906, -7771, -7138, -6217, -5123, -3921, -2653, -1345, -18, 1311, 2626, 3909, 5137, 6277, 7274, 8035, 8381, 7944, 6036, 2293, -1297, -3024, -3398, -3075, -2402, -1554, -631, },
|
||||
/* LAT: 90 */ { -29941,-28196,-26450,-24705,-22959,-21214,-19469,-17723,-15978,-14233,-12488,-10742, -8997, -7252, -5507, -3762, -2017, -271, 1474, 3219, 4964, 6709, 8455, 10200, 11945, 13691, 15436, 17181, 18927, 20672, 22418, 24163, 25909, 27654, 29400, 31145,-29941, },
|
||||
};
|
||||
|
||||
// Magnetic inclination data in radians * 10^-4
|
||||
// Model: WMM-2020,
|
||||
// Version: 0.5.1.11,
|
||||
// Date: 2022.3835,
|
||||
// Date: 2022.2767,
|
||||
static constexpr const int16_t inclination_table[19][37] {
|
||||
// LONGITUDE: -180, -170, -160, -150, -140, -130, -120, -110, -100, -90, -80, -70, -60, -50, -40, -30, -20, -10, 0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120, 130, 140, 150, 160, 170, 180,
|
||||
/* LAT: -90 */ { -12573,-12573,-12573,-12573,-12573,-12573,-12572,-12572,-12572,-12572,-12572,-12572,-12572,-12572,-12572,-12572,-12572,-12572,-12572,-12572,-12572,-12572,-12572,-12572,-12572,-12572,-12572,-12573,-12573,-12573,-12573,-12573,-12573,-12573,-12573,-12573,-12573, },
|
||||
/* LAT: -80 */ { -13658,-13524,-13363,-13183,-12989,-12787,-12583,-12383,-12192,-12016,-11859,-11724,-11614,-11528,-11464,-11423,-11403,-11406,-11433,-11487,-11571,-11685,-11830,-12003,-12201,-12418,-12647,-12880,-13108,-13321,-13507,-13658,-13762,-13813,-13810,-13756,-13658, },
|
||||
/* LAT: -70 */ { -14106,-13788,-13468,-13145,-12813,-12469,-12114,-11757,-11413,-11104,-10851,-10667,-10555,-10502,-10488,-10492,-10499,-10509,-10532,-10589,-10697,-10871,-11117,-11431,-11803,-12221,-12668,-13133,-13599,-14051,-14469,-14814,-15004,-14951,-14720,-14422,-14106, },
|
||||
/* LAT: -60 */ { -13519,-13166,-12828,-12495,-12151,-11779,-11364,-10909,-10441,-10010, -9680, -9503, -9499, -9636, -9840,-10033,-10159,-10204,-10192,-10177,-10224,-10382,-10670,-11078,-11576,-12131,-12718,-13314,-13902,-14464,-14960,-15250,-15075,-14691,-14285,-13892,-13519, },
|
||||
/* LAT: -50 */ { -12496,-12154,-11824,-11502,-11178,-10832,-10432, -9961, -9431, -8909, -8518, -8391, -8590, -9050, -9614,-10127,-10488,-10652,-10624,-10473,-10331,-10335,-10554,-10969,-11510,-12102,-12689,-13228,-13675,-13973,-14081,-14008,-13805,-13521,-13193,-12846,-12496, },
|
||||
/* LAT: -40 */ { -11240,-10892,-10545,-10200, -9860, -9522, -9161, -8736, -8214, -7649, -7221, -7177, -7635, -8457, -9379,-10209,-10869,-11306,-11448,-11283,-10941,-10668,-10659,-10939,-11400,-11905,-12351,-12674,-12833,-12838,-12748,-12611,-12432,-12200,-11913,-11586,-11240, },
|
||||
/* LAT: -30 */ { -9602, -9224, -8845, -8455, -8063, -7687, -7330, -6939, -6426, -5814, -5361, -5441, -6207, -7408, -8659, -9755,-10670,-11382,-11783,-11777,-11407,-10899,-10564,-10563,-10813,-11135,-11392,-11506,-11443,-11268,-11093,-10959,-10812,-10605,-10324, -9979, -9602, },
|
||||
/* LAT: -20 */ { -7371, -6932, -6516, -6088, -5644, -5214, -4822, -4409, -3842, -3156, -2707, -2964, -4071, -5682, -7311, -8681, -9748,-10526,-10966,-11003,-10641,-10028, -9470, -9225, -9272, -9435, -9576, -9594, -9422, -9150, -8956, -8869, -8765, -8557, -8240, -7829, -7371, },
|
||||
/* LAT: -10 */ { -4415, -3881, -3429, -2993, -2535, -2085, -1670, -1215, -587, 117, 481, 56, -1270, -3186, -5161, -6772, -7870, -8505, -8771, -8710, -8302, -7619, -6955, -6609, -6569, -6662, -6779, -6804, -6616, -6320, -6165, -6174, -6134, -5917, -5534, -5007, -4415, },
|
||||
/* LAT: 0 */ { -906, -285, 178, 580, 998, 1415, 1805, 2250, 2836, 3414, 3618, 3124, 1831, -78, -2122, -3773, -4784, -5214, -5274, -5104, -4664, -3949, -3244, -2873, -2812, -2882, -3007, -3080, -2951, -2715, -2661, -2804, -2866, -2680, -2255, -1626, -906, },
|
||||
/* LAT: 10 */ { 2562, 3185, 3618, 3958, 4313, 4680, 5032, 5420, 5873, 6245, 6282, 5795, 4714, 3150, 1460, 84, -723, -971, -881, -645, -234, 403, 1036, 1373, 1436, 1391, 1291, 1199, 1242, 1346, 1270, 1004, 812, 885, 1237, 1838, 2562, },
|
||||
/* LAT: 20 */ { 5416, 5943, 6321, 6616, 6929, 7272, 7616, 7964, 8299, 8500, 8413, 7952, 7117, 6022, 4897, 3988, 3458, 3339, 3488, 3731, 4061, 4526, 4986, 5241, 5298, 5280, 5231, 5174, 5163, 5145, 4971, 4639, 4342, 4253, 4425, 4847, 5416, },
|
||||
/* LAT: 30 */ { 7569, 7941, 8258, 8540, 8849, 9196, 9554, 9896, 10173, 10288, 10144, 9723, 9095, 8384, 7724, 7212, 6920, 6878, 7020, 7230, 7477, 7776, 8064, 8238, 8295, 8307, 8309, 8300, 8278, 8196, 7974, 7622, 7267, 7047, 7031, 7225, 7569, },
|
||||
/* LAT: 40 */ { 9266, 9486, 9742, 10027, 10354, 10715, 11083, 11423, 11676, 11758, 11609, 11250, 10777, 10304, 9908, 9624, 9475, 9470, 9580, 9741, 9916, 10100, 10272, 10397, 10475, 10535, 10590, 10623, 10607, 10497, 10255, 9906, 9539, 9254, 9111, 9123, 9266, },
|
||||
/* LAT: 50 */ { 10802, 10923, 11124, 11394, 11717, 12072, 12426, 12743, 12966, 13025, 12886, 12589, 12224, 11879, 11603, 11417, 11323, 11320, 11385, 11488, 11602, 11717, 11834, 11949, 12067, 12189, 12303, 12375, 12366, 12242, 11996, 11669, 11330, 11045, 10855, 10775, 10802, },
|
||||
/* LAT: 60 */ { 12319, 12392, 12543, 12761, 13031, 13332, 13635, 13901, 14077, 14105, 13969, 13720, 13431, 13160, 12939, 12782, 12691, 12660, 12675, 12723, 12790, 12875, 12981, 13113, 13272, 13447, 13612, 13721, 13728, 13608, 13384, 13105, 12826, 12589, 12419, 12328, 12319, },
|
||||
/* LAT: 70 */ { 13758, 13801, 13896, 14039, 14218, 14422, 14631, 14812, 14917, 14897, 14760, 14558, 14340, 14136, 13962, 13827, 13733, 13678, 13659, 13672, 13714, 13785, 13888, 14024, 14191, 14378, 14562, 14703, 14750, 14678, 14517, 14319, 14124, 13959, 13839, 13771, 13758, },
|
||||
/* LAT: 80 */ { 14998, 15011, 15048, 15108, 15185, 15270, 15349, 15394, 15376, 15297, 15184, 15060, 14937, 14823, 14723, 14641, 14579, 14538, 14520, 14523, 14550, 14599, 14670, 14763, 14874, 15001, 15136, 15268, 15375, 15420, 15382, 15295, 15200, 15116, 15052, 15012, 14998, },
|
||||
/* LAT: -90 */ { -12573,-12573,-12573,-12573,-12573,-12573,-12573,-12573,-12573,-12573,-12573,-12573,-12573,-12573,-12573,-12573,-12573,-12573,-12573,-12573,-12573,-12573,-12573,-12573,-12573,-12573,-12573,-12573,-12573,-12573,-12573,-12573,-12573,-12573,-12573,-12573,-12573, },
|
||||
/* LAT: -80 */ { -13658,-13525,-13364,-13184,-12990,-12788,-12584,-12384,-12192,-12016,-11859,-11725,-11615,-11528,-11465,-11423,-11404,-11406,-11433,-11488,-11571,-11685,-11830,-12003,-12201,-12418,-12648,-12881,-13108,-13321,-13508,-13658,-13762,-13814,-13811,-13757,-13658, },
|
||||
/* LAT: -70 */ { -14107,-13789,-13469,-13146,-12814,-12470,-12115,-11757,-11414,-11105,-10852,-10668,-10555,-10502,-10489,-10492,-10500,-10510,-10533,-10589,-10697,-10871,-11117,-11431,-11803,-12221,-12668,-13132,-13598,-14051,-14469,-14815,-15004,-14951,-14721,-14423,-14107, },
|
||||
/* LAT: -60 */ { -13519,-13166,-12828,-12496,-12152,-11780,-11365,-10910,-10442,-10011, -9680, -9503, -9499, -9635, -9839,-10033,-10159,-10204,-10193,-10178,-10225,-10383,-10671,-11078,-11576,-12131,-12717,-13313,-13902,-14463,-14960,-15250,-15075,-14691,-14285,-13892,-13519, },
|
||||
/* LAT: -50 */ { -12496,-12155,-11824,-11502,-11179,-10832,-10433, -9961, -9431, -8909, -8518, -8390, -8588, -9048, -9612,-10125,-10487,-10652,-10625,-10475,-10332,-10336,-10555,-10969,-11509,-12101,-12688,-13227,-13674,-13972,-14081,-14008,-13805,-13521,-13193,-12846,-12496, },
|
||||
/* LAT: -40 */ { -11240,-10892,-10545,-10200, -9861, -9523, -9162, -8736, -8214, -7649, -7220, -7175, -7632, -8453, -9375,-10206,-10867,-11304,-11448,-11284,-10944,-10670,-10660,-10938,-11399,-11904,-12350,-12673,-12833,-12839,-12748,-12611,-12432,-12200,-11913,-11586,-11240, },
|
||||
/* LAT: -30 */ { -9602, -9224, -8846, -8456, -8064, -7688, -7331, -6939, -6426, -5814, -5360, -5438, -6202, -7402, -8653, -9750,-10666,-11379,-11782,-11777,-11409,-10901,-10565,-10563,-10813,-11134,-11391,-11506,-11444,-11268,-11094,-10959,-10812,-10605,-10324, -9979, -9602, },
|
||||
/* LAT: -20 */ { -7371, -6933, -6517, -6090, -5645, -5215, -4823, -4409, -3842, -3156, -2705, -2960, -4065, -5674, -7303, -8675, -9744,-10522,-10964,-11003,-10643,-10030, -9471, -9225, -9273, -9435, -9576, -9595, -9423, -9151, -8957, -8869, -8764, -8556, -8239, -7828, -7371, },
|
||||
/* LAT: -10 */ { -4414, -3882, -3430, -2995, -2537, -2086, -1671, -1215, -587, 118, 483, 61, -1262, -3177, -5153, -6765, -7865, -8502, -8770, -8710, -8303, -7621, -6957, -6611, -6570, -6663, -6781, -6805, -6618, -6322, -6166, -6174, -6133, -5916, -5532, -5006, -4414, },
|
||||
/* LAT: 0 */ { -906, -286, 176, 578, 996, 1413, 1804, 2249, 2836, 3415, 3621, 3129, 1838, -69, -2113, -3767, -4780, -5212, -5273, -5104, -4666, -3952, -3247, -2875, -2814, -2884, -3009, -3083, -2953, -2718, -2662, -2804, -2865, -2677, -2253, -1625, -906, },
|
||||
/* LAT: 10 */ { 2562, 3185, 3616, 3956, 4311, 4678, 5031, 5420, 5874, 6246, 6284, 5799, 4720, 3157, 1467, 89, -719, -970, -880, -646, -236, 401, 1034, 1372, 1434, 1389, 1288, 1197, 1239, 1343, 1268, 1004, 814, 887, 1239, 1840, 2562, },
|
||||
/* LAT: 20 */ { 5416, 5942, 6320, 6614, 6927, 7271, 7615, 7964, 8299, 8501, 8415, 7955, 7122, 6028, 4902, 3992, 3461, 3340, 3488, 3731, 4060, 4525, 4984, 5240, 5296, 5278, 5229, 5172, 5161, 5143, 4970, 4639, 4343, 4254, 4426, 4848, 5416, },
|
||||
/* LAT: 30 */ { 7569, 7940, 8257, 8539, 8848, 9196, 9554, 9896, 10174, 10289, 10146, 9726, 9098, 8388, 7727, 7215, 6922, 6879, 7020, 7230, 7476, 7775, 8063, 8237, 8293, 8306, 8307, 8298, 8276, 8194, 7973, 7622, 7268, 7048, 7032, 7226, 7569, },
|
||||
/* LAT: 40 */ { 9266, 9486, 9742, 10027, 10354, 10715, 11084, 11423, 11676, 11760, 11611, 11252, 10779, 10306, 9910, 9626, 9476, 9471, 9580, 9741, 9916, 10099, 10271, 10396, 10474, 10534, 10588, 10621, 10605, 10496, 10255, 9905, 9539, 9254, 9111, 9123, 9266, },
|
||||
/* LAT: 50 */ { 10801, 10923, 11124, 11394, 11718, 12072, 12427, 12744, 12967, 13027, 12888, 12590, 12226, 11880, 11605, 11418, 11324, 11320, 11385, 11488, 11601, 11717, 11833, 11948, 12066, 12188, 12301, 12374, 12365, 12241, 11996, 11669, 11329, 11045, 10855, 10775, 10801, },
|
||||
/* LAT: 60 */ { 12319, 12392, 12543, 12761, 13032, 13333, 13636, 13902, 14078, 14106, 13971, 13721, 13432, 13161, 12940, 12783, 12692, 12660, 12675, 12722, 12790, 12875, 12980, 13112, 13271, 13446, 13611, 13720, 13727, 13608, 13384, 13105, 12826, 12589, 12419, 12327, 12319, },
|
||||
/* LAT: 70 */ { 13758, 13801, 13897, 14039, 14219, 14424, 14632, 14814, 14918, 14898, 14760, 14558, 14340, 14136, 13963, 13828, 13733, 13678, 13659, 13671, 13713, 13785, 13888, 14024, 14190, 14377, 14561, 14702, 14749, 14678, 14517, 14318, 14124, 13959, 13839, 13771, 13758, },
|
||||
/* LAT: 80 */ { 14998, 15011, 15049, 15109, 15186, 15272, 15351, 15396, 15377, 15298, 15185, 15060, 14937, 14823, 14723, 14641, 14579, 14538, 14519, 14523, 14549, 14598, 14670, 14762, 14874, 15000, 15135, 15267, 15374, 15419, 15381, 15295, 15200, 15116, 15052, 15012, 14998, },
|
||||
/* LAT: 90 */ { 15395, 15395, 15395, 15395, 15395, 15395, 15395, 15395, 15395, 15395, 15395, 15395, 15395, 15395, 15395, 15395, 15395, 15395, 15395, 15395, 15395, 15395, 15395, 15395, 15395, 15395, 15395, 15395, 15395, 15395, 15395, 15395, 15395, 15395, 15395, 15395, 15395, },
|
||||
};
|
||||
|
||||
// Magnetic strength data in milli-Gauss * 10
|
||||
// Model: WMM-2020,
|
||||
// Version: 0.5.1.11,
|
||||
// Date: 2022.3835,
|
||||
// Date: 2022.2767,
|
||||
static constexpr const int16_t strength_table[19][37] {
|
||||
// LONGITUDE: -180, -170, -160, -150, -140, -130, -120, -110, -100, -90, -80, -70, -60, -50, -40, -30, -20, -10, 0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120, 130, 140, 150, 160, 170, 180,
|
||||
/* LAT: -90 */ { 5452, 5452, 5452, 5452, 5452, 5452, 5452, 5452, 5452, 5452, 5452, 5452, 5452, 5452, 5452, 5452, 5452, 5452, 5452, 5452, 5452, 5452, 5452, 5452, 5452, 5452, 5452, 5452, 5452, 5452, 5452, 5452, 5452, 5452, 5452, 5452, 5452, },
|
||||
/* LAT: -80 */ { 6059, 5995, 5916, 5825, 5722, 5610, 5492, 5370, 5248, 5128, 5014, 4909, 4815, 4735, 4672, 4627, 4603, 4600, 4622, 4668, 4738, 4832, 4946, 5078, 5222, 5371, 5521, 5664, 5795, 5909, 6002, 6071, 6115, 6135, 6131, 6105, 6059, },
|
||||
/* LAT: -70 */ { 6303, 6170, 6020, 5856, 5677, 5485, 5280, 5065, 4846, 4631, 4428, 4246, 4088, 3957, 3853, 3776, 3729, 3716, 3744, 3820, 3948, 4128, 4356, 4624, 4919, 5226, 5529, 5813, 6063, 6267, 6418, 6514, 6556, 6548, 6499, 6415, 6303, },
|
||||
/* LAT: -60 */ { 6188, 5997, 5795, 5587, 5368, 5134, 4877, 4599, 4306, 4017, 3750, 3522, 3342, 3208, 3109, 3035, 2985, 2965, 2990, 3080, 3249, 3500, 3826, 4212, 4634, 5068, 5489, 5873, 6198, 6447, 6610, 6689, 6691, 6628, 6515, 6364, 6188, },
|
||||
/* LAT: -50 */ { 5845, 5616, 5384, 5153, 4921, 4676, 4406, 4103, 3774, 3442, 3140, 2900, 2738, 2647, 2598, 2564, 2530, 2504, 2509, 2581, 2754, 3043, 3439, 3909, 4416, 4922, 5397, 5816, 6155, 6397, 6536, 6577, 6534, 6424, 6263, 6065, 5845, },
|
||||
/* LAT: -40 */ { 5394, 5149, 4904, 4664, 4430, 4193, 3939, 3655, 3341, 3015, 2716, 2493, 2375, 2349, 2369, 2390, 2395, 2383, 2371, 2399, 2529, 2803, 3220, 3733, 4280, 4804, 5271, 5660, 5952, 6140, 6229, 6232, 6162, 6032, 5851, 5633, 5394, },
|
||||
/* LAT: -30 */ { 4879, 4638, 4400, 4166, 3939, 3721, 3502, 3271, 3015, 2740, 2482, 2299, 2229, 2253, 2320, 2391, 2457, 2507, 2530, 2542, 2609, 2806, 3167, 3654, 4185, 4683, 5102, 5419, 5622, 5722, 5749, 5722, 5643, 5511, 5331, 5115, 4879, },
|
||||
/* LAT: -20 */ { 4321, 4109, 3901, 3696, 3500, 3317, 3149, 2986, 2808, 2610, 2419, 2285, 2244, 2286, 2375, 2486, 2614, 2743, 2832, 2868, 2893, 2988, 3226, 3609, 4059, 4486, 4835, 5071, 5176, 5184, 5154, 5107, 5025, 4897, 4731, 4534, 4321, },
|
||||
/* LAT: -10 */ { 3790, 3630, 3477, 3331, 3195, 3075, 2972, 2880, 2784, 2669, 2547, 2448, 2401, 2425, 2510, 2639, 2795, 2954, 3078, 3141, 3156, 3182, 3304, 3555, 3881, 4202, 4468, 4631, 4667, 4615, 4547, 4483, 4395, 4270, 4121, 3958, 3790, },
|
||||
/* LAT: 0 */ { 3412, 3320, 3236, 3163, 3108, 3070, 3044, 3026, 3002, 2954, 2875, 2781, 2700, 2667, 2708, 2811, 2943, 3079, 3194, 3270, 3301, 3323, 3397, 3553, 3762, 3975, 4155, 4262, 4268, 4201, 4113, 4021, 3909, 3777, 3643, 3520, 3412, },
|
||||
/* LAT: 10 */ { 3283, 3252, 3232, 3228, 3253, 3300, 3356, 3410, 3446, 3436, 3367, 3253, 3126, 3030, 3003, 3043, 3124, 3222, 3323, 3408, 3472, 3534, 3621, 3739, 3874, 4012, 4132, 4202, 4205, 4144, 4034, 3891, 3729, 3570, 3435, 3338, 3283, },
|
||||
/* LAT: 20 */ { 3400, 3403, 3429, 3483, 3576, 3697, 3826, 3944, 4025, 4037, 3964, 3822, 3655, 3515, 3438, 3425, 3460, 3532, 3628, 3725, 3816, 3914, 4025, 4136, 4245, 4356, 4458, 4524, 4535, 4477, 4340, 4138, 3911, 3702, 3539, 3438, 3400, },
|
||||
/* LAT: 30 */ { 3723, 3730, 3785, 3885, 4028, 4200, 4375, 4532, 4640, 4667, 4594, 4439, 4249, 4084, 3978, 3931, 3934, 3985, 4071, 4169, 4266, 4372, 4488, 4606, 4725, 4851, 4972, 5058, 5085, 5028, 4872, 4632, 4359, 4104, 3905, 3777, 3723, },
|
||||
/* LAT: 40 */ { 4222, 4221, 4287, 4411, 4578, 4766, 4949, 5106, 5211, 5236, 5168, 5019, 4832, 4657, 4528, 4452, 4426, 4447, 4508, 4587, 4673, 4770, 4884, 5018, 5169, 5330, 5481, 5591, 5631, 5577, 5422, 5184, 4911, 4651, 4441, 4296, 4222, },
|
||||
/* LAT: 50 */ { 4832, 4825, 4881, 4992, 5139, 5298, 5448, 5569, 5643, 5652, 5588, 5461, 5298, 5134, 4996, 4898, 4843, 4831, 4855, 4905, 4974, 5064, 5183, 5333, 5509, 5693, 5859, 5977, 6022, 5978, 5848, 5652, 5427, 5211, 5031, 4902, 4832, },
|
||||
/* LAT: 60 */ { 5392, 5380, 5409, 5472, 5558, 5653, 5740, 5806, 5839, 5830, 5775, 5681, 5560, 5431, 5312, 5216, 5149, 5115, 5112, 5140, 5196, 5282, 5400, 5547, 5713, 5882, 6029, 6134, 6178, 6156, 6074, 5947, 5801, 5658, 5536, 5445, 5392, },
|
||||
/* LAT: 70 */ { 5726, 5706, 5704, 5716, 5739, 5765, 5788, 5803, 5802, 5783, 5744, 5686, 5615, 5539, 5465, 5401, 5353, 5325, 5320, 5340, 5384, 5454, 5545, 5654, 5771, 5885, 5985, 6058, 6097, 6101, 6072, 6018, 5951, 5881, 5816, 5763, 5726, },
|
||||
/* LAT: 80 */ { 5789, 5772, 5758, 5746, 5736, 5726, 5716, 5705, 5690, 5671, 5649, 5624, 5597, 5569, 5544, 5524, 5510, 5505, 5510, 5525, 5550, 5586, 5628, 5676, 5726, 5774, 5817, 5851, 5876, 5889, 5891, 5884, 5870, 5851, 5830, 5809, 5789, },
|
||||
/* LAT: -90 */ { 5453, 5453, 5453, 5453, 5453, 5453, 5453, 5453, 5453, 5453, 5453, 5453, 5453, 5453, 5453, 5453, 5453, 5453, 5453, 5453, 5453, 5453, 5453, 5453, 5453, 5453, 5453, 5453, 5453, 5453, 5453, 5453, 5453, 5453, 5453, 5453, 5453, },
|
||||
/* LAT: -80 */ { 6059, 5996, 5917, 5825, 5723, 5611, 5493, 5371, 5249, 5129, 5015, 4910, 4816, 4736, 4673, 4628, 4603, 4601, 4622, 4668, 4739, 4832, 4947, 5078, 5222, 5372, 5521, 5665, 5796, 5909, 6002, 6071, 6116, 6135, 6131, 6105, 6059, },
|
||||
/* LAT: -70 */ { 6304, 6171, 6021, 5857, 5678, 5486, 5281, 5066, 4847, 4632, 4429, 4247, 4089, 3958, 3853, 3777, 3729, 3717, 3745, 3821, 3948, 4128, 4356, 4624, 4919, 5226, 5529, 5813, 6063, 6267, 6418, 6514, 6556, 6549, 6499, 6415, 6304, },
|
||||
/* LAT: -60 */ { 6189, 5997, 5796, 5588, 5369, 5135, 4878, 4600, 4308, 4018, 3751, 3523, 3343, 3208, 3109, 3036, 2985, 2965, 2991, 3081, 3249, 3500, 3826, 4211, 4633, 5067, 5489, 5873, 6198, 6447, 6610, 6689, 6691, 6629, 6515, 6365, 6189, },
|
||||
/* LAT: -50 */ { 5846, 5616, 5384, 5154, 4922, 4677, 4407, 4104, 3775, 3443, 3141, 2900, 2739, 2647, 2599, 2564, 2531, 2505, 2510, 2582, 2754, 3043, 3438, 3909, 4416, 4921, 5397, 5816, 6155, 6397, 6535, 6577, 6534, 6424, 6263, 6065, 5846, },
|
||||
/* LAT: -40 */ { 5394, 5149, 4904, 4665, 4431, 4194, 3940, 3656, 3342, 3016, 2717, 2494, 2376, 2350, 2369, 2391, 2396, 2384, 2372, 2400, 2529, 2803, 3219, 3732, 4279, 4803, 5270, 5659, 5952, 6140, 6228, 6231, 6162, 6032, 5851, 5633, 5394, },
|
||||
/* LAT: -30 */ { 4879, 4639, 4400, 4166, 3940, 3721, 3503, 3271, 3016, 2741, 2483, 2300, 2229, 2253, 2320, 2391, 2457, 2508, 2531, 2543, 2609, 2806, 3166, 3653, 4184, 4682, 5101, 5419, 5622, 5722, 5749, 5722, 5643, 5511, 5332, 5115, 4879, },
|
||||
/* LAT: -20 */ { 4321, 4109, 3901, 3697, 3500, 3318, 3150, 2986, 2809, 2611, 2420, 2286, 2244, 2286, 2375, 2486, 2614, 2743, 2832, 2869, 2894, 2988, 3226, 3608, 4058, 4485, 4834, 5070, 5176, 5184, 5154, 5107, 5025, 4897, 4731, 4534, 4321, },
|
||||
/* LAT: -10 */ { 3790, 3630, 3477, 3331, 3196, 3076, 2973, 2881, 2784, 2670, 2548, 2448, 2402, 2425, 2510, 2639, 2794, 2954, 3078, 3142, 3156, 3182, 3304, 3555, 3880, 4202, 4467, 4631, 4667, 4615, 4547, 4483, 4395, 4270, 4121, 3958, 3790, },
|
||||
/* LAT: 0 */ { 3412, 3320, 3236, 3163, 3108, 3070, 3044, 3026, 3002, 2955, 2876, 2781, 2700, 2668, 2708, 2810, 2943, 3078, 3194, 3270, 3301, 3323, 3397, 3553, 3761, 3974, 4155, 4261, 4268, 4201, 4113, 4020, 3909, 3777, 3643, 3519, 3412, },
|
||||
/* LAT: 10 */ { 3283, 3252, 3232, 3229, 3253, 3301, 3357, 3411, 3447, 3437, 3368, 3254, 3126, 3031, 3003, 3043, 3124, 3222, 3322, 3408, 3472, 3534, 3621, 3739, 3873, 4011, 4131, 4202, 4205, 4143, 4034, 3891, 3729, 3570, 3435, 3338, 3283, },
|
||||
/* LAT: 20 */ { 3400, 3403, 3430, 3484, 3576, 3698, 3827, 3945, 4026, 4039, 3965, 3823, 3656, 3515, 3438, 3425, 3459, 3532, 3628, 3725, 3816, 3914, 4024, 4136, 4244, 4355, 4457, 4523, 4534, 4476, 4339, 4138, 3911, 3701, 3539, 3438, 3400, },
|
||||
/* LAT: 30 */ { 3723, 3730, 3785, 3885, 4029, 4200, 4376, 4533, 4641, 4668, 4595, 4440, 4250, 4085, 3978, 3931, 3934, 3984, 4071, 4168, 4266, 4371, 4487, 4605, 4724, 4850, 4971, 5057, 5084, 5027, 4871, 4632, 4358, 4104, 3905, 3777, 3723, },
|
||||
/* LAT: 40 */ { 4222, 4221, 4287, 4411, 4579, 4767, 4950, 5107, 5212, 5238, 5169, 5020, 4833, 4658, 4529, 4452, 4426, 4447, 4507, 4586, 4672, 4769, 4884, 5017, 5168, 5329, 5480, 5591, 5630, 5577, 5422, 5184, 4910, 4651, 4440, 4295, 4222, },
|
||||
/* LAT: 50 */ { 4832, 4825, 4882, 4993, 5140, 5299, 5449, 5570, 5644, 5653, 5589, 5462, 5298, 5134, 4996, 4898, 4843, 4830, 4854, 4904, 4973, 5064, 5182, 5332, 5508, 5692, 5858, 5977, 6021, 5978, 5848, 5652, 5427, 5211, 5031, 4902, 4832, },
|
||||
/* LAT: 60 */ { 5392, 5381, 5410, 5473, 5559, 5654, 5741, 5806, 5839, 5830, 5776, 5681, 5560, 5431, 5312, 5216, 5149, 5114, 5112, 5139, 5195, 5282, 5399, 5546, 5713, 5881, 6029, 6133, 6178, 6156, 6073, 5947, 5801, 5658, 5535, 5445, 5392, },
|
||||
/* LAT: 70 */ { 5726, 5707, 5704, 5717, 5739, 5766, 5789, 5803, 5803, 5783, 5744, 5686, 5615, 5539, 5465, 5401, 5352, 5324, 5319, 5339, 5384, 5453, 5545, 5653, 5770, 5885, 5984, 6057, 6097, 6100, 6071, 6018, 5951, 5880, 5815, 5763, 5726, },
|
||||
/* LAT: 80 */ { 5789, 5772, 5758, 5746, 5736, 5727, 5717, 5705, 5690, 5671, 5649, 5624, 5596, 5569, 5544, 5524, 5510, 5505, 5509, 5524, 5550, 5585, 5628, 5676, 5726, 5774, 5816, 5851, 5875, 5888, 5891, 5884, 5870, 5851, 5830, 5809, 5789, },
|
||||
/* LAT: 90 */ { 5681, 5681, 5681, 5681, 5681, 5681, 5681, 5681, 5681, 5681, 5681, 5681, 5681, 5681, 5681, 5681, 5681, 5681, 5681, 5681, 5681, 5681, 5681, 5681, 5681, 5681, 5681, 5681, 5681, 5681, 5681, 5681, 5681, 5681, 5681, 5681, 5681, },
|
||||
};
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -46,6 +46,11 @@
|
||||
|
||||
using namespace time_literals;
|
||||
|
||||
/**
|
||||
* Airship attitude control app start / stop handling function
|
||||
*/
|
||||
extern "C" __EXPORT int airship_att_control_main(int argc, char *argv[]);
|
||||
|
||||
class AirshipAttitudeControl : public ModuleBase<AirshipAttitudeControl>, public ModuleParams,
|
||||
public px4::WorkItem
|
||||
{
|
||||
@@ -75,27 +80,27 @@ private:
|
||||
/**
|
||||
* Check for parameter update and handle it.
|
||||
*/
|
||||
void parameter_update_poll();
|
||||
void parameter_update_poll();
|
||||
|
||||
void publish_actuator_controls();
|
||||
void publish_actuator_controls();
|
||||
|
||||
void publishTorqueSetpoint(const hrt_abstime ×tamp_sample);
|
||||
void publishThrustSetpoint(const hrt_abstime ×tamp_sample);
|
||||
|
||||
uORB::SubscriptionInterval _parameter_update_sub{ORB_ID(parameter_update), 1_s}; /**< parameter updates subscription */
|
||||
uORB::Subscription _vehicle_status_sub{ORB_ID(vehicle_status)}; /**< vehicle status subscription */
|
||||
uORB::Subscription _manual_control_sp_sub{ORB_ID(manual_control_setpoint)}; /**< manual control setpoint subscription */
|
||||
uORB::SubscriptionInterval _parameter_update_sub{ORB_ID(parameter_update), 1_s}; /**< parameter updates subscription */
|
||||
uORB::Subscription _vehicle_status_sub{ORB_ID(vehicle_status)}; /**< vehicle status subscription */
|
||||
uORB::Subscription _manual_control_sp_sub{ORB_ID(manual_control_setpoint)}; /**< manual control setpoint subscription */
|
||||
|
||||
uORB::SubscriptionCallbackWorkItem _vehicle_angular_velocity_sub{this, ORB_ID(vehicle_angular_velocity)};
|
||||
|
||||
uORB::Publication<actuator_controls_s> _actuator_controls_0_pub;
|
||||
uORB::Publication<vehicle_thrust_setpoint_s> _vehicle_thrust_setpoint_pub{ORB_ID(vehicle_thrust_setpoint)};
|
||||
uORB::Publication<vehicle_torque_setpoint_s> _vehicle_torque_setpoint_pub{ORB_ID(vehicle_torque_setpoint)};
|
||||
uORB::Publication<actuator_controls_s> _actuators_0_pub;
|
||||
uORB::Publication<vehicle_thrust_setpoint_s> _vehicle_thrust_setpoint_pub{ORB_ID(vehicle_thrust_setpoint)};
|
||||
uORB::Publication<vehicle_torque_setpoint_s> _vehicle_torque_setpoint_pub{ORB_ID(vehicle_torque_setpoint)};
|
||||
|
||||
manual_control_setpoint_s _manual_control_sp {}; /**< manual control setpoint */
|
||||
vehicle_status_s _vehicle_status {}; /**< vehicle status */
|
||||
actuator_controls_s _actuator_controls {}; /**< actuator controls */
|
||||
struct manual_control_setpoint_s _manual_control_sp {}; /**< manual control setpoint */
|
||||
struct vehicle_status_s _vehicle_status {}; /**< vehicle status */
|
||||
struct actuator_controls_s _actuators {}; /**< actuator controls */
|
||||
|
||||
perf_counter_t _loop_perf; /**< loop performance counter */
|
||||
perf_counter_t _loop_perf; /**< loop performance counter */
|
||||
|
||||
};
|
||||
|
||||
@@ -45,7 +45,7 @@ using namespace matrix;
|
||||
AirshipAttitudeControl::AirshipAttitudeControl() :
|
||||
ModuleParams(nullptr),
|
||||
WorkItem(MODULE_NAME, px4::wq_configurations::rate_ctrl),
|
||||
_actuator_controls_0_pub(ORB_ID(actuator_controls_0)),
|
||||
_actuators_0_pub(ORB_ID(actuator_controls_0)),
|
||||
_loop_perf(perf_alloc(PC_ELAPSED, "airship_att_control"))
|
||||
{
|
||||
}
|
||||
@@ -86,20 +86,20 @@ AirshipAttitudeControl::publish_actuator_controls()
|
||||
// zero actuators if not armed
|
||||
if (_vehicle_status.arming_state != vehicle_status_s::ARMING_STATE_ARMED) {
|
||||
for (uint8_t i = 0 ; i < 4 ; i++) {
|
||||
_actuator_controls.control[i] = 0.0f;
|
||||
_actuators.control[i] = 0.0f;
|
||||
}
|
||||
|
||||
} else {
|
||||
_actuator_controls.control[0] = 0.0f;
|
||||
_actuator_controls.control[1] = _manual_control_sp.x;
|
||||
_actuator_controls.control[2] = _manual_control_sp.r;
|
||||
_actuator_controls.control[3] = _manual_control_sp.z;
|
||||
_actuators.control[0] = 0.0f;
|
||||
_actuators.control[1] = _manual_control_sp.x;
|
||||
_actuators.control[2] = _manual_control_sp.r;
|
||||
_actuators.control[3] = _manual_control_sp.z;
|
||||
}
|
||||
|
||||
// note: _actuator_controls.timestamp_sample is set in AirshipAttitudeControl::Run()
|
||||
_actuator_controls.timestamp = hrt_absolute_time();
|
||||
// note: _actuators.timestamp_sample is set in AirshipAttitudeControl::Run()
|
||||
_actuators.timestamp = hrt_absolute_time();
|
||||
|
||||
_actuator_controls_0_pub.publish(_actuator_controls);
|
||||
_actuators_0_pub.publish(_actuators);
|
||||
}
|
||||
|
||||
void AirshipAttitudeControl::publishTorqueSetpoint(const hrt_abstime ×tamp_sample)
|
||||
@@ -107,9 +107,9 @@ void AirshipAttitudeControl::publishTorqueSetpoint(const hrt_abstime ×tamp_
|
||||
vehicle_torque_setpoint_s v_torque_sp = {};
|
||||
v_torque_sp.timestamp = hrt_absolute_time();
|
||||
v_torque_sp.timestamp_sample = timestamp_sample;
|
||||
v_torque_sp.xyz[0] = _actuator_controls.control[0];
|
||||
v_torque_sp.xyz[1] = _actuator_controls.control[1];
|
||||
v_torque_sp.xyz[2] = _actuator_controls.control[2];
|
||||
v_torque_sp.xyz[0] = _actuators.control[0];
|
||||
v_torque_sp.xyz[1] = _actuators.control[1];
|
||||
v_torque_sp.xyz[2] = _actuators.control[2];
|
||||
|
||||
_vehicle_torque_setpoint_pub.publish(v_torque_sp);
|
||||
}
|
||||
@@ -119,7 +119,7 @@ void AirshipAttitudeControl::publishThrustSetpoint(const hrt_abstime ×tamp_
|
||||
vehicle_thrust_setpoint_s v_thrust_sp = {};
|
||||
v_thrust_sp.timestamp = hrt_absolute_time();
|
||||
v_thrust_sp.timestamp_sample = timestamp_sample;
|
||||
v_thrust_sp.xyz[0] = _actuator_controls.control[3];
|
||||
v_thrust_sp.xyz[0] = _actuators.control[3];
|
||||
v_thrust_sp.xyz[1] = 0.0f;
|
||||
v_thrust_sp.xyz[2] = 0.0f;
|
||||
|
||||
@@ -142,7 +142,7 @@ AirshipAttitudeControl::Run()
|
||||
|
||||
if (_vehicle_angular_velocity_sub.update(&angular_velocity)) {
|
||||
|
||||
_actuator_controls.timestamp_sample = angular_velocity.timestamp_sample;
|
||||
_actuators.timestamp_sample = angular_velocity.timestamp_sample;
|
||||
|
||||
/* run the rate controller immediately after a gyro update */
|
||||
publish_actuator_controls();
|
||||
@@ -190,7 +190,7 @@ int AirshipAttitudeControl::print_status()
|
||||
|
||||
perf_print_counter(_loop_perf);
|
||||
|
||||
print_message(ORB_ID(actuator_controls), _actuator_controls);
|
||||
print_message(ORB_ID(actuator_controls), _actuators);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -227,10 +227,7 @@ To reduce control latency, the module directly polls on the gyro topic published
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Airship attitude control app start / stop handling function
|
||||
*/
|
||||
extern "C" __EXPORT int airship_att_control_main(int argc, char *argv[])
|
||||
int airship_att_control_main(int argc, char *argv[])
|
||||
{
|
||||
return AirshipAttitudeControl::main(argc, argv);
|
||||
}
|
||||
|
||||
@@ -39,7 +39,7 @@ constexpr bool
|
||||
ArmStateMachine::arming_transitions[vehicle_status_s::ARMING_STATE_MAX][vehicle_status_s::ARMING_STATE_MAX];
|
||||
|
||||
transition_result_t ArmStateMachine::arming_state_transition(vehicle_status_s &status,
|
||||
const vehicle_control_mode_s &control_mode, const bool safety_button_available, const bool safety_off,
|
||||
const vehicle_control_mode_s &control_mode, const safety_s &safety,
|
||||
const arming_state_t new_arming_state, actuator_armed_s &armed, const bool fRunPreArmChecks,
|
||||
orb_advert_t *mavlink_log_pub, vehicle_status_flags_s &status_flags,
|
||||
const PreFlightCheck::arm_requirements_t &arm_requirements,
|
||||
@@ -112,9 +112,8 @@ transition_result_t ArmStateMachine::arming_state_transition(vehicle_status_s &s
|
||||
|
||||
if (fRunPreArmChecks && preflight_check_ret) {
|
||||
// only bother running prearm if preflight was successful
|
||||
prearm_check_ret = PreFlightCheck::preArmCheck(mavlink_log_pub, status_flags, control_mode,
|
||||
safety_button_available, safety_off,
|
||||
arm_requirements, status);
|
||||
prearm_check_ret = PreFlightCheck::preArmCheck(mavlink_log_pub, status_flags, control_mode, safety, arm_requirements,
|
||||
status);
|
||||
}
|
||||
|
||||
if (!preflight_check_ret || !prearm_check_ret) {
|
||||
|
||||
@@ -37,6 +37,7 @@
|
||||
#include <drivers/drv_hrt.h>
|
||||
#include <px4_platform_common/events.h>
|
||||
#include <uORB/topics/actuator_armed.h>
|
||||
#include <uORB/topics/safety.h>
|
||||
#include <uORB/topics/vehicle_control_mode.h>
|
||||
#include <uORB/topics/vehicle_status.h>
|
||||
#include <uORB/topics/vehicle_status_flags.h>
|
||||
@@ -54,8 +55,8 @@ public:
|
||||
void forceArmState(uint8_t new_arm_state) { _arm_state = new_arm_state; }
|
||||
|
||||
transition_result_t
|
||||
arming_state_transition(vehicle_status_s &status, const vehicle_control_mode_s &control_mode,
|
||||
const bool safety_button_available, const bool safety_off, const arming_state_t new_arming_state,
|
||||
arming_state_transition(vehicle_status_s &status, const vehicle_control_mode_s &control_mode, const safety_s &safety,
|
||||
const arming_state_t new_arming_state,
|
||||
actuator_armed_s &armed, const bool fRunPreArmChecks, orb_advert_t *mavlink_log_pub,
|
||||
vehicle_status_flags_s &status_flags, const PreFlightCheck::arm_requirements_t &arm_requirements,
|
||||
const hrt_abstime &time_since_boot, arm_disarm_reason_t calling_reason);
|
||||
|
||||
@@ -55,7 +55,7 @@ TEST(ArmStateMachineTest, ArmingStateTransitionTest)
|
||||
hil_state_t hil_state; // Current vehicle_status_s.hil_state
|
||||
bool
|
||||
system_sensors_initialized; // Current vehicle_status_s.system_sensors_initialized
|
||||
bool safety_button_available; // Current safety_s.safety_button_available
|
||||
bool safety_switch_available; // Current safety_s.safety_switch_available
|
||||
bool safety_off; // Current safety_s.safety_off
|
||||
arming_state_t requested_state; // Requested arming state to transition to
|
||||
ArmingTransitionVolatileState_t expected_state; // Expected machine state after transition
|
||||
@@ -166,17 +166,17 @@ TEST(ArmStateMachineTest, ArmingStateTransitionTest)
|
||||
{ vehicle_status_s::ARMING_STATE_STANDBY, ATT_DISARMED}, TRANSITION_CHANGED
|
||||
},
|
||||
|
||||
// Safety button arming tests
|
||||
// Safety switch arming tests
|
||||
|
||||
{
|
||||
"transition: standby to armed, no safety button",
|
||||
"transition: standby to armed, no safety switch",
|
||||
{ vehicle_status_s::ARMING_STATE_STANDBY, ATT_DISARMED}, vehicle_status_s::HIL_STATE_ON, ATT_SENSORS_INITIALIZED, ATT_SAFETY_NOT_AVAILABLE, ATT_SAFETY_OFF,
|
||||
vehicle_status_s::ARMING_STATE_ARMED,
|
||||
{ vehicle_status_s::ARMING_STATE_ARMED, ATT_ARMED}, TRANSITION_CHANGED
|
||||
},
|
||||
|
||||
{
|
||||
"transition: standby to armed, safety button off",
|
||||
"transition: standby to armed, safety switch off",
|
||||
{ vehicle_status_s::ARMING_STATE_STANDBY, ATT_DISARMED}, vehicle_status_s::HIL_STATE_ON, ATT_SENSORS_INITIALIZED, ATT_SAFETY_AVAILABLE, ATT_SAFETY_OFF,
|
||||
vehicle_status_s::ARMING_STATE_ARMED,
|
||||
{ vehicle_status_s::ARMING_STATE_ARMED, ATT_ARMED}, TRANSITION_CHANGED
|
||||
@@ -242,10 +242,10 @@ TEST(ArmStateMachineTest, ArmingStateTransitionTest)
|
||||
// vehicle_status_s::ARMING_STATE_STANDBY,
|
||||
// { vehicle_status_s::ARMING_STATE_STANDBY_ERROR, ATT_DISARMED, ATT_NOT_READY_TO_ARM }, TRANSITION_DENIED },
|
||||
|
||||
// safety button arming tests
|
||||
// Safety switch arming tests
|
||||
|
||||
{
|
||||
"no transition: init to armed, safety button on",
|
||||
"no transition: init to armed, safety switch on",
|
||||
{ vehicle_status_s::ARMING_STATE_STANDBY, ATT_DISARMED}, vehicle_status_s::HIL_STATE_OFF, ATT_SENSORS_INITIALIZED, ATT_SAFETY_AVAILABLE, ATT_SAFETY_ON,
|
||||
vehicle_status_s::ARMING_STATE_ARMED,
|
||||
{ vehicle_status_s::ARMING_STATE_STANDBY, ATT_DISARMED}, TRANSITION_DENIED
|
||||
@@ -254,6 +254,7 @@ TEST(ArmStateMachineTest, ArmingStateTransitionTest)
|
||||
|
||||
struct vehicle_status_s status {};
|
||||
struct vehicle_status_flags_s status_flags {};
|
||||
struct safety_s safety {};
|
||||
struct actuator_armed_s armed {};
|
||||
|
||||
size_t cArmingTransitionTests = sizeof(rgArmingTransitionTests) / sizeof(rgArmingTransitionTests[0]);
|
||||
@@ -269,6 +270,8 @@ TEST(ArmStateMachineTest, ArmingStateTransitionTest)
|
||||
status.hil_state = test->hil_state;
|
||||
// The power status of the test unit is not relevant for the unit test
|
||||
status_flags.circuit_breaker_engaged_power_check = true;
|
||||
safety.safety_switch_available = test->safety_switch_available;
|
||||
safety.safety_off = test->safety_off;
|
||||
|
||||
vehicle_control_mode_s control_mode{};
|
||||
|
||||
@@ -276,8 +279,7 @@ TEST(ArmStateMachineTest, ArmingStateTransitionTest)
|
||||
transition_result_t result = arm_state_machine.arming_state_transition(
|
||||
status,
|
||||
control_mode,
|
||||
test->safety_button_available,
|
||||
test->safety_off,
|
||||
safety,
|
||||
test->requested_state,
|
||||
armed,
|
||||
true /* enable pre-arm checks */,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/****************************************************************************
|
||||
*
|
||||
* Copyright (c) 2019 - 2022 PX4 Development Team. All rights reserved.
|
||||
* Copyright (c) 2019 PX4 Development Team. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
@@ -41,11 +41,11 @@
|
||||
#pragma once
|
||||
|
||||
#include <uORB/uORB.h>
|
||||
#include <uORB/topics/safety.h>
|
||||
#include <uORB/topics/vehicle_control_mode.h>
|
||||
#include <uORB/topics/vehicle_status_flags.h>
|
||||
#include <uORB/topics/vehicle_status.h>
|
||||
#include <drivers/drv_hrt.h>
|
||||
#include "../../Safety.hpp"
|
||||
|
||||
typedef bool (*sens_check_func_t)(orb_advert_t *mavlink_log_pub, vehicle_status_s &status, const uint8_t instance,
|
||||
const bool is_mandatory, bool &report_fail);
|
||||
@@ -94,8 +94,8 @@ public:
|
||||
};
|
||||
|
||||
static bool preArmCheck(orb_advert_t *mavlink_log_pub, const vehicle_status_flags_s &status_flags,
|
||||
const vehicle_control_mode_s &control_mode, const bool safety_button_available, const bool safety_off,
|
||||
const arm_requirements_t &arm_requirements, vehicle_status_s &status,
|
||||
const vehicle_control_mode_s &control_mode,
|
||||
const safety_s &safety, const arm_requirements_t &arm_requirements, vehicle_status_s &status,
|
||||
bool report_fail = true);
|
||||
|
||||
private:
|
||||
|
||||
@@ -39,8 +39,8 @@
|
||||
#include <HealthFlags.h>
|
||||
|
||||
bool PreFlightCheck::preArmCheck(orb_advert_t *mavlink_log_pub, const vehicle_status_flags_s &status_flags,
|
||||
const vehicle_control_mode_s &control_mode, const bool safety_button_available, const bool safety_off,
|
||||
const arm_requirements_t &arm_requirements, vehicle_status_s &status, bool report_fail)
|
||||
const vehicle_control_mode_s &control_mode,
|
||||
const safety_s &safety, const arm_requirements_t &arm_requirements, vehicle_status_s &status, bool report_fail)
|
||||
{
|
||||
bool prearm_ok = true;
|
||||
|
||||
@@ -156,10 +156,10 @@ bool PreFlightCheck::preArmCheck(orb_advert_t *mavlink_log_pub, const vehicle_st
|
||||
}
|
||||
|
||||
// safety button
|
||||
if (safety_button_available && !safety_off) {
|
||||
// Fail transition if we need safety button press
|
||||
if (safety.safety_switch_available && !safety.safety_off) {
|
||||
// Fail transition if we need safety switch press
|
||||
if (prearm_ok) {
|
||||
if (report_fail) { mavlink_log_critical(mavlink_log_pub, "Arming denied! Press safety button first"); }
|
||||
if (report_fail) { mavlink_log_critical(mavlink_log_pub, "Arming denied! Press safety switch first"); }
|
||||
}
|
||||
|
||||
prearm_ok = false;
|
||||
|
||||
+142
-168
@@ -301,10 +301,7 @@ int Commander::custom_command(int argc, char *argv[])
|
||||
true, true, 30_s);
|
||||
PX4_INFO("Preflight check: %s", preflight_check_res ? "OK" : "FAILED");
|
||||
|
||||
bool dummy_safety_button{false};
|
||||
bool dummy_safety_off{false};
|
||||
bool prearm_check_res = PreFlightCheck::preArmCheck(nullptr, vehicle_status_flags, vehicle_control_mode,
|
||||
dummy_safety_button, dummy_safety_off,
|
||||
bool prearm_check_res = PreFlightCheck::preArmCheck(nullptr, vehicle_status_flags, vehicle_control_mode, safety_s{},
|
||||
PreFlightCheck::arm_requirements_t{}, vehicle_status);
|
||||
PX4_INFO("Prearm check: %s", prearm_check_res ? "OK" : "FAILED");
|
||||
|
||||
@@ -496,8 +493,7 @@ extern "C" __EXPORT int commander_main(int argc, char *argv[])
|
||||
|
||||
bool Commander::shutdown_if_allowed()
|
||||
{
|
||||
return TRANSITION_DENIED != _arm_state_machine.arming_state_transition(_status, _vehicle_control_mode,
|
||||
_safety.isButtonAvailable(), _safety.isSafetyOff(),
|
||||
return TRANSITION_DENIED != _arm_state_machine.arming_state_transition(_status, _vehicle_control_mode, _safety,
|
||||
vehicle_status_s::ARMING_STATE_SHUTDOWN,
|
||||
_armed, false /* fRunPreArmChecks */, &_mavlink_log_pub, _status_flags, _arm_requirements,
|
||||
hrt_elapsed_time(&_boot_timestamp), arm_disarm_reason_t::shutdown);
|
||||
@@ -518,6 +514,8 @@ static constexpr const char *arm_disarm_reason_str(arm_disarm_reason_t calling_r
|
||||
|
||||
case arm_disarm_reason_t::mission_start: return "mission start";
|
||||
|
||||
case arm_disarm_reason_t::safety_button: return "safety button";
|
||||
|
||||
case arm_disarm_reason_t::auto_disarm_land: return "landing";
|
||||
|
||||
case arm_disarm_reason_t::auto_disarm_preflight: return "auto preflight disarming";
|
||||
@@ -748,8 +746,7 @@ transition_result_t Commander::arm(arm_disarm_reason_t calling_reason, bool run_
|
||||
}
|
||||
}
|
||||
|
||||
transition_result_t arming_res = _arm_state_machine.arming_state_transition(_status, _vehicle_control_mode,
|
||||
_safety.isButtonAvailable(), _safety.isSafetyOff(),
|
||||
transition_result_t arming_res = _arm_state_machine.arming_state_transition(_status, _vehicle_control_mode, _safety,
|
||||
vehicle_status_s::ARMING_STATE_ARMED, _armed, run_preflight_checks,
|
||||
&_mavlink_log_pub, _status_flags, _arm_requirements, hrt_elapsed_time(&_boot_timestamp),
|
||||
calling_reason);
|
||||
@@ -791,8 +788,7 @@ transition_result_t Commander::disarm(arm_disarm_reason_t calling_reason, bool f
|
||||
}
|
||||
}
|
||||
|
||||
transition_result_t arming_res = _arm_state_machine.arming_state_transition(_status, _vehicle_control_mode,
|
||||
_safety.isButtonAvailable(), _safety.isSafetyOff(),
|
||||
transition_result_t arming_res = _arm_state_machine.arming_state_transition(_status, _vehicle_control_mode, _safety,
|
||||
vehicle_status_s::ARMING_STATE_STANDBY, _armed, false,
|
||||
&_mavlink_log_pub, _status_flags, _arm_requirements,
|
||||
hrt_elapsed_time(&_boot_timestamp), calling_reason);
|
||||
@@ -803,7 +799,7 @@ transition_result_t Commander::disarm(arm_disarm_reason_t calling_reason, bool f
|
||||
"Disarmed by {1}", calling_reason);
|
||||
|
||||
if (_param_com_force_safety.get()) {
|
||||
_safety.activateSafety();
|
||||
_safety_handler.enableSafety();
|
||||
}
|
||||
|
||||
_status_changed = true;
|
||||
@@ -841,6 +837,7 @@ Commander::Commander() :
|
||||
_status_flags.offboard_control_signal_lost = true;
|
||||
|
||||
_status_flags.power_input_valid = true;
|
||||
_status_flags.rc_calibration_valid = true;
|
||||
|
||||
// default for vtol is rotary wing
|
||||
_vtol_status.vehicle_vtol_state = vtol_vehicle_status_s::VEHICLE_VTOL_STATE_MC;
|
||||
@@ -1397,8 +1394,7 @@ Commander::handle_command(const vehicle_command_s &cmd)
|
||||
} else {
|
||||
|
||||
/* try to go to INIT/PREFLIGHT arming state */
|
||||
if (TRANSITION_DENIED == _arm_state_machine.arming_state_transition(_status, _vehicle_control_mode,
|
||||
_safety.isButtonAvailable(), _safety.isSafetyOff(),
|
||||
if (TRANSITION_DENIED == _arm_state_machine.arming_state_transition(_status, _vehicle_control_mode, safety_s{},
|
||||
vehicle_status_s::ARMING_STATE_INIT, _armed,
|
||||
false /* fRunPreArmChecks */, &_mavlink_log_pub, _status_flags,
|
||||
PreFlightCheck::arm_requirements_t{}, // arming requirements not relevant for switching to ARMING_STATE_INIT
|
||||
@@ -1479,17 +1475,9 @@ Commander::handle_command(const vehicle_command_s &cmd)
|
||||
/* do esc calibration */
|
||||
if (check_battery_disconnected(&_mavlink_log_pub)) {
|
||||
answer_command(cmd, vehicle_command_s::VEHICLE_CMD_RESULT_ACCEPTED);
|
||||
|
||||
if (_safety.isButtonAvailable() && !_safety.isSafetyOff()) {
|
||||
mavlink_log_critical(&_mavlink_log_pub, "ESC calibration denied! Press safety button first\t");
|
||||
events::send(events::ID("commander_esc_calibration_denied"), events::Log::Critical,
|
||||
"ESCs calibration denied");
|
||||
|
||||
} else {
|
||||
_status_flags.calibration_enabled = true;
|
||||
_armed.in_esc_calibration_mode = true;
|
||||
_worker_thread.startTask(WorkerThread::Request::ESCCalibration);
|
||||
}
|
||||
_status_flags.calibration_enabled = true;
|
||||
_armed.in_esc_calibration_mode = true;
|
||||
_worker_thread.startTask(WorkerThread::Request::ESCCalibration);
|
||||
|
||||
} else {
|
||||
answer_command(cmd, vehicle_command_s::VEHICLE_CMD_RESULT_DENIED);
|
||||
@@ -1643,7 +1631,7 @@ Commander::handle_command(const vehicle_command_s &cmd)
|
||||
unsigned
|
||||
Commander::handle_command_motor_test(const vehicle_command_s &cmd)
|
||||
{
|
||||
if (_arm_state_machine.isArmed() || (_safety.isButtonAvailable() && !_safety.isSafetyOff())) {
|
||||
if (_arm_state_machine.isArmed() || (_safety.safety_switch_available && !_safety.safety_off)) {
|
||||
return vehicle_command_s::VEHICLE_CMD_RESULT_DENIED;
|
||||
}
|
||||
|
||||
@@ -1691,7 +1679,7 @@ Commander::handle_command_motor_test(const vehicle_command_s &cmd)
|
||||
unsigned
|
||||
Commander::handle_command_actuator_test(const vehicle_command_s &cmd)
|
||||
{
|
||||
if (_arm_state_machine.isArmed() || (_safety.isButtonAvailable() && !_safety.isSafetyOff())) {
|
||||
if (_arm_state_machine.isArmed() || (_safety.safety_switch_available && !_safety.safety_off)) {
|
||||
return vehicle_command_s::VEHICLE_CMD_RESULT_DENIED;
|
||||
}
|
||||
|
||||
@@ -2287,25 +2275,38 @@ Commander::run()
|
||||
}
|
||||
}
|
||||
|
||||
/* safety button */
|
||||
bool safety_updated = _safety.safetyButtonHandler();
|
||||
_status.safety_button_available = _safety.isButtonAvailable();
|
||||
_status.safety_off = _safety.isSafetyOff();
|
||||
_safety_handler.safetyButtonHandler();
|
||||
|
||||
/* update safety topic */
|
||||
const bool safety_updated = _safety_sub.updated();
|
||||
|
||||
if (safety_updated) {
|
||||
const bool previous_safety_valid = (_safety.timestamp != 0);
|
||||
const bool previous_safety_off = _safety.safety_off;
|
||||
|
||||
set_health_flags(subsystem_info_s::SUBSYSTEM_TYPE_MOTORCONTROL, _safety.isButtonAvailable(), _safety.isSafetyOff(),
|
||||
_safety.isButtonAvailable(), _status);
|
||||
if (_safety_sub.copy(&_safety)) {
|
||||
set_health_flags(subsystem_info_s::SUBSYSTEM_TYPE_MOTORCONTROL, _safety.safety_switch_available, _safety.safety_off,
|
||||
_safety.safety_switch_available, _status);
|
||||
|
||||
// Notify the user if the status of the safety button changes
|
||||
if (_safety.isSafetyOff()) {
|
||||
set_tune(tune_control_s::TUNE_ID_NOTIFY_POSITIVE);
|
||||
// disarm if safety is now on and still armed
|
||||
if (_arm_state_machine.isArmed() && _safety.safety_switch_available && !_safety.safety_off
|
||||
&& (_status.hil_state == vehicle_status_s::HIL_STATE_OFF)) {
|
||||
disarm(arm_disarm_reason_t::safety_button);
|
||||
}
|
||||
|
||||
} else {
|
||||
tune_neutral(true);
|
||||
// Notify the user if the status of the safety switch changes
|
||||
if (previous_safety_valid && _safety.safety_switch_available && previous_safety_off != _safety.safety_off) {
|
||||
|
||||
if (_safety.safety_off) {
|
||||
set_tune(tune_control_s::TUNE_ID_NOTIFY_POSITIVE);
|
||||
|
||||
} else {
|
||||
tune_neutral(true);
|
||||
}
|
||||
|
||||
_status_changed = true;
|
||||
}
|
||||
}
|
||||
|
||||
_status_changed = true;
|
||||
}
|
||||
|
||||
/* update vtol vehicle status*/
|
||||
@@ -2452,8 +2453,7 @@ Commander::run()
|
||||
/* If in INIT state, try to proceed to STANDBY state */
|
||||
if (!_status_flags.calibration_enabled && _arm_state_machine.isInit()) {
|
||||
|
||||
_arm_state_machine.arming_state_transition(_status, _vehicle_control_mode,
|
||||
_safety.isButtonAvailable(), _safety.isSafetyOff(),
|
||||
_arm_state_machine.arming_state_transition(_status, _vehicle_control_mode, _safety,
|
||||
vehicle_status_s::ARMING_STATE_STANDBY, _armed,
|
||||
true /* fRunPreArmChecks */, &_mavlink_log_pub, _status_flags,
|
||||
_arm_requirements, hrt_elapsed_time(&_boot_timestamp),
|
||||
@@ -2653,7 +2653,98 @@ Commander::run()
|
||||
}
|
||||
}
|
||||
|
||||
manual_control_check();
|
||||
manual_control_setpoint_s manual_control_setpoint;
|
||||
|
||||
if (_manual_control_setpoint_sub.update(&manual_control_setpoint)) {
|
||||
if (manual_control_setpoint.valid) {
|
||||
if (!_status_flags.rc_signal_found_once) {
|
||||
_status_flags.rc_signal_found_once = true;
|
||||
set_health_flags(subsystem_info_s::SUBSYSTEM_TYPE_RCRECEIVER, true, true,
|
||||
_status_flags.rc_calibration_valid, _status);
|
||||
_status_changed = true;
|
||||
|
||||
} else {
|
||||
if (_status.rc_signal_lost) {
|
||||
if (_last_valid_manual_control_setpoint > 0) {
|
||||
float elapsed = hrt_elapsed_time(&_last_valid_manual_control_setpoint) * 1e-6f;
|
||||
mavlink_log_info(&_mavlink_log_pub, "Manual control regained after %.1fs\t", (double)elapsed);
|
||||
events::send<float>(events::ID("commander_rc_regained"), events::Log::Info,
|
||||
"Manual control regained after {1:.1} s", elapsed);
|
||||
}
|
||||
|
||||
set_health_flags(subsystem_info_s::SUBSYSTEM_TYPE_RCRECEIVER, true, true,
|
||||
_status_flags.rc_calibration_valid, _status);
|
||||
_status_changed = true;
|
||||
}
|
||||
}
|
||||
|
||||
const bool is_mavlink = manual_control_setpoint.data_source > manual_control_setpoint_s::SOURCE_RC;
|
||||
|
||||
if (!_arm_state_machine.isArmed() && (is_mavlink || !_mode_switch_mapped)
|
||||
&& (_internal_state.main_state_changes == 0)) {
|
||||
// if there's never been a mode change force position control as initial state
|
||||
_internal_state.main_state = commander_state_s::MAIN_STATE_POSCTL;
|
||||
_internal_state.main_state_changes++;
|
||||
}
|
||||
|
||||
_status.rc_signal_lost = false;
|
||||
_is_throttle_above_center = manual_control_setpoint.z > 0.6f;
|
||||
_is_throttle_low = manual_control_setpoint.z < 0.1f;
|
||||
_last_valid_manual_control_setpoint = manual_control_setpoint.timestamp;
|
||||
|
||||
} else {
|
||||
if (_status_flags.rc_signal_found_once && !_status.rc_signal_lost) {
|
||||
mavlink_log_critical(&_mavlink_log_pub, "Manual control lost\t");
|
||||
events::send(events::ID("commander_rc_lost"), {events::Log::Critical, events::LogInternal::Info},
|
||||
"Manual control lost");
|
||||
_status.rc_signal_lost = true;
|
||||
set_health_flags(subsystem_info_s::SUBSYSTEM_TYPE_RCRECEIVER, true, true,
|
||||
false, _status);
|
||||
_status_changed = true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
const bool override_enabled =
|
||||
((_param_com_rc_override.get() & static_cast<int32_t>(RcOverrideBits::AUTO_MODE_BIT))
|
||||
&& _vehicle_control_mode.flag_control_auto_enabled)
|
||||
|| ((_param_com_rc_override.get() & static_cast<int32_t>(RcOverrideBits::OFFBOARD_MODE_BIT))
|
||||
&& _vehicle_control_mode.flag_control_offboard_enabled);
|
||||
|
||||
// Abort autonomous mode and switch to position mode if sticks are moved significantly
|
||||
// but only if actually in air.
|
||||
if ((_status.vehicle_type == vehicle_status_s::VEHICLE_TYPE_ROTARY_WING)
|
||||
&& !in_low_battery_failsafe_delay && !_geofence_warning_action_on
|
||||
&& _arm_state_machine.isArmed()
|
||||
&& !_status_flags.rc_calibration_in_progress
|
||||
&& manual_control_setpoint.valid
|
||||
&& manual_control_setpoint.sticks_moving
|
||||
&& override_enabled) {
|
||||
const transition_result_t posctl_result =
|
||||
main_state_transition(_status, commander_state_s::MAIN_STATE_POSCTL, _status_flags, _internal_state);
|
||||
|
||||
if (posctl_result == TRANSITION_CHANGED) {
|
||||
tune_positive(true);
|
||||
mavlink_log_info(&_mavlink_log_pub, "Pilot took over position control using sticks\t");
|
||||
events::send(events::ID("commander_rc_override_pos"), events::Log::Info,
|
||||
"Pilot took over position control using sticks");
|
||||
_status_changed = true;
|
||||
|
||||
} else if (posctl_result == TRANSITION_DENIED) {
|
||||
// If transition to POSCTL was denied, then we can try again with ALTCTL.
|
||||
const transition_result_t altctl_result =
|
||||
main_state_transition(_status, commander_state_s::MAIN_STATE_ALTCTL, _status_flags, _internal_state);
|
||||
|
||||
if (altctl_result == TRANSITION_CHANGED) {
|
||||
tune_positive(true);
|
||||
mavlink_log_info(&_mavlink_log_pub, "Pilot took over altitude control using sticks\t");
|
||||
events::send(events::ID("commander_rc_override_alt"), events::Log::Info,
|
||||
"Pilot took over altitude control using sticks");
|
||||
_status_changed = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// data link checks which update the status
|
||||
data_link_check();
|
||||
@@ -2956,12 +3047,12 @@ Commander::run()
|
||||
break;
|
||||
|
||||
case PrearmedMode::SAFETY_BUTTON:
|
||||
if (_safety.isButtonAvailable()) {
|
||||
/* safety button is present, go into prearmed if safety is off */
|
||||
_armed.prearmed = _safety.isSafetyOff();
|
||||
if (_safety.safety_switch_available) {
|
||||
/* safety switch is present, go into prearmed if safety is off */
|
||||
_armed.prearmed = _safety.safety_off;
|
||||
|
||||
} else {
|
||||
/* safety button is not present, do not go into prearmed */
|
||||
/* safety switch is not present, do not go into prearmed */
|
||||
_armed.prearmed = false;
|
||||
}
|
||||
|
||||
@@ -2990,9 +3081,8 @@ Commander::run()
|
||||
// skip arm authorization check until actual arming attempt
|
||||
PreFlightCheck::arm_requirements_t arm_req = _arm_requirements;
|
||||
arm_req.arm_authorization = false;
|
||||
bool prearm_check_res = PreFlightCheck::preArmCheck(nullptr, _status_flags, _vehicle_control_mode,
|
||||
_safety.isButtonAvailable(), _safety.isSafetyOff(),
|
||||
arm_req, _status, false);
|
||||
bool prearm_check_res = PreFlightCheck::preArmCheck(nullptr, _status_flags, _vehicle_control_mode, _safety, arm_req,
|
||||
_status, false);
|
||||
|
||||
const bool prearm_check_ok = preflight_check_res && prearm_check_res;
|
||||
set_health_flags(subsystem_info_s::SUBSYSTEM_TYPE_PREARM_CHECK, true, true, prearm_check_ok, _status);
|
||||
@@ -3037,7 +3127,8 @@ Commander::run()
|
||||
}
|
||||
|
||||
/* play arming and battery warning tunes */
|
||||
if (!_arm_tune_played && _arm_state_machine.isArmed()) {
|
||||
if (!_arm_tune_played && _arm_state_machine.isArmed() &&
|
||||
(_safety.safety_switch_available || (_safety.safety_switch_available && _safety.safety_off))) {
|
||||
|
||||
/* play tune when armed */
|
||||
set_tune(tune_control_s::TUNE_ID_ARMING_WARNING);
|
||||
@@ -3062,7 +3153,7 @@ Commander::run()
|
||||
}
|
||||
|
||||
/* reset arm_tune_played when disarmed */
|
||||
if (!_arm_state_machine.isArmed()) {
|
||||
if (!_arm_state_machine.isArmed() || (_safety.safety_switch_available && !_safety.safety_off)) {
|
||||
|
||||
// Notify the user that it is safe to approach the vehicle
|
||||
if (_arm_tune_played) {
|
||||
@@ -4251,123 +4342,6 @@ void Commander::estimator_check()
|
||||
}
|
||||
}
|
||||
|
||||
void Commander::manual_control_check()
|
||||
{
|
||||
manual_control_setpoint_s manual_control_setpoint;
|
||||
const bool manual_control_updated = _manual_control_setpoint_sub.update(&manual_control_setpoint);
|
||||
|
||||
if (manual_control_updated && manual_control_setpoint.valid) {
|
||||
|
||||
if (!_status_flags.rc_signal_found_once) {
|
||||
_status_flags.rc_signal_found_once = true;
|
||||
|
||||
} else if (_status.rc_signal_lost) {
|
||||
if (_last_valid_manual_control_setpoint > 0) {
|
||||
float elapsed = hrt_elapsed_time(&_last_valid_manual_control_setpoint) * 1e-6f;
|
||||
mavlink_log_info(&_mavlink_log_pub, "Manual control regained after %.1fs\t", (double)elapsed);
|
||||
events::send<float>(events::ID("commander_rc_regained"), events::Log::Info,
|
||||
"Manual control regained after {1:.1} s", elapsed);
|
||||
}
|
||||
}
|
||||
|
||||
if (_status.rc_signal_lost) {
|
||||
_status.rc_signal_lost = false;
|
||||
_status_changed = true;
|
||||
}
|
||||
|
||||
_last_valid_manual_control_setpoint = manual_control_setpoint.timestamp;
|
||||
_is_throttle_above_center = (manual_control_setpoint.z > 0.6f);
|
||||
_is_throttle_low = (manual_control_setpoint.z < 0.1f);
|
||||
|
||||
const bool is_mavlink = (manual_control_setpoint.data_source > manual_control_setpoint_s::SOURCE_RC);
|
||||
|
||||
if (is_mavlink) {
|
||||
set_health_flags(subsystem_info_s::SUBSYSTEM_TYPE_RCRECEIVER, true, true, true, _status);
|
||||
|
||||
} else {
|
||||
// if not mavlink also report valid RC calibration for health
|
||||
set_health_flags(subsystem_info_s::SUBSYSTEM_TYPE_RCRECEIVER, true, true, _status_flags.rc_calibration_valid, _status);
|
||||
}
|
||||
|
||||
if (_arm_state_machine.isArmed()) {
|
||||
// Abort autonomous mode and switch to position mode if sticks are moved significantly
|
||||
// but only if actually in air.
|
||||
if (manual_control_setpoint.sticks_moving
|
||||
&& !_vehicle_control_mode.flag_control_manual_enabled
|
||||
&& (_status.vehicle_type == vehicle_status_s::VEHICLE_TYPE_ROTARY_WING)
|
||||
) {
|
||||
bool override_enabled = false;
|
||||
|
||||
if (_vehicle_control_mode.flag_control_auto_enabled) {
|
||||
if (_param_com_rc_override.get() & static_cast<int32_t>(RcOverrideBits::AUTO_MODE_BIT)) {
|
||||
override_enabled = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (_vehicle_control_mode.flag_control_offboard_enabled) {
|
||||
if (_param_com_rc_override.get() & static_cast<int32_t>(RcOverrideBits::OFFBOARD_MODE_BIT)) {
|
||||
override_enabled = true;
|
||||
}
|
||||
}
|
||||
|
||||
const bool in_low_battery_failsafe_delay = (_battery_failsafe_timestamp != 0);
|
||||
|
||||
if (override_enabled && !in_low_battery_failsafe_delay && !_geofence_warning_action_on) {
|
||||
|
||||
const transition_result_t posctl_result =
|
||||
main_state_transition(_status, commander_state_s::MAIN_STATE_POSCTL, _status_flags, _internal_state);
|
||||
|
||||
if (posctl_result == TRANSITION_CHANGED) {
|
||||
tune_positive(true);
|
||||
mavlink_log_info(&_mavlink_log_pub, "Pilot took over position control using sticks\t");
|
||||
events::send(events::ID("commander_rc_override_pos"), events::Log::Info,
|
||||
"Pilot took over position control using sticks");
|
||||
_status_changed = true;
|
||||
|
||||
} else if (posctl_result == TRANSITION_DENIED) {
|
||||
// If transition to POSCTL was denied, then we can try again with ALTCTL.
|
||||
const transition_result_t altctl_result =
|
||||
main_state_transition(_status, commander_state_s::MAIN_STATE_ALTCTL, _status_flags, _internal_state);
|
||||
|
||||
if (altctl_result == TRANSITION_CHANGED) {
|
||||
tune_positive(true);
|
||||
mavlink_log_info(&_mavlink_log_pub, "Pilot took over altitude control using sticks\t");
|
||||
events::send(events::ID("commander_rc_override_alt"), events::Log::Info,
|
||||
"Pilot took over altitude control using sticks");
|
||||
_status_changed = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
} else {
|
||||
// disarmed
|
||||
// if there's never been a mode change force position control as initial state
|
||||
if (_internal_state.main_state_changes == 0) {
|
||||
if (is_mavlink || !_mode_switch_mapped) {
|
||||
_internal_state.main_state = commander_state_s::MAIN_STATE_POSCTL;
|
||||
_internal_state.main_state_changes++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
} else if ((manual_control_updated && !manual_control_setpoint.valid)
|
||||
|| hrt_elapsed_time(&_last_valid_manual_control_setpoint) > _param_com_rc_loss_t.get() * 1_s) {
|
||||
|
||||
// prohibit stick use in case of reported invalidity or data timeout
|
||||
if (!_status.rc_signal_lost) {
|
||||
_status.rc_signal_lost = true;
|
||||
_status_changed = true;
|
||||
|
||||
mavlink_log_critical(&_mavlink_log_pub, "Manual control lost\t");
|
||||
events::send(events::ID("commander_rc_lost"), {events::Log::Critical, events::LogInternal::Info},
|
||||
"Manual control lost");
|
||||
|
||||
set_health_flags(subsystem_info_s::SUBSYSTEM_TYPE_RCRECEIVER, true, true, false, _status);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
Commander::offboard_control_update()
|
||||
{
|
||||
|
||||
@@ -80,6 +80,7 @@
|
||||
#include <uORB/topics/parameter_update.h>
|
||||
#include <uORB/topics/power_button_state.h>
|
||||
#include <uORB/topics/rtl_time_estimate.h>
|
||||
#include <uORB/topics/safety.h>
|
||||
#include <uORB/topics/system_power.h>
|
||||
#include <uORB/topics/telemetry_status.h>
|
||||
#include <uORB/topics/vehicle_angular_velocity.h>
|
||||
@@ -150,8 +151,6 @@ private:
|
||||
|
||||
void estimator_check();
|
||||
|
||||
void manual_control_check();
|
||||
|
||||
bool handle_command(const vehicle_command_s &cmd);
|
||||
|
||||
unsigned handle_command_motor_test(const vehicle_command_s &cmd);
|
||||
@@ -196,7 +195,6 @@ private:
|
||||
(ParamInt<px4::params::COM_HLDL_LOSS_T>) _param_com_hldl_loss_t,
|
||||
(ParamInt<px4::params::COM_HLDL_REG_T>) _param_com_hldl_reg_t,
|
||||
|
||||
(ParamFloat<px4::params::COM_RC_LOSS_T>) _param_com_rc_loss_t,
|
||||
(ParamInt<px4::params::NAV_RCL_ACT>) _param_nav_rcl_act,
|
||||
(ParamFloat<px4::params::COM_RCL_ACT_T>) _param_com_rcl_act_t,
|
||||
(ParamInt<px4::params::COM_RCL_EXCEPT>) _param_com_rcl_except,
|
||||
@@ -391,6 +389,7 @@ private:
|
||||
|
||||
geofence_result_s _geofence_result{};
|
||||
vehicle_land_detected_s _vehicle_land_detected{};
|
||||
safety_s _safety{};
|
||||
vtol_vehicle_status_s _vtol_status{};
|
||||
|
||||
hrt_abstime _last_wind_warning{0};
|
||||
@@ -402,7 +401,7 @@ private:
|
||||
vehicle_status_s _status{};
|
||||
vehicle_status_flags_s _status_flags{};
|
||||
|
||||
Safety _safety{};
|
||||
Safety _safety_handler{};
|
||||
|
||||
WorkerThread _worker_thread;
|
||||
|
||||
@@ -417,6 +416,7 @@ private:
|
||||
uORB::Subscription _vehicle_land_detected_sub{ORB_ID(vehicle_land_detected)};
|
||||
uORB::Subscription _manual_control_setpoint_sub{ORB_ID(manual_control_setpoint)};
|
||||
uORB::Subscription _rtl_time_estimate_sub{ORB_ID(rtl_time_estimate)};
|
||||
uORB::Subscription _safety_sub{ORB_ID(safety)};
|
||||
uORB::Subscription _system_power_sub{ORB_ID(system_power)};
|
||||
uORB::Subscription _vehicle_angular_velocity_sub{ORB_ID(vehicle_angular_velocity)};
|
||||
uORB::Subscription _vehicle_attitude_sub{ORB_ID(vehicle_attitude)};
|
||||
|
||||
@@ -48,35 +48,36 @@ Safety::Safety()
|
||||
_safety_disabled = circuit_breaker_enabled("CBRK_IO_SAFETY", CBRK_IO_SAFETY_KEY);
|
||||
}
|
||||
|
||||
bool Safety::safetyButtonHandler()
|
||||
void Safety::safetyButtonHandler()
|
||||
{
|
||||
if (_safety_disabled) {
|
||||
_button_available = true;
|
||||
_safety_off = true;
|
||||
_safety.safety_switch_available = true;
|
||||
_safety.safety_off = true;
|
||||
|
||||
} else {
|
||||
|
||||
if (!_button_available && _safety_button_sub.advertised()) {
|
||||
_button_available = true;
|
||||
if (!_safety.safety_switch_available && _safety_button_sub.advertised()) {
|
||||
_safety.safety_switch_available = true;
|
||||
}
|
||||
|
||||
button_event_s button_event;
|
||||
|
||||
while (_safety_button_sub.update(&button_event)) {
|
||||
_safety_off |= button_event.triggered; // triggered safety button activates safety off
|
||||
_safety.safety_off |= button_event.triggered; // triggered safety button activates safety off
|
||||
}
|
||||
}
|
||||
|
||||
bool safety_changed = _previous_safety_off != _safety_off;
|
||||
|
||||
_previous_safety_off = _safety_off;
|
||||
|
||||
return safety_changed;
|
||||
}
|
||||
|
||||
void Safety::activateSafety()
|
||||
{
|
||||
if (!_safety_disabled) {
|
||||
_safety_off = false;
|
||||
// publish immediately on change, otherwise at 1 Hz for logging
|
||||
if ((hrt_elapsed_time(&_safety.timestamp) >= 1_s) ||
|
||||
(_safety.safety_off != _previous_safety_off)) {
|
||||
_safety.timestamp = hrt_absolute_time();
|
||||
_safety_pub.publish(_safety);
|
||||
}
|
||||
|
||||
_previous_safety_off = _safety.safety_off;
|
||||
}
|
||||
|
||||
void Safety::enableSafety()
|
||||
{
|
||||
_safety.safety_off = false;
|
||||
}
|
||||
|
||||
@@ -40,6 +40,7 @@
|
||||
#include <uORB/SubscriptionMultiArray.hpp>
|
||||
#include <uORB/Publication.hpp>
|
||||
#include <uORB/topics/button_event.h>
|
||||
#include <uORB/topics/safety.h>
|
||||
|
||||
class Safety
|
||||
{
|
||||
@@ -49,17 +50,15 @@ public:
|
||||
Safety();
|
||||
~Safety() = default;
|
||||
|
||||
bool safetyButtonHandler();
|
||||
void activateSafety();
|
||||
bool isButtonAvailable() { return _button_available;}
|
||||
bool isSafetyOff() { return _safety_off;}
|
||||
void safetyButtonHandler();
|
||||
void enableSafety();
|
||||
|
||||
private:
|
||||
|
||||
uORB::Subscription _safety_button_sub{ORB_ID::safety_button};
|
||||
uORB::Publication<safety_s> _safety_pub{ORB_ID(safety)};
|
||||
|
||||
bool _button_available{false}; //<! Set to true if a safety button is connected
|
||||
bool _safety_off{false}; //<! Set to true if safety is off
|
||||
bool _previous_safety_off{false}; //<! Previous safety value
|
||||
bool _safety_disabled{false}; //<! Set to true if safety is disabled
|
||||
safety_s _safety{};
|
||||
bool _safety_disabled{false};
|
||||
bool _previous_safety_off{false};
|
||||
};
|
||||
|
||||
@@ -927,7 +927,7 @@ PARAM_DEFINE_INT32(COM_PREARM_MODE, 0);
|
||||
/**
|
||||
* Enable force safety
|
||||
*
|
||||
* Force safety when the vehicle disarms
|
||||
* Force safety when the vehicle disarms. Not supported when safety button used over PX4IO board.
|
||||
*
|
||||
* @boolean
|
||||
* @group Commander
|
||||
|
||||
@@ -52,6 +52,7 @@
|
||||
#include <uORB/Subscription.hpp>
|
||||
#include <uORB/topics/battery_status.h>
|
||||
#include <uORB/topics/actuator_test.h>
|
||||
#include <uORB/topics/safety.h>
|
||||
#include <parameters/param.h>
|
||||
|
||||
using namespace time_literals;
|
||||
@@ -93,6 +94,15 @@ static void set_motor_actuators(uORB::Publication<actuator_test_s> &publisher, f
|
||||
|
||||
int do_esc_calibration_ctrl_alloc(orb_advert_t *mavlink_log_pub)
|
||||
{
|
||||
// check safety
|
||||
uORB::SubscriptionData<safety_s> safety_sub{ORB_ID(safety)};
|
||||
safety_sub.update();
|
||||
|
||||
if (safety_sub.get().safety_switch_available && !safety_sub.get().safety_off) {
|
||||
calibration_log_critical(mavlink_log_pub, CAL_QGC_FAILED_MSG, "Disable safety first");
|
||||
return PX4_ERROR;
|
||||
}
|
||||
|
||||
int return_code = PX4_OK;
|
||||
uORB::Publication<actuator_test_s> actuator_test_pub{ORB_ID(actuator_test)};
|
||||
// since we publish multiple at once, make sure the output driver subscribes before we publish
|
||||
@@ -187,6 +197,13 @@ static int do_esc_calibration_ioctl(orb_advert_t *mavlink_log_pub)
|
||||
goto Out;
|
||||
}
|
||||
|
||||
/* tell IO to switch off safety without using the safety switch */
|
||||
if (px4_ioctl(fd, PWM_SERVO_SET_FORCE_SAFETY_OFF, 0) != PX4_OK) {
|
||||
calibration_log_critical(mavlink_log_pub, CAL_QGC_FAILED_MSG, "Unable to force safety off");
|
||||
return_code = PX4_ERROR;
|
||||
goto Out;
|
||||
}
|
||||
|
||||
calibration_log_info(mavlink_log_pub, "[cal] Connect battery now");
|
||||
|
||||
timeout_start = hrt_absolute_time();
|
||||
@@ -226,6 +243,9 @@ static int do_esc_calibration_ioctl(orb_advert_t *mavlink_log_pub)
|
||||
Out:
|
||||
|
||||
if (fd != -1) {
|
||||
if (px4_ioctl(fd, PWM_SERVO_SET_FORCE_SAFETY_ON, 0) != PX4_OK) {
|
||||
calibration_log_info(mavlink_log_pub, CAL_QGC_FAILED_MSG, "Safety switch still off");
|
||||
}
|
||||
|
||||
if (px4_ioctl(fd, PWM_SERVO_DISARM, 0) != PX4_OK) {
|
||||
calibration_log_info(mavlink_log_pub, CAL_QGC_FAILED_MSG, "Servos still armed");
|
||||
|
||||
@@ -221,8 +221,8 @@ void FailureDetector::updateAttitudeStatus()
|
||||
const float max_roll(fabsf(math::radians(max_roll_deg)));
|
||||
const float max_pitch(fabsf(math::radians(max_pitch_deg)));
|
||||
|
||||
const bool roll_status = (max_roll > FLT_EPSILON) && (fabsf(roll) > max_roll);
|
||||
const bool pitch_status = (max_pitch > FLT_EPSILON) && (fabsf(pitch) > max_pitch);
|
||||
const bool roll_status = (max_roll > 0.0f) && (fabsf(roll) > max_roll);
|
||||
const bool pitch_status = (max_pitch > 0.0f) && (fabsf(pitch) > max_pitch);
|
||||
|
||||
hrt_abstime time_now = hrt_absolute_time();
|
||||
|
||||
@@ -384,7 +384,7 @@ void FailureDetector::updateMotorStatus(const vehicle_status_s &vehicle_status,
|
||||
|
||||
// Check for telemetry timeout
|
||||
const hrt_abstime telemetry_age = time_now - cur_esc_report.timestamp;
|
||||
const bool esc_timed_out = telemetry_age > 300_ms;
|
||||
const bool esc_timed_out = telemetry_age > 100_ms; // TODO: magic number
|
||||
|
||||
const bool esc_was_valid = _motor_failure_esc_valid_current_mask & (1 << i_esc);
|
||||
const bool esc_timeout_currently_flagged = _motor_failure_esc_timed_out_mask & (1 << i_esc);
|
||||
@@ -399,40 +399,35 @@ void FailureDetector::updateMotorStatus(const vehicle_status_s &vehicle_status,
|
||||
}
|
||||
|
||||
// Check if ESC current is too low
|
||||
if (cur_esc_report.esc_current > FLT_EPSILON) {
|
||||
_motor_failure_escs_have_current = true;
|
||||
float esc_throttle = 0.f;
|
||||
|
||||
if (PX4_ISFINITE(actuator_motors.control[i_esc])) {
|
||||
esc_throttle = fabsf(actuator_motors.control[i_esc]);
|
||||
}
|
||||
|
||||
if (_motor_failure_escs_have_current) {
|
||||
float esc_throttle = 0.f;
|
||||
const bool throttle_above_threshold = esc_throttle > _param_fd_motor_throttle_thres.get();
|
||||
const bool current_too_low = cur_esc_report.esc_current < esc_throttle *
|
||||
_param_fd_motor_current2throttle_thres.get();
|
||||
|
||||
if (PX4_ISFINITE(actuator_motors.control[i_esc])) {
|
||||
esc_throttle = fabsf(actuator_motors.control[i_esc]);
|
||||
if (throttle_above_threshold && current_too_low && !esc_timed_out) {
|
||||
if (_motor_failure_undercurrent_start_time[i_esc] == 0) {
|
||||
_motor_failure_undercurrent_start_time[i_esc] = time_now;
|
||||
}
|
||||
|
||||
const bool throttle_above_threshold = esc_throttle > _param_fd_motor_throttle_thres.get();
|
||||
const bool current_too_low = cur_esc_report.esc_current < esc_throttle *
|
||||
_param_fd_motor_current2throttle_thres.get();
|
||||
|
||||
if (throttle_above_threshold && current_too_low && !esc_timed_out) {
|
||||
if (_motor_failure_undercurrent_start_time[i_esc] == 0) {
|
||||
_motor_failure_undercurrent_start_time[i_esc] = time_now;
|
||||
}
|
||||
|
||||
} else {
|
||||
if (_motor_failure_undercurrent_start_time[i_esc] != 0) {
|
||||
_motor_failure_undercurrent_start_time[i_esc] = 0;
|
||||
}
|
||||
} else {
|
||||
if (_motor_failure_undercurrent_start_time[i_esc] != 0) {
|
||||
_motor_failure_undercurrent_start_time[i_esc] = 0;
|
||||
}
|
||||
|
||||
if (_motor_failure_undercurrent_start_time[i_esc] != 0
|
||||
&& (time_now - _motor_failure_undercurrent_start_time[i_esc]) > _param_fd_motor_time_thres.get() * 1_ms
|
||||
&& (_motor_failure_esc_under_current_mask & (1 << i_esc)) == 0) {
|
||||
// Set flag
|
||||
_motor_failure_esc_under_current_mask |= (1 << i_esc);
|
||||
|
||||
} // else: this flag is never cleared, as the motor is stopped, so throttle < threshold
|
||||
}
|
||||
|
||||
if (_motor_failure_undercurrent_start_time[i_esc] != 0
|
||||
&& (time_now - _motor_failure_undercurrent_start_time[i_esc]) > _param_fd_motor_time_thres.get() * 1_ms
|
||||
&& (_motor_failure_esc_under_current_mask & (1 << i_esc)) == 0) {
|
||||
// Set flag
|
||||
_motor_failure_esc_under_current_mask |= (1 << i_esc);
|
||||
|
||||
} // else: this flag is never cleared, as the motor is stopped, so throttle < threshold
|
||||
|
||||
}
|
||||
|
||||
bool critical_esc_failure = (_motor_failure_esc_timed_out_mask != 0 || _motor_failure_esc_under_current_mask != 0);
|
||||
|
||||
@@ -129,7 +129,6 @@ private:
|
||||
uint8_t _motor_failure_esc_valid_current_mask{}; // ESC 1-8, true if ESC telemetry was valid at some point
|
||||
uint8_t _motor_failure_esc_timed_out_mask{}; // ESC telemetry no longer available -> failure
|
||||
uint8_t _motor_failure_esc_under_current_mask{}; // ESC drawing too little current -> failure
|
||||
bool _motor_failure_escs_have_current{false}; // true if some ESC had non-zero current (some don't support it)
|
||||
hrt_abstime _motor_failure_undercurrent_start_time[actuator_motors_s::NUM_CONTROLS] {};
|
||||
|
||||
uORB::Subscription _vehicle_attitude_sub{ORB_ID(vehicle_attitude)};
|
||||
|
||||
@@ -53,7 +53,7 @@
|
||||
*
|
||||
* Setting this parameter to 0 disables the check
|
||||
*
|
||||
* @min 0
|
||||
* @min 60
|
||||
* @max 180
|
||||
* @unit deg
|
||||
* @group Failure Detector
|
||||
@@ -71,7 +71,7 @@ PARAM_DEFINE_INT32(FD_FAIL_R, 60);
|
||||
*
|
||||
* Setting this parameter to 0 disables the check
|
||||
*
|
||||
* @min 0
|
||||
* @min 60
|
||||
* @max 180
|
||||
* @unit deg
|
||||
* @group Failure Detector
|
||||
|
||||
@@ -556,18 +556,6 @@ mixer:
|
||||
label: 'Direction CCW'
|
||||
function: 'spin-dir'
|
||||
show_as: 'true-if-positive'
|
||||
- name: 'CA_ROTOR${i}_AX'
|
||||
label: 'Axis X'
|
||||
function: 'axisx'
|
||||
advanced: true
|
||||
- name: 'CA_ROTOR${i}_AY'
|
||||
label: 'Axis Y'
|
||||
function: 'axisy'
|
||||
advanced: true
|
||||
- name: 'CA_ROTOR${i}_AZ'
|
||||
label: 'Axis Z'
|
||||
function: 'axisz'
|
||||
advanced: true
|
||||
|
||||
1: # Fixed Wing
|
||||
title: 'Fixed Wing'
|
||||
|
||||
@@ -43,23 +43,13 @@ void BaroBiasEstimator::predict(const float dt)
|
||||
{
|
||||
// State is constant
|
||||
// Predict state covariance only
|
||||
float delta_state_var = _process_var * dt * dt;
|
||||
|
||||
if (isOffsetDetected()) {
|
||||
// A bias in the state has been detected by the innovation sequence check
|
||||
// Boost the process noise until the offset is removed
|
||||
delta_state_var *= _process_var_boost_gain;
|
||||
}
|
||||
|
||||
_state_var += delta_state_var;
|
||||
_state_var += _process_var * dt * dt;
|
||||
constrainStateVar();
|
||||
|
||||
if (dt > FLT_EPSILON && fabsf(_dt - dt) > 0.001f) {
|
||||
_signed_innov_test_ratio_lpf.setParameters(dt, _innov_sequence_monitnoring_time_constant);
|
||||
_signed_innov_test_ratio_lpf.setParameters(dt, _lpf_time_constant);
|
||||
_dt = dt;
|
||||
}
|
||||
|
||||
_status.bias_var = _state_var;
|
||||
}
|
||||
|
||||
void BaroBiasEstimator::constrainStateVar()
|
||||
@@ -80,7 +70,14 @@ void BaroBiasEstimator::fuseBias(const float measurement, const float measuremen
|
||||
|
||||
}
|
||||
|
||||
updateOffsetDetection(innov, innov_test_ratio);
|
||||
if (isLargeOffsetDetected()) {
|
||||
// A bias in the state has been detected by the innovation
|
||||
// sequence check.
|
||||
bumpStateVariance();
|
||||
}
|
||||
|
||||
const float signed_innov_test_ratio = matrix::sign(innov) * innov_test_ratio;
|
||||
_signed_innov_test_ratio_lpf.update(math::constrain(signed_innov_test_ratio, -1.f, 1.f));
|
||||
|
||||
_status = packStatus(innov, innov_var, innov_test_ratio);
|
||||
}
|
||||
@@ -106,28 +103,14 @@ inline void BaroBiasEstimator::updateStateCovariance(const float K)
|
||||
constrainStateVar();
|
||||
}
|
||||
|
||||
inline void BaroBiasEstimator::updateOffsetDetection(const float innov, const float innov_test_ratio)
|
||||
inline bool BaroBiasEstimator::isLargeOffsetDetected() const
|
||||
{
|
||||
const float signed_innov_test_ratio = matrix::sign(innov) * innov_test_ratio;
|
||||
_signed_innov_test_ratio_lpf.update(math::constrain(signed_innov_test_ratio, -1.f, 1.f));
|
||||
|
||||
if (innov > 0.f) {
|
||||
_time_since_last_positive_innov = 0.f;
|
||||
_time_since_last_negative_innov += _dt;
|
||||
|
||||
} else {
|
||||
_time_since_last_negative_innov = 0.f;
|
||||
_time_since_last_positive_innov += _dt;
|
||||
}
|
||||
return fabsf(_signed_innov_test_ratio_lpf.getState()) > 0.2f;
|
||||
}
|
||||
|
||||
inline bool BaroBiasEstimator::isOffsetDetected() const
|
||||
inline void BaroBiasEstimator::bumpStateVariance()
|
||||
{
|
||||
// There is an offset in the estimate if the average of innovation is statistically too large
|
||||
// or if the sign of the innovation is constantly the same
|
||||
return fabsf(_signed_innov_test_ratio_lpf.getState()) > 0.2f
|
||||
|| (_time_since_last_positive_innov > _innov_sequence_monitnoring_time_constant)
|
||||
|| (_time_since_last_negative_innov > _innov_sequence_monitnoring_time_constant);
|
||||
_state_var += _process_var_boost_gain * _process_var * _dt * _dt;
|
||||
}
|
||||
|
||||
inline BaroBiasEstimator::status BaroBiasEstimator::packStatus(const float innov, const float innov_var,
|
||||
|
||||
@@ -78,6 +78,7 @@ public:
|
||||
void setProcessNoiseStdDev(float process_noise)
|
||||
{
|
||||
_process_var = process_noise * process_noise;
|
||||
_state_drift_rate = 3.f * process_noise;
|
||||
}
|
||||
void setBiasStdDev(float state_noise) { _state_var = state_noise * state_noise; }
|
||||
void setInnovGate(float gate_size) { _gate_size = gate_size; }
|
||||
@@ -91,6 +92,7 @@ public:
|
||||
private:
|
||||
float _state{0.f};
|
||||
float _state_max{100.f};
|
||||
float _state_drift_rate{0.005f}; ///< in m/s
|
||||
float _dt{0.01f};
|
||||
|
||||
float _gate_size{3.f}; ///< Used for innovation filtering (innovation test ratio)
|
||||
@@ -98,10 +100,7 @@ private:
|
||||
float _process_var{25.0e-6f}; ///< State process noise variance (m^2/s^2)
|
||||
float _state_var_max{2.f}; ///< Used to constrain the state variance (m^2)
|
||||
|
||||
// Innovation sequence monitoring; used to detect a bias in the state
|
||||
AlphaFilter<float> _signed_innov_test_ratio_lpf;
|
||||
float _time_since_last_negative_innov{0.f};
|
||||
float _time_since_last_positive_innov{0.f};
|
||||
AlphaFilter<float> _signed_innov_test_ratio_lpf; ///< innovation sequence monitoring; used to detect a bias in the state
|
||||
|
||||
status _status;
|
||||
|
||||
@@ -119,12 +118,12 @@ private:
|
||||
void updateState(float K, float innov);
|
||||
void updateStateCovariance(float K);
|
||||
|
||||
void updateOffsetDetection(float innov, float innov_test_ratio);
|
||||
bool isOffsetDetected() const;
|
||||
bool isLargeOffsetDetected() const;
|
||||
void bumpStateVariance();
|
||||
|
||||
status packStatus(float innov, float innov_var, float innov_test_ratio) const;
|
||||
|
||||
static constexpr float _innov_sequence_monitnoring_time_constant{10.f}; ///< in seconds
|
||||
static constexpr float _lpf_time_constant{10.f}; ///< in seconds
|
||||
static constexpr float _process_var_boost_gain{1.0e3f};
|
||||
};
|
||||
#endif // !EKF_BARO_BIAS_ESTIMATOR_HPP
|
||||
|
||||
@@ -4,9 +4,9 @@ Timestamp,state[0],state[1],state[2],state[3],state[4],state[5],state[6],state[7
|
||||
190000,1,-0.0105,-0.0107,-0.0167,-0.000387,-0.000237,-0.00902,-2.26e-05,-1e-05,-0.000287,0,0,0,0,0,0,0.192,0.00189,0.404,0,0,0,0,0,1.5e-06,0.00251,0.00251,0.00338,25,25,0.563,100,100,0.8,1e-06,1e-06,1e-06,4e-06,4e-06,4e-06,0,0,0,0,0,0,0,0
|
||||
290000,1,-0.0106,-0.011,-0.0167,0.0006,0.000288,-0.0229,-2.94e-05,-3.64e-05,-0.00185,0,0,0,0,0,0,0.192,0.00189,0.404,0,0,0,0,0,1.21e-06,0.00256,0.00256,0.00222,25,25,0.562,101,101,0.337,1e-06,1e-06,9.97e-07,4e-06,4e-06,4e-06,0,0,0,0,0,0,0,0
|
||||
390000,1,-0.0106,-0.0113,-0.0167,0.00209,0.000238,-0.0375,6.41e-05,2.46e-05,-0.00489,-1.63e-13,-6.23e-13,-3.16e-15,3.41e-12,-8.91e-13,-9.32e-14,0.192,0.00189,0.404,0,0,0,0,0,1.1e-06,0.00267,0.00267,0.00169,24.8,24.8,0.557,0.29,0.29,0.209,1e-06,1e-06,9.88e-07,4e-06,4e-06,4e-06,0,0,0,0,0,0,0,0
|
||||
490000,1,-0.0107,-0.0117,-0.0167,0.00463,-0.000559,-0.0529,0.000405,-6.64e-06,-0.00941,-1.63e-13,-6.23e-13,-3.16e-15,3.41e-12,-8.91e-13,-9.32e-14,0.192,0.00189,0.404,0,0,0,0,0,1.08e-06,0.00282,0.00282,0.00141,24.9,24.9,0.544,0.739,0.739,0.159,1e-06,1e-06,9.73e-07,4e-06,4e-06,4e-06,0,0,0,0,0,0,0,0
|
||||
590000,1,-0.0107,-0.012,-0.0167,0.00418,7.22e-05,-0.0661,0.000239,-5.36e-06,-0.0153,-2.19e-11,-5.29e-09,-4.94e-11,1.28e-08,-5.1e-11,-2.89e-10,0.192,0.00189,0.404,0,0,0,0,0,1.11e-06,0.00302,0.00302,0.00125,7.8,7.8,0.527,0.267,0.267,0.141,1e-06,1e-06,9.49e-07,4e-06,4e-06,4e-06,0,0,0,0,0,0,0,0
|
||||
690000,1,-0.0108,-0.0123,-0.0167,0.00685,-0.000979,-0.0813,0.000761,-7.95e-05,-0.0227,-2.19e-11,-5.29e-09,-4.94e-11,1.28e-08,-5.1e-11,-2.89e-10,0.192,0.00189,0.404,0,0,0,0,0,1.17e-06,0.00328,0.00328,0.00116,7.87,7.87,0.497,0.556,0.556,0.13,1e-06,1e-06,9.16e-07,4e-06,4e-06,4e-06,0,0,0,0,0,0,0,0
|
||||
490000,1,-0.0107,-0.0117,-0.0167,0.00463,-0.000559,-0.0529,0.000405,-6.63e-06,-0.00941,-1.63e-13,-6.23e-13,-3.16e-15,3.41e-12,-8.91e-13,-9.32e-14,0.192,0.00189,0.404,0,0,0,0,0,1.08e-06,0.00282,0.00282,0.00141,24.9,24.9,0.544,0.739,0.739,0.159,1e-06,1e-06,9.73e-07,4e-06,4e-06,4e-06,0,0,0,0,0,0,0,0
|
||||
590000,1,-0.0107,-0.012,-0.0167,0.00418,7.22e-05,-0.0661,0.000239,-5.36e-06,-0.0153,-2.19e-11,-5.29e-09,-4.94e-11,1.28e-08,-5.11e-11,-2.89e-10,0.192,0.00189,0.404,0,0,0,0,0,1.11e-06,0.00302,0.00302,0.00125,7.8,7.8,0.527,0.267,0.267,0.141,1e-06,1e-06,9.49e-07,4e-06,4e-06,4e-06,0,0,0,0,0,0,0,0
|
||||
690000,1,-0.0108,-0.0123,-0.0167,0.00685,-0.000979,-0.0813,0.000761,-7.95e-05,-0.0227,-2.19e-11,-5.29e-09,-4.94e-11,1.28e-08,-5.11e-11,-2.89e-10,0.192,0.00189,0.404,0,0,0,0,0,1.17e-06,0.00328,0.00328,0.00116,7.87,7.87,0.497,0.556,0.556,0.13,1e-06,1e-06,9.16e-07,4e-06,4e-06,4e-06,0,0,0,0,0,0,0,0
|
||||
790000,1,-0.0109,-0.0126,-0.0166,0.00622,-0.000504,-0.0959,0.000417,-4.86e-05,-0.0315,-2.56e-09,-3.32e-08,-2.74e-10,4.83e-08,-3.26e-09,-1.19e-09,0.192,0.00189,0.404,0,0,0,0,0,1.27e-06,0.00356,0.00356,0.00111,2.63,2.63,0.465,0.218,0.218,0.129,9.99e-07,9.99e-07,8.75e-07,4e-06,4e-06,3.99e-06,0,0,0,0,0,0,0,0
|
||||
890000,1,-0.011,-0.0128,-0.0166,0.0107,-0.00161,-0.11,0.00125,-0.00019,-0.0418,-2.56e-09,-3.32e-08,-2.74e-10,4.83e-08,-3.26e-09,-1.19e-09,0.192,0.00189,0.404,0,0,0,0,0,1.39e-06,0.00392,0.00392,0.00109,2.72,2.72,0.471,0.363,0.363,0.164,9.99e-07,9.99e-07,8.27e-07,4e-06,4e-06,3.99e-06,0,0,0,0,0,0,0,0
|
||||
990000,1,-0.0111,-0.0131,-0.0166,0.0117,-0.00274,-0.125,0.00087,-0.000149,-0.0536,-1.95e-08,-1.66e-07,-1.12e-09,1.58e-07,-1.72e-08,-4.19e-09,0.192,0.00189,0.404,0,0,0,0,0,1.53e-06,0.00427,0.00427,0.00108,1.25,1.25,0.477,0.178,0.178,0.209,9.97e-07,9.97e-07,7.73e-07,4e-06,4e-06,3.99e-06,0,0,0,0,0,0,0,0
|
||||
@@ -38,19 +38,19 @@ Timestamp,state[0],state[1],state[2],state[3],state[4],state[5],state[6],state[7
|
||||
3590000,1,-0.0106,-0.0121,-0.0169,0.0161,-0.00587,-0.477,0.0054,-0.00152,-0.845,-1.21e-05,-4.49e-05,1.86e-07,7.3e-06,-1.98e-06,-2.45e-07,0.192,0.00189,0.404,0,0,0,0,0,9.3e-07,0.00218,0.00218,0.000665,0.636,0.637,0.915,0.172,0.172,5.8,2.12e-07,2.12e-07,6.16e-08,3.94e-06,3.94e-06,3.99e-06,0,0,0,0,0,0,0,0
|
||||
3690000,1,-0.0106,-0.0122,-0.0168,0.0187,-0.00789,-0.491,0.00717,-0.00221,-0.893,-1.21e-05,-4.49e-05,1.86e-07,7.3e-06,-1.98e-06,-2.45e-07,0.192,0.00189,0.404,0,0,0,0,0,9.89e-07,0.00239,0.00239,0.000649,0.779,0.779,0.943,0.237,0.237,6.25,2.12e-07,2.12e-07,5.7e-08,3.94e-06,3.94e-06,3.99e-06,0,0,0,0,0,0,0,0
|
||||
3790000,1,-0.0106,-0.012,-0.0167,0.0145,-0.00824,-0.504,0.00487,-0.00176,-0.943,-1.27e-05,-4.68e-05,1.95e-07,6.6e-06,-1.78e-06,-2.17e-07,0.192,0.00189,0.404,0,0,0,0,0,8.23e-07,0.00196,0.00196,0.000634,0.58,0.58,0.971,0.162,0.162,6.72,1.79e-07,1.79e-07,5.28e-08,3.94e-06,3.94e-06,3.99e-06,0,0,0,0,0,0,0,0
|
||||
3890000,1,-0.0105,-0.012,-0.0168,0.0159,-0.00834,-0.518,0.00638,-0.00258,-0.994,-1.27e-05,-4.68e-05,1.95e-07,6.6e-06,-1.78e-06,-2.17e-07,0.192,0.00189,0.404,0,0,0,0,0,8.69e-07,0.00214,0.00214,0.00062,0.709,0.709,1,0.222,0.222,7.22,1.79e-07,1.79e-07,4.91e-08,3.94e-06,3.94e-06,3.99e-06,0,0,0,0,0,0,0,0
|
||||
3890000,1,-0.0105,-0.012,-0.0168,0.0159,-0.00834,-0.518,0.00638,-0.00258,-0.994,-1.27e-05,-4.68e-05,1.95e-07,6.6e-06,-1.78e-06,-2.17e-07,0.192,0.00189,0.404,0,0,0,0,0,8.68e-07,0.00214,0.00214,0.00062,0.709,0.709,1,0.222,0.222,7.22,1.79e-07,1.79e-07,4.91e-08,3.94e-06,3.94e-06,3.99e-06,0,0,0,0,0,0,0,0
|
||||
3990000,1,-0.0104,-0.0118,-0.0168,0.0134,-0.00684,-0.532,0.00434,-0.00192,-1.05,-1.33e-05,-4.85e-05,2.07e-07,5.87e-06,-1.51e-06,-1.86e-07,0.192,0.00189,0.404,0,0,0,0,0,7.23e-07,0.00176,0.00176,0.000606,0.533,0.533,1.03,0.153,0.153,7.74,1.49e-07,1.49e-07,4.56e-08,3.93e-06,3.93e-06,3.99e-06,0,0,0,0,0,0,0,0
|
||||
4090000,1,-0.0104,-0.0118,-0.0168,0.0155,-0.00822,-0.545,0.0058,-0.00266,-1.1,-1.33e-05,-4.85e-05,2.07e-07,5.87e-06,-1.51e-06,-1.86e-07,0.192,0.00189,0.404,0,0,0,0,0,7.61e-07,0.00191,0.00191,0.000592,0.649,0.649,1.06,0.209,0.209,8.29,1.49e-07,1.49e-07,4.25e-08,3.93e-06,3.93e-06,3.99e-06,0,0,0,0,0,0,0,0
|
||||
4090000,1,-0.0104,-0.0118,-0.0168,0.0155,-0.00822,-0.545,0.0058,-0.00266,-1.1,-1.33e-05,-4.85e-05,2.07e-07,5.87e-06,-1.51e-06,-1.86e-07,0.192,0.00189,0.404,0,0,0,0,0,7.6e-07,0.00191,0.00191,0.000592,0.649,0.649,1.06,0.209,0.209,8.29,1.49e-07,1.49e-07,4.25e-08,3.93e-06,3.93e-06,3.99e-06,0,0,0,0,0,0,0,0
|
||||
4190000,1,-0.0103,-0.0116,-0.0168,0.0132,-0.0074,-0.56,0.00408,-0.00196,-1.16,-1.4e-05,-5e-05,2.2e-07,5.11e-06,-1.19e-06,-1.53e-07,0.192,0.00189,0.404,0,0,0,0,0,6.38e-07,0.00157,0.00157,0.000579,0.491,0.491,1.09,0.146,0.146,8.87,1.24e-07,1.24e-07,3.96e-08,3.93e-06,3.93e-06,3.99e-06,0,0,0,0,0,0,0,0
|
||||
4290000,1,-0.0103,-0.0117,-0.0169,0.0152,-0.00627,-0.573,0.00549,-0.00266,-1.21,-1.4e-05,-5e-05,2.2e-07,5.11e-06,-1.19e-06,-1.53e-07,0.192,0.00189,0.404,0,0,0,0,0,6.73e-07,0.00171,0.00171,0.000567,0.597,0.597,1.13,0.197,0.197,9.47,1.24e-07,1.24e-07,3.7e-08,3.93e-06,3.93e-06,3.99e-06,0,0,0,0,0,0,0,0
|
||||
4390000,1,-0.0101,-0.0115,-0.0169,0.0119,-0.00404,-0.587,0.00385,-0.00176,-1.27,-1.46e-05,-5.14e-05,2.32e-07,4.34e-06,-8.5e-07,-1.19e-07,0.192,0.00189,0.404,0,0,0,0,0,5.67e-07,0.0014,0.0014,0.000555,0.453,0.453,1.16,0.139,0.139,10.1,1.02e-07,1.02e-07,3.46e-08,3.92e-06,3.92e-06,3.99e-06,0,0,0,0,0,0,0,0
|
||||
4390000,1,-0.0101,-0.0115,-0.0168,0.0119,-0.00404,-0.587,0.00385,-0.00176,-1.27,-1.46e-05,-5.14e-05,2.32e-07,4.34e-06,-8.5e-07,-1.19e-07,0.192,0.00189,0.404,0,0,0,0,0,5.67e-07,0.0014,0.0014,0.000555,0.453,0.453,1.16,0.139,0.139,10.1,1.02e-07,1.02e-07,3.46e-08,3.92e-06,3.92e-06,3.99e-06,0,0,0,0,0,0,0,0
|
||||
4490000,1,-0.0101,-0.0116,-0.0168,0.0131,-0.0043,-0.602,0.0051,-0.00216,-1.33,-1.46e-05,-5.14e-05,2.32e-07,4.34e-06,-8.5e-07,-1.19e-07,0.192,0.00189,0.404,0,0,0,0,0,5.92e-07,0.00152,0.00152,0.000544,0.549,0.549,1.19,0.187,0.187,10.8,1.02e-07,1.02e-07,3.24e-08,3.92e-06,3.92e-06,3.99e-06,0,0,0,0,0,0,0,0
|
||||
4590000,1,-0.0101,-0.0114,-0.0168,0.0114,-0.00343,-0.617,0.00359,-0.00141,-1.39,-1.5e-05,-5.26e-05,2.4e-07,3.59e-06,-5.72e-07,-8.71e-08,0.192,0.00189,0.404,0,0,0,0,0,5.02e-07,0.00124,0.00124,0.000533,0.418,0.418,1.23,0.132,0.132,11.5,8.3e-08,8.31e-08,3.04e-08,3.91e-06,3.91e-06,3.99e-06,0,0,0,0,0,0,0,0
|
||||
4690000,1,-0.0101,-0.0114,-0.0168,0.0125,-0.00448,-0.631,0.00481,-0.00179,-1.45,-1.5e-05,-5.26e-05,2.4e-07,3.59e-06,-5.72e-07,-8.71e-08,0.192,0.00189,0.404,0,0,0,0,0,5.23e-07,0.00134,0.00134,0.000522,0.504,0.504,1.26,0.177,0.177,12.2,8.3e-08,8.31e-08,2.85e-08,3.91e-06,3.91e-06,3.99e-06,0,0,0,0,0,0,0,0
|
||||
4790000,1,-0.0101,-0.0112,-0.0168,0.0102,-0.00391,-0.645,0.00335,-0.00124,-1.52,-1.54e-05,-5.37e-05,2.47e-07,2.87e-06,-3.33e-07,-5.74e-08,0.192,0.00189,0.404,0,0,0,0,0,4.47e-07,0.0011,0.0011,0.000512,0.385,0.385,1.3,0.127,0.127,13,6.74e-08,6.74e-08,2.68e-08,3.9e-06,3.9e-06,3.99e-06,0,0,0,0,0,0,0,0
|
||||
4890000,1,-0.0101,-0.0113,-0.0168,0.0113,-0.00504,-0.66,0.00445,-0.00168,-1.58,-1.54e-05,-5.37e-05,2.47e-07,2.87e-06,-3.33e-07,-5.74e-08,0.192,0.00189,0.404,0,0,0,0,0,4.65e-07,0.00118,0.00118,0.000502,0.461,0.461,1.34,0.168,0.168,13.7,6.74e-08,6.74e-08,2.52e-08,3.9e-06,3.9e-06,3.99e-06,0,0,0,0,0,0,0,0
|
||||
4990000,1,-0.00999,-0.0112,-0.0168,0.01,-0.00373,-0.675,0.00313,-0.00121,-1.65,-1.57e-05,-5.46e-05,2.53e-07,2.19e-06,-9.75e-08,-2.96e-08,0.192,0.00189,0.404,0,0,0,0,0,4e-07,0.000965,0.000966,0.000492,0.353,0.353,1.37,0.121,0.121,14.6,5.44e-08,5.44e-08,2.38e-08,3.9e-06,3.9e-06,3.99e-06,0,0,0,0,0,0,0,0
|
||||
5090000,1,-0.01,-0.0112,-0.0168,0.0105,-0.00389,-0.69,0.00416,-0.00158,-1.72,-1.57e-05,-5.46e-05,2.53e-07,2.19e-06,-9.75e-08,-2.96e-08,0.192,0.00189,0.404,0,0,0,0,0,4.14e-07,0.00103,0.00103,0.000483,0.421,0.421,1.41,0.16,0.16,15.4,5.44e-08,5.44e-08,2.24e-08,3.9e-06,3.9e-06,3.99e-06,0,0,0,0,0,0,0,0
|
||||
4990000,1,-0.00999,-0.0112,-0.0168,0.01,-0.00373,-0.675,0.00313,-0.00121,-1.65,-1.57e-05,-5.46e-05,2.53e-07,2.19e-06,-9.76e-08,-2.96e-08,0.192,0.00189,0.404,0,0,0,0,0,4e-07,0.000965,0.000966,0.000492,0.353,0.353,1.37,0.121,0.121,14.6,5.44e-08,5.44e-08,2.38e-08,3.9e-06,3.9e-06,3.99e-06,0,0,0,0,0,0,0,0
|
||||
5090000,1,-0.01,-0.0112,-0.0168,0.0105,-0.00389,-0.69,0.00416,-0.00158,-1.72,-1.57e-05,-5.46e-05,2.53e-07,2.19e-06,-9.76e-08,-2.96e-08,0.192,0.00189,0.404,0,0,0,0,0,4.14e-07,0.00103,0.00103,0.000483,0.421,0.421,1.41,0.16,0.16,15.4,5.44e-08,5.44e-08,2.24e-08,3.9e-06,3.9e-06,3.99e-06,0,0,0,0,0,0,0,0
|
||||
5190000,1,-0.00997,-0.0111,-0.0168,0.00852,-0.00353,-0.703,0.00291,-0.00113,-1.79,-1.59e-05,-5.54e-05,2.58e-07,1.57e-06,1.19e-07,-4.12e-09,0.192,0.00189,0.404,0,0,0,0,0,3.58e-07,0.000848,0.000848,0.000474,0.323,0.323,1.45,0.116,0.116,16.3,4.38e-08,4.38e-08,2.12e-08,3.89e-06,3.89e-06,3.99e-06,0,0,0,0,0,0,0,0
|
||||
5290000,1,-0.00992,-0.0111,-0.0168,0.00778,-0.00312,-0.718,0.00373,-0.00148,-1.86,-1.59e-05,-5.54e-05,2.58e-07,1.57e-06,1.19e-07,-4.12e-09,0.192,0.00189,0.404,0,0,0,0,0,3.68e-07,0.000905,0.000905,0.000466,0.384,0.384,1.49,0.152,0.152,17.3,4.38e-08,4.38e-08,2e-08,3.89e-06,3.89e-06,3.99e-06,0,0,0,0,0,0,0,0
|
||||
5390000,1,-0.00981,-0.0111,-0.0167,0.00451,-0.00239,-0.732,0.00247,-0.001,-1.93,-1.62e-05,-5.6e-05,2.63e-07,1.05e-06,3.08e-07,1.7e-08,0.192,0.00189,0.404,0,0,0,0,0,3.23e-07,0.000744,0.000744,0.000457,0.295,0.295,1.53,0.111,0.111,18.3,3.52e-08,3.52e-08,1.9e-08,3.88e-06,3.88e-06,3.99e-06,0,0,0,0,0,0,0,0
|
||||
@@ -59,15 +59,15 @@ Timestamp,state[0],state[1],state[2],state[3],state[4],state[5],state[6],state[7
|
||||
5690000,1,-0.00961,-0.011,-0.0167,0.00334,-0.000356,-0.775,0.00226,-0.000943,-2.16,-1.63e-05,-5.64e-05,2.66e-07,6.66e-07,4.59e-07,3.27e-08,0.192,0.00189,0.404,0,0,0,0,0,2.96e-07,0.000694,0.000694,0.000434,0.317,0.317,1.66,0.138,0.138,21.5,2.83e-08,2.83e-08,1.62e-08,3.88e-06,3.88e-06,3.99e-06,0,0,0,0,0,0,0,0
|
||||
5790000,1,-0.00954,-0.011,-0.0167,0.00364,0.00106,0,0.00258,-0.00091,-365,-1.63e-05,-5.64e-05,2.66e-07,6.66e-07,4.59e-07,3.27e-08,0.192,0.00189,0.404,0,0,0,0,0,3.02e-07,0.000735,0.000735,0.000427,0.371,0.371,10,0.178,0.178,4,2.83e-08,2.83e-08,1.53e-08,3.88e-06,3.88e-06,3.99e-06,0,0,0,0,0,0,0,0
|
||||
5890000,1,-0.00949,-0.011,-0.0167,0.00314,0.0023,0.00414,0.00175,-0.000382,-365,-1.64e-05,-5.67e-05,2.68e-07,3.88e-07,5.42e-07,8.17e-09,0.192,0.00189,0.404,0,0,0,0,0,2.7e-07,0.000609,0.000609,0.00042,0.288,0.288,9.76,0.131,0.131,0.471,2.27e-08,2.27e-08,1.46e-08,3.87e-06,3.87e-06,3.99e-06,0,0,0,0,0,0,0,0
|
||||
5990000,1,-0.00946,-0.011,-0.0167,0.0034,0.00409,0.0213,0.00206,-1.87e-05,-365,-1.64e-05,-5.67e-05,2.68e-07,3.86e-07,5.45e-07,-1.1e-07,0.192,0.00189,0.404,0,0,0,0,0,2.75e-07,0.000643,0.000643,0.000413,0.335,0.335,8.56,0.168,0.168,0.323,2.27e-08,2.27e-08,1.39e-08,3.87e-06,3.87e-06,3.99e-06,0,0,0,0,0,0,0,0
|
||||
5990000,1,-0.00946,-0.011,-0.0167,0.0034,0.00409,0.0213,0.00206,-1.86e-05,-365,-1.64e-05,-5.67e-05,2.68e-07,3.86e-07,5.45e-07,-1.1e-07,0.192,0.00189,0.404,0,0,0,0,0,2.75e-07,0.000643,0.000643,0.000413,0.335,0.335,8.56,0.168,0.168,0.323,2.27e-08,2.27e-08,1.39e-08,3.87e-06,3.87e-06,3.99e-06,0,0,0,0,0,0,0,0
|
||||
6090000,1,-0.00942,-0.011,-0.0167,0.00324,0.0055,-0.00339,0.00146,0.00043,-365,-1.64e-05,-5.7e-05,2.67e-07,1.79e-07,5.24e-07,-2.28e-08,0.192,0.00189,0.404,0,0,0,0,0,2.47e-07,0.000536,0.000537,0.000407,0.261,0.261,6.77,0.125,0.125,0.331,1.83e-08,1.83e-08,1.32e-08,3.87e-06,3.87e-06,3.99e-06,0,0,0,0,0,0,0,0
|
||||
6190000,1,-0.00943,-0.0109,-0.0168,0.00331,0.00755,0.00222,0.0018,0.0011,-365,-1.64e-05,-5.7e-05,2.67e-07,1.73e-07,5.29e-07,-2.76e-07,0.192,0.00189,0.404,0,0,0,0,0,2.52e-07,0.000565,0.000565,0.0004,0.303,0.303,4.66,0.159,0.159,0.319,1.83e-08,1.83e-08,1.26e-08,3.87e-06,3.87e-06,3.99e-06,0,0,0,0,0,0,0,0
|
||||
6290000,1,-0.00945,-0.0109,-0.0168,0.00352,0.00715,-0.0059,0.00135,0.00124,-365,-1.63e-05,-5.71e-05,2.63e-07,-1.78e-10,3.98e-07,-3.37e-07,0.192,0.00189,0.404,0,0,0,0,0,2.3e-07,0.000475,0.000475,0.000394,0.237,0.237,3.09,0.119,0.119,0.295,1.48e-08,1.48e-08,1.2e-08,3.87e-06,3.87e-06,3.99e-06,0,0,0,0,0,0,0,0
|
||||
6290000,1,-0.00945,-0.0109,-0.0168,0.00352,0.00715,-0.0059,0.00135,0.00124,-365,-1.63e-05,-5.71e-05,2.63e-07,-1.81e-10,3.98e-07,-3.37e-07,0.192,0.00189,0.404,0,0,0,0,0,2.3e-07,0.000475,0.000475,0.000394,0.237,0.237,3.09,0.119,0.119,0.295,1.48e-08,1.48e-08,1.2e-08,3.87e-06,3.87e-06,3.99e-06,0,0,0,0,0,0,0,0
|
||||
6390000,1,-0.00934,-0.0109,-0.0168,0.00395,0.00844,-0.0441,0.00173,0.00203,-365,-1.63e-05,-5.71e-05,2.63e-07,1.35e-08,3.85e-07,2.9e-07,0.192,0.00189,0.404,0,0,0,0,0,2.32e-07,0.000498,0.000499,0.000388,0.274,0.274,2.16,0.151,0.151,0.288,1.48e-08,1.48e-08,1.15e-08,3.87e-06,3.87e-06,3.99e-06,0,0,0,0,0,0,0,0
|
||||
6490000,1,-0.00939,-0.0109,-0.0168,0.00359,0.0077,-0.048,0.00134,0.00185,-365,-1.61e-05,-5.73e-05,2.58e-07,-1.54e-07,1.8e-07,-1.71e-07,0.192,0.00189,0.404,0,0,0,0,0,2.15e-07,0.000422,0.000422,0.000382,0.215,0.215,1.47,0.113,0.113,0.256,1.2e-08,1.2e-08,1.09e-08,3.86e-06,3.86e-06,3.99e-06,0,0,0,0,0,0,0,0
|
||||
6590000,1,-0.00939,-0.0109,-0.0169,0.00353,0.00841,-0.0946,0.0017,0.00262,-365,-1.61e-05,-5.73e-05,2.58e-07,-1.13e-07,1.43e-07,1.72e-06,0.192,0.00189,0.404,0,0,0,0,0,2.18e-07,0.000442,0.000442,0.000377,0.248,0.248,1.03,0.143,0.143,0.229,1.2e-08,1.2e-08,1.05e-08,3.86e-06,3.86e-06,3.99e-06,0,0,0,0,0,0,0,0
|
||||
6490000,1,-0.00939,-0.0109,-0.0168,0.00359,0.0077,-0.048,0.00134,0.00185,-365,-1.61e-05,-5.73e-05,2.58e-07,-1.54e-07,1.8e-07,-1.71e-07,0.192,0.00189,0.404,0,0,0,0,0,2.14e-07,0.000422,0.000422,0.000382,0.215,0.215,1.47,0.113,0.113,0.256,1.2e-08,1.2e-08,1.09e-08,3.86e-06,3.86e-06,3.99e-06,0,0,0,0,0,0,0,0
|
||||
6590000,1,-0.00939,-0.0109,-0.0169,0.00352,0.00841,-0.0946,0.0017,0.00262,-365,-1.61e-05,-5.73e-05,2.58e-07,-1.13e-07,1.43e-07,1.72e-06,0.192,0.00189,0.404,0,0,0,0,0,2.18e-07,0.000442,0.000442,0.000377,0.248,0.248,1.03,0.143,0.143,0.229,1.2e-08,1.2e-08,1.05e-08,3.86e-06,3.86e-06,3.99e-06,0,0,0,0,0,0,0,0
|
||||
6690000,1,-0.0094,-0.0109,-0.017,0.00346,0.00674,-0.0733,0.0013,0.00216,-365,-1.58e-05,-5.74e-05,2.52e-07,-3.26e-07,-4.56e-08,-1.49e-06,0.192,0.00189,0.404,0,0,0,0,0,2.03e-07,0.000378,0.000378,0.000371,0.196,0.196,0.746,0.108,0.108,0.206,9.76e-09,9.77e-09,1e-08,3.86e-06,3.86e-06,3.99e-06,0,0,0,0,0,0,0,0
|
||||
6790000,1,-0.00938,-0.0109,-0.017,0.00318,0.00814,-0.11,0.00165,0.0029,-365,-1.58e-05,-5.74e-05,2.52e-07,-2.73e-07,-9.31e-08,9.41e-07,0.192,0.00189,0.404,0,0,0,0,0,2.04e-07,0.000394,0.000394,0.000366,0.225,0.225,0.577,0.136,0.136,0.196,9.76e-09,9.77e-09,9.57e-09,3.86e-06,3.86e-06,3.99e-06,0,0,0,0,0,0,0,0
|
||||
6790000,1,-0.00938,-0.0109,-0.017,0.00318,0.00814,-0.11,0.00165,0.0029,-365,-1.58e-05,-5.74e-05,2.52e-07,-2.73e-07,-9.32e-08,9.41e-07,0.192,0.00189,0.404,0,0,0,0,0,2.04e-07,0.000394,0.000394,0.000366,0.225,0.225,0.577,0.136,0.136,0.196,9.76e-09,9.77e-09,9.57e-09,3.86e-06,3.86e-06,3.99e-06,0,0,0,0,0,0,0,0
|
||||
6890000,0.706,0.0013,-0.0143,0.708,0.00244,0.00869,-0.121,0.00124,0.00242,-365,-1.56e-05,-5.75e-05,2.48e-07,-4.13e-07,-3.48e-07,4.85e-07,0.209,0.00206,0.432,0,0,0,0,0,0.00103,0.000339,0.000338,0.00132,0.176,0.176,0.442,0.104,0.104,0.178,7.97e-09,7.98e-09,9.28e-09,3.86e-06,3.86e-06,3.98e-06,0,0,0,0,0,0,0,0
|
||||
6990000,0.704,0.00139,-0.0142,0.71,0.0024,0.00926,-0.123,0.00147,0.00334,-365,-1.56e-05,-5.75e-05,1.96e-07,-4.79e-07,-2.87e-07,-2.51e-06,0.209,0.00206,0.432,0,0,0,0,0,0.000622,0.000339,0.000339,0.000783,0.178,0.178,0.347,0.128,0.128,0.163,7.97e-09,7.98e-09,9.28e-09,3.86e-06,3.86e-06,3.98e-06,0,0,0,0,0,0,0,0
|
||||
7090000,0.703,0.0014,-0.0142,0.711,0.00185,0.00855,-0.124,0.00169,0.00421,-365,-1.56e-05,-5.75e-05,1.16e-07,-5.58e-07,-2.14e-07,-6.11e-06,0.209,0.00206,0.432,0,0,0,0,0,0.000475,0.00034,0.000339,0.000593,0.184,0.184,0.287,0.156,0.156,0.156,7.97e-09,7.97e-09,9.28e-09,3.86e-06,3.86e-06,3.97e-06,0,0,0,0,0,0,0,0
|
||||
@@ -79,18 +79,18 @@ Timestamp,state[0],state[1],state[2],state[3],state[4],state[5],state[6],state[7
|
||||
7690000,0.704,0.00157,-0.0138,0.71,-0.00677,0.0109,-0.161,0.000372,0.00977,-365,-1.56e-05,-5.76e-05,5.72e-07,-1.51e-06,5.79e-07,-4.94e-05,0.209,0.00206,0.432,0,0,0,0,0,0.000228,0.000352,0.000352,0.000271,0.289,0.289,0.126,0.414,0.414,0.112,7.94e-09,7.95e-09,9.24e-09,3.86e-06,3.86e-06,3.88e-06,0,0,0,0,0,0,0,0
|
||||
7790000,0.704,0.00159,-0.0138,0.711,-0.00815,0.0114,-0.16,-0.000355,0.0108,-365,-1.56e-05,-5.76e-05,2.37e-07,-1.95e-06,9.71e-07,-6.96e-05,0.209,0.00206,0.432,0,0,0,0,0,0.000215,0.000355,0.000355,0.000253,0.318,0.318,0.116,0.475,0.475,0.107,7.92e-09,7.93e-09,9.22e-09,3.86e-06,3.86e-06,3.84e-06,0,0,0,0,0,0,0,0
|
||||
7890000,0.704,0.0016,-0.0138,0.71,-0.0109,0.013,-0.157,-0.0013,0.0121,-365,-1.56e-05,-5.76e-05,4.56e-07,-2.52e-06,1.44e-06,-9.52e-05,0.209,0.00206,0.432,0,0,0,0,0,0.000204,0.000359,0.000359,0.000239,0.351,0.351,0.109,0.546,0.546,0.102,7.92e-09,7.93e-09,9.2e-09,3.86e-06,3.86e-06,3.8e-06,0,0,0,0,0,0,0,0
|
||||
7990000,0.704,0.00163,-0.0138,0.71,-0.0127,0.0138,-0.163,-0.00248,0.0133,-365,-1.56e-05,-5.76e-05,6.86e-07,-2.77e-06,1.66e-06,-0.000108,0.209,0.00206,0.432,0,0,0,0,0,0.000196,0.000363,0.000363,0.000227,0.387,0.386,0.104,0.622,0.622,0.0981,7.9e-09,7.9e-09,9.17e-09,3.86e-06,3.86e-06,3.76e-06,0,0,0,0,0,0,0,0
|
||||
7990000,0.704,0.00163,-0.0138,0.71,-0.0128,0.0138,-0.163,-0.00248,0.0133,-365,-1.56e-05,-5.76e-05,6.86e-07,-2.77e-06,1.66e-06,-0.000108,0.209,0.00206,0.432,0,0,0,0,0,0.000196,0.000363,0.000363,0.000227,0.387,0.386,0.104,0.622,0.622,0.0981,7.9e-09,7.9e-09,9.17e-09,3.86e-06,3.86e-06,3.76e-06,0,0,0,0,0,0,0,0
|
||||
8090000,0.704,0.00163,-0.0138,0.71,-0.0146,0.0149,-0.175,-0.00386,0.0148,-366,-1.56e-05,-5.76e-05,1.05e-06,-2.82e-06,1.69e-06,-0.00011,0.209,0.00206,0.432,0,0,0,0,0,0.00019,0.000368,0.000368,0.000219,0.427,0.427,0.102,0.71,0.71,0.097,7.9e-09,7.9e-09,9.15e-09,3.86e-06,3.86e-06,3.71e-06,0,0,0,0,0,0,0,0
|
||||
8190000,0.704,0.00162,-0.0137,0.71,-0.0173,0.016,-0.178,-0.00537,0.0162,-366,-1.56e-05,-5.76e-05,7.57e-07,-3.3e-06,2.14e-06,-0.000134,0.209,0.00206,0.432,0,0,0,0,0,0.000183,0.000372,0.000372,0.00021,0.469,0.469,0.0987,0.804,0.804,0.0939,7.87e-09,7.87e-09,9.11e-09,3.86e-06,3.86e-06,3.65e-06,0,0,0,0,0,0,0,0
|
||||
8290000,0.704,0.00166,-0.0138,0.71,-0.0187,0.0164,-0.174,-0.00719,0.0179,-366,-1.56e-05,-5.76e-05,5.69e-07,-4.2e-06,2.9e-06,-0.000175,0.209,0.00206,0.432,0,0,0,0,0,0.000178,0.000378,0.000378,0.000203,0.517,0.516,0.0967,0.915,0.915,0.0912,7.87e-09,7.87e-09,9.07e-09,3.86e-06,3.86e-06,3.58e-06,0,0,0,0,0,0,0,0
|
||||
8390000,0.704,0.00171,-0.0137,0.71,-0.0206,0.0173,-0.173,-0.00908,0.0194,-366,-1.56e-05,-5.76e-05,9.99e-07,-4.91e-06,3.54e-06,-0.00021,0.209,0.00206,0.432,0,0,0,0,0,0.000175,0.000383,0.000383,0.000198,0.564,0.564,0.0967,1.03,1.03,0.091,7.82e-09,7.83e-09,9.03e-09,3.86e-06,3.86e-06,3.52e-06,0,0,0,0,0,0,0,0
|
||||
8490000,0.704,0.0017,-0.0137,0.71,-0.0226,0.0187,-0.17,-0.0113,0.0212,-366,-1.56e-05,-5.76e-05,8.63e-07,-5.85e-06,4.33e-06,-0.000253,0.209,0.00206,0.432,0,0,0,0,0,0.000171,0.000389,0.000389,0.000193,0.619,0.619,0.0957,1.17,1.17,0.089,7.82e-09,7.83e-09,8.98e-09,3.86e-06,3.86e-06,3.43e-06,0,0,0,0,0,0,0,0
|
||||
8590000,0.704,0.00172,-0.0137,0.71,-0.0247,0.0205,-0.167,-0.0135,0.0229,-366,-1.56e-05,-5.76e-05,4.79e-07,-6.65e-06,5.15e-06,-0.000295,0.209,0.00206,0.432,0,0,0,0,0,0.000168,0.000395,0.000395,0.000188,0.672,0.672,0.0951,1.31,1.31,0.0874,7.78e-09,7.78e-09,8.93e-09,3.85e-06,3.85e-06,3.34e-06,0,0,0,0,0,0,0,0
|
||||
8590000,0.704,0.00172,-0.0137,0.71,-0.0247,0.0205,-0.167,-0.0135,0.0229,-366,-1.56e-05,-5.76e-05,4.79e-07,-6.65e-06,5.15e-06,-0.000295,0.209,0.00206,0.432,0,0,0,0,0,0.000168,0.000394,0.000395,0.000188,0.672,0.672,0.0951,1.31,1.31,0.0874,7.78e-09,7.78e-09,8.93e-09,3.85e-06,3.85e-06,3.34e-06,0,0,0,0,0,0,0,0
|
||||
8690000,0.704,0.00177,-0.0136,0.71,-0.028,0.0214,-0.162,-0.0162,0.025,-366,-1.56e-05,-5.76e-05,1.11e-06,-7.81e-06,6.06e-06,-0.000347,0.209,0.00206,0.432,0,0,0,0,0,0.000166,0.000401,0.000401,0.000185,0.735,0.735,0.0958,1.48,1.48,0.0879,7.78e-09,7.78e-09,8.87e-09,3.85e-06,3.85e-06,3.25e-06,0,0,0,0,0,0,0,0
|
||||
8790000,0.704,0.00172,-0.0136,0.71,-0.0301,0.0228,-0.152,-0.0189,0.0269,-366,-1.56e-05,-5.76e-05,8.65e-07,-9e-06,7.29e-06,-0.00041,0.209,0.00206,0.432,0,0,0,0,0,0.000164,0.000407,0.000407,0.000181,0.792,0.791,0.0954,1.64,1.64,0.0867,7.72e-09,7.72e-09,8.8e-09,3.85e-06,3.85e-06,3.14e-06,0,0,0,0,0,0,0,0
|
||||
8890000,0.704,0.00176,-0.0136,0.71,-0.0323,0.0234,-0.151,-0.0221,0.0292,-366,-1.56e-05,-5.76e-05,7.16e-07,-9.86e-06,8e-06,-0.000449,0.209,0.00206,0.432,0,0,0,0,0,0.000162,0.000414,0.000414,0.000178,0.862,0.861,0.0949,1.86,1.86,0.0857,7.72e-09,7.72e-09,8.73e-09,3.85e-06,3.85e-06,3.02e-06,0,0,0,0,0,0,0,0
|
||||
8990000,0.704,0.00181,-0.0135,0.71,-0.0339,0.0235,-0.142,-0.025,0.031,-365,-1.56e-05,-5.76e-05,2.64e-07,-1.09e-05,9.26e-06,-0.000509,0.209,0.00206,0.432,0,0,0,0,0,0.000161,0.00042,0.00042,0.000176,0.922,0.921,0.0956,2.05,2.05,0.0868,7.65e-09,7.66e-09,8.66e-09,3.84e-06,3.84e-06,2.91e-06,0,0,0,0,0,0,0,0
|
||||
9090000,0.704,0.00185,-0.0136,0.71,-0.0366,0.0242,-0.141,-0.0285,0.0334,-366,-1.56e-05,-5.76e-05,-6.81e-09,-1.15e-05,9.77e-06,-0.000537,0.209,0.00206,0.432,0,0,0,0,0,0.000159,0.000428,0.000428,0.000173,0.999,0.998,0.0949,2.3,2.3,0.086,7.65e-09,7.66e-09,8.58e-09,3.84e-06,3.84e-06,2.78e-06,0,0,0,0,0,0,0,0
|
||||
9090000,0.704,0.00185,-0.0136,0.71,-0.0366,0.0242,-0.141,-0.0285,0.0334,-366,-1.56e-05,-5.76e-05,-6.7e-09,-1.15e-05,9.77e-06,-0.000537,0.209,0.00206,0.432,0,0,0,0,0,0.000159,0.000428,0.000428,0.000173,0.999,0.998,0.0949,2.3,2.3,0.086,7.65e-09,7.66e-09,8.58e-09,3.84e-06,3.84e-06,2.78e-06,0,0,0,0,0,0,0,0
|
||||
9190000,0.704,0.00186,-0.0136,0.71,-0.0378,0.0245,-0.141,-0.0315,0.035,-366,-1.55e-05,-5.76e-05,1.15e-06,-1.19e-05,1.05e-05,-0.000569,0.209,0.00206,0.432,0,0,0,0,0,0.000158,0.000433,0.000433,0.000171,1.06,1.06,0.094,2.52,2.52,0.0853,7.58e-09,7.59e-09,8.48e-09,3.83e-06,3.83e-06,2.65e-06,0,0,0,0,0,0,0,0
|
||||
9290000,0.704,0.00185,-0.0136,0.71,-0.0393,0.0255,-0.137,-0.0355,0.0376,-366,-1.55e-05,-5.76e-05,1.32e-06,-1.29e-05,1.13e-05,-0.000615,0.209,0.00206,0.432,0,0,0,0,0,0.000157,0.000442,0.000442,0.000169,1.14,1.14,0.0929,2.83,2.83,0.0847,7.58e-09,7.59e-09,8.39e-09,3.83e-06,3.83e-06,2.52e-06,0,0,0,0,0,0,0,0
|
||||
9390000,0.704,0.00181,-0.0135,0.71,-0.0401,0.0268,-0.135,-0.0383,0.0391,-366,-1.55e-05,-5.75e-05,1.33e-06,-1.32e-05,1.23e-05,-0.000649,0.209,0.00206,0.432,0,0,0,0,0,0.000157,0.000445,0.000445,0.000168,1.2,1.2,0.0928,3.07,3.07,0.086,7.5e-09,7.51e-09,8.3e-09,3.82e-06,3.82e-06,2.4e-06,0,0,0,0,0,0,0,0
|
||||
@@ -100,30 +100,30 @@ Timestamp,state[0],state[1],state[2],state[3],state[4],state[5],state[6],state[7
|
||||
9790000,0.705,0.0019,-0.0134,0.71,-0.0467,0.0314,-0.109,-0.0547,0.0491,-365,-1.54e-05,-5.75e-05,2.29e-06,-1.65e-05,1.59e-05,-0.000825,0.209,0.00206,0.432,0,0,0,0,0,0.000156,0.000479,0.000479,0.000164,1.55,1.55,0.0864,4.59,4.58,0.0853,7.42e-09,7.42e-09,7.85e-09,3.81e-06,3.81e-06,1.89e-06,0,0,0,0,0,0,0,0
|
||||
9890000,0.704,0.00191,-0.0134,0.71,-0.0478,0.0315,-0.106,-0.057,0.05,-365,-1.54e-05,-5.75e-05,2.24e-06,-1.63e-05,1.7e-05,-0.00085,0.209,0.00206,0.432,0,0,0,0,0,0.000156,0.00048,0.00048,0.000163,1.59,1.59,0.084,4.87,4.87,0.0846,7.33e-09,7.33e-09,7.72e-09,3.79e-06,3.79e-06,1.76e-06,0,0,0,0,0,0,0,0
|
||||
9990000,0.704,0.00196,-0.0134,0.71,-0.0498,0.0319,-0.1,-0.062,0.0533,-365,-1.54e-05,-5.75e-05,1.83e-06,-1.71e-05,1.77e-05,-0.000888,0.209,0.00206,0.432,0,0,0,0,0,0.000156,0.000491,0.000491,0.000163,1.7,1.7,0.0827,5.4,5.4,0.0857,7.33e-09,7.33e-09,7.61e-09,3.79e-06,3.79e-06,1.66e-06,0,0,0,0,0,0,0,0
|
||||
10090000,0.705,0.00197,-0.0134,0.71,-0.0494,0.0306,-0.096,-0.0637,0.0536,-365,-1.53e-05,-5.75e-05,2.07e-06,-1.68e-05,1.9e-05,-0.000914,0.209,0.00206,0.432,0,0,0,0,0,0.000156,0.000491,0.000491,0.000162,1.74,1.74,0.0801,5.67,5.67,0.0848,7.24e-09,7.24e-09,7.47e-09,3.77e-06,3.77e-06,1.54e-06,0,0,0,0,0,0,0,0
|
||||
10090000,0.704,0.00197,-0.0134,0.71,-0.0494,0.0306,-0.096,-0.0637,0.0536,-365,-1.53e-05,-5.75e-05,2.07e-06,-1.68e-05,1.9e-05,-0.000914,0.209,0.00206,0.432,0,0,0,0,0,0.000156,0.000491,0.000491,0.000162,1.74,1.74,0.0801,5.67,5.67,0.0848,7.24e-09,7.24e-09,7.47e-09,3.77e-06,3.77e-06,1.54e-06,0,0,0,0,0,0,0,0
|
||||
10190000,0.704,0.00198,-0.0134,0.71,-0.0512,0.0329,-0.0957,-0.0687,0.0568,-366,-1.54e-05,-5.74e-05,8.27e-07,-1.71e-05,1.93e-05,-0.000928,0.209,0.00206,0.432,0,0,0,0,0,0.000156,0.000502,0.000502,0.000161,1.85,1.85,0.0774,6.28,6.27,0.0839,7.24e-09,7.24e-09,7.33e-09,3.77e-06,3.77e-06,1.44e-06,0,0,0,0,0,0,0,0
|
||||
10290000,0.704,0.00193,-0.0134,0.71,-0.0504,0.0315,-0.0832,-0.0697,0.0565,-365,-1.53e-05,-5.74e-05,6.93e-08,-1.73e-05,2.13e-05,-0.000983,0.209,0.00206,0.432,0,0,0,0,0,0.000157,0.0005,0.0005,0.000161,1.87,1.87,0.0758,6.51,6.51,0.0847,7.14e-09,7.15e-09,7.21e-09,3.74e-06,3.74e-06,1.35e-06,0,0,0,0,0,0,0,0
|
||||
10290000,0.704,0.00193,-0.0134,0.71,-0.0504,0.0315,-0.0832,-0.0697,0.0565,-365,-1.53e-05,-5.74e-05,6.95e-08,-1.73e-05,2.13e-05,-0.000983,0.209,0.00206,0.432,0,0,0,0,0,0.000157,0.0005,0.0005,0.000161,1.87,1.87,0.0758,6.51,6.51,0.0847,7.14e-09,7.15e-09,7.21e-09,3.74e-06,3.74e-06,1.35e-06,0,0,0,0,0,0,0,0
|
||||
10390000,0.704,0.00191,-0.0133,0.71,0.00936,-0.0198,0.00845,0.000863,-0.00177,-365,-1.53e-05,-5.74e-05,1.5e-07,-1.8e-05,2.18e-05,-0.00101,0.209,0.00206,0.432,0,0,0,0,0,0.000157,0.000512,0.000512,0.00016,0.252,0.252,0.25,0.252,0.252,0.0753,7.14e-09,7.15e-09,7.07e-09,3.74e-06,3.74e-06,1.26e-06,0,0,0,0,0,0,0,0
|
||||
10490000,0.704,0.00195,-0.0133,0.71,0.00799,-0.0184,0.0138,0.00171,-0.00366,-365,-1.53e-05,-5.74e-05,-5.75e-07,-1.87e-05,2.24e-05,-0.00105,0.209,0.00206,0.432,0,0,0,0,0,0.000157,0.000525,0.000525,0.00016,0.258,0.258,0.248,0.259,0.259,0.0714,7.14e-09,7.15e-09,6.92e-09,3.74e-06,3.74e-06,1.19e-06,0,0,0,0,0,0,0,0
|
||||
10590000,0.704,0.00204,-0.0134,0.71,0.00751,-0.00779,0.0178,0.0018,-0.000819,-365,-1.53e-05,-5.72e-05,-4.85e-07,-2.11e-05,2.26e-05,-0.00106,0.209,0.00206,0.432,0,0,0,0,0,0.000157,0.00053,0.00053,0.00016,0.132,0.132,0.169,0.13,0.13,0.0672,7.1e-09,7.11e-09,6.77e-09,3.73e-06,3.73e-06,1.14e-06,0,0,0,0,0,0,0,0
|
||||
10690000,0.704,0.00209,-0.0134,0.71,0.00532,-0.00789,0.0199,0.00248,-0.00162,-365,-1.53e-05,-5.72e-05,-7.09e-07,-2.14e-05,2.28e-05,-0.00107,0.209,0.00206,0.432,0,0,0,0,0,0.000157,0.000543,0.000543,0.00016,0.143,0.143,0.165,0.136,0.136,0.069,7.1e-09,7.11e-09,6.64e-09,3.73e-06,3.73e-06,1.11e-06,0,0,0,0,0,0,0,0
|
||||
10790000,0.704,0.00208,-0.0135,0.71,0.00471,-0.00515,0.017,0.00266,-0.000796,-365,-1.52e-05,-5.71e-05,-5.38e-07,-2.31e-05,2.37e-05,-0.00107,0.209,0.00206,0.432,0,0,0,0,0,0.000157,0.000533,0.000533,0.000159,0.0994,0.0994,0.123,0.0903,0.0903,0.0656,6.97e-09,6.98e-09,6.49e-09,3.71e-06,3.71e-06,1.08e-06,0,0,0,0,0,0,0,0
|
||||
10890000,0.704,0.00204,-0.0134,0.71,0.00328,-0.0046,0.013,0.00304,-0.00125,-365,-1.52e-05,-5.71e-05,-5.22e-07,-2.31e-05,2.36e-05,-0.00107,0.209,0.00206,0.432,0,0,0,0,0,0.000158,0.000546,0.000546,0.000159,0.114,0.114,0.117,0.0965,0.0965,0.0674,6.97e-09,6.98e-09,6.34e-09,3.71e-06,3.71e-06,1.06e-06,0,0,0,0,0,0,0,0
|
||||
10990000,0.704,0.00202,-0.0136,0.71,0.00547,0.000285,0.00905,0.00458,-0.00246,-365,-1.47e-05,-5.68e-05,3.06e-07,-2.79e-05,2.81e-05,-0.00107,0.209,0.00206,0.432,0,0,0,0,0,0.000158,0.000516,0.000515,0.000159,0.0901,0.09,0.0927,0.072,0.072,0.0653,6.73e-09,6.73e-09,6.21e-09,3.68e-06,3.68e-06,1.04e-06,0,0,0,0,0,0,0,0
|
||||
10990000,0.704,0.00202,-0.0136,0.71,0.00547,0.000285,0.00905,0.00458,-0.00246,-365,-1.47e-05,-5.68e-05,3.06e-07,-2.79e-05,2.81e-05,-0.00107,0.209,0.00206,0.432,0,0,0,0,0,0.000158,0.000515,0.000515,0.000159,0.0901,0.09,0.0927,0.072,0.072,0.0653,6.73e-09,6.73e-09,6.21e-09,3.68e-06,3.68e-06,1.04e-06,0,0,0,0,0,0,0,0
|
||||
11090000,0.704,0.00202,-0.0135,0.71,0.00392,0.00197,0.0124,0.00506,-0.00239,-365,-1.47e-05,-5.68e-05,1.13e-06,-2.81e-05,2.82e-05,-0.00108,0.209,0.00206,0.432,0,0,0,0,0,0.000158,0.000528,0.000528,0.000158,0.108,0.108,0.0871,0.0785,0.0785,0.0671,6.73e-09,6.73e-09,6.05e-09,3.68e-06,3.68e-06,1.03e-06,0,0,0,0,0,0,0,0
|
||||
11190000,0.704,0.00195,-0.0137,0.71,0.00838,0.00479,0.00301,0.00644,-0.00312,-365,-1.41e-05,-5.67e-05,5.45e-07,-3.1e-05,3.31e-05,-0.00107,0.209,0.00206,0.432,0,0,0,0,0,0.000158,0.000479,0.000479,0.000158,0.0888,0.0888,0.0709,0.0621,0.0621,0.0641,6.38e-09,6.39e-09,5.9e-09,3.64e-06,3.64e-06,1.01e-06,0,0,0,0,0,0,0,0
|
||||
11190000,0.704,0.00195,-0.0137,0.71,0.00838,0.00479,0.00301,0.00644,-0.00312,-365,-1.41e-05,-5.67e-05,5.46e-07,-3.1e-05,3.31e-05,-0.00107,0.209,0.00206,0.432,0,0,0,0,0,0.000158,0.000479,0.000479,0.000158,0.0888,0.0888,0.0709,0.0621,0.0621,0.0641,6.38e-09,6.39e-09,5.9e-09,3.64e-06,3.64e-06,1.01e-06,0,0,0,0,0,0,0,0
|
||||
11290000,0.704,0.00204,-0.0138,0.71,0.00769,0.00646,0.00233,0.00726,-0.00254,-365,-1.42e-05,-5.67e-05,-4.52e-07,-3.1e-05,3.32e-05,-0.00108,0.209,0.00206,0.432,0,0,0,0,0,0.000159,0.000491,0.000491,0.000158,0.109,0.109,0.0668,0.0691,0.0691,0.0665,6.38e-09,6.39e-09,5.77e-09,3.64e-06,3.64e-06,1.01e-06,0,0,0,0,0,0,0,0
|
||||
11390000,0.704,0.00209,-0.0136,0.71,0.0037,0.00613,-0.0027,0.00532,-0.00223,-365,-1.45e-05,-5.68e-05,-1.25e-06,-2.84e-05,3.06e-05,-0.00107,0.209,0.00206,0.432,0,0,0,0,0,0.000159,0.000431,0.000431,0.000158,0.0893,0.0893,0.0559,0.0565,0.0565,0.0636,5.99e-09,5.99e-09,5.62e-09,3.59e-06,3.59e-06,1e-06,0,0,0,0,0,0,0,0
|
||||
11490000,0.704,0.00211,-0.0136,0.71,0.000879,0.00834,-0.00232,0.00556,-0.00151,-365,-1.45e-05,-5.68e-05,-2.77e-06,-2.85e-05,3.07e-05,-0.00108,0.209,0.00206,0.432,0,0,0,0,0,0.000159,0.000442,0.000442,0.000157,0.109,0.109,0.052,0.064,0.064,0.0645,5.99e-09,5.99e-09,5.47e-09,3.59e-06,3.59e-06,9.94e-07,0,0,0,0,0,0,0,0
|
||||
11490000,0.704,0.00212,-0.0136,0.71,0.000879,0.00834,-0.00232,0.00556,-0.00151,-365,-1.45e-05,-5.68e-05,-2.77e-06,-2.85e-05,3.07e-05,-0.00108,0.209,0.00206,0.432,0,0,0,0,0,0.000159,0.000442,0.000442,0.000157,0.109,0.109,0.052,0.064,0.064,0.0645,5.99e-09,5.99e-09,5.47e-09,3.59e-06,3.59e-06,9.94e-07,0,0,0,0,0,0,0,0
|
||||
11590000,0.704,0.00203,-0.0136,0.71,-0.00298,0.00788,-0.00771,0.0043,-0.00159,-365,-1.46e-05,-5.71e-05,-3.09e-06,-2.57e-05,3.07e-05,-0.00107,0.209,0.00206,0.432,0,0,0,0,0,0.000159,0.00038,0.00038,0.000158,0.0887,0.0887,0.045,0.0531,0.0531,0.0628,5.58e-09,5.59e-09,5.34e-09,3.56e-06,3.56e-06,9.9e-07,0,0,0,0,0,0,0,0
|
||||
11690000,0.704,0.00201,-0.0136,0.71,-0.00606,0.0105,-0.0121,0.00383,-0.000702,-365,-1.46e-05,-5.71e-05,-3.55e-06,-2.56e-05,3.06e-05,-0.00107,0.209,0.00206,0.432,0,0,0,0,0,0.000159,0.00039,0.00039,0.000157,0.108,0.108,0.0421,0.0611,0.0611,0.0632,5.58e-09,5.59e-09,5.2e-09,3.56e-06,3.56e-06,9.86e-07,0,0,0,0,0,0,0,0
|
||||
11790000,0.704,0.00208,-0.0135,0.71,-0.0112,0.0109,-0.0139,0.0017,0.000401,-365,-1.47e-05,-5.7e-05,-3.61e-06,-2.53e-05,2.94e-05,-0.00107,0.209,0.00206,0.432,0,0,0,0,0,0.000159,0.000334,0.000334,0.000157,0.0865,0.0865,0.0368,0.0512,0.0512,0.0607,5.21e-09,5.22e-09,5.05e-09,3.52e-06,3.53e-06,9.81e-07,0,0,0,0,0,0,0,0
|
||||
11890000,0.704,0.00209,-0.0135,0.71,-0.0129,0.0117,-0.015,0.000506,0.00154,-365,-1.48e-05,-5.7e-05,-4.36e-06,-2.53e-05,2.95e-05,-0.00107,0.209,0.00206,0.432,0,0,0,0,0,0.000159,0.000343,0.000343,0.000157,0.104,0.104,0.0348,0.0594,0.0594,0.0608,5.21e-09,5.22e-09,4.91e-09,3.52e-06,3.53e-06,9.78e-07,0,0,0,0,0,0,0,0
|
||||
11890000,0.704,0.00209,-0.0135,0.71,-0.0129,0.0117,-0.015,0.000506,0.00154,-365,-1.48e-05,-5.7e-05,-4.35e-06,-2.53e-05,2.95e-05,-0.00107,0.209,0.00206,0.432,0,0,0,0,0,0.000159,0.000343,0.000343,0.000157,0.104,0.104,0.0348,0.0594,0.0594,0.0608,5.21e-09,5.22e-09,4.91e-09,3.52e-06,3.53e-06,9.78e-07,0,0,0,0,0,0,0,0
|
||||
11990000,0.704,0.00211,-0.0135,0.71,-0.0143,0.0121,-0.0201,-0.000443,0.00218,-365,-1.47e-05,-5.71e-05,-4.16e-06,-2.49e-05,3.03e-05,-0.00107,0.209,0.00206,0.432,0,0,0,0,0,0.000159,0.000296,0.000295,0.000157,0.083,0.083,0.0315,0.05,0.05,0.0594,4.89e-09,4.89e-09,4.79e-09,3.5e-06,3.5e-06,9.73e-07,0,0,0,0,0,0,0,0
|
||||
12090000,0.704,0.00212,-0.0135,0.71,-0.0158,0.0142,-0.0257,-0.00194,0.00348,-365,-1.47e-05,-5.71e-05,-3.44e-06,-2.48e-05,3.02e-05,-0.00107,0.209,0.00206,0.432,0,0,0,0,0,0.000159,0.000304,0.000304,0.000156,0.0987,0.0986,0.0301,0.0584,0.0584,0.0593,4.89e-09,4.89e-09,4.65e-09,3.5e-06,3.5e-06,9.71e-07,0,0,0,0,0,0,0,0
|
||||
12190000,0.704,0.0018,-0.0136,0.71,-0.00961,0.0118,-0.0208,0.00113,0.00192,-365,-1.4e-05,-5.76e-05,-3.16e-06,-2.29e-05,3.6e-05,-0.00108,0.209,0.00206,0.432,0,0,0,0,0,0.000159,0.000265,0.000265,0.000156,0.0786,0.0786,0.0276,0.0492,0.0492,0.0572,4.61e-09,4.62e-09,4.52e-09,3.49e-06,3.49e-06,9.63e-07,0,0,0,0,0,0,0,0
|
||||
12290000,0.704,0.00177,-0.0136,0.71,-0.0124,0.0133,-0.0203,3.95e-05,0.00318,-365,-1.4e-05,-5.76e-05,-2.95e-06,-2.29e-05,3.61e-05,-0.00108,0.209,0.00206,0.432,0,0,0,0,0,0.000159,0.000272,0.000272,0.000156,0.0926,0.0926,0.0272,0.0577,0.0577,0.0578,4.61e-09,4.62e-09,4.4e-09,3.49e-06,3.49e-06,9.61e-07,0,0,0,0,0,0,0,0
|
||||
12390000,0.704,0.00148,-0.0136,0.71,-0.00698,0.0104,-0.0189,0.00257,0.00173,-365,-1.35e-05,-5.81e-05,-3.45e-06,-2.15e-05,4.01e-05,-0.00108,0.209,0.00206,0.432,0,0,0,0,0,0.000159,0.000241,0.000241,0.000155,0.074,0.074,0.0255,0.0488,0.0488,0.0558,4.38e-09,4.38e-09,4.28e-09,3.48e-06,3.48e-06,9.51e-07,0,0,0,0,0,0,0,0
|
||||
12390000,0.704,0.00148,-0.0136,0.71,-0.00698,0.0104,-0.0189,0.00257,0.00173,-365,-1.35e-05,-5.81e-05,-3.44e-06,-2.15e-05,4.01e-05,-0.00108,0.209,0.00206,0.432,0,0,0,0,0,0.000159,0.000241,0.000241,0.000155,0.074,0.074,0.0255,0.0488,0.0488,0.0558,4.38e-09,4.38e-09,4.28e-09,3.48e-06,3.48e-06,9.51e-07,0,0,0,0,0,0,0,0
|
||||
12490000,0.704,0.00146,-0.0136,0.71,-0.0084,0.0123,-0.0219,0.00182,0.00287,-365,-1.35e-05,-5.81e-05,-4.12e-06,-2.15e-05,4.01e-05,-0.00108,0.209,0.00206,0.432,0,0,0,0,0,0.000159,0.000248,0.000248,0.000155,0.0864,0.0864,0.0253,0.0572,0.0572,0.0556,4.38e-09,4.38e-09,4.15e-09,3.48e-06,3.48e-06,9.48e-07,0,0,0,0,0,0,0,0
|
||||
12590000,0.704,0.00154,-0.0134,0.71,-0.0152,0.0104,-0.0274,-0.00301,0.00158,-365,-1.4e-05,-5.83e-05,-4.04e-06,-1.93e-05,3.79e-05,-0.00108,0.209,0.00206,0.432,0,0,0,0,0,0.000159,0.000224,0.000224,0.000155,0.0695,0.0695,0.0244,0.0485,0.0485,0.0545,4.17e-09,4.17e-09,4.04e-09,3.47e-06,3.47e-06,9.36e-07,0,0,0,0,0,0,0,0
|
||||
12690000,0.704,0.00158,-0.0134,0.71,-0.0159,0.0118,-0.031,-0.00459,0.0027,-365,-1.4e-05,-5.83e-05,-4.47e-06,-1.93e-05,3.79e-05,-0.00108,0.209,0.00206,0.432,0,0,0,0,0,0.000159,0.00023,0.00023,0.000155,0.0804,0.0804,0.0246,0.0568,0.0568,0.0543,4.17e-09,4.17e-09,3.92e-09,3.47e-06,3.47e-06,9.32e-07,0,0,0,0,0,0,0,0
|
||||
@@ -136,7 +136,7 @@ Timestamp,state[0],state[1],state[2],state[3],state[4],state[5],state[6],state[7
|
||||
13390000,0.704,0.000886,-0.0135,0.71,-0.001,0.00579,-0.0244,0.00292,0.0012,-365,-1.24e-05,-5.93e-05,-2.42e-06,-2.05e-05,4.15e-05,-0.00114,0.209,0.00206,0.432,0,0,0,0,0,0.000157,0.000189,0.000189,0.000152,0.0543,0.0543,0.026,0.0477,0.0477,0.05,3.52e-09,3.52e-09,3.19e-09,3.47e-06,3.47e-06,8.26e-07,0,0,0,0,0,0,0,0
|
||||
13490000,0.704,0.000913,-0.0135,0.71,-0.00167,0.00567,-0.023,0.00281,0.00176,-365,-1.24e-05,-5.93e-05,-1.9e-06,-2.06e-05,4.16e-05,-0.00115,0.209,0.00206,0.432,0,0,0,0,0,0.000157,0.000195,0.000195,0.000152,0.0617,0.0617,0.027,0.0555,0.0555,0.0502,3.52e-09,3.52e-09,3.09e-09,3.47e-06,3.47e-06,8.18e-07,0,0,0,0,0,0,0,0
|
||||
13590000,0.704,0.000857,-0.0134,0.71,-0.00123,0.00596,-0.0253,0.00199,0.00116,-365,-1.23e-05,-5.94e-05,-2.28e-06,-2.09e-05,4.07e-05,-0.00115,0.209,0.00206,0.432,0,0,0,0,0,0.000157,0.000186,0.000185,0.000152,0.0515,0.0515,0.027,0.0476,0.0476,0.0498,3.38e-09,3.38e-09,3.01e-09,3.47e-06,3.47e-06,7.86e-07,0,0,0,0,0,0,0,0
|
||||
13690000,0.704,0.000831,-0.0134,0.71,-0.000714,0.00772,-0.0299,0.00188,0.00182,-365,-1.23e-05,-5.94e-05,-1.49e-06,-2.09e-05,4.07e-05,-0.00115,0.209,0.00206,0.432,0,0,0,0,0,0.000157,0.000191,0.000191,0.000151,0.0584,0.0584,0.0281,0.0551,0.0551,0.0501,3.38e-09,3.38e-09,2.92e-09,3.47e-06,3.47e-06,7.77e-07,0,0,0,0,0,0,0,0
|
||||
13690000,0.704,0.000831,-0.0134,0.71,-0.000715,0.00772,-0.0299,0.00188,0.00182,-365,-1.23e-05,-5.94e-05,-1.49e-06,-2.09e-05,4.07e-05,-0.00115,0.209,0.00206,0.432,0,0,0,0,0,0.000157,0.000191,0.000191,0.000151,0.0584,0.0584,0.0281,0.0551,0.0551,0.0501,3.38e-09,3.38e-09,2.92e-09,3.47e-06,3.47e-06,7.77e-07,0,0,0,0,0,0,0,0
|
||||
13790000,0.704,0.000721,-0.0133,0.71,6.74e-05,0.00364,-0.0313,0.00309,-0.000477,-365,-1.21e-05,-5.98e-05,-1.49e-06,-2.24e-05,4.01e-05,-0.00115,0.209,0.00206,0.432,0,0,0,0,0,0.000156,0.000183,0.000183,0.000151,0.0491,0.0491,0.0279,0.0474,0.0474,0.0493,3.23e-09,3.24e-09,2.83e-09,3.47e-06,3.47e-06,7.42e-07,0,0,0,0,0,0,0,0
|
||||
13890000,0.704,0.000689,-0.0133,0.71,0.0004,0.00355,-0.0356,0.00311,-0.000139,-365,-1.21e-05,-5.98e-05,-1.02e-06,-2.23e-05,4e-05,-0.00115,0.209,0.00206,0.432,0,0,0,0,0,0.000156,0.000189,0.000188,0.00015,0.0555,0.0555,0.0292,0.0548,0.0548,0.0503,3.24e-09,3.24e-09,2.76e-09,3.47e-06,3.47e-06,7.32e-07,0,0,0,0,0,0,0,0
|
||||
13990000,0.704,0.000623,-0.0133,0.71,0.000855,0.00112,-0.0348,0.00407,-0.00186,-365,-1.19e-05,-6.01e-05,-9.04e-07,-2.4e-05,3.92e-05,-0.00116,0.209,0.00206,0.432,0,0,0,0,0,0.000156,0.000181,0.000181,0.00015,0.047,0.047,0.0288,0.0472,0.0472,0.0495,3.09e-09,3.1e-09,2.68e-09,3.46e-06,3.46e-06,6.95e-07,0,0,0,0,0,0,0,0
|
||||
@@ -145,15 +145,15 @@ Timestamp,state[0],state[1],state[2],state[3],state[4],state[5],state[6],state[7
|
||||
14290000,0.705,0.000511,-0.0133,0.709,0.00488,0.00149,-0.0367,0.00681,-0.00141,-365,-1.15e-05,-6.02e-05,6.89e-07,-2.44e-05,3.69e-05,-0.00116,0.209,0.00206,0.432,0,0,0,0,0,0.000155,0.000185,0.000185,0.000149,0.051,0.051,0.0304,0.0541,0.0541,0.0505,2.95e-09,2.95e-09,2.45e-09,3.46e-06,3.46e-06,6.34e-07,0,0,0,0,0,0,0,0
|
||||
14390000,0.705,0.00042,-0.0133,0.709,0.00685,0.00239,-0.0386,0.00828,-0.00121,-365,-1.12e-05,-6.02e-05,1.5e-06,-2.48e-05,3.47e-05,-0.00116,0.209,0.00206,0.432,0,0,0,0,0,0.000154,0.000179,0.000178,0.000148,0.0437,0.0437,0.0297,0.0468,0.0468,0.0498,2.81e-09,2.81e-09,2.38e-09,3.45e-06,3.45e-06,5.96e-07,0,0,0,0,0,0,0,0
|
||||
14490000,0.705,0.000406,-0.0133,0.709,0.00669,0.00362,-0.0419,0.00894,-0.000907,-365,-1.12e-05,-6.02e-05,1.73e-06,-2.47e-05,3.46e-05,-0.00116,0.209,0.00206,0.432,0,0,0,0,0,0.000154,0.000184,0.000184,0.000148,0.0493,0.0493,0.0305,0.0538,0.0538,0.0505,2.81e-09,2.81e-09,2.31e-09,3.45e-06,3.45e-06,5.82e-07,0,0,0,0,0,0,0,0
|
||||
14590000,0.705,0.000391,-0.0131,0.709,0.00348,0.00205,-0.0422,0.00562,-0.00231,-365,-1.16e-05,-6.05e-05,1.74e-06,-2.69e-05,3.77e-05,-0.00116,0.209,0.00206,0.432,0,0,0,0,0,0.000154,0.000177,0.000177,0.000148,0.0425,0.0425,0.0299,0.0466,0.0466,0.0503,2.66e-09,2.66e-09,2.25e-09,3.44e-06,3.44e-06,5.47e-07,0,0,0,0,0,0,0,0
|
||||
14590000,0.705,0.000392,-0.0131,0.709,0.00348,0.00205,-0.0422,0.00562,-0.00231,-365,-1.16e-05,-6.05e-05,1.74e-06,-2.69e-05,3.77e-05,-0.00116,0.209,0.00206,0.432,0,0,0,0,0,0.000154,0.000177,0.000177,0.000148,0.0425,0.0425,0.0299,0.0466,0.0466,0.0503,2.66e-09,2.66e-09,2.25e-09,3.44e-06,3.44e-06,5.47e-07,0,0,0,0,0,0,0,0
|
||||
14690000,0.705,0.000352,-0.0131,0.709,0.00472,-0.000865,-0.0387,0.00607,-0.00224,-365,-1.16e-05,-6.05e-05,2.29e-06,-2.71e-05,3.79e-05,-0.00117,0.209,0.00206,0.432,0,0,0,0,0,0.000153,0.000182,0.000182,0.000147,0.0479,0.0479,0.0305,0.0535,0.0535,0.051,2.66e-09,2.66e-09,2.18e-09,3.44e-06,3.44e-06,5.33e-07,0,0,0,0,0,0,0,0
|
||||
14790000,0.705,0.000371,-0.0129,0.709,0.00176,-0.0024,-0.0348,0.00338,-0.00325,-365,-1.19e-05,-6.07e-05,2.41e-06,-2.89e-05,4.1e-05,-0.00119,0.209,0.00206,0.432,0,0,0,0,0,0.000153,0.000176,0.000176,0.000147,0.0414,0.0414,0.0295,0.0464,0.0464,0.0502,2.52e-09,2.52e-09,2.12e-09,3.43e-06,3.43e-06,4.98e-07,0,0,0,0,0,0,0,0
|
||||
14890000,0.705,0.000365,-0.0129,0.709,0.00315,-0.00143,-0.0378,0.00361,-0.00345,-365,-1.19e-05,-6.07e-05,2.76e-06,-2.88e-05,4.1e-05,-0.00119,0.209,0.00206,0.432,0,0,0,0,0,0.000152,0.000181,0.000181,0.000146,0.0467,0.0467,0.0303,0.0532,0.0532,0.0516,2.52e-09,2.52e-09,2.06e-09,3.43e-06,3.43e-06,4.85e-07,0,0,0,0,0,0,0,0
|
||||
14990000,0.705,0.000355,-0.0129,0.709,0.00216,-0.00164,-0.0337,0.00283,-0.00277,-365,-1.2e-05,-6.06e-05,2.6e-06,-2.86e-05,4.19e-05,-0.0012,0.209,0.00206,0.432,0,0,0,0,0,0.000152,0.000175,0.000174,0.000146,0.0406,0.0406,0.0292,0.0463,0.0463,0.0508,2.37e-09,2.37e-09,2e-09,3.42e-06,3.42e-06,4.52e-07,0,0,0,0,0,0,0,0
|
||||
15090000,0.705,0.000282,-0.0128,0.709,0.00242,-0.00181,-0.0363,0.00305,-0.00294,-365,-1.2e-05,-6.06e-05,2.58e-06,-2.85e-05,4.18e-05,-0.0012,0.209,0.00206,0.432,0,0,0,0,0,0.000151,0.000179,0.000179,0.000145,0.0457,0.0457,0.0296,0.053,0.053,0.0514,2.37e-09,2.37e-09,1.95e-09,3.42e-06,3.42e-06,4.38e-07,0,0,0,0,0,0,0,0
|
||||
15190000,0.705,0.000293,-0.0128,0.709,0.00199,-0.000586,-0.0338,0.00245,-0.00232,-365,-1.21e-05,-6.06e-05,2.48e-06,-2.82e-05,4.25e-05,-0.00121,0.209,0.00206,0.432,0,0,0,0,0,0.000151,0.000173,0.000173,0.000145,0.0399,0.0399,0.0287,0.0461,0.0461,0.0512,2.22e-09,2.22e-09,1.9e-09,3.41e-06,3.41e-06,4.09e-07,0,0,0,0,0,0,0,0
|
||||
15290000,0.705,0.000254,-0.0129,0.709,0.00244,-0.000391,-0.0314,0.00268,-0.00238,-365,-1.21e-05,-6.06e-05,2.82e-06,-2.84e-05,4.27e-05,-0.00122,0.209,0.00206,0.432,0,0,0,0,0,0.000151,0.000177,0.000177,0.000145,0.0449,0.0449,0.0289,0.0527,0.0527,0.0519,2.22e-09,2.22e-09,1.84e-09,3.41e-06,3.41e-06,3.96e-07,0,0,0,0,0,0,0,0
|
||||
15390000,0.705,0.000254,-0.0128,0.709,0.00186,-6.42e-05,-0.0291,0.000233,-0.00193,-365,-1.22e-05,-6.06e-05,3.57e-06,-2.83e-05,4.39e-05,-0.00123,0.209,0.00206,0.432,0,0,0,0,0,0.00015,0.000171,0.000171,0.000144,0.0393,0.0393,0.0277,0.046,0.046,0.051,2.07e-09,2.07e-09,1.79e-09,3.39e-06,3.39e-06,3.68e-07,0,0,0,0,0,0,0,0
|
||||
15290000,0.705,0.000255,-0.0129,0.709,0.00244,-0.000391,-0.0314,0.00268,-0.00238,-365,-1.21e-05,-6.06e-05,2.82e-06,-2.84e-05,4.27e-05,-0.00122,0.209,0.00206,0.432,0,0,0,0,0,0.000151,0.000177,0.000177,0.000145,0.0449,0.0449,0.0289,0.0527,0.0527,0.0519,2.22e-09,2.22e-09,1.84e-09,3.41e-06,3.41e-06,3.96e-07,0,0,0,0,0,0,0,0
|
||||
15390000,0.705,0.000254,-0.0128,0.709,0.00186,-6.43e-05,-0.0291,0.000233,-0.00193,-365,-1.22e-05,-6.06e-05,3.57e-06,-2.83e-05,4.39e-05,-0.00123,0.209,0.00206,0.432,0,0,0,0,0,0.00015,0.000171,0.000171,0.000144,0.0393,0.0393,0.0277,0.046,0.046,0.051,2.07e-09,2.07e-09,1.79e-09,3.39e-06,3.39e-06,3.68e-07,0,0,0,0,0,0,0,0
|
||||
15490000,0.705,0.000273,-0.0128,0.709,0.003,-0.000423,-0.0291,0.000486,-0.00197,-365,-1.22e-05,-6.06e-05,3.11e-06,-2.82e-05,4.38e-05,-0.00122,0.209,0.00206,0.432,0,0,0,0,0,0.00015,0.000175,0.000175,0.000144,0.0442,0.0442,0.0281,0.0525,0.0525,0.0522,2.07e-09,2.07e-09,1.75e-09,3.39e-06,3.39e-06,3.57e-07,0,0,0,0,0,0,0,0
|
||||
15590000,0.705,0.000283,-0.0128,0.709,0.00128,-0.000434,-0.0275,-0.00163,-0.00163,-365,-1.24e-05,-6.05e-05,2.8e-06,-2.8e-05,4.51e-05,-0.00123,0.209,0.00206,0.432,0,0,0,0,0,0.00015,0.000169,0.000168,0.000144,0.0387,0.0387,0.0269,0.0458,0.0458,0.0513,1.93e-09,1.93e-09,1.7e-09,3.37e-06,3.37e-06,3.31e-07,0,0,0,0,0,0,0,0
|
||||
15690000,0.705,0.000287,-0.0128,0.709,0.00148,-0.00058,-0.0279,-0.00151,-0.00167,-365,-1.24e-05,-6.05e-05,2.77e-06,-2.8e-05,4.51e-05,-0.00123,0.209,0.00206,0.432,0,0,0,0,0,0.000149,0.000173,0.000173,0.000143,0.0436,0.0436,0.027,0.0524,0.0524,0.0518,1.93e-09,1.93e-09,1.65e-09,3.37e-06,3.37e-06,3.19e-07,0,0,0,0,0,0,0,0
|
||||
@@ -163,9 +163,9 @@ Timestamp,state[0],state[1],state[2],state[3],state[4],state[5],state[6],state[7
|
||||
16090000,0.705,0.000139,-0.0128,0.709,0.00462,-0.00381,-0.0199,-0.000582,-0.00415,-365,-1.24e-05,-6.09e-05,4.04e-06,-3.21e-05,4.66e-05,-0.00125,0.209,0.00206,0.432,0,0,0,0,0,0.000148,0.000167,0.000167,0.000141,0.0425,0.0425,0.0248,0.0521,0.0521,0.0514,1.65e-09,1.65e-09,1.48e-09,3.34e-06,3.34e-06,2.57e-07,0,0,0,0,0,0,0,0
|
||||
16190000,0.705,0.000157,-0.0128,0.709,0.00474,-0.00306,-0.0184,-0.000676,-0.00336,-365,-1.25e-05,-6.08e-05,4.12e-06,-3.1e-05,4.77e-05,-0.00126,0.209,0.00206,0.432,0,0,0,0,0,0.000147,0.00016,0.00016,0.000141,0.0374,0.0374,0.0238,0.0455,0.0455,0.051,1.51e-09,1.52e-09,1.44e-09,3.32e-06,3.32e-06,2.4e-07,0,0,0,0,0,0,0,0
|
||||
16290000,0.706,0.000176,-0.0128,0.708,0.00628,-0.00384,-0.0197,-0.000119,-0.0037,-365,-1.25e-05,-6.08e-05,4.75e-06,-3.1e-05,4.77e-05,-0.00125,0.209,0.00206,0.432,0,0,0,0,0,0.000147,0.000164,0.000163,0.000141,0.042,0.042,0.0237,0.0519,0.0519,0.0513,1.51e-09,1.52e-09,1.4e-09,3.32e-06,3.32e-06,2.31e-07,0,0,0,0,0,0,0,0
|
||||
16390000,0.706,0.000158,-0.0128,0.708,0.0053,-0.0041,-0.0187,-0.000337,-0.00295,-365,-1.26e-05,-6.07e-05,4.52e-06,-2.98e-05,4.93e-05,-0.00126,0.209,0.00206,0.432,0,0,0,0,0,0.000146,0.000157,0.000157,0.00014,0.0369,0.0369,0.0226,0.0454,0.0454,0.0503,1.39e-09,1.39e-09,1.37e-09,3.3e-06,3.3e-06,2.15e-07,0,0,0,0,0,0,0,0
|
||||
16390000,0.706,0.000158,-0.0128,0.708,0.00529,-0.0041,-0.0187,-0.000337,-0.00295,-365,-1.26e-05,-6.07e-05,4.52e-06,-2.98e-05,4.93e-05,-0.00126,0.209,0.00206,0.432,0,0,0,0,0,0.000146,0.000157,0.000157,0.00014,0.0369,0.0369,0.0226,0.0454,0.0454,0.0503,1.39e-09,1.39e-09,1.37e-09,3.3e-06,3.3e-06,2.15e-07,0,0,0,0,0,0,0,0
|
||||
16490000,0.706,0.000175,-0.0128,0.708,0.00442,-0.00362,-0.0216,0.000121,-0.00333,-365,-1.26e-05,-6.07e-05,4.63e-06,-2.97e-05,4.92e-05,-0.00125,0.209,0.00206,0.432,0,0,0,0,0,0.000146,0.00016,0.00016,0.00014,0.0414,0.0414,0.0227,0.0518,0.0518,0.0513,1.39e-09,1.39e-09,1.33e-09,3.3e-06,3.3e-06,2.08e-07,0,0,0,0,0,0,0,0
|
||||
16590000,0.706,0.000418,-0.0128,0.708,0.00097,-0.000925,-0.0219,-0.00271,8.84e-06,-365,-1.31e-05,-6.02e-05,4.68e-06,-2.36e-05,5.51e-05,-0.00126,0.209,0.00206,0.432,0,0,0,0,0,0.000146,0.000153,0.000153,0.00014,0.0365,0.0365,0.0217,0.0454,0.0454,0.0502,1.27e-09,1.27e-09,1.3e-09,3.28e-06,3.28e-06,1.94e-07,0,0,0,0,0,0,0,0
|
||||
16590000,0.706,0.000418,-0.0128,0.708,0.00097,-0.000925,-0.0219,-0.00271,8.82e-06,-365,-1.31e-05,-6.02e-05,4.68e-06,-2.36e-05,5.51e-05,-0.00126,0.209,0.00206,0.432,0,0,0,0,0,0.000146,0.000153,0.000153,0.00014,0.0365,0.0365,0.0217,0.0454,0.0454,0.0502,1.27e-09,1.27e-09,1.3e-09,3.28e-06,3.28e-06,1.94e-07,0,0,0,0,0,0,0,0
|
||||
16690000,0.706,0.000408,-0.0127,0.708,0.0011,-0.000426,-0.0183,-0.00258,-5.52e-05,-365,-1.31e-05,-6.02e-05,4.37e-06,-2.37e-05,5.52e-05,-0.00127,0.209,0.00206,0.432,0,0,0,0,0,0.000145,0.000156,0.000156,0.000139,0.0408,0.0408,0.0215,0.0517,0.0517,0.0504,1.27e-09,1.27e-09,1.26e-09,3.28e-06,3.28e-06,1.86e-07,0,0,0,0,0,0,0,0
|
||||
16790000,0.706,0.000542,-0.0127,0.708,-0.00216,0.00175,-0.0173,-0.00487,0.0026,-365,-1.34e-05,-5.98e-05,4.38e-06,-1.87e-05,6.01e-05,-0.00127,0.209,0.00206,0.432,0,0,0,0,0,0.000145,0.00015,0.00015,0.000139,0.036,0.036,0.0207,0.0453,0.0453,0.0501,1.16e-09,1.16e-09,1.24e-09,3.26e-06,3.26e-06,1.75e-07,0,0,0,0,0,0,0,0
|
||||
16890000,0.706,0.000561,-0.0127,0.708,-0.0025,0.00264,-0.0146,-0.00508,0.0028,-365,-1.35e-05,-5.98e-05,4.21e-06,-1.87e-05,6.02e-05,-0.00128,0.209,0.00206,0.432,0,0,0,0,0,0.000145,0.000153,0.000153,0.000139,0.0402,0.0402,0.0205,0.0516,0.0516,0.0502,1.16e-09,1.16e-09,1.2e-09,3.26e-06,3.26e-06,1.68e-07,0,0,0,0,0,0,0,0
|
||||
@@ -177,32 +177,32 @@ Timestamp,state[0],state[1],state[2],state[3],state[4],state[5],state[6],state[7
|
||||
17490000,0.706,0.00039,-0.0125,0.708,0.00221,0.00135,-0.00595,-0.00469,-0.00139,-365,-1.36e-05,-6.04e-05,4.12e-06,-2.77e-05,6.32e-05,-0.00129,0.209,0.00206,0.432,0,0,0,0,0,0.000142,0.000142,0.000141,0.000136,0.0382,0.0382,0.0177,0.0513,0.0513,0.0488,8.67e-10,8.68e-10,1.04e-09,3.21e-06,3.21e-06,1.25e-07,0,0,0,0,0,0,0,0
|
||||
17590000,0.706,0.0003,-0.0124,0.708,0.00357,0.000153,-0.00041,-0.00391,-0.0025,-365,-1.36e-05,-6.06e-05,4.21e-06,-3.01e-05,6.34e-05,-0.0013,0.209,0.00206,0.432,0,0,0,0,0,0.000142,0.000136,0.000136,0.000136,0.0336,0.0336,0.017,0.045,0.045,0.0478,7.86e-10,7.87e-10,1.01e-09,3.19e-06,3.19e-06,1.18e-07,0,0,0,0,0,0,0,0
|
||||
17690000,0.706,0.000271,-0.0124,0.708,0.0044,0.00088,-0.000986,-0.0035,-0.00247,-365,-1.36e-05,-6.06e-05,4.33e-06,-3.01e-05,6.34e-05,-0.0013,0.209,0.00206,0.432,0,0,0,0,0,0.000142,0.000138,0.000138,0.000136,0.0374,0.0374,0.0167,0.0512,0.0512,0.0478,7.86e-10,7.87e-10,9.86e-10,3.19e-06,3.19e-06,1.14e-07,0,0,0,0,0,0,0,0
|
||||
17790000,0.706,0.000178,-0.0124,0.708,0.00705,0.000571,-0.00219,-0.00229,-0.00212,-365,-1.34e-05,-6.06e-05,5e-06,-3.01e-05,6.07e-05,-0.00129,0.209,0.00206,0.432,0,0,0,0,0,0.000141,0.000133,0.000132,0.000135,0.033,0.033,0.0162,0.0449,0.0449,0.0475,7.12e-10,7.13e-10,9.65e-10,3.18e-06,3.18e-06,1.08e-07,0,0,0,0,0,0,0,0
|
||||
17890000,0.706,0.000188,-0.0124,0.708,0.00853,-0.000172,-0.00205,-0.00151,-0.00206,-365,-1.34e-05,-6.06e-05,5.25e-06,-3.01e-05,6.06e-05,-0.00129,0.209,0.00206,0.432,0,0,0,0,0,0.000141,0.000135,0.000134,0.000135,0.0366,0.0366,0.016,0.0511,0.0511,0.0475,7.12e-10,7.13e-10,9.41e-10,3.18e-06,3.18e-06,1.04e-07,0,0,0,0,0,0,0,0
|
||||
17990000,0.706,0.000129,-0.0125,0.708,0.0103,-0.00193,-0.000714,-0.000757,-0.00179,-365,-1.34e-05,-6.06e-05,5.16e-06,-2.99e-05,5.91e-05,-0.00129,0.209,0.00206,0.432,0,0,0,0,0,0.00014,0.000129,0.000129,0.000135,0.0323,0.0323,0.0154,0.0449,0.0449,0.0466,6.45e-10,6.46e-10,9.18e-10,3.16e-06,3.16e-06,9.82e-08,0,0,0,0,0,0,0,0
|
||||
17790000,0.706,0.000178,-0.0124,0.708,0.00705,0.000572,-0.00219,-0.00229,-0.00212,-365,-1.34e-05,-6.06e-05,5e-06,-3.01e-05,6.07e-05,-0.00129,0.209,0.00206,0.432,0,0,0,0,0,0.000141,0.000133,0.000132,0.000135,0.033,0.033,0.0162,0.0449,0.0449,0.0475,7.12e-10,7.13e-10,9.65e-10,3.18e-06,3.18e-06,1.08e-07,0,0,0,0,0,0,0,0
|
||||
17890000,0.706,0.000188,-0.0124,0.708,0.00853,-0.000171,-0.00205,-0.00151,-0.00206,-365,-1.34e-05,-6.06e-05,5.25e-06,-3.01e-05,6.06e-05,-0.00129,0.209,0.00206,0.432,0,0,0,0,0,0.000141,0.000135,0.000134,0.000135,0.0366,0.0366,0.016,0.0511,0.0511,0.0475,7.12e-10,7.13e-10,9.41e-10,3.18e-06,3.18e-06,1.04e-07,0,0,0,0,0,0,0,0
|
||||
17990000,0.706,0.000129,-0.0125,0.708,0.0103,-0.00193,-0.000713,-0.000757,-0.00179,-365,-1.34e-05,-6.06e-05,5.16e-06,-2.99e-05,5.91e-05,-0.00129,0.209,0.00206,0.432,0,0,0,0,0,0.00014,0.000129,0.000129,0.000135,0.0323,0.0323,0.0154,0.0449,0.0449,0.0466,6.45e-10,6.46e-10,9.18e-10,3.16e-06,3.16e-06,9.82e-08,0,0,0,0,0,0,0,0
|
||||
18090000,0.706,0.000135,-0.0125,0.708,0.0109,-0.00208,0.00168,0.000308,-0.00202,-365,-1.34e-05,-6.06e-05,4.7e-06,-2.99e-05,5.92e-05,-0.0013,0.209,0.00206,0.432,0,0,0,0,0,0.00014,0.000131,0.000131,0.000134,0.0358,0.0358,0.0153,0.0509,0.0509,0.0471,6.45e-10,6.46e-10,8.99e-10,3.16e-06,3.16e-06,9.52e-08,0,0,0,0,0,0,0,0
|
||||
18190000,0.706,9.86e-05,-0.0124,0.708,0.0116,-0.00103,0.00308,0.00123,-0.00157,-365,-1.34e-05,-6.05e-05,4.94e-06,-2.93e-05,5.93e-05,-0.0013,0.209,0.00206,0.432,0,0,0,0,0,0.00014,0.000126,0.000126,0.000134,0.0316,0.0316,0.0147,0.0448,0.0448,0.0463,5.85e-10,5.85e-10,8.78e-10,3.15e-06,3.15e-06,9.02e-08,0,0,0,0,0,0,0,0
|
||||
18290000,0.706,4.04e-05,-0.0124,0.708,0.0116,-0.00158,0.00426,0.00239,-0.0017,-365,-1.34e-05,-6.05e-05,4.74e-06,-2.93e-05,5.94e-05,-0.0013,0.209,0.00206,0.432,0,0,0,0,0,0.000139,0.000128,0.000128,0.000134,0.035,0.035,0.0145,0.0508,0.0508,0.0462,5.85e-10,5.85e-10,8.57e-10,3.15e-06,3.15e-06,8.71e-08,0,0,0,0,0,0,0,0
|
||||
18390000,0.706,5.25e-05,-0.0124,0.708,0.013,4.8e-05,0.00551,0.00299,-0.00128,-365,-1.34e-05,-6.05e-05,5.08e-06,-2.88e-05,5.99e-05,-0.0013,0.209,0.00206,0.432,0,0,0,0,0,0.000139,0.000123,0.000123,0.000133,0.0309,0.0309,0.014,0.0447,0.0447,0.0454,5.3e-10,5.3e-10,8.36e-10,3.14e-06,3.14e-06,8.27e-08,0,0,0,0,0,0,0,0
|
||||
18490000,0.706,6.8e-05,-0.0124,0.708,0.0138,0.000479,0.00517,0.00438,-0.00125,-365,-1.34e-05,-6.05e-05,5.15e-06,-2.88e-05,5.99e-05,-0.0013,0.209,0.00206,0.432,0,0,0,0,0,0.000139,0.000125,0.000125,0.000133,0.0342,0.0342,0.0139,0.0506,0.0506,0.0458,5.3e-10,5.3e-10,8.19e-10,3.14e-06,3.14e-06,8.03e-08,0,0,0,0,0,0,0,0
|
||||
18290000,0.706,4.05e-05,-0.0124,0.708,0.0116,-0.00158,0.00426,0.00239,-0.0017,-365,-1.34e-05,-6.05e-05,4.74e-06,-2.93e-05,5.93e-05,-0.0013,0.209,0.00206,0.432,0,0,0,0,0,0.000139,0.000128,0.000128,0.000134,0.035,0.035,0.0145,0.0508,0.0508,0.0462,5.85e-10,5.85e-10,8.57e-10,3.15e-06,3.15e-06,8.71e-08,0,0,0,0,0,0,0,0
|
||||
18390000,0.706,5.26e-05,-0.0124,0.708,0.013,4.8e-05,0.00551,0.00299,-0.00128,-365,-1.34e-05,-6.05e-05,5.08e-06,-2.88e-05,5.99e-05,-0.0013,0.209,0.00206,0.432,0,0,0,0,0,0.000139,0.000123,0.000123,0.000133,0.0309,0.0309,0.014,0.0447,0.0447,0.0454,5.3e-10,5.3e-10,8.36e-10,3.14e-06,3.14e-06,8.27e-08,0,0,0,0,0,0,0,0
|
||||
18490000,0.706,6.81e-05,-0.0124,0.708,0.0138,0.000479,0.00517,0.00438,-0.00125,-365,-1.34e-05,-6.05e-05,5.15e-06,-2.88e-05,5.99e-05,-0.0013,0.209,0.00206,0.432,0,0,0,0,0,0.000139,0.000125,0.000125,0.000133,0.0342,0.0342,0.0139,0.0506,0.0506,0.0458,5.3e-10,5.3e-10,8.19e-10,3.14e-06,3.14e-06,8.03e-08,0,0,0,0,0,0,0,0
|
||||
18590000,0.706,6.86e-05,-0.0123,0.708,0.0129,0.000693,0.00344,0.00333,-0.00108,-365,-1.36e-05,-6.05e-05,5.56e-06,-2.88e-05,6.27e-05,-0.0013,0.209,0.00206,0.432,0,0,0,0,0,0.000139,0.000121,0.000121,0.000133,0.0302,0.0302,0.0134,0.0446,0.0446,0.045,4.8e-10,4.81e-10,8e-10,3.13e-06,3.13e-06,7.64e-08,0,0,0,0,0,0,0,0
|
||||
18690000,0.706,3.8e-05,-0.0123,0.708,0.0132,1.31e-05,0.00161,0.00463,-0.00102,-365,-1.36e-05,-6.05e-05,5.42e-06,-2.87e-05,6.27e-05,-0.0013,0.209,0.00206,0.432,0,0,0,0,0,0.000138,0.000122,0.000122,0.000132,0.0334,0.0334,0.0133,0.0505,0.0505,0.0449,4.81e-10,4.81e-10,7.82e-10,3.13e-06,3.13e-06,7.39e-08,0,0,0,0,0,0,0,0
|
||||
18790000,0.706,6.44e-05,-0.0123,0.708,0.0117,0.000295,0.00138,0.00354,-0.000809,-365,-1.38e-05,-6.05e-05,5.27e-06,-2.86e-05,6.54e-05,-0.0013,0.209,0.00206,0.432,0,0,0,0,0,0.000138,0.000118,0.000118,0.000132,0.0295,0.0295,0.0129,0.0445,0.0445,0.0447,4.36e-10,4.36e-10,7.66e-10,3.12e-06,3.12e-06,7.08e-08,0,0,0,0,0,0,0,0
|
||||
18890000,0.706,8.79e-05,-0.0123,0.708,0.0123,0.000805,0.00204,0.00474,-0.00072,-365,-1.37e-05,-6.05e-05,5.67e-06,-2.86e-05,6.54e-05,-0.0013,0.209,0.00206,0.432,0,0,0,0,0,0.000138,0.000119,0.000119,0.000132,0.0326,0.0326,0.0128,0.0503,0.0503,0.0446,4.36e-10,4.36e-10,7.48e-10,3.12e-06,3.12e-06,6.85e-08,0,0,0,0,0,0,0,0
|
||||
18690000,0.706,3.81e-05,-0.0123,0.708,0.0132,1.31e-05,0.00161,0.00463,-0.00102,-365,-1.36e-05,-6.05e-05,5.42e-06,-2.87e-05,6.27e-05,-0.0013,0.209,0.00206,0.432,0,0,0,0,0,0.000138,0.000122,0.000122,0.000132,0.0334,0.0334,0.0133,0.0505,0.0505,0.0449,4.81e-10,4.81e-10,7.82e-10,3.13e-06,3.13e-06,7.39e-08,0,0,0,0,0,0,0,0
|
||||
18790000,0.706,6.45e-05,-0.0123,0.708,0.0117,0.000295,0.00138,0.00354,-0.000809,-365,-1.38e-05,-6.05e-05,5.27e-06,-2.86e-05,6.54e-05,-0.0013,0.209,0.00206,0.432,0,0,0,0,0,0.000138,0.000118,0.000118,0.000132,0.0295,0.0295,0.0129,0.0445,0.0445,0.0447,4.36e-10,4.36e-10,7.66e-10,3.12e-06,3.12e-06,7.08e-08,0,0,0,0,0,0,0,0
|
||||
18890000,0.706,8.8e-05,-0.0123,0.708,0.0123,0.000805,0.00204,0.00474,-0.00072,-365,-1.37e-05,-6.05e-05,5.67e-06,-2.86e-05,6.54e-05,-0.0013,0.209,0.00206,0.432,0,0,0,0,0,0.000138,0.000119,0.000119,0.000132,0.0326,0.0326,0.0128,0.0503,0.0503,0.0446,4.36e-10,4.36e-10,7.48e-10,3.12e-06,3.12e-06,6.85e-08,0,0,0,0,0,0,0,0
|
||||
18990000,0.707,7.36e-05,-0.0123,0.708,0.0136,0.00169,0.000837,0.00612,-0.000603,-365,-1.37e-05,-6.05e-05,5.82e-06,-2.87e-05,6.45e-05,-0.0013,0.209,0.00206,0.432,0,0,0,0,0,0.000137,0.000116,0.000116,0.000132,0.0288,0.0288,0.0123,0.0444,0.0444,0.0438,3.96e-10,3.97e-10,7.31e-10,3.11e-06,3.11e-06,6.54e-08,0,0,0,0,0,0,0,0
|
||||
19090000,0.707,5.84e-05,-0.0122,0.708,0.0142,0.0023,0.00391,0.0075,-0.000376,-365,-1.37e-05,-6.05e-05,5.79e-06,-2.87e-05,6.45e-05,-0.0013,0.209,0.00206,0.432,0,0,0,0,0,0.000137,0.000117,0.000117,0.000131,0.0317,0.0317,0.0123,0.0501,0.0501,0.0442,3.96e-10,3.97e-10,7.17e-10,3.11e-06,3.11e-06,6.37e-08,0,0,0,0,0,0,0,0
|
||||
19090000,0.707,5.85e-05,-0.0122,0.708,0.0142,0.0023,0.00391,0.0075,-0.000376,-365,-1.37e-05,-6.05e-05,5.79e-06,-2.87e-05,6.45e-05,-0.0013,0.209,0.00206,0.432,0,0,0,0,0,0.000137,0.000117,0.000117,0.000131,0.0317,0.0317,0.0123,0.0501,0.0501,0.0442,3.96e-10,3.97e-10,7.17e-10,3.11e-06,3.11e-06,6.37e-08,0,0,0,0,0,0,0,0
|
||||
19190000,0.707,5.97e-05,-0.0121,0.708,0.0142,0.00228,0.00399,0.00837,-0.000352,-365,-1.37e-05,-6.05e-05,5.94e-06,-2.9e-05,6.42e-05,-0.0013,0.209,0.00206,0.432,0,0,0,0,0,0.000137,0.000113,0.000113,0.000131,0.0281,0.0281,0.0119,0.0442,0.0442,0.0435,3.61e-10,3.61e-10,7.01e-10,3.1e-06,3.1e-06,6.09e-08,0,0,0,0,0,0,0,0
|
||||
19290000,0.707,8.28e-05,-0.0121,0.708,0.0146,0.00154,0.00673,0.00977,-0.000143,-365,-1.37e-05,-6.05e-05,5.73e-06,-2.9e-05,6.42e-05,-0.0013,0.209,0.00206,0.432,0,0,0,0,0,0.000136,0.000115,0.000115,0.000131,0.0309,0.0309,0.0117,0.0499,0.0499,0.0433,3.61e-10,3.61e-10,6.85e-10,3.1e-06,3.1e-06,5.91e-08,0,0,0,0,0,0,0,0
|
||||
19390000,0.707,9.15e-05,-0.012,0.708,0.0121,0.000595,0.0106,0.00783,-0.000181,-365,-1.39e-05,-6.06e-05,5.88e-06,-2.92e-05,6.71e-05,-0.00131,0.209,0.00206,0.432,0,0,0,0,0,0.000136,0.000111,0.000111,0.000131,0.0275,0.0275,0.0115,0.0441,0.0441,0.0431,3.29e-10,3.29e-10,6.72e-10,3.09e-06,3.09e-06,5.69e-08,0,0,0,0,0,0,0,0
|
||||
19390000,0.707,9.15e-05,-0.012,0.708,0.0121,0.000594,0.0106,0.00783,-0.000181,-365,-1.39e-05,-6.06e-05,5.88e-06,-2.92e-05,6.71e-05,-0.00131,0.209,0.00206,0.432,0,0,0,0,0,0.000136,0.000111,0.000111,0.000131,0.0275,0.0275,0.0115,0.0441,0.0441,0.0431,3.29e-10,3.29e-10,6.72e-10,3.09e-06,3.09e-06,5.69e-08,0,0,0,0,0,0,0,0
|
||||
19490000,0.707,0.000115,-0.012,0.707,0.0112,-0.000105,0.00696,0.00898,-0.00016,-365,-1.39e-05,-6.06e-05,6.18e-06,-2.92e-05,6.71e-05,-0.0013,0.209,0.00206,0.432,0,0,0,0,0,0.000136,0.000112,0.000112,0.00013,0.0301,0.0301,0.0113,0.0498,0.0498,0.043,3.29e-10,3.29e-10,6.57e-10,3.09e-06,3.09e-06,5.53e-08,0,0,0,0,0,0,0,0
|
||||
19590000,0.707,0.000161,-0.0119,0.707,0.00927,-0.00115,0.00631,0.00725,-0.000203,-365,-1.4e-05,-6.06e-05,6.55e-06,-2.92e-05,6.95e-05,-0.0013,0.209,0.00206,0.432,0,0,0,0,0,0.000135,0.000109,0.000109,0.00013,0.0268,0.0268,0.011,0.044,0.044,0.0423,3e-10,3e-10,6.43e-10,3.08e-06,3.08e-06,5.31e-08,0,0,0,0,0,0,0,0
|
||||
19690000,0.707,0.000161,-0.012,0.707,0.00962,-0.00333,0.00785,0.0082,-0.000432,-365,-1.4e-05,-6.06e-05,6.32e-06,-2.92e-05,6.95e-05,-0.0013,0.209,0.00206,0.432,0,0,0,0,0,0.000135,0.00011,0.00011,0.00013,0.0294,0.0294,0.0109,0.0495,0.0495,0.0422,3e-10,3e-10,6.29e-10,3.08e-06,3.08e-06,5.16e-08,0,0,0,0,0,0,0,0
|
||||
19790000,0.707,0.000225,-0.0119,0.707,0.00733,-0.00418,0.00835,0.00664,-0.000349,-365,-1.41e-05,-6.05e-05,6.33e-06,-2.87e-05,7.14e-05,-0.0013,0.209,0.00206,0.432,0,0,0,0,0,0.000135,0.000108,0.000107,0.000129,0.0261,0.0261,0.0106,0.0438,0.0438,0.042,2.74e-10,2.74e-10,6.17e-10,3.07e-06,3.07e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
19890000,0.707,0.000173,-0.0119,0.707,0.00608,-0.00445,0.00953,0.00731,-0.000795,-365,-1.41e-05,-6.05e-05,6.75e-06,-2.87e-05,7.14e-05,-0.0013,0.209,0.00206,0.432,0,0,0,0,0,0.000135,0.000108,0.000108,0.000129,0.0286,0.0286,0.0105,0.0493,0.0493,0.0419,2.74e-10,2.74e-10,6.04e-10,3.07e-06,3.07e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
19990000,0.707,0.000156,-0.0119,0.707,0.00366,-0.00516,0.0123,0.00595,-0.000669,-365,-1.42e-05,-6.05e-05,7.3e-06,-2.81e-05,7.27e-05,-0.0013,0.209,0.00206,0.432,0,0,0,0,0,0.000134,0.000106,0.000106,0.000129,0.0255,0.0255,0.0102,0.0437,0.0437,0.0412,2.51e-10,2.51e-10,5.91e-10,3.07e-06,3.07e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
20090000,0.707,0.00015,-0.0119,0.707,0.00342,-0.0071,0.0126,0.00631,-0.00127,-365,-1.42e-05,-6.05e-05,7.76e-06,-2.81e-05,7.27e-05,-0.0013,0.209,0.00206,0.432,0,0,0,0,0,0.000134,0.000107,0.000107,0.000129,0.0279,0.0279,0.0102,0.0491,0.0491,0.0415,2.51e-10,2.51e-10,5.8e-10,3.07e-06,3.07e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
20090000,0.707,0.00015,-0.0119,0.707,0.00342,-0.00711,0.0126,0.00631,-0.00127,-365,-1.42e-05,-6.05e-05,7.76e-06,-2.81e-05,7.27e-05,-0.0013,0.209,0.00206,0.432,0,0,0,0,0,0.000134,0.000107,0.000107,0.000129,0.0279,0.0279,0.0102,0.0491,0.0491,0.0415,2.51e-10,2.51e-10,5.8e-10,3.07e-06,3.07e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
20190000,0.707,0.000251,-0.0118,0.707,0.00112,-0.0078,0.0149,0.00405,-0.001,-365,-1.43e-05,-6.05e-05,7.96e-06,-2.7e-05,7.48e-05,-0.0013,0.209,0.00206,0.432,0,0,0,0,0,0.000134,0.000104,0.000104,0.000128,0.0248,0.0248,0.00991,0.0435,0.0435,0.0409,2.3e-10,2.31e-10,5.68e-10,3.06e-06,3.06e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
20290000,0.707,0.000211,-0.0118,0.707,-3e-05,-0.00937,0.0129,0.0041,-0.00185,-365,-1.43e-05,-6.05e-05,8.08e-06,-2.71e-05,7.48e-05,-0.0013,0.209,0.00206,0.432,0,0,0,0,0,0.000133,0.000105,0.000105,0.000128,0.0271,0.0271,0.00982,0.0489,0.0489,0.0408,2.31e-10,2.31e-10,5.56e-10,3.06e-06,3.06e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
20290000,0.707,0.000211,-0.0118,0.707,-3.03e-05,-0.00938,0.0129,0.0041,-0.00185,-365,-1.43e-05,-6.05e-05,8.08e-06,-2.71e-05,7.48e-05,-0.0013,0.209,0.00206,0.432,0,0,0,0,0,0.000133,0.000105,0.000105,0.000128,0.0271,0.0271,0.00982,0.0489,0.0489,0.0408,2.31e-10,2.31e-10,5.56e-10,3.06e-06,3.06e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
20390000,0.707,0.000227,-0.0119,0.707,-0.00245,-0.00996,0.015,0.00225,-0.00146,-365,-1.44e-05,-6.04e-05,8.06e-06,-2.57e-05,7.62e-05,-0.0013,0.209,0.00206,0.432,0,0,0,0,0,0.000133,0.000103,0.000103,0.000128,0.0242,0.0242,0.00963,0.0434,0.0434,0.0406,2.12e-10,2.12e-10,5.46e-10,3.06e-06,3.06e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
20490000,0.707,0.000283,-0.0119,0.707,-0.00293,-0.0107,0.0148,0.00197,-0.00249,-365,-1.44e-05,-6.04e-05,7.87e-06,-2.57e-05,7.63e-05,-0.0013,0.209,0.00206,0.432,0,0,0,0,0,0.000133,0.000104,0.000103,0.000128,0.0264,0.0264,0.00955,0.0487,0.0487,0.0405,2.12e-10,2.12e-10,5.35e-10,3.06e-06,3.06e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
20590000,0.707,0.000301,-0.0119,0.707,-0.00255,-0.0106,0.0117,0.00168,-0.00199,-365,-1.44e-05,-6.03e-05,7.7e-06,-2.44e-05,7.61e-05,-0.0013,0.209,0.00206,0.432,0,0,0,0,0,0.000133,0.000101,0.000101,0.000127,0.0237,0.0237,0.00931,0.0432,0.0432,0.0399,1.95e-10,1.95e-10,5.24e-10,3.05e-06,3.05e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
@@ -217,36 +217,36 @@ Timestamp,state[0],state[1],state[2],state[3],state[4],state[5],state[6],state[7
|
||||
21490000,0.708,0.000462,-0.012,0.706,-0.00555,-0.018,0.0143,0.00213,-0.00509,-365,-1.42e-05,-5.99e-05,8.31e-06,-1.66e-05,7.34e-05,-0.00129,0.209,0.00206,0.432,0,0,0,0,0,0.00013,9.74e-05,9.74e-05,0.000125,0.0233,0.0233,0.00846,0.0475,0.0475,0.0384,1.44e-10,1.44e-10,4.41e-10,3.04e-06,3.04e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
21590000,0.708,0.000484,-0.012,0.706,-0.00605,-0.0153,0.0141,0.00177,-0.00311,-365,-1.42e-05,-5.97e-05,8.2e-06,-1.39e-05,7.3e-05,-0.00129,0.209,0.00206,0.432,0,0,0,0,0,0.00013,9.6e-05,9.59e-05,0.000125,0.021,0.021,0.00831,0.0424,0.0423,0.0379,1.34e-10,1.34e-10,4.33e-10,3.03e-06,3.03e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
21690000,0.708,0.000493,-0.012,0.706,-0.00595,-0.0164,0.0158,0.00116,-0.0047,-365,-1.42e-05,-5.97e-05,8.29e-06,-1.39e-05,7.3e-05,-0.00129,0.209,0.00206,0.432,0,0,0,0,0,0.00013,9.65e-05,9.64e-05,0.000125,0.0228,0.0228,0.00834,0.0472,0.0472,0.0382,1.34e-10,1.34e-10,4.26e-10,3.03e-06,3.03e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
21790000,0.708,0.000504,-0.0121,0.706,-0.00653,-0.0113,0.0143,-6.71e-05,-0.000715,-365,-1.42e-05,-5.95e-05,8.04e-06,-9.69e-06,7.33e-05,-0.00129,0.209,0.00206,0.432,0,0,0,0,0,0.00013,9.51e-05,9.5e-05,0.000124,0.0205,0.0205,0.0082,0.0422,0.0422,0.0377,1.25e-10,1.25e-10,4.18e-10,3.03e-06,3.03e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
21890000,0.708,0.000507,-0.012,0.706,-0.00652,-0.0116,0.0147,-0.000722,-0.00186,-365,-1.42e-05,-5.95e-05,7.98e-06,-9.73e-06,7.34e-05,-0.00128,0.209,0.00206,0.432,0,0,0,0,0,0.00013,9.56e-05,9.55e-05,0.000124,0.0222,0.0222,0.00818,0.047,0.047,0.0376,1.25e-10,1.25e-10,4.1e-10,3.03e-06,3.03e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
21790000,0.708,0.000504,-0.0121,0.706,-0.00653,-0.0113,0.0143,-6.72e-05,-0.000715,-365,-1.42e-05,-5.95e-05,8.04e-06,-9.69e-06,7.33e-05,-0.00129,0.209,0.00206,0.432,0,0,0,0,0,0.00013,9.51e-05,9.5e-05,0.000124,0.0205,0.0205,0.0082,0.0422,0.0422,0.0377,1.25e-10,1.25e-10,4.18e-10,3.03e-06,3.03e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
21890000,0.708,0.000507,-0.012,0.706,-0.00652,-0.0116,0.0147,-0.000723,-0.00186,-365,-1.42e-05,-5.95e-05,7.98e-06,-9.73e-06,7.34e-05,-0.00128,0.209,0.00206,0.432,0,0,0,0,0,0.00013,9.56e-05,9.55e-05,0.000124,0.0222,0.0222,0.00818,0.047,0.047,0.0376,1.25e-10,1.25e-10,4.1e-10,3.03e-06,3.03e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
21990000,0.708,0.000554,-0.0121,0.706,-0.00699,-0.009,0.0155,-0.0016,0.0015,-365,-1.42e-05,-5.93e-05,7.93e-06,-6.24e-06,7.35e-05,-0.00128,0.209,0.00206,0.432,0,0,0,0,0,0.000129,9.43e-05,9.42e-05,0.000124,0.0201,0.0201,0.00811,0.042,0.042,0.0375,1.17e-10,1.17e-10,4.03e-10,3.03e-06,3.03e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
22090000,0.708,0.000565,-0.0121,0.706,-0.00733,-0.00813,0.0139,-0.00231,0.000663,-365,-1.42e-05,-5.93e-05,7.85e-06,-6.27e-06,7.36e-05,-0.00128,0.209,0.00206,0.432,0,0,0,0,0,0.000129,9.48e-05,9.47e-05,0.000124,0.0217,0.0217,0.0081,0.0468,0.0468,0.0375,1.17e-10,1.17e-10,3.96e-10,3.03e-06,3.03e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
22090000,0.708,0.000565,-0.0121,0.706,-0.00733,-0.00813,0.0139,-0.00231,0.000662,-365,-1.42e-05,-5.93e-05,7.85e-06,-6.27e-06,7.36e-05,-0.00128,0.209,0.00206,0.432,0,0,0,0,0,0.000129,9.48e-05,9.47e-05,0.000124,0.0217,0.0217,0.0081,0.0468,0.0468,0.0375,1.17e-10,1.17e-10,3.96e-10,3.03e-06,3.03e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
22190000,0.708,0.000536,-0.0121,0.706,-0.00712,-0.00723,0.0143,-0.00193,0.000612,-365,-1.42e-05,-5.92e-05,7.86e-06,-5.73e-06,7.29e-05,-0.00128,0.209,0.00206,0.432,0,0,0,0,0,0.000129,9.36e-05,9.35e-05,0.000124,0.0196,0.0196,0.00799,0.0418,0.0418,0.037,1.1e-10,1.1e-10,3.89e-10,3.02e-06,3.03e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
22290000,0.708,0.000576,-0.0121,0.706,-0.00848,-0.00796,0.0143,-0.0027,-0.000156,-365,-1.42e-05,-5.92e-05,7.7e-06,-5.75e-06,7.29e-05,-0.00128,0.209,0.00206,0.432,0,0,0,0,0,0.000129,9.4e-05,9.39e-05,0.000123,0.0213,0.0213,0.00799,0.0465,0.0465,0.0369,1.1e-10,1.1e-10,3.82e-10,3.02e-06,3.03e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
22390000,0.708,0.00055,-0.0121,0.706,-0.00902,-0.00745,0.0161,-0.00232,-0.000152,-365,-1.42e-05,-5.92e-05,7.75e-06,-5.18e-06,7.21e-05,-0.00128,0.209,0.00206,0.432,0,0,0,0,0,0.000128,9.29e-05,9.28e-05,0.000123,0.0192,0.0192,0.00793,0.0416,0.0416,0.0369,1.03e-10,1.03e-10,3.76e-10,3.02e-06,3.02e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
22490000,0.708,0.000555,-0.012,0.706,-0.00969,-0.00736,0.0173,-0.00324,-0.000912,-365,-1.42e-05,-5.92e-05,7.68e-06,-5.16e-06,7.21e-05,-0.00128,0.209,0.00206,0.432,0,0,0,0,0,0.000128,9.33e-05,9.32e-05,0.000123,0.0208,0.0208,0.00794,0.0463,0.0463,0.0368,1.03e-10,1.03e-10,3.69e-10,3.02e-06,3.02e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
22590000,0.708,0.000535,-0.012,0.706,-0.00939,-0.0069,0.0164,-0.00352,0.000161,-365,-1.41e-05,-5.91e-05,7.67e-06,-3.96e-06,7.11e-05,-0.00128,0.209,0.00206,0.432,0,0,0,0,0,0.000128,9.22e-05,9.22e-05,0.000123,0.0188,0.0188,0.00784,0.0415,0.0415,0.0364,9.7e-11,9.7e-11,3.62e-10,3.02e-06,3.02e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
22290000,0.708,0.000576,-0.0121,0.706,-0.00848,-0.00797,0.0143,-0.0027,-0.000156,-365,-1.42e-05,-5.92e-05,7.7e-06,-5.75e-06,7.29e-05,-0.00128,0.209,0.00206,0.432,0,0,0,0,0,0.000129,9.4e-05,9.39e-05,0.000123,0.0213,0.0213,0.00799,0.0465,0.0465,0.0369,1.1e-10,1.1e-10,3.82e-10,3.02e-06,3.03e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
22390000,0.708,0.00055,-0.0121,0.706,-0.00902,-0.00745,0.0161,-0.00232,-0.000152,-365,-1.42e-05,-5.92e-05,7.75e-06,-5.17e-06,7.21e-05,-0.00128,0.209,0.00206,0.432,0,0,0,0,0,0.000128,9.29e-05,9.28e-05,0.000123,0.0192,0.0192,0.00793,0.0416,0.0416,0.0369,1.03e-10,1.03e-10,3.76e-10,3.02e-06,3.02e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
22490000,0.708,0.000555,-0.012,0.706,-0.00969,-0.00736,0.0173,-0.00324,-0.000913,-365,-1.42e-05,-5.92e-05,7.68e-06,-5.16e-06,7.21e-05,-0.00128,0.209,0.00206,0.432,0,0,0,0,0,0.000128,9.33e-05,9.32e-05,0.000123,0.0208,0.0208,0.00794,0.0463,0.0463,0.0368,1.03e-10,1.03e-10,3.69e-10,3.02e-06,3.02e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
22590000,0.708,0.000536,-0.012,0.706,-0.00939,-0.0069,0.0164,-0.00352,0.000161,-365,-1.41e-05,-5.91e-05,7.67e-06,-3.96e-06,7.11e-05,-0.00128,0.209,0.00206,0.432,0,0,0,0,0,0.000128,9.22e-05,9.22e-05,0.000123,0.0188,0.0188,0.00784,0.0415,0.0415,0.0364,9.7e-11,9.7e-11,3.62e-10,3.02e-06,3.02e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
22690000,0.708,0.000571,-0.0121,0.706,-0.0106,-0.00663,0.0176,-0.00452,-0.000511,-365,-1.41e-05,-5.91e-05,7.75e-06,-3.97e-06,7.11e-05,-0.00128,0.209,0.00206,0.432,0,0,0,0,0,0.000128,9.26e-05,9.26e-05,0.000123,0.0204,0.0204,0.0079,0.0461,0.0461,0.0367,9.71e-11,9.71e-11,3.57e-10,3.02e-06,3.02e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
22790000,0.708,0.000553,-0.0121,0.706,-0.0111,-0.00543,0.0187,-0.00562,-0.000413,-365,-1.41e-05,-5.91e-05,7.31e-06,-3.47e-06,7.07e-05,-0.00128,0.209,0.00206,0.432,0,0,0,0,0,0.000128,9.16e-05,9.16e-05,0.000122,0.0185,0.0185,0.00781,0.0413,0.0413,0.0363,9.15e-11,9.16e-11,3.5e-10,3.02e-06,3.02e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
22890000,0.708,0.000564,-0.012,0.706,-0.0126,-0.00505,0.0204,-0.00679,-0.00094,-365,-1.41e-05,-5.91e-05,7.23e-06,-3.46e-06,7.07e-05,-0.00128,0.209,0.00206,0.432,0,0,0,0,0,0.000127,9.2e-05,9.2e-05,0.000122,0.0199,0.0199,0.00783,0.0458,0.0458,0.0363,9.16e-11,9.16e-11,3.44e-10,3.02e-06,3.02e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
22990000,0.708,0.000547,-0.0121,0.706,-0.0125,-0.00552,0.0214,-0.00752,-0.000835,-365,-1.41e-05,-5.91e-05,7.33e-06,-3.11e-06,7e-05,-0.00128,0.209,0.00206,0.432,0,0,0,0,0,0.000127,9.11e-05,9.1e-05,0.000122,0.0181,0.0181,0.00779,0.0411,0.0411,0.0362,8.65e-11,8.66e-11,3.39e-10,3.02e-06,3.02e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
23090000,0.708,0.000512,-0.012,0.706,-0.0132,-0.00551,0.022,-0.00882,-0.00137,-365,-1.41e-05,-5.91e-05,7.03e-06,-3.06e-06,7.01e-05,-0.00128,0.209,0.00206,0.432,0,0,0,0,0,0.000127,9.15e-05,9.14e-05,0.000122,0.0195,0.0195,0.00782,0.0456,0.0456,0.0362,8.66e-11,8.67e-11,3.33e-10,3.02e-06,3.02e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
22890000,0.708,0.000564,-0.012,0.706,-0.0126,-0.00505,0.0204,-0.00679,-0.000941,-365,-1.41e-05,-5.91e-05,7.23e-06,-3.46e-06,7.07e-05,-0.00128,0.209,0.00206,0.432,0,0,0,0,0,0.000127,9.2e-05,9.2e-05,0.000122,0.0199,0.0199,0.00783,0.0458,0.0458,0.0363,9.16e-11,9.17e-11,3.44e-10,3.02e-06,3.02e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
22990000,0.708,0.000547,-0.0121,0.706,-0.0125,-0.00552,0.0214,-0.00752,-0.000835,-365,-1.41e-05,-5.91e-05,7.33e-06,-3.1e-06,7e-05,-0.00128,0.209,0.00206,0.432,0,0,0,0,0,0.000127,9.11e-05,9.1e-05,0.000122,0.0181,0.0181,0.00779,0.0411,0.0411,0.0362,8.65e-11,8.66e-11,3.39e-10,3.02e-06,3.02e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
23090000,0.708,0.000512,-0.012,0.706,-0.0132,-0.00551,0.022,-0.00882,-0.00137,-365,-1.41e-05,-5.91e-05,7.03e-06,-3.05e-06,7e-05,-0.00128,0.209,0.00206,0.432,0,0,0,0,0,0.000127,9.15e-05,9.14e-05,0.000122,0.0195,0.0195,0.00782,0.0456,0.0456,0.0362,8.66e-11,8.67e-11,3.33e-10,3.02e-06,3.02e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
23190000,0.708,0.000578,-0.012,0.706,-0.0146,-0.00648,0.0236,-0.0121,-0.00123,-365,-1.41e-05,-5.91e-05,6.97e-06,-2.57e-06,7.12e-05,-0.00128,0.209,0.00206,0.432,0,0,0,0,0,0.000127,9.06e-05,9.05e-05,0.000122,0.0178,0.0178,0.00774,0.0409,0.0409,0.0359,8.2e-11,8.2e-11,3.27e-10,3.01e-06,3.02e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
23290000,0.708,0.000518,-0.012,0.706,-0.0154,-0.00772,0.024,-0.0136,-0.00195,-365,-1.41e-05,-5.91e-05,6.95e-06,-2.6e-06,7.12e-05,-0.00128,0.209,0.00206,0.432,0,0,0,0,0,0.000127,9.09e-05,9.09e-05,0.000121,0.0192,0.0192,0.00781,0.0454,0.0454,0.0361,8.21e-11,8.21e-11,3.22e-10,3.01e-06,3.02e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
23290000,0.708,0.000518,-0.012,0.706,-0.0154,-0.00773,0.024,-0.0136,-0.00196,-365,-1.41e-05,-5.91e-05,6.95e-06,-2.6e-06,7.12e-05,-0.00128,0.209,0.00206,0.432,0,0,0,0,0,0.000127,9.09e-05,9.09e-05,0.000121,0.0192,0.0192,0.00781,0.0454,0.0454,0.0361,8.21e-11,8.21e-11,3.22e-10,3.01e-06,3.02e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
23390000,0.708,0.000607,-0.0119,0.706,-0.0162,-0.00796,0.0215,-0.0161,-0.00173,-365,-1.42e-05,-5.9e-05,6.9e-06,-2.08e-06,7.2e-05,-0.00127,0.209,0.00206,0.432,0,0,0,0,0,0.000126,9.01e-05,9e-05,0.000121,0.0174,0.0174,0.00774,0.0408,0.0408,0.0358,7.78e-11,7.79e-11,3.17e-10,3.01e-06,3.01e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
23490000,0.708,0.003,-0.00951,0.706,-0.0233,-0.0088,-0.012,-0.018,-0.00258,-365,-1.42e-05,-5.9e-05,6.98e-06,-2.12e-06,7.2e-05,-0.00127,0.209,0.00206,0.432,0,0,0,0,0,0.000126,9.04e-05,9.04e-05,0.000121,0.0189,0.0189,0.00778,0.0452,0.0452,0.0358,7.79e-11,7.8e-11,3.12e-10,3.01e-06,3.01e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
23590000,0.708,0.00823,-0.0017,0.706,-0.0337,-0.00752,-0.0435,-0.0167,-0.00128,-365,-1.41e-05,-5.9e-05,6.82e-06,-4.15e-07,7.03e-05,-0.00127,0.209,0.00206,0.432,0,0,0,0,0,0.000126,8.97e-05,8.95e-05,0.000121,0.0172,0.0172,0.00771,0.0406,0.0406,0.0355,7.4e-11,7.41e-11,3.06e-10,3.01e-06,3.01e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
23690000,0.707,0.00786,0.00407,0.707,-0.0648,-0.0161,-0.094,-0.0215,-0.00238,-365,-1.41e-05,-5.9e-05,6.77e-06,-3.37e-07,7.03e-05,-0.00127,0.209,0.00206,0.432,0,0,0,0,0,0.000126,9e-05,8.98e-05,0.000121,0.0186,0.0186,0.00779,0.045,0.045,0.0358,7.41e-11,7.42e-11,3.02e-10,3.01e-06,3.01e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
23590000,0.708,0.00823,-0.0017,0.706,-0.0337,-0.00752,-0.0435,-0.0167,-0.00128,-365,-1.41e-05,-5.9e-05,6.82e-06,-4.14e-07,7.03e-05,-0.00127,0.209,0.00206,0.432,0,0,0,0,0,0.000126,8.97e-05,8.95e-05,0.000121,0.0172,0.0172,0.00771,0.0406,0.0406,0.0355,7.4e-11,7.41e-11,3.06e-10,3.01e-06,3.01e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
23690000,0.707,0.00786,0.00407,0.707,-0.0648,-0.0161,-0.094,-0.0215,-0.00238,-365,-1.41e-05,-5.9e-05,6.77e-06,-3.35e-07,7.03e-05,-0.00127,0.209,0.00206,0.432,0,0,0,0,0,0.000126,9e-05,8.98e-05,0.000121,0.0186,0.0186,0.00779,0.045,0.045,0.0358,7.41e-11,7.42e-11,3.02e-10,3.01e-06,3.01e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
23790000,0.707,0.00493,0.000721,0.707,-0.0887,-0.0273,-0.148,-0.0208,-0.00173,-365,-1.39e-05,-5.89e-05,6.78e-06,1.53e-06,6.52e-05,-0.00127,0.209,0.00206,0.432,0,0,0,0,0,0.000125,8.92e-05,8.91e-05,0.000121,0.0171,0.0171,0.00773,0.0405,0.0405,0.0355,7.05e-11,7.06e-11,2.97e-10,3.01e-06,3.01e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
23890000,0.707,0.0023,-0.00536,0.708,-0.105,-0.0363,-0.201,-0.0306,-0.00494,-365,-1.39e-05,-5.89e-05,6.69e-06,1.65e-06,6.53e-05,-0.00127,0.209,0.00206,0.432,0,0,0,0,0,0.000125,8.95e-05,8.94e-05,0.000121,0.0185,0.0185,0.00777,0.0448,0.0448,0.0354,7.06e-11,7.07e-11,2.92e-10,3.01e-06,3.01e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
23890000,0.707,0.0023,-0.00536,0.708,-0.105,-0.0363,-0.201,-0.0306,-0.00494,-365,-1.39e-05,-5.89e-05,6.69e-06,1.66e-06,6.53e-05,-0.00127,0.209,0.00206,0.432,0,0,0,0,0,0.000125,8.95e-05,8.94e-05,0.000121,0.0185,0.0185,0.00777,0.0448,0.0448,0.0354,7.06e-11,7.07e-11,2.92e-10,3.01e-06,3.01e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
23990000,0.707,0.000896,-0.00996,0.708,-0.106,-0.0395,-0.254,-0.0342,-0.00816,-366,-1.37e-05,-5.89e-05,6.73e-06,2.62e-06,6.19e-05,-0.00127,0.209,0.00206,0.432,0,0,0,0,0,0.000125,8.87e-05,8.86e-05,0.00012,0.0169,0.0169,0.00775,0.0403,0.0403,0.0355,6.73e-11,6.73e-11,2.88e-10,3.01e-06,3.01e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
24090000,0.707,0.00218,-0.00869,0.708,-0.108,-0.0399,-0.302,-0.0448,-0.0121,-366,-1.37e-05,-5.89e-05,6.82e-06,2.58e-06,6.18e-05,-0.00128,0.209,0.00206,0.432,0,0,0,0,0,0.000125,8.9e-05,8.89e-05,0.00012,0.0183,0.0183,0.00779,0.0446,0.0446,0.0355,6.74e-11,6.74e-11,2.83e-10,3.01e-06,3.01e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
24090000,0.707,0.00218,-0.00869,0.708,-0.108,-0.0399,-0.302,-0.0448,-0.0121,-366,-1.37e-05,-5.89e-05,6.82e-06,2.59e-06,6.18e-05,-0.00128,0.209,0.00206,0.432,0,0,0,0,0,0.000125,8.9e-05,8.89e-05,0.00012,0.0183,0.0183,0.00779,0.0446,0.0446,0.0355,6.74e-11,6.74e-11,2.83e-10,3.01e-06,3.01e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
24190000,0.707,0.00325,-0.00644,0.708,-0.11,-0.0408,-0.35,-0.0463,-0.0141,-366,-1.36e-05,-5.88e-05,6.83e-06,4.42e-06,5.72e-05,-0.00128,0.209,0.00206,0.432,0,0,0,0,0,0.000125,8.81e-05,8.8e-05,0.00012,0.0168,0.0168,0.00773,0.0402,0.0402,0.0352,6.43e-11,6.43e-11,2.79e-10,3e-06,3.01e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
24290000,0.707,0.00374,-0.00562,0.708,-0.121,-0.0448,-0.405,-0.0579,-0.0184,-366,-1.36e-05,-5.88e-05,6.72e-06,4.55e-06,5.73e-05,-0.00128,0.209,0.00206,0.432,0,0,0,0,0,0.000124,8.84e-05,8.83e-05,0.00012,0.0181,0.0181,0.00782,0.0444,0.0444,0.0355,6.44e-11,6.44e-11,2.75e-10,3e-06,3.01e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
24390000,0.706,0.00379,-0.00583,0.708,-0.129,-0.052,-0.457,-0.0638,-0.03,-366,-1.35e-05,-5.89e-05,6.53e-06,1.85e-06,5.44e-05,-0.00128,0.209,0.00206,0.432,0,0,0,0,0,0.000124,8.76e-05,8.75e-05,0.00012,0.0166,0.0166,0.00776,0.0401,0.0401,0.0352,6.16e-11,6.16e-11,2.7e-10,3e-06,3e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
24490000,0.706,0.00466,-0.00168,0.708,-0.143,-0.0573,-0.507,-0.0773,-0.0354,-366,-1.35e-05,-5.89e-05,6.47e-06,1.99e-06,5.44e-05,-0.00128,0.209,0.00206,0.432,0,0,0,0,0,0.000124,8.78e-05,8.77e-05,0.00012,0.0179,0.0179,0.00781,0.0443,0.0443,0.0352,6.17e-11,6.17e-11,2.66e-10,3e-06,3e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
24590000,0.707,0.00511,0.00194,0.708,-0.157,-0.0685,-0.558,-0.0808,-0.0447,-366,-1.33e-05,-5.9e-05,6.6e-06,7.34e-07,4.82e-05,-0.00128,0.209,0.00206,0.432,0,0,0,0,0,0.000124,8.7e-05,8.69e-05,0.00012,0.0165,0.0164,0.00779,0.04,0.04,0.0353,5.9e-11,5.9e-11,2.62e-10,3e-06,3e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
24690000,0.707,0.00515,0.00289,0.708,-0.182,-0.0822,-0.641,-0.0977,-0.0522,-366,-1.33e-05,-5.9e-05,6.69e-06,5.36e-07,4.83e-05,-0.00128,0.209,0.00206,0.432,0,0,0,0,0,0.000124,8.72e-05,8.71e-05,0.000119,0.0178,0.0178,0.00784,0.0442,0.0442,0.0353,5.91e-11,5.91e-11,2.58e-10,3e-06,3e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
24490000,0.706,0.00466,-0.00168,0.708,-0.143,-0.0573,-0.507,-0.0773,-0.0354,-366,-1.35e-05,-5.89e-05,6.47e-06,2e-06,5.44e-05,-0.00128,0.209,0.00206,0.432,0,0,0,0,0,0.000124,8.78e-05,8.77e-05,0.00012,0.0179,0.0179,0.00781,0.0443,0.0443,0.0352,6.17e-11,6.17e-11,2.66e-10,3e-06,3e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
24590000,0.707,0.00511,0.00194,0.708,-0.157,-0.0685,-0.558,-0.0808,-0.0447,-366,-1.33e-05,-5.9e-05,6.6e-06,7.36e-07,4.82e-05,-0.00128,0.209,0.00206,0.432,0,0,0,0,0,0.000124,8.7e-05,8.69e-05,0.00012,0.0165,0.0164,0.00779,0.04,0.04,0.0353,5.9e-11,5.9e-11,2.62e-10,3e-06,3e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
24690000,0.707,0.00515,0.00289,0.708,-0.182,-0.0822,-0.641,-0.0977,-0.0522,-366,-1.33e-05,-5.9e-05,6.69e-06,5.38e-07,4.82e-05,-0.00128,0.209,0.00206,0.432,0,0,0,0,0,0.000124,8.72e-05,8.71e-05,0.000119,0.0178,0.0178,0.00784,0.0442,0.0442,0.0353,5.91e-11,5.91e-11,2.58e-10,3e-06,3e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
24790000,0.706,0.00486,0.00152,0.708,-0.198,-0.0945,-0.724,-0.105,-0.0633,-366,-1.3e-05,-5.89e-05,6.51e-06,4.56e-06,4.07e-05,-0.00128,0.209,0.00206,0.432,0,0,0,0,0,0.000124,8.63e-05,8.62e-05,0.000119,0.0164,0.0164,0.00778,0.0399,0.0399,0.035,5.67e-11,5.67e-11,2.54e-10,2.99e-06,3e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
24890000,0.706,0.00661,0.00321,0.708,-0.221,-0.106,-0.748,-0.126,-0.0733,-366,-1.3e-05,-5.89e-05,6.39e-06,4.77e-06,4.07e-05,-0.00128,0.209,0.00206,0.432,0,0,0,0,0,0.000123,8.66e-05,8.65e-05,0.000119,0.0176,0.0176,0.00783,0.044,0.044,0.0351,5.68e-11,5.68e-11,2.5e-10,2.99e-06,3e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
24990000,0.706,0.00842,0.00481,0.708,-0.238,-0.114,-0.805,-0.129,-0.0813,-366,-1.27e-05,-5.88e-05,6.2e-06,1.3e-05,2.69e-05,-0.00128,0.209,0.00206,0.432,0,0,0,0,0,0.000123,8.57e-05,8.56e-05,0.000119,0.0162,0.0162,0.00781,0.0398,0.0398,0.0351,5.45e-11,5.45e-11,2.47e-10,2.99e-06,2.99e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
@@ -255,52 +255,52 @@ Timestamp,state[0],state[1],state[2],state[3],state[4],state[5],state[6],state[7
|
||||
25290000,0.706,0.0101,0.00961,0.708,-0.321,-0.147,-0.958,-0.204,-0.133,-366,-1.26e-05,-5.89e-05,6.06e-06,1e-05,2.19e-05,-0.00128,0.209,0.00206,0.432,0,0,0,0,0,0.000123,8.53e-05,8.51e-05,0.000119,0.0173,0.0172,0.0079,0.0438,0.0438,0.0353,5.26e-11,5.26e-11,2.36e-10,2.99e-06,2.99e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
25390000,0.706,0.0114,0.016,0.708,-0.351,-0.166,-1.01,-0.216,-0.153,-366,-1.23e-05,-5.89e-05,6.07e-06,1.2e-05,7.67e-06,-0.00129,0.209,0.00206,0.432,0,0,0,0,0,0.000122,8.44e-05,8.42e-05,0.000118,0.0159,0.0158,0.00784,0.0396,0.0396,0.035,5.06e-11,5.06e-11,2.33e-10,2.98e-06,2.98e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
25490000,0.706,0.0116,0.0172,0.707,-0.4,-0.19,-1.06,-0.253,-0.171,-366,-1.23e-05,-5.89e-05,6.11e-06,1.19e-05,7.76e-06,-0.00128,0.209,0.00206,0.432,0,0,0,0,0,0.000122,8.46e-05,8.44e-05,0.000118,0.0171,0.017,0.00789,0.0436,0.0436,0.0351,5.07e-11,5.07e-11,2.29e-10,2.98e-06,2.98e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
25590000,0.707,0.011,0.0153,0.707,-0.439,-0.219,-1.12,-0.28,-0.208,-367,-1.21e-05,-5.91e-05,6.09e-06,9.24e-06,-7.77e-07,-0.00128,0.209,0.00206,0.432,0,0,0,0,0,0.000122,8.37e-05,8.35e-05,0.000118,0.0157,0.0157,0.00788,0.0395,0.0395,0.0351,4.89e-11,4.89e-11,2.26e-10,2.98e-06,2.98e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
25690000,0.706,0.0146,0.022,0.707,-0.488,-0.24,-1.17,-0.326,-0.231,-367,-1.21e-05,-5.91e-05,6.08e-06,9.12e-06,-5.63e-07,-0.00128,0.209,0.00206,0.432,0,0,0,0,0,0.000122,8.39e-05,8.37e-05,0.000118,0.0169,0.0168,0.00793,0.0435,0.0435,0.0352,4.9e-11,4.9e-11,2.23e-10,2.98e-06,2.98e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
25590000,0.706,0.011,0.0153,0.707,-0.439,-0.219,-1.12,-0.28,-0.208,-367,-1.21e-05,-5.91e-05,6.09e-06,9.25e-06,-7.79e-07,-0.00128,0.209,0.00206,0.432,0,0,0,0,0,0.000122,8.37e-05,8.35e-05,0.000118,0.0157,0.0157,0.00788,0.0395,0.0395,0.0351,4.89e-11,4.89e-11,2.26e-10,2.98e-06,2.98e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
25690000,0.706,0.0146,0.022,0.707,-0.488,-0.24,-1.17,-0.326,-0.231,-367,-1.21e-05,-5.91e-05,6.08e-06,9.12e-06,-5.64e-07,-0.00128,0.209,0.00206,0.432,0,0,0,0,0,0.000122,8.39e-05,8.37e-05,0.000118,0.0169,0.0168,0.00793,0.0435,0.0435,0.0352,4.9e-11,4.9e-11,2.23e-10,2.98e-06,2.98e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
25790000,0.706,0.0171,0.0282,0.707,-0.533,-0.266,-1.22,-0.343,-0.261,-367,-1.16e-05,-5.9e-05,6.15e-06,1.69e-05,-2.48e-05,-0.00128,0.209,0.00206,0.432,0,0,0,0,0,0.000122,8.3e-05,8.28e-05,0.000118,0.0156,0.0155,0.00787,0.0394,0.0394,0.0349,4.73e-11,4.73e-11,2.2e-10,2.97e-06,2.97e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
25890000,0.706,0.0174,0.0286,0.707,-0.604,-0.296,-1.27,-0.4,-0.289,-367,-1.16e-05,-5.9e-05,6.26e-06,1.66e-05,-2.5e-05,-0.00128,0.209,0.00206,0.432,0,0,0,0,0,0.000122,8.32e-05,8.3e-05,0.000118,0.0168,0.0166,0.00796,0.0434,0.0434,0.0353,4.74e-11,4.74e-11,2.17e-10,2.97e-06,2.97e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
25990000,0.706,0.0163,0.0254,0.707,-0.656,-0.332,-1.32,-0.439,-0.344,-367,-1.12e-05,-5.92e-05,6.28e-06,1.31e-05,-4.05e-05,-0.00128,0.209,0.00206,0.432,0,0,0,0,0,0.000121,8.23e-05,8.22e-05,0.000117,0.0155,0.0153,0.0079,0.0393,0.0393,0.0351,4.59e-11,4.59e-11,2.14e-10,2.97e-06,2.97e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
26090000,0.702,0.021,0.0353,0.711,-0.723,-0.359,-1.34,-0.508,-0.379,-367,-1.13e-05,-5.92e-05,6.07e-06,1.34e-05,-3.97e-05,-0.00128,0.209,0.00206,0.432,0,0,0,0,0,0.000121,8.25e-05,8.23e-05,0.000118,0.0166,0.0164,0.00796,0.0433,0.0432,0.0351,4.6e-11,4.6e-11,2.11e-10,2.97e-06,2.97e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
26190000,0.701,0.0232,0.0446,0.712,-0.775,-0.394,-1.31,-0.533,-0.422,-367,-1.06e-05,-5.91e-05,6.07e-06,2.43e-05,-7.58e-05,-0.00128,0.209,0.00206,0.432,0,0,0,0,0,0.00012,8.16e-05,8.15e-05,0.000118,0.0153,0.015,0.0079,0.0392,0.0392,0.0349,4.45e-11,4.45e-11,2.08e-10,2.96e-06,2.96e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
26190000,0.701,0.0232,0.0446,0.712,-0.775,-0.394,-1.31,-0.533,-0.422,-367,-1.06e-05,-5.91e-05,6.07e-06,2.44e-05,-7.58e-05,-0.00128,0.209,0.00206,0.432,0,0,0,0,0,0.00012,8.16e-05,8.15e-05,0.000118,0.0153,0.015,0.0079,0.0392,0.0392,0.0349,4.45e-11,4.45e-11,2.08e-10,2.96e-06,2.96e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
26290000,0.701,0.0241,0.0469,0.711,-0.869,-0.436,-1.3,-0.616,-0.463,-368,-1.06e-05,-5.91e-05,5.97e-06,2.44e-05,-7.51e-05,-0.00128,0.209,0.00206,0.432,0,0,0,0,0,0.00012,8.18e-05,8.17e-05,0.000118,0.0164,0.016,0.00799,0.0431,0.0431,0.0352,4.46e-11,4.46e-11,2.05e-10,2.96e-06,2.96e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
26390000,0.702,0.023,0.0435,0.711,-0.945,-0.492,-1.31,-0.679,-0.548,-368,-1.03e-05,-5.94e-05,5.99e-06,1.23e-05,-8.77e-05,-0.00128,0.209,0.00206,0.432,0,0,0,0,0,0.00012,8.1e-05,8.09e-05,0.000117,0.0151,0.0147,0.00793,0.0391,0.039,0.035,4.33e-11,4.33e-11,2.02e-10,2.96e-06,2.96e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
26490000,0.702,0.0308,0.0593,0.709,-1.04,-0.531,-1.31,-0.778,-0.599,-368,-1.03e-05,-5.94e-05,5.94e-06,1.22e-05,-8.72e-05,-0.00127,0.209,0.00206,0.432,0,0,0,0,0,0.00012,8.12e-05,8.11e-05,0.000117,0.0162,0.0158,0.00799,0.043,0.0429,0.0351,4.34e-11,4.34e-11,1.99e-10,2.96e-06,2.96e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
26590000,0.702,0.0369,0.0752,0.707,-1.14,-0.586,-1.3,-0.822,-0.666,-368,-9.5e-06,-5.93e-05,5.58e-06,2.12e-05,-0.000121,-0.00127,0.209,0.00206,0.432,0,0,0,0,0,0.00012,8.04e-05,8.04e-05,0.000117,0.015,0.0145,0.00797,0.039,0.0389,0.0351,4.22e-11,4.21e-11,1.97e-10,2.95e-06,2.95e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
26690000,0.703,0.0381,0.078,0.706,-1.28,-0.648,-1.29,-0.943,-0.728,-368,-9.49e-06,-5.93e-05,5.65e-06,2.08e-05,-0.000121,-0.00127,0.209,0.00206,0.432,0,0,0,0,0,0.000119,8.06e-05,8.06e-05,0.000116,0.0162,0.0155,0.00803,0.0429,0.0427,0.0352,4.23e-11,4.22e-11,1.94e-10,2.95e-06,2.95e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
26790000,0.704,0.0358,0.0725,0.705,-1.4,-0.73,-1.29,-1.04,-0.855,-368,-9.05e-06,-5.98e-05,5.49e-06,-4.03e-07,-0.000139,-0.00127,0.209,0.00206,0.432,0,0,0,0,0,0.000119,8e-05,7.98e-05,0.000116,0.0151,0.0143,0.00797,0.0389,0.0388,0.035,4.12e-11,4.11e-11,1.91e-10,2.95e-06,2.95e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
26890000,0.704,0.0447,0.0944,0.703,-1.54,-0.789,-1.3,-1.18,-0.931,-368,-9.04e-06,-5.98e-05,5.52e-06,-8.2e-07,-0.000139,-0.00126,0.209,0.00206,0.432,0,0,0,0,0,0.000119,8e-05,8.01e-05,0.000116,0.0163,0.0154,0.00807,0.0427,0.0426,0.0353,4.13e-11,4.12e-11,1.89e-10,2.95e-06,2.95e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
26990000,0.703,0.051,0.116,0.699,-1.68,-0.871,-1.28,-1.24,-1.03,-368,-7.89e-06,-5.97e-05,5.42e-06,6.6e-06,-0.000187,-0.00126,0.209,0.00206,0.432,0,0,0,0,0,0.000119,7.93e-05,7.96e-05,0.000115,0.0153,0.0142,0.00802,0.0388,0.0386,0.0351,4.02e-11,4.01e-11,1.86e-10,2.95e-06,2.95e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
26690000,0.703,0.0381,0.078,0.706,-1.28,-0.649,-1.29,-0.943,-0.728,-368,-9.49e-06,-5.93e-05,5.65e-06,2.08e-05,-0.000121,-0.00127,0.209,0.00206,0.432,0,0,0,0,0,0.000119,8.06e-05,8.06e-05,0.000116,0.0162,0.0155,0.00803,0.0429,0.0427,0.0352,4.23e-11,4.22e-11,1.94e-10,2.95e-06,2.95e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
26790000,0.704,0.0358,0.0725,0.705,-1.4,-0.73,-1.29,-1.04,-0.855,-368,-9.05e-06,-5.98e-05,5.49e-06,-3.97e-07,-0.000139,-0.00127,0.209,0.00206,0.432,0,0,0,0,0,0.000119,8e-05,7.98e-05,0.000116,0.0151,0.0143,0.00797,0.0389,0.0388,0.035,4.12e-11,4.11e-11,1.91e-10,2.95e-06,2.95e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
26890000,0.704,0.0447,0.0944,0.703,-1.54,-0.789,-1.3,-1.18,-0.931,-368,-9.04e-06,-5.98e-05,5.52e-06,-8.15e-07,-0.000139,-0.00126,0.209,0.00206,0.432,0,0,0,0,0,0.000119,8e-05,8.01e-05,0.000116,0.0163,0.0154,0.00807,0.0427,0.0426,0.0353,4.13e-11,4.12e-11,1.89e-10,2.95e-06,2.95e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
26990000,0.703,0.051,0.116,0.699,-1.68,-0.871,-1.28,-1.24,-1.03,-368,-7.89e-06,-5.97e-05,5.42e-06,6.61e-06,-0.000187,-0.00126,0.209,0.00206,0.432,0,0,0,0,0,0.000119,7.93e-05,7.96e-05,0.000115,0.0153,0.0142,0.00802,0.0388,0.0386,0.0351,4.02e-11,4.01e-11,1.86e-10,2.95e-06,2.95e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
27090000,0.704,0.0519,0.12,0.698,-1.88,-0.963,-1.25,-1.42,-1.12,-369,-7.89e-06,-5.97e-05,5.36e-06,6.59e-06,-0.000185,-0.00126,0.209,0.00206,0.432,0,0,0,0,0,0.000119,7.94e-05,7.98e-05,0.000115,0.0167,0.0152,0.00809,0.0426,0.0424,0.0352,4.03e-11,4.02e-11,1.84e-10,2.95e-06,2.95e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
27190000,0.706,0.0484,0.109,0.698,-2.08,-1.03,-1.23,-1.62,-1.2,-369,-7.86e-06,-5.94e-05,5.44e-06,1.56e-05,-0.000181,-0.00126,0.209,0.00206,0.432,0,0,0,0,0,0.000118,7.93e-05,7.94e-05,0.000114,0.017,0.0154,0.00809,0.0451,0.0448,0.0353,3.99e-11,3.98e-11,1.82e-10,2.95e-06,2.95e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
27290000,0.707,0.0427,0.0941,0.699,-2.24,-1.1,-1.22,-1.83,-1.31,-369,-7.85e-06,-5.94e-05,5.46e-06,1.51e-05,-0.00018,-0.00126,0.209,0.00206,0.432,0,0,0,0,0,0.000118,7.95e-05,7.94e-05,0.000114,0.0185,0.0165,0.00816,0.0496,0.0492,0.0353,4e-11,3.99e-11,1.79e-10,2.95e-06,2.95e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
27390000,0.708,0.0365,0.0778,0.701,-2.34,-1.13,-1.22,-2.03,-1.39,-369,-7.31e-06,-5.88e-05,5.56e-06,3.23e-05,-0.000189,-0.00125,0.209,0.00206,0.432,0,0,0,0,0,0.000117,7.93e-05,7.91e-05,0.000113,0.0185,0.0165,0.00812,0.0521,0.0517,0.0351,3.96e-11,3.93e-11,1.77e-10,2.95e-06,2.94e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
27490000,0.709,0.0308,0.0627,0.702,-2.42,-1.17,-1.2,-2.27,-1.51,-369,-7.31e-06,-5.88e-05,5.47e-06,3.17e-05,-0.000187,-0.00125,0.209,0.00206,0.432,0,0,0,0,0,0.000117,7.96e-05,7.93e-05,0.000113,0.0198,0.0175,0.00819,0.0573,0.0566,0.0352,3.97e-11,3.94e-11,1.74e-10,2.95e-06,2.94e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
27590000,0.709,0.0262,0.0504,0.703,-2.49,-1.19,-1.21,-2.53,-1.61,-369,-7.54e-06,-5.86e-05,5.56e-06,2.94e-05,-0.000173,-0.00124,0.209,0.00206,0.432,0,0,0,0,0,0.000116,7.94e-05,7.91e-05,0.000112,0.0195,0.0174,0.00819,0.0598,0.0591,0.0352,3.92e-11,3.89e-11,1.72e-10,2.95e-06,2.94e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
27690000,0.709,0.0255,0.0487,0.703,-2.53,-1.2,-1.21,-2.78,-1.73,-369,-7.54e-06,-5.86e-05,5.42e-06,2.89e-05,-0.00017,-0.00124,0.209,0.00206,0.432,0,0,0,0,0,0.000115,7.96e-05,7.92e-05,0.000112,0.0207,0.0185,0.00827,0.0656,0.0646,0.0353,3.93e-11,3.9e-11,1.7e-10,2.95e-06,2.94e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
27690000,0.709,0.0255,0.0487,0.703,-2.53,-1.2,-1.21,-2.78,-1.73,-369,-7.54e-06,-5.86e-05,5.42e-06,2.9e-05,-0.00017,-0.00124,0.209,0.00206,0.432,0,0,0,0,0,0.000115,7.96e-05,7.92e-05,0.000112,0.0207,0.0185,0.00827,0.0656,0.0646,0.0353,3.93e-11,3.9e-11,1.7e-10,2.95e-06,2.94e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
27790000,0.708,0.0259,0.0504,0.703,-2.57,-1.21,-1.21,-3.04,-1.83,-369,-7.63e-06,-5.83e-05,5.32e-06,2.88e-05,-0.00016,-0.00124,0.209,0.00206,0.432,0,0,0,0,0,0.000114,7.94e-05,7.9e-05,0.000111,0.0203,0.0182,0.00823,0.068,0.0671,0.0351,3.88e-11,3.84e-11,1.68e-10,2.95e-06,2.94e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
27890000,0.709,0.0252,0.0485,0.704,-2.61,-1.23,-1.21,-3.3,-1.95,-370,-7.63e-06,-5.83e-05,5.3e-06,2.74e-05,-0.000156,-0.00123,0.209,0.00206,0.432,0,0,0,0,0,0.000114,7.96e-05,7.91e-05,0.000111,0.0215,0.0193,0.00836,0.0744,0.0732,0.0355,3.89e-11,3.85e-11,1.66e-10,2.95e-06,2.94e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
27890000,0.708,0.0252,0.0485,0.704,-2.61,-1.23,-1.21,-3.3,-1.95,-370,-7.63e-06,-5.83e-05,5.3e-06,2.74e-05,-0.000156,-0.00123,0.209,0.00206,0.432,0,0,0,0,0,0.000114,7.96e-05,7.91e-05,0.000111,0.0215,0.0193,0.00836,0.0744,0.0732,0.0355,3.89e-11,3.85e-11,1.66e-10,2.95e-06,2.94e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
27990000,0.709,0.0244,0.0448,0.704,-2.66,-1.24,-1.21,-3.6,-2.07,-370,-8.01e-06,-5.82e-05,5.39e-06,2.19e-05,-0.000143,-0.00122,0.209,0.00206,0.432,0,0,0,0,0,0.000113,7.94e-05,7.89e-05,0.000111,0.021,0.019,0.00833,0.0766,0.0755,0.0353,3.84e-11,3.79e-11,1.64e-10,2.95e-06,2.94e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
28090000,0.708,0.0301,0.0581,0.703,-2.7,-1.25,-1.22,-3.87,-2.19,-370,-8.01e-06,-5.81e-05,5.13e-06,2.12e-05,-0.000139,-0.00122,0.209,0.00206,0.432,0,0,0,0,0,0.000113,7.95e-05,7.89e-05,0.000111,0.0222,0.0202,0.00842,0.0836,0.0822,0.0353,3.85e-11,3.8e-11,1.62e-10,2.95e-06,2.94e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
28190000,0.708,0.0353,0.0714,0.702,-2.76,-1.27,-0.946,-4.16,-2.3,-370,-8.26e-06,-5.8e-05,5.18e-06,1.68e-05,-0.000127,-0.00121,0.209,0.00206,0.432,0,0,0,0,0,0.000112,7.92e-05,7.86e-05,0.00011,0.0213,0.0195,0.00845,0.0857,0.0844,0.0354,3.8e-11,3.74e-11,1.6e-10,2.95e-06,2.94e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
28290000,0.71,0.0275,0.0544,0.702,-2.76,-1.28,-0.083,-4.44,-2.43,-370,-8.26e-06,-5.8e-05,5e-06,1.56e-05,-0.000121,-0.00121,0.209,0.00206,0.432,0,0,0,0,0,0.000112,7.95e-05,7.88e-05,0.00011,0.0218,0.0201,0.00859,0.093,0.0914,0.0355,3.81e-11,3.75e-11,1.58e-10,2.95e-06,2.93e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
28390000,0.712,0.0115,0.023,0.702,-2.78,-1.28,0.777,-4.76,-2.55,-370,-8.69e-06,-5.78e-05,4.94e-06,1.05e-07,-0.000149,-0.0012,0.209,0.00206,0.432,0,0,0,0,0,0.000111,7.98e-05,7.93e-05,0.000108,0.021,0.0196,0.00869,0.0949,0.0934,0.0356,3.77e-11,3.7e-11,1.56e-10,2.94e-06,2.93e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
28490000,0.712,0.00264,0.00476,0.702,-2.74,-1.28,1.07,-5.04,-2.68,-370,-8.68e-06,-5.78e-05,4.89e-06,-2.52e-06,-0.000143,-0.0012,0.209,0.00206,0.432,0,0,0,0,0,0.000111,8.01e-05,7.98e-05,0.000108,0.022,0.0208,0.00882,0.102,0.101,0.036,3.78e-11,3.71e-11,1.54e-10,2.94e-06,2.93e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
28190000,0.708,0.0353,0.0714,0.702,-2.76,-1.27,-0.946,-4.16,-2.3,-370,-8.26e-06,-5.8e-05,5.18e-06,1.68e-05,-0.000126,-0.00121,0.209,0.00206,0.432,0,0,0,0,0,0.000112,7.92e-05,7.86e-05,0.00011,0.0213,0.0195,0.00845,0.0857,0.0844,0.0354,3.8e-11,3.74e-11,1.6e-10,2.95e-06,2.94e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
28290000,0.71,0.0275,0.0544,0.702,-2.76,-1.28,-0.083,-4.44,-2.43,-370,-8.26e-06,-5.8e-05,4.99e-06,1.56e-05,-0.000121,-0.00121,0.209,0.00206,0.432,0,0,0,0,0,0.000112,7.95e-05,7.88e-05,0.00011,0.0218,0.0201,0.00859,0.093,0.0914,0.0355,3.81e-11,3.75e-11,1.58e-10,2.95e-06,2.93e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
28390000,0.712,0.0115,0.023,0.702,-2.78,-1.28,0.777,-4.76,-2.55,-370,-8.69e-06,-5.78e-05,4.94e-06,1.12e-07,-0.000149,-0.0012,0.209,0.00206,0.432,0,0,0,0,0,0.000111,7.98e-05,7.93e-05,0.000108,0.021,0.0196,0.00869,0.0949,0.0934,0.0356,3.77e-11,3.7e-11,1.56e-10,2.94e-06,2.93e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
28490000,0.712,0.00264,0.00476,0.702,-2.74,-1.28,1.07,-5.04,-2.68,-370,-8.68e-06,-5.78e-05,4.89e-06,-2.51e-06,-0.000143,-0.0012,0.209,0.00206,0.432,0,0,0,0,0,0.000111,8.01e-05,7.98e-05,0.000108,0.022,0.0208,0.00882,0.102,0.101,0.036,3.78e-11,3.71e-11,1.54e-10,2.94e-06,2.93e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
28590000,0.711,0.000797,0.00121,0.703,-2.69,-1.25,0.969,-5.36,-2.79,-370,-9.13e-06,-5.77e-05,4.98e-06,-2.41e-05,-0.000209,-0.00119,0.209,0.00206,0.432,0,0,0,0,0,0.00011,8.03e-05,7.99e-05,0.000108,0.0212,0.0203,0.0089,0.104,0.103,0.0361,3.73e-11,3.65e-11,1.52e-10,2.93e-06,2.91e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
28690000,0.71,9.64e-05,0.000303,0.704,-2.62,-1.23,0.972,-5.62,-2.92,-370,-9.12e-06,-5.77e-05,4.91e-06,-2.85e-05,-0.000198,-0.00119,0.209,0.00206,0.432,0,0,0,0,0,0.00011,8.04e-05,8.01e-05,0.000108,0.0221,0.0214,0.00899,0.112,0.11,0.0362,3.74e-11,3.66e-11,1.5e-10,2.93e-06,2.91e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
28790000,0.709,-0.00022,1.98e-05,0.705,-2.58,-1.21,0.976,-5.94,-3.03,-370,-9.63e-06,-5.76e-05,4.84e-06,-5.45e-05,-0.000255,-0.00118,0.209,0.00206,0.432,0,0,0,0,0,0.000109,8.06e-05,8.01e-05,0.000107,0.0213,0.0209,0.00893,0.114,0.112,0.036,3.7e-11,3.61e-11,1.49e-10,2.91e-06,2.9e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
28690000,0.71,9.66e-05,0.000303,0.704,-2.62,-1.23,0.972,-5.62,-2.92,-370,-9.13e-06,-5.77e-05,4.91e-06,-2.84e-05,-0.000198,-0.00119,0.209,0.00206,0.432,0,0,0,0,0,0.00011,8.04e-05,8.01e-05,0.000108,0.0221,0.0214,0.00899,0.112,0.11,0.0362,3.74e-11,3.66e-11,1.5e-10,2.93e-06,2.91e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
28790000,0.709,-0.00022,1.97e-05,0.705,-2.58,-1.21,0.976,-5.94,-3.03,-370,-9.63e-06,-5.76e-05,4.84e-06,-5.45e-05,-0.000255,-0.00118,0.209,0.00206,0.432,0,0,0,0,0,0.000109,8.06e-05,8.01e-05,0.000107,0.0213,0.0209,0.00893,0.114,0.112,0.036,3.7e-11,3.61e-11,1.49e-10,2.91e-06,2.9e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
28890000,0.709,-0.000234,0.000244,0.705,-2.51,-1.19,0.965,-6.2,-3.15,-370,-9.62e-06,-5.76e-05,4.8e-06,-5.91e-05,-0.000243,-0.00117,0.209,0.00206,0.432,0,0,0,0,0,0.000109,8.07e-05,8.03e-05,0.000107,0.0224,0.0221,0.00906,0.122,0.12,0.0364,3.71e-11,3.62e-11,1.47e-10,2.91e-06,2.89e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
28990000,0.708,-7.44e-05,0.000643,0.706,-2.49,-1.17,0.959,-6.53,-3.26,-370,-1.03e-05,-5.75e-05,4.66e-06,-7.61e-05,-0.000312,-0.00116,0.209,0.00206,0.432,0,0,0,0,0,0.000108,8.09e-05,8.03e-05,0.000107,0.0215,0.0215,0.00899,0.124,0.122,0.0361,3.66e-11,3.57e-11,1.45e-10,2.9e-06,2.88e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
29090000,0.708,8.28e-05,0.00105,0.706,-2.42,-1.16,0.95,-6.77,-3.38,-369,-1.03e-05,-5.75e-05,4.58e-06,-8.12e-05,-0.000299,-0.00115,0.209,0.00206,0.432,0,0,0,0,0,0.000108,8.1e-05,8.04e-05,0.000107,0.0226,0.0228,0.00907,0.133,0.131,0.0362,3.67e-11,3.57e-11,1.44e-10,2.9e-06,2.88e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
29190000,0.708,0.00028,0.00145,0.706,-2.38,-1.14,0.943,-7.06,-3.48,-369,-1.07e-05,-5.74e-05,4.63e-06,-9.81e-05,-0.000321,-0.00114,0.209,0.00206,0.432,0,0,0,0,0,0.000108,8.11e-05,8.04e-05,0.000107,0.0218,0.0221,0.00905,0.133,0.132,0.0363,3.62e-11,3.52e-11,1.42e-10,2.89e-06,2.86e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
29290000,0.708,0.000638,0.00231,0.706,-2.33,-1.13,0.968,-7.29,-3.6,-369,-1.07e-05,-5.74e-05,4.51e-06,-0.000104,-0.000305,-0.00114,0.209,0.00206,0.432,0,0,0,0,0,0.000108,8.13e-05,8.05e-05,0.000106,0.0229,0.0234,0.00912,0.143,0.141,0.0364,3.63e-11,3.53e-11,1.41e-10,2.89e-06,2.86e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
29390000,0.708,0.00116,0.00379,0.706,-2.31,-1.11,0.977,-7.59,-3.71,-369,-1.12e-05,-5.74e-05,4.25e-06,-0.000118,-0.000334,-0.00112,0.209,0.00206,0.432,0,0,0,0,0,0.000108,8.14e-05,8.04e-05,0.000106,0.0221,0.0227,0.00904,0.143,0.141,0.0362,3.58e-11,3.47e-11,1.39e-10,2.88e-06,2.85e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
28990000,0.708,-7.42e-05,0.000643,0.706,-2.49,-1.17,0.959,-6.53,-3.26,-370,-1.03e-05,-5.75e-05,4.66e-06,-7.61e-05,-0.000312,-0.00116,0.209,0.00206,0.432,0,0,0,0,0,0.000108,8.09e-05,8.03e-05,0.000107,0.0215,0.0215,0.00899,0.124,0.122,0.0361,3.66e-11,3.57e-11,1.45e-10,2.9e-06,2.88e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
29090000,0.708,8.3e-05,0.00105,0.706,-2.42,-1.16,0.95,-6.77,-3.38,-369,-1.03e-05,-5.75e-05,4.58e-06,-8.12e-05,-0.000299,-0.00115,0.209,0.00206,0.432,0,0,0,0,0,0.000108,8.1e-05,8.04e-05,0.000107,0.0226,0.0228,0.00907,0.133,0.131,0.0362,3.67e-11,3.57e-11,1.44e-10,2.9e-06,2.88e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
29190000,0.708,0.000281,0.00145,0.706,-2.38,-1.14,0.943,-7.06,-3.48,-369,-1.07e-05,-5.74e-05,4.63e-06,-9.81e-05,-0.000321,-0.00114,0.209,0.00206,0.432,0,0,0,0,0,0.000108,8.11e-05,8.04e-05,0.000107,0.0218,0.0221,0.00905,0.133,0.132,0.0363,3.62e-11,3.52e-11,1.42e-10,2.89e-06,2.86e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
29290000,0.708,0.000639,0.00231,0.706,-2.33,-1.13,0.968,-7.29,-3.6,-369,-1.07e-05,-5.74e-05,4.51e-06,-0.000104,-0.000305,-0.00114,0.209,0.00206,0.432,0,0,0,0,0,0.000108,8.13e-05,8.05e-05,0.000106,0.0229,0.0234,0.00912,0.143,0.141,0.0364,3.63e-11,3.53e-11,1.41e-10,2.89e-06,2.86e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
29390000,0.708,0.00116,0.00379,0.706,-2.31,-1.11,0.977,-7.59,-3.71,-369,-1.12e-05,-5.74e-05,4.24e-06,-0.000118,-0.000334,-0.00112,0.209,0.00206,0.432,0,0,0,0,0,0.000108,8.14e-05,8.04e-05,0.000106,0.0221,0.0227,0.00904,0.143,0.141,0.0362,3.58e-11,3.47e-11,1.39e-10,2.88e-06,2.85e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
29490000,0.708,0.00168,0.00493,0.706,-2.26,-1.1,0.973,-7.82,-3.82,-369,-1.12e-05,-5.74e-05,4.22e-06,-0.000123,-0.000322,-0.00112,0.209,0.00206,0.432,0,0,0,0,0,0.000108,8.15e-05,8.05e-05,0.000106,0.0233,0.024,0.00916,0.153,0.151,0.0366,3.59e-11,3.48e-11,1.38e-10,2.88e-06,2.84e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
29590000,0.708,0.00206,0.00604,0.706,-2.23,-1.09,0.964,-8.08,-3.92,-369,-1.15e-05,-5.73e-05,4.15e-06,-0.000145,-0.000322,-0.00111,0.209,0.00206,0.432,0,0,0,0,0,0.000107,8.17e-05,8.04e-05,0.000106,0.0224,0.0232,0.00908,0.153,0.151,0.0364,3.54e-11,3.43e-11,1.36e-10,2.87e-06,2.83e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
29690000,0.708,0.00236,0.00672,0.706,-2.19,-1.08,0.956,-8.3,-4.03,-369,-1.15e-05,-5.73e-05,4.05e-06,-0.00015,-0.000308,-0.0011,0.209,0.00206,0.432,0,0,0,0,0,0.000107,8.18e-05,8.05e-05,0.000106,0.0236,0.0245,0.00914,0.163,0.161,0.0365,3.55e-11,3.44e-11,1.34e-10,2.87e-06,2.83e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
29790000,0.708,0.00264,0.00723,0.706,-2.17,-1.07,0.942,-8.58,-4.13,-369,-1.2e-05,-5.72e-05,4.03e-06,-0.000166,-0.000318,-0.00109,0.209,0.00206,0.432,0,0,0,0,0,0.000107,8.19e-05,8.04e-05,0.000105,0.0227,0.0236,0.0091,0.163,0.161,0.0366,3.5e-11,3.38e-11,1.33e-10,2.87e-06,2.81e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
29890000,0.708,0.00272,0.00748,0.706,-2.13,-1.06,0.928,-8.79,-4.23,-369,-1.2e-05,-5.72e-05,3.88e-06,-0.000175,-0.000296,-0.00109,0.209,0.00206,0.432,0,0,0,0,0,0.000107,8.21e-05,8.05e-05,0.000105,0.0239,0.0249,0.00916,0.174,0.172,0.0367,3.51e-11,3.39e-11,1.32e-10,2.87e-06,2.81e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
29990000,0.708,0.00286,0.00767,0.706,-2.11,-1.05,0.911,-9.04,-4.32,-369,-1.22e-05,-5.71e-05,3.75e-06,-0.000195,-0.000287,-0.00108,0.209,0.00206,0.432,0,0,0,0,0,0.000107,8.22e-05,8.04e-05,0.000104,0.023,0.0239,0.00907,0.173,0.171,0.0364,3.45e-11,3.34e-11,1.3e-10,2.86e-06,2.8e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
30090000,0.709,0.00286,0.00762,0.706,-2.08,-1.04,0.897,-9.24,-4.43,-369,-1.22e-05,-5.71e-05,3.63e-06,-0.000202,-0.00027,-0.00107,0.209,0.00206,0.432,0,0,0,0,0,0.000107,8.23e-05,8.04e-05,0.000104,0.0243,0.0253,0.00912,0.184,0.182,0.0365,3.46e-11,3.35e-11,1.29e-10,2.86e-06,2.79e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
30090000,0.709,0.00286,0.00761,0.706,-2.08,-1.04,0.897,-9.24,-4.43,-369,-1.22e-05,-5.71e-05,3.63e-06,-0.000202,-0.00027,-0.00107,0.209,0.00206,0.432,0,0,0,0,0,0.000107,8.23e-05,8.04e-05,0.000104,0.0243,0.0253,0.00912,0.184,0.182,0.0365,3.46e-11,3.35e-11,1.29e-10,2.86e-06,2.79e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
30190000,0.709,0.00291,0.0075,0.705,-2.06,-1.03,0.883,-9.5,-4.52,-369,-1.25e-05,-5.7e-05,3.62e-06,-0.000215,-0.000273,-0.00106,0.209,0.00206,0.432,0,0,0,0,0,0.000106,8.24e-05,8.03e-05,0.000104,0.0233,0.0242,0.00907,0.183,0.181,0.0366,3.41e-11,3.29e-11,1.27e-10,2.86e-06,2.78e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
30290000,0.709,0.00282,0.00733,0.705,-2.03,-1.02,0.871,-9.7,-4.62,-368,-1.25e-05,-5.7e-05,3.55e-06,-0.000219,-0.000263,-0.00106,0.209,0.00206,0.432,0,0,0,0,0,0.000106,8.25e-05,8.03e-05,0.000104,0.0246,0.0256,0.00912,0.194,0.192,0.0367,3.42e-11,3.3e-11,1.26e-10,2.86e-06,2.78e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
30390000,0.709,0.00283,0.00718,0.705,-2.01,-1.01,0.853,-9.93,-4.72,-368,-1.27e-05,-5.7e-05,3.48e-06,-0.000231,-0.000249,-0.00105,0.209,0.00206,0.432,0,0,0,0,0,0.000106,8.26e-05,8.01e-05,0.000103,0.0236,0.0245,0.00902,0.193,0.191,0.0364,3.36e-11,3.25e-11,1.25e-10,2.85e-06,2.77e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
@@ -319,18 +319,18 @@ Timestamp,state[0],state[1],state[2],state[3],state[4],state[5],state[6],state[7
|
||||
31690000,0.709,0.0011,0.0019,0.705,-1.68,-0.9,0.725,-12.5,-5.93,-368,-1.39e-05,-5.68e-05,2.96e-06,-0.000332,-6.32e-05,-0.000984,0.209,0.00206,0.432,0,0,0,0,0,0.000104,8.34e-05,7.86e-05,9.95e-05,0.0258,0.0263,0.00878,0.263,0.261,0.0366,3.11e-11,3.05e-11,1.09e-10,2.83e-06,2.67e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
31790000,0.709,0.0009,0.00129,0.705,-1.66,-0.89,0.723,-12.7,-6.02,-368,-1.41e-05,-5.67e-05,2.95e-06,-0.000341,-4.38e-05,-0.000977,0.209,0.00206,0.432,0,0,0,0,0,0.000104,8.33e-05,7.83e-05,9.9e-05,0.0246,0.025,0.00872,0.26,0.258,0.0367,3.06e-11,3.01e-11,1.08e-10,2.83e-06,2.66e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
31890000,0.709,0.000656,0.000601,0.705,-1.62,-0.88,0.718,-12.9,-6.11,-367,-1.41e-05,-5.67e-05,2.93e-06,-0.000348,-2.91e-05,-0.000972,0.209,0.00206,0.432,0,0,0,0,0,0.000103,8.35e-05,7.83e-05,9.89e-05,0.0259,0.0263,0.00874,0.273,0.271,0.0367,3.07e-11,3.02e-11,1.07e-10,2.83e-06,2.66e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
31990000,0.709,0.00052,0.000151,0.705,-1.6,-0.867,0.712,-13,-6.18,-367,-1.42e-05,-5.67e-05,2.84e-06,-0.000358,-8.62e-06,-0.000966,0.209,0.00206,0.432,0,0,0,0,0,0.000103,8.33e-05,7.79e-05,9.85e-05,0.0247,0.025,0.00863,0.269,0.267,0.0364,3.03e-11,2.98e-11,1.06e-10,2.83e-06,2.65e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
32090000,0.709,0.000234,-0.000562,0.705,-1.57,-0.858,0.718,-13.2,-6.27,-367,-1.42e-05,-5.67e-05,2.8e-06,-0.000365,8e-06,-0.000961,0.209,0.00206,0.432,0,0,0,0,0,0.000103,8.35e-05,7.8e-05,9.84e-05,0.0259,0.0262,0.0087,0.282,0.28,0.0368,3.04e-11,2.99e-11,1.05e-10,2.83e-06,2.64e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
32190000,0.709,2.27e-05,-0.00133,0.705,-1.55,-0.848,0.716,-13.4,-6.35,-367,-1.43e-05,-5.66e-05,2.61e-06,-0.000376,2.99e-05,-0.000953,0.209,0.00206,0.432,0,0,0,0,0,0.000103,8.33e-05,7.76e-05,9.79e-05,0.0247,0.0249,0.00859,0.279,0.277,0.0365,2.99e-11,2.95e-11,1.04e-10,2.82e-06,2.64e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
31990000,0.709,0.00052,0.00015,0.705,-1.6,-0.867,0.712,-13,-6.18,-367,-1.42e-05,-5.67e-05,2.84e-06,-0.000358,-8.62e-06,-0.000966,0.209,0.00206,0.432,0,0,0,0,0,0.000103,8.33e-05,7.79e-05,9.85e-05,0.0247,0.025,0.00863,0.269,0.267,0.0364,3.03e-11,2.98e-11,1.06e-10,2.83e-06,2.65e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
32090000,0.709,0.000235,-0.000562,0.705,-1.57,-0.858,0.718,-13.2,-6.27,-367,-1.42e-05,-5.67e-05,2.8e-06,-0.000365,8e-06,-0.000961,0.209,0.00206,0.432,0,0,0,0,0,0.000103,8.35e-05,7.8e-05,9.84e-05,0.0259,0.0262,0.0087,0.282,0.28,0.0368,3.04e-11,2.99e-11,1.05e-10,2.83e-06,2.64e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
32190000,0.709,2.3e-05,-0.00133,0.705,-1.55,-0.848,0.716,-13.4,-6.35,-367,-1.43e-05,-5.66e-05,2.61e-06,-0.000376,2.99e-05,-0.000953,0.209,0.00206,0.432,0,0,0,0,0,0.000103,8.33e-05,7.76e-05,9.79e-05,0.0247,0.0249,0.00859,0.279,0.277,0.0365,2.99e-11,2.95e-11,1.04e-10,2.82e-06,2.64e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
32290000,0.709,-0.000208,-0.00206,0.705,-1.51,-0.838,0.71,-13.5,-6.44,-367,-1.43e-05,-5.66e-05,2.6e-06,-0.000384,4.74e-05,-0.000948,0.209,0.00206,0.432,0,0,0,0,0,0.000103,8.35e-05,7.76e-05,9.79e-05,0.026,0.0261,0.00861,0.292,0.289,0.0366,3e-11,2.96e-11,1.03e-10,2.82e-06,2.63e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
32390000,0.709,-0.000392,-0.00268,0.705,-1.48,-0.826,0.709,-13.7,-6.52,-367,-1.44e-05,-5.66e-05,2.63e-06,-0.000388,5.73e-05,-0.000944,0.209,0.00206,0.432,0,0,0,0,0,0.000102,8.34e-05,7.73e-05,9.74e-05,0.0247,0.0248,0.00855,0.288,0.286,0.0366,2.96e-11,2.93e-11,1.02e-10,2.82e-06,2.63e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
32390000,0.709,-0.000392,-0.00268,0.705,-1.48,-0.826,0.709,-13.7,-6.52,-367,-1.44e-05,-5.66e-05,2.62e-06,-0.000388,5.73e-05,-0.000944,0.209,0.00206,0.432,0,0,0,0,0,0.000102,8.34e-05,7.73e-05,9.74e-05,0.0247,0.0248,0.00855,0.288,0.286,0.0366,2.96e-11,2.93e-11,1.02e-10,2.82e-06,2.63e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
32490000,0.709,-0.000511,-0.00292,0.705,-1.45,-0.815,0.714,-13.8,-6.6,-367,-1.44e-05,-5.66e-05,2.63e-06,-0.000394,6.99e-05,-0.00094,0.209,0.00206,0.432,0,0,0,0,0,0.000102,8.35e-05,7.73e-05,9.74e-05,0.026,0.026,0.00857,0.301,0.299,0.0366,2.97e-11,2.94e-11,1.01e-10,2.82e-06,2.62e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
32590000,0.709,-0.000508,-0.00312,0.705,-1.42,-0.805,0.711,-14,-6.68,-367,-1.45e-05,-5.66e-05,2.56e-06,-0.000398,7.84e-05,-0.000937,0.209,0.00206,0.432,0,0,0,0,0,0.000102,8.33e-05,7.7e-05,9.69e-05,0.0247,0.0247,0.00846,0.297,0.295,0.0363,2.92e-11,2.9e-11,9.97e-11,2.82e-06,2.61e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
32690000,0.709,-0.000549,-0.0032,0.705,-1.39,-0.794,0.707,-14.1,-6.76,-367,-1.45e-05,-5.66e-05,2.54e-06,-0.000401,8.5e-05,-0.000935,0.209,0.00206,0.432,0,0,0,0,0,0.000102,8.35e-05,7.7e-05,9.69e-05,0.026,0.0259,0.00848,0.31,0.308,0.0364,2.93e-11,2.91e-11,9.88e-11,2.82e-06,2.61e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
32790000,0.709,-0.000511,-0.00314,0.705,-1.37,-0.783,0.703,-14.3,-6.84,-367,-1.45e-05,-5.66e-05,2.52e-06,-0.000405,9.5e-05,-0.000932,0.209,0.00206,0.432,0,0,0,0,0,0.000101,8.33e-05,7.67e-05,9.65e-05,0.0248,0.0247,0.00843,0.307,0.304,0.0364,2.89e-11,2.88e-11,9.79e-11,2.82e-06,2.6e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
32590000,0.709,-0.000507,-0.00312,0.705,-1.42,-0.805,0.711,-14,-6.68,-367,-1.45e-05,-5.66e-05,2.56e-06,-0.000398,7.84e-05,-0.000937,0.209,0.00206,0.432,0,0,0,0,0,0.000102,8.33e-05,7.7e-05,9.69e-05,0.0247,0.0247,0.00846,0.297,0.295,0.0363,2.92e-11,2.91e-11,9.97e-11,2.82e-06,2.61e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
32690000,0.709,-0.000548,-0.0032,0.705,-1.39,-0.794,0.707,-14.1,-6.76,-367,-1.45e-05,-5.66e-05,2.54e-06,-0.000401,8.5e-05,-0.000935,0.209,0.00206,0.432,0,0,0,0,0,0.000102,8.35e-05,7.7e-05,9.69e-05,0.026,0.0259,0.00848,0.31,0.308,0.0364,2.93e-11,2.92e-11,9.88e-11,2.82e-06,2.61e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
32790000,0.709,-0.000511,-0.00314,0.705,-1.37,-0.783,0.703,-14.3,-6.84,-367,-1.45e-05,-5.66e-05,2.51e-06,-0.000405,9.5e-05,-0.000932,0.209,0.00206,0.432,0,0,0,0,0,0.000101,8.33e-05,7.67e-05,9.65e-05,0.0248,0.0247,0.00843,0.307,0.304,0.0364,2.89e-11,2.88e-11,9.79e-11,2.82e-06,2.6e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
32890000,0.709,-0.000418,-0.00309,0.706,-1.34,-0.773,0.703,-14.4,-6.91,-367,-1.45e-05,-5.66e-05,2.36e-06,-0.000411,0.000107,-0.000927,0.209,0.00206,0.432,0,0,0,0,0,0.000101,8.35e-05,7.67e-05,9.64e-05,0.026,0.0259,0.00845,0.32,0.317,0.0364,2.9e-11,2.89e-11,9.7e-11,2.82e-06,2.6e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
32990000,0.709,-0.000286,-0.00302,0.706,-1.32,-0.765,0.697,-14.6,-6.99,-367,-1.47e-05,-5.66e-05,2.49e-06,-0.000417,0.000121,-0.000923,0.209,0.00206,0.432,0,0,0,0,0,0.000101,8.33e-05,7.64e-05,9.61e-05,0.0248,0.0246,0.00834,0.316,0.313,0.0361,2.86e-11,2.86e-11,9.61e-11,2.81e-06,2.6e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
33090000,0.709,-0.000319,-0.00305,0.706,-1.29,-0.757,0.691,-14.7,-7.07,-367,-1.47e-05,-5.66e-05,2.56e-06,-0.00042,0.000127,-0.000921,0.209,0.00206,0.432,0,0,0,0,0,0.000101,8.34e-05,7.64e-05,9.6e-05,0.026,0.0258,0.00841,0.329,0.326,0.0365,2.87e-11,2.87e-11,9.53e-11,2.81e-06,2.59e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
32990000,0.709,-0.000286,-0.00302,0.706,-1.32,-0.765,0.697,-14.6,-6.99,-367,-1.47e-05,-5.66e-05,2.48e-06,-0.000417,0.000121,-0.000923,0.209,0.00206,0.432,0,0,0,0,0,0.000101,8.33e-05,7.64e-05,9.61e-05,0.0248,0.0246,0.00834,0.316,0.313,0.0361,2.86e-11,2.86e-11,9.61e-11,2.81e-06,2.6e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
33090000,0.709,-0.000319,-0.00305,0.706,-1.29,-0.756,0.691,-14.7,-7.07,-367,-1.47e-05,-5.66e-05,2.56e-06,-0.00042,0.000127,-0.000921,0.209,0.00206,0.432,0,0,0,0,0,0.000101,8.34e-05,7.64e-05,9.6e-05,0.026,0.0258,0.00841,0.329,0.326,0.0365,2.87e-11,2.87e-11,9.53e-11,2.81e-06,2.59e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
33190000,0.705,0.00309,-0.00208,0.71,-1.26,-0.746,0.632,-14.8,-7.14,-367,-1.47e-05,-5.66e-05,2.58e-06,-0.000424,0.000135,-0.000918,0.209,0.00206,0.432,0,0,0,0,0,9.98e-05,8.32e-05,7.61e-05,9.63e-05,0.0248,0.0245,0.00831,0.325,0.322,0.0362,2.83e-11,2.84e-11,9.44e-11,2.81e-06,2.59e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
33290000,0.653,0.0153,-0.00116,0.757,-1.26,-0.727,0.614,-15,-7.21,-367,-1.47e-05,-5.66e-05,2.63e-06,-0.000426,0.00014,-0.000916,0.209,0.00206,0.432,0,0,0,0,0,9.24e-05,8.27e-05,7.67e-05,0.000104,0.0261,0.0258,0.00833,0.338,0.336,0.0362,2.84e-11,2.85e-11,9.36e-11,2.81e-06,2.58e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
33390000,0.55,0.0133,-0.00141,0.835,-1.26,-0.716,0.804,-15.1,-7.29,-367,-1.48e-05,-5.66e-05,2.68e-06,-0.000431,0.000149,-0.000913,0.209,0.00206,0.432,0,0,0,0,0,7.9e-05,8.15e-05,7.76e-05,0.000117,0.0246,0.0243,0.00827,0.334,0.331,0.0363,2.8e-11,2.82e-11,9.28e-11,2.81e-06,2.58e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
@@ -350,7 +350,7 @@ Timestamp,state[0],state[1],state[2],state[3],state[4],state[5],state[6],state[7
|
||||
34790000,-0.674,-0.00191,-0.00163,0.739,-0.76,-0.366,0.714,-16.7,-8.15,-366,-1.61e-05,-5.67e-05,2.94e-06,-0.000703,0.000406,-0.000912,0.209,0.00206,0.432,0,0,0,0,0,8.96e-05,5.19e-05,5.62e-05,0.000103,0.0522,0.0536,0.00617,0.4,0.397,0.034,2.65e-11,2.7e-11,8.23e-11,2.65e-06,2.44e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
34890000,-0.676,-0.00194,-0.00153,0.737,-0.713,-0.333,0.712,-16.8,-8.18,-365,-1.61e-05,-5.67e-05,3.03e-06,-0.000702,0.000406,-0.000912,0.209,0.00206,0.432,0,0,0,0,0,8.99e-05,5.19e-05,5.62e-05,0.000102,0.0598,0.0616,0.00618,0.412,0.409,0.0339,2.66e-11,2.71e-11,8.17e-11,2.65e-06,2.44e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
34990000,-0.679,-0.00831,-0.00434,0.734,0.299,0.275,-0.133,-16.9,-8.21,-366,-1.63e-05,-5.68e-05,2.96e-06,-0.000836,0.000544,-0.000912,0.209,0.00206,0.432,0,0,0,0,0,9.02e-05,4.73e-05,5.09e-05,0.000102,0.0602,0.0585,0.00683,0.41,0.406,0.0338,2.66e-11,2.71e-11,8.11e-11,2.55e-06,2.36e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
35090000,-0.679,-0.00834,-0.00437,0.734,0.424,0.297,-0.192,-16.8,-8.18,-366,-1.63e-05,-5.68e-05,3.02e-06,-0.000836,0.000544,-0.000912,0.209,0.00206,0.432,0,0,0,0,0,9.01e-05,4.73e-05,5.09e-05,0.000102,0.0655,0.0639,0.00682,0.421,0.418,0.0337,2.67e-11,2.72e-11,8.04e-11,2.55e-06,2.36e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
35090000,-0.679,-0.00834,-0.00437,0.734,0.424,0.297,-0.192,-16.8,-8.18,-366,-1.63e-05,-5.68e-05,3.01e-06,-0.000836,0.000544,-0.000912,0.209,0.00206,0.432,0,0,0,0,0,9.01e-05,4.73e-05,5.09e-05,0.000102,0.0655,0.0639,0.00682,0.421,0.418,0.0337,2.67e-11,2.72e-11,8.04e-11,2.55e-06,2.36e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
35190000,-0.679,-0.00843,-0.00438,0.734,0.446,0.329,-0.189,-16.8,-8.15,-366,-1.63e-05,-5.68e-05,3.03e-06,-0.000836,0.000544,-0.000912,0.209,0.00206,0.432,0,0,0,0,0,9e-05,4.72e-05,5.1e-05,0.000102,0.0706,0.0693,0.00666,0.434,0.431,0.0334,2.68e-11,2.73e-11,7.98e-11,2.55e-06,2.36e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
35290000,-0.679,-0.00847,-0.00444,0.734,0.469,0.36,-0.187,-16.8,-8.11,-366,-1.63e-05,-5.68e-05,3.02e-06,-0.000836,0.000544,-0.000912,0.209,0.00206,0.432,0,0,0,0,0,8.99e-05,4.72e-05,5.1e-05,0.000102,0.0761,0.0751,0.00658,0.448,0.446,0.0333,2.69e-11,2.74e-11,7.91e-11,2.55e-06,2.36e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
35390000,-0.679,-0.00859,-0.00439,0.734,0.493,0.393,-0.182,-16.7,-8.07,-366,-1.63e-05,-5.68e-05,2.96e-06,-0.000836,0.000544,-0.000912,0.209,0.00206,0.432,0,0,0,0,0,8.99e-05,4.71e-05,5.11e-05,0.000102,0.0818,0.0813,0.00646,0.463,0.463,0.0333,2.7e-11,2.75e-11,7.86e-11,2.55e-06,2.36e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
@@ -371,21 +371,21 @@ Timestamp,state[0],state[1],state[2],state[3],state[4],state[5],state[6],state[7
|
||||
36890000,-0.677,0.00197,-0.00374,0.736,0.157,0.201,-0.204,-16.8,-8.2,-366,-1.72e-05,-5.7e-05,4.81e-06,-0.0014,0.000978,-0.000917,0.209,0.00206,0.432,0,0,0,0,0,8.72e-05,2.13e-05,2.25e-05,9.78e-05,0.0577,0.0592,0.00557,0.536,0.533,0.0308,2.82e-11,2.87e-11,7.03e-11,2.31e-06,2.15e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
36990000,-0.677,0.00243,-0.00359,0.736,0.129,0.173,-0.203,-16.9,-8.22,-366,-1.72e-05,-5.69e-05,4.95e-06,-0.00151,0.00105,-0.000919,0.209,0.00206,0.432,0,0,0,0,0,8.72e-05,2.01e-05,2.13e-05,9.78e-05,0.0516,0.0528,0.0056,0.534,0.531,0.0308,2.83e-11,2.88e-11,6.99e-11,2.22e-06,2.07e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
37090000,-0.677,0.0024,-0.00355,0.736,0.13,0.18,-0.201,-16.9,-8.2,-366,-1.72e-05,-5.69e-05,5.16e-06,-0.00151,0.00105,-0.000919,0.209,0.00206,0.432,0,0,0,0,0,8.71e-05,2.02e-05,2.14e-05,9.77e-05,0.0568,0.0582,0.00569,0.545,0.543,0.0307,2.84e-11,2.89e-11,6.94e-11,2.22e-06,2.07e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
37190000,-0.677,0.00273,-0.00346,0.736,0.107,0.152,-0.197,-16.9,-8.22,-366,-1.72e-05,-5.69e-05,5.37e-06,-0.00162,0.00112,-0.000922,0.209,0.00206,0.432,0,0,0,0,0,8.7e-05,1.93e-05,2.04e-05,9.76e-05,0.0509,0.0519,0.00572,0.543,0.541,0.0305,2.85e-11,2.9e-11,6.89e-11,2.12e-06,1.98e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
37190000,-0.677,0.00273,-0.00345,0.736,0.107,0.152,-0.197,-16.9,-8.22,-366,-1.72e-05,-5.69e-05,5.37e-06,-0.00162,0.00112,-0.000922,0.209,0.00206,0.432,0,0,0,0,0,8.7e-05,1.93e-05,2.04e-05,9.76e-05,0.0509,0.0519,0.00572,0.543,0.541,0.0305,2.85e-11,2.9e-11,6.89e-11,2.12e-06,1.98e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
37290000,-0.677,0.00273,-0.00349,0.736,0.107,0.158,-0.195,-16.9,-8.2,-366,-1.72e-05,-5.69e-05,5.53e-06,-0.00162,0.00112,-0.000922,0.209,0.00206,0.432,0,0,0,0,0,8.7e-05,1.94e-05,2.05e-05,9.76e-05,0.0559,0.0571,0.00584,0.555,0.552,0.0307,2.86e-11,2.91e-11,6.85e-11,2.12e-06,1.98e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
37390000,-0.677,0.00295,-0.00335,0.736,0.0861,0.133,-0.192,-16.9,-8.22,-366,-1.72e-05,-5.69e-05,5.68e-06,-0.00171,0.00117,-0.000924,0.209,0.00206,0.432,0,0,0,0,0,8.69e-05,1.88e-05,1.99e-05,9.75e-05,0.05,0.051,0.00588,0.553,0.551,0.0305,2.87e-11,2.92e-11,6.8e-11,2.03e-06,1.89e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
37490000,-0.677,0.00293,-0.00332,0.736,0.0849,0.139,-0.189,-16.9,-8.21,-366,-1.72e-05,-5.69e-05,5.8e-06,-0.00171,0.00117,-0.000924,0.209,0.00206,0.432,0,0,0,0,0,8.68e-05,1.89e-05,2e-05,9.75e-05,0.0548,0.0559,0.006,0.564,0.562,0.0304,2.88e-11,2.93e-11,6.75e-11,2.03e-06,1.89e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
37590000,-0.677,0.0031,-0.00323,0.736,0.0674,0.117,-0.185,-16.9,-8.22,-366,-1.72e-05,-5.69e-05,5.94e-06,-0.0018,0.00121,-0.000928,0.209,0.00206,0.432,0,0,0,0,0,8.68e-05,1.84e-05,1.95e-05,9.74e-05,0.0491,0.0499,0.00607,0.563,0.561,0.0305,2.89e-11,2.94e-11,6.71e-11,1.93e-06,1.81e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
37590000,-0.677,0.0031,-0.00323,0.736,0.0674,0.117,-0.185,-16.9,-8.22,-366,-1.72e-05,-5.69e-05,5.93e-06,-0.0018,0.00121,-0.000928,0.209,0.00206,0.432,0,0,0,0,0,8.68e-05,1.84e-05,1.95e-05,9.74e-05,0.0491,0.0499,0.00607,0.563,0.561,0.0305,2.89e-11,2.94e-11,6.71e-11,1.93e-06,1.81e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
37690000,-0.676,0.00306,-0.00326,0.736,0.065,0.122,-0.183,-16.9,-8.21,-366,-1.72e-05,-5.69e-05,6.09e-06,-0.0018,0.00121,-0.000928,0.209,0.00206,0.432,0,0,0,0,0,8.67e-05,1.85e-05,1.96e-05,9.73e-05,0.0536,0.0545,0.0062,0.574,0.572,0.0305,2.9e-11,2.95e-11,6.67e-11,1.93e-06,1.81e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
37790000,-0.676,0.00319,-0.00324,0.737,0.0512,0.104,-0.174,-16.9,-8.22,-366,-1.72e-05,-5.68e-05,6.26e-06,-0.00187,0.00125,-0.000934,0.209,0.00206,0.432,0,0,0,0,0,8.66e-05,1.82e-05,1.93e-05,9.72e-05,0.0481,0.0487,0.00626,0.573,0.571,0.0304,2.91e-11,2.96e-11,6.62e-11,1.84e-06,1.73e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
37890000,-0.676,0.00314,-0.00322,0.737,0.049,0.108,-0.164,-16.9,-8.21,-366,-1.72e-05,-5.68e-05,6.45e-06,-0.00188,0.00126,-0.000938,0.209,0.00206,0.432,0,0,0,0,0,8.65e-05,1.83e-05,1.94e-05,9.71e-05,0.0523,0.0531,0.00639,0.584,0.582,0.0304,2.92e-11,2.97e-11,6.58e-11,1.84e-06,1.73e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
37990000,-0.676,0.00319,-0.00321,0.737,0.0366,0.0919,-0.155,-16.9,-8.22,-366,-1.72e-05,-5.68e-05,6.61e-06,-0.00194,0.00129,-0.000944,0.209,0.00206,0.432,0,0,0,0,0,8.64e-05,1.81e-05,1.91e-05,9.7e-05,0.047,0.0475,0.00647,0.584,0.581,0.0305,2.92e-11,2.98e-11,6.54e-11,1.76e-06,1.65e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
38090000,-0.676,0.00313,-0.0032,0.737,0.0332,0.0949,-0.146,-16.9,-8.21,-366,-1.72e-05,-5.68e-05,6.74e-06,-0.00195,0.00129,-0.000947,0.209,0.00206,0.432,0,0,0,0,0,8.63e-05,1.82e-05,1.93e-05,9.7e-05,0.051,0.0516,0.00661,0.594,0.591,0.0306,2.93e-11,2.99e-11,6.5e-11,1.76e-06,1.65e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
38090000,-0.676,0.00314,-0.0032,0.737,0.0332,0.0949,-0.146,-16.9,-8.21,-366,-1.72e-05,-5.68e-05,6.74e-06,-0.00195,0.00129,-0.000947,0.209,0.00206,0.432,0,0,0,0,0,8.63e-05,1.82e-05,1.93e-05,9.7e-05,0.051,0.0516,0.00661,0.594,0.591,0.0306,2.93e-11,2.99e-11,6.5e-11,1.76e-06,1.65e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
38190000,-0.676,0.00318,-0.00312,0.737,0.0215,0.0801,-0.137,-16.9,-8.22,-366,-1.72e-05,-5.68e-05,6.9e-06,-0.002,0.00132,-0.000953,0.209,0.00206,0.432,0,0,0,0,0,8.62e-05,1.8e-05,1.91e-05,9.68e-05,0.0458,0.0463,0.00667,0.594,0.591,0.0305,2.94e-11,3e-11,6.45e-11,1.68e-06,1.57e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
38290000,-0.676,0.00314,-0.00311,0.737,0.0189,0.0811,-0.129,-16.9,-8.21,-366,-1.72e-05,-5.68e-05,7.06e-06,-0.002,0.00132,-0.000957,0.209,0.00206,0.432,0,0,0,0,0,8.62e-05,1.81e-05,1.92e-05,9.68e-05,0.0496,0.0501,0.00683,0.604,0.601,0.0308,2.95e-11,3.01e-11,6.42e-11,1.68e-06,1.57e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
38390000,-0.675,0.00317,-0.00303,0.737,0.0116,0.0697,-0.121,-16.9,-8.21,-366,-1.72e-05,-5.67e-05,7.24e-06,-0.00205,0.00134,-0.000963,0.209,0.00206,0.432,0,0,0,0,0,8.6e-05,1.81e-05,1.92e-05,9.66e-05,0.0447,0.045,0.00689,0.604,0.601,0.0307,2.96e-11,3.01e-11,6.37e-11,1.6e-06,1.51e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
38490000,-0.675,0.00313,-0.00302,0.738,0.0089,0.0714,-0.114,-16.9,-8.21,-366,-1.72e-05,-5.67e-05,7.39e-06,-0.00205,0.00134,-0.000966,0.209,0.00206,0.432,0,0,0,0,0,8.6e-05,1.82e-05,1.93e-05,9.66e-05,0.0482,0.0486,0.00703,0.614,0.611,0.0309,2.97e-11,3.02e-11,6.33e-11,1.6e-06,1.51e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
38490000,-0.675,0.00313,-0.00302,0.738,0.0089,0.0713,-0.114,-16.9,-8.21,-366,-1.72e-05,-5.67e-05,7.39e-06,-0.00205,0.00134,-0.000966,0.209,0.00206,0.432,0,0,0,0,0,8.6e-05,1.82e-05,1.93e-05,9.66e-05,0.0482,0.0486,0.00703,0.614,0.611,0.0309,2.97e-11,3.02e-11,6.33e-11,1.6e-06,1.51e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
38590000,-0.675,0.00314,-0.00292,0.738,0.00503,0.061,-0.107,-16.9,-8.21,-366,-1.72e-05,-5.67e-05,7.54e-06,-0.00209,0.00135,-0.000971,0.209,0.00206,0.432,0,0,0,0,0,8.58e-05,1.82e-05,1.93e-05,9.65e-05,0.0435,0.0438,0.00711,0.614,0.611,0.031,2.98e-11,3.03e-11,6.3e-11,1.54e-06,1.44e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
38690000,-0.675,0.00304,-0.00292,0.738,0.00129,0.0605,-0.0985,-16.9,-8.21,-366,-1.72e-05,-5.67e-05,7.66e-06,-0.0021,0.00135,-0.000974,0.209,0.00206,0.432,0,0,0,0,0,8.58e-05,1.83e-05,1.94e-05,9.64e-05,0.0468,0.0471,0.00725,0.624,0.621,0.0312,2.99e-11,3.04e-11,6.26e-11,1.54e-06,1.44e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
38790000,-0.675,0.00304,-0.00288,0.738,-0.0033,0.0495,-0.0909,-16.9,-8.21,-366,-1.72e-05,-5.67e-05,7.79e-06,-0.00213,0.00136,-0.000979,0.209,0.00206,0.432,0,0,0,0,0,8.56e-05,1.83e-05,1.94e-05,9.62e-05,0.0424,0.0426,0.00729,0.624,0.621,0.0311,2.99e-11,3.05e-11,6.22e-11,1.47e-06,1.39e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
38790000,-0.675,0.00304,-0.00288,0.738,-0.0033,0.0494,-0.0909,-16.9,-8.21,-366,-1.72e-05,-5.67e-05,7.79e-06,-0.00213,0.00136,-0.000979,0.209,0.00206,0.432,0,0,0,0,0,8.56e-05,1.83e-05,1.94e-05,9.62e-05,0.0424,0.0426,0.00729,0.624,0.621,0.0311,2.99e-11,3.05e-11,6.22e-11,1.47e-06,1.39e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
38890000,-0.675,0.00285,-0.00293,0.738,-0.0128,0.039,0.408,-16.9,-8.21,-366,-1.72e-05,-5.67e-05,7.94e-06,-0.00213,0.00136,-0.000981,0.209,0.00206,0.432,0,0,0,0,0,8.56e-05,1.84e-05,1.95e-05,9.62e-05,0.0452,0.0454,0.00745,0.633,0.631,0.0316,3e-11,3.06e-11,6.18e-11,1.47e-06,1.39e-06,5e-08,0,0,0,0,0,0,0,0
|
||||
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user