mirror of
https://github.com/ddv2005/AirsoftTracker.git
synced 2026-01-09 12:36:54 +00:00
Upgrade public source code to version 1.0.1332. New boards support
This commit is contained in:
38
boards/heltec_wireless_tracker.json
Normal file
38
boards/heltec_wireless_tracker.json
Normal file
@@ -0,0 +1,38 @@
|
||||
{
|
||||
"build": {
|
||||
"arduino": {
|
||||
"ldscript": "esp32s3_out.ld",
|
||||
"partitions": "default_8MB.csv"
|
||||
},
|
||||
"core": "esp32",
|
||||
"extra_flags": [
|
||||
"-DHELTEC_WIRELESS_TRACKER",
|
||||
"-DARDUINO_USB_CDC_ON_BOOT=1",
|
||||
"-DARDUINO_USB_MODE=0",
|
||||
"-DARDUINO_RUNNING_CORE=1",
|
||||
"-DARDUINO_EVENT_RUNNING_CORE=1"
|
||||
],
|
||||
"f_cpu": "240000000L",
|
||||
"f_flash": "80000000L",
|
||||
"flash_mode": "qio",
|
||||
"hwids": [["0x303A", "0x1001"]],
|
||||
"mcu": "esp32s3",
|
||||
"variant": "heltec_wireless_tracker"
|
||||
},
|
||||
"connectivity": ["wifi", "bluetooth", "lora"],
|
||||
"debug": {
|
||||
"openocd_target": "esp32s3.cfg"
|
||||
},
|
||||
"frameworks": ["arduino", "espidf"],
|
||||
"name": "Heltec Wireless Tracker",
|
||||
"upload": {
|
||||
"flash_size": "8MB",
|
||||
"maximum_ram_size": 327680,
|
||||
"maximum_size": 8388608,
|
||||
"wait_for_upload_port": true,
|
||||
"require_upload_port": true,
|
||||
"speed": 921600
|
||||
},
|
||||
"url": "https://heltec.org/project/wireless-tracker/",
|
||||
"vendor": "Heltec"
|
||||
}
|
||||
51
boards/t-beams3-supreme.json
Normal file
51
boards/t-beams3-supreme.json
Normal file
@@ -0,0 +1,51 @@
|
||||
{
|
||||
"build": {
|
||||
"arduino":{
|
||||
"ldscript": "esp32s3_out.ld",
|
||||
"partitions": "default.csv",
|
||||
"memory_type": "qio_qspi"
|
||||
},
|
||||
"core": "esp32",
|
||||
"extra_flags": [
|
||||
"-DARDUINO_USB_MODE=1",
|
||||
"-DARDUINO_USB_CDC_ON_BOOT=1",
|
||||
"-DARDUINO_RUNNING_CORE=1",
|
||||
"-DARDUINO_EVENT_RUNNING_CORE=1"
|
||||
],
|
||||
"f_cpu": "240000000L",
|
||||
"f_flash": "80000000L",
|
||||
"flash_mode": "qio",
|
||||
"hwids": [
|
||||
[
|
||||
"0x303A",
|
||||
"0x1001"
|
||||
]
|
||||
],
|
||||
"mcu": "esp32s3",
|
||||
"variant": "esp32s3"
|
||||
},
|
||||
"connectivity": [
|
||||
"wifi"
|
||||
],
|
||||
"debug": {
|
||||
"default_tool": "esp-builtin",
|
||||
"onboard_tools": [
|
||||
"esp-builtin"
|
||||
],
|
||||
"openocd_target": "esp32s3.cfg"
|
||||
},
|
||||
"frameworks": [
|
||||
"arduino",
|
||||
"espidf"
|
||||
],
|
||||
"name": "LilyGo T-Beam supreme (8MB Flash 8MB PSRAM)",
|
||||
"upload": {
|
||||
"flash_size": "8MB",
|
||||
"maximum_ram_size": 327680,
|
||||
"maximum_size": 8388608,
|
||||
"require_upload_port": true,
|
||||
"speed": 460800
|
||||
},
|
||||
"url": "https://www.lilygo.cc/products/t-beamsupreme-m",
|
||||
"vendor": "LilyGo"
|
||||
}
|
||||
@@ -1,9 +1,9 @@
|
||||
|
||||
// AUTO GENERATED FILE, DO NOT EDIT
|
||||
#ifndef VERSION
|
||||
#define VERSION "1.0.1203"
|
||||
#define VERSION "1.0.1332"
|
||||
#endif
|
||||
#ifndef BUILD_TIMESTAMP
|
||||
#define BUILD_TIMESTAMP "2023-07-18 14:37:23.725627"
|
||||
#define BUILD_TIMESTAMP "2025-11-14 17:24:36.078044"
|
||||
#endif
|
||||
|
||||
@@ -215,6 +215,11 @@ bool lvgl_spi_driver_init(int host,
|
||||
const char *spi_names[] = {
|
||||
"SPI_HOST", "", ""
|
||||
};
|
||||
#elif defined (CONFIG_IDF_TARGET_ESP32S3)
|
||||
assert((SPI1_HOST <= host) && (SPI3_HOST >= host));
|
||||
const char *spi_names[] = {
|
||||
"SPI_HOST", "", ""
|
||||
};
|
||||
#endif
|
||||
|
||||
ESP_LOGI(TAG, "Configuring SPI host %s (%d)", spi_names[host], host);
|
||||
|
||||
7
partition-table16.csv
Normal file
7
partition-table16.csv
Normal file
@@ -0,0 +1,7 @@
|
||||
# This is a layout for 16MB of flash
|
||||
# Name, Type, SubType, Offset, Size, Flags
|
||||
nvs, data, nvs, 0x9000, 0x5000,
|
||||
otadata, data, ota, 0xe000, 0x2000,
|
||||
app0, app, ota_0, 0x10000, 0x2F0000,
|
||||
config, data, spiffs, 0x300000, 0x2F0000,
|
||||
spiffs, data, spiffs, 0x5F0000,0xA10000,
|
||||
|
@@ -13,7 +13,7 @@ default_envs = tbeam-v101 ; Note: the github actions CI test build can't yet bui
|
||||
|
||||
[env]
|
||||
build_unflags = -O2
|
||||
build_flags = -Wno-missing-field-initializers -Isrc -Ofast
|
||||
build_flags = -Wno-missing-field-initializers -Isrc -Ofast -DUSE_THREAD_NAMES -DTINYGPS_OPTION_NO_CUSTOM_FIELDS
|
||||
monitor_speed = 115200
|
||||
extra_scripts =
|
||||
pre:platformio_version_increment/version_increment_pre.py
|
||||
@@ -23,15 +23,17 @@ lib_extra_dirs =
|
||||
lib_deps =
|
||||
1260 ; OneButton library for non-blocking button debounce
|
||||
Wire
|
||||
BLE
|
||||
FS
|
||||
SPI
|
||||
ArduinoJson
|
||||
CayenneLPP
|
||||
; https://github.com/meshtastic/SparkFun_Ublox_Arduino_Library.git
|
||||
ArduinoJson@6.17.3
|
||||
CayenneLPP@1.1.0
|
||||
https://github.com/meshtastic/RadioLib.git#8657380241bce681c33aab46598bbf13b11f876c
|
||||
https://github.com/lvgl/lv_port_esp32.git
|
||||
adafruit/Adafruit MCP23017 Arduino Library
|
||||
|
||||
adafruit/Adafruit MCP23017 Arduino Library@1.3.0
|
||||
https://github.com/meshtastic/ArduinoThread.git#72921ac222eed6f526ba1682023cee290d9aa1b3
|
||||
https://github.com/meshtastic/TinyGPSPlus.git#127ad674ef85f0201cb68a065879653ed94792c4
|
||||
; https://github.com/meshtastic/SparkFun_Ublox_Arduino_Library.git
|
||||
|
||||
[esp32_base]
|
||||
monitor_filters = esp32_exception_decoder
|
||||
@@ -74,3 +76,58 @@ build_flags = ${esp32_base.build_flags} -D AD_V101 -D AD_NOSCREEN
|
||||
extends = esp32_base
|
||||
board = ttgo-lora32-v1
|
||||
build_flags = ${esp32_base.build_flags} -D AD_LORA32_V1 -D AD_NOSCREEN
|
||||
|
||||
[env:heltec-tracker]
|
||||
extends = esp32_base
|
||||
board = heltec_wifi_lora_32_V3
|
||||
board_build.extra_flags = -DARDUINO_USB_MODE=0 -DARDUINO_USB_CDC_ON_BOOT=1 -DARDUINO_RUNNING_CORE=1 -DARDUINO_EVENT_RUNNING_CORE=1
|
||||
build_flags = ${esp32_base.build_flags} -D AD_HELTEC_TRACKER -D AD_NOSCREEN
|
||||
-Os
|
||||
-DUSER_SETUP_LOADED=1
|
||||
-DST7735_DRIVER=1
|
||||
-DTFT_WIDTH=80
|
||||
-DTFT_HEIGHT=160
|
||||
-DST7735_GREENTAB160x80=1
|
||||
-DTFT_MISO=-1
|
||||
-DTFT_MOSI=42
|
||||
-DTFT_SCLK=41
|
||||
-DTFT_CS=38
|
||||
-DTFT_DC=40
|
||||
-DTFT_RST=39
|
||||
-DTFT_BL=21
|
||||
-DTFT_EN=46
|
||||
-DTFT_BACKLIGHT_ON=1
|
||||
-DLOAD_GLCD=1
|
||||
-DLOAD_FONT2=1
|
||||
-DLOAD_FONT4=1
|
||||
-DLOAD_FONT6=1
|
||||
-DLOAD_FONT7=1
|
||||
-DLOAD_FONT8=1
|
||||
-DLOAD_GFXFF=1
|
||||
-DSMOOTH_FONT=1
|
||||
-DUSE_HSPI_PORT=1
|
||||
-DSPI_FREQUENCY=27000000
|
||||
|
||||
lib_deps =
|
||||
${env.lib_deps}
|
||||
bodmer/TFT_eSPI @ ^2.5.31
|
||||
|
||||
[env:tracker-v1-noscreen]
|
||||
extends = esp32_base
|
||||
board = heltec_wifi_lora_32_V3
|
||||
board_build.partitions = partition-table.csv
|
||||
board_build.extra_flags = -DARDUINO_USB_MODE=0 -DARDUINO_RUNNING_CORE=1 -DARDUINO_EVENT_RUNNING_CORE=1 -DBOARD_HAS_PSRAM
|
||||
build_flags = ${esp32_base.build_flags} -D AD_TRACKER_V1 -D AD_NOSCREEN
|
||||
lib_deps =
|
||||
${env.lib_deps}
|
||||
|
||||
[env:tbeam-supreme-smallsceeen]
|
||||
extends = esp32_base
|
||||
board = t-beams3-supreme
|
||||
board_build.partitions = partition-table.csv
|
||||
board_build.extra_flags = -DARDUINO_USB_MODE=0 -DARDUINO_RUNNING_CORE=1 -DARDUINO_EVENT_RUNNING_CORE=1 -DBOARD_HAS_PSRAM -DARDUINO_USB_CDC_ON_BOOT=1
|
||||
build_flags = ${esp32_base.build_flags} -D AD_TBEAM_SUPREME -D AD_NOSCREEN
|
||||
lib_deps =
|
||||
${env.lib_deps}
|
||||
XPowersLib
|
||||
lcdgfx
|
||||
@@ -10,42 +10,42 @@ const float AP_Declination::SAMPLING_MIN_LON = -180;
|
||||
const float AP_Declination::SAMPLING_MAX_LON = 180;
|
||||
|
||||
const float AP_Declination::declination_table[37][73] = {
|
||||
{149.03407f,144.03407f,139.03406f,134.03407f,129.03407f,124.03407f,119.03407f,114.03407f,109.03407f,104.03407f,99.03407f,94.03407f,89.03407f,84.03407f,79.03407f,74.03407f,69.03407f,64.03407f,59.03407f,54.03407f,49.03407f,44.03407f,39.03407f,34.03407f,29.03407f,24.03407f,19.03407f,14.03407f,9.03407f,4.03407f,-0.96593f,-5.96593f,-10.96593f,-15.96593f,-20.96593f,-25.96593f,-30.96593f,-35.96593f,-40.96593f,-45.96593f,-50.96593f,-55.96593f,-60.96593f,-65.96593f,-70.96593f,-75.96593f,-80.96593f,-85.96593f,-90.96593f,-95.96593f,-100.96593f,-105.96593f,-110.96593f,-115.96593f,-120.96593f,-125.96593f,-130.96593f,-135.96593f,-140.96593f,-145.96593f,-150.96593f,-155.96593f,-160.96593f,-165.96593f,-170.96593f,-175.96593f,179.03407f,174.03407f,169.03407f,164.03407f,159.03407f,154.03407f,149.03407f},
|
||||
{141.51289f,135.86793f,130.30584f,124.83080f,119.44524f,114.14996f,108.94426f,103.82624f,98.79295f,93.84061f,88.96488f,84.16095f,79.42378f,74.74820f,70.12900f,65.56103f,61.03928f,56.55886f,52.11505f,47.70332f,43.31927f,38.95864f,34.61732f,30.29126f,25.97650f,21.66913f,17.36530f,13.06118f,8.75303f,4.43715f,0.10991f,-4.23218f,-8.59252f,-12.97431f,-17.38060f,-21.81426f,-26.27793f,-30.77408f,-35.30500f,-39.87280f,-44.47949f,-49.12697f,-53.81710f,-58.55174f,-63.33279f,-68.16223f,-73.04212f,-77.97468f,-82.96221f,-88.00713f,-93.11192f,-98.27905f,-103.51089f,-108.80960f,-114.17698f,-119.61431f,-125.12214f,-130.70013f,-136.34680f,-142.05937f,-147.83358f,-153.66357f,-159.54185f,-165.45931f,-171.40534f,-177.36808f,176.66527f,170.70806f,164.77375f,158.87542f,153.02536f,147.23465f,141.51289f},
|
||||
{129.30529f,123.04797f,117.07812f,111.38491f,105.95127f,100.75625f,95.77688f,90.98956f,86.37108f,81.89932f,77.55367f,73.31535f,69.16756f,65.09554f,61.08654f,57.12978f,53.21631f,49.33881f,45.49142f,41.66942f,37.86901f,34.08694f,30.32023f,26.56590f,22.82063f,19.08063f,15.34145f,11.59791f,7.84418f,4.07382f,0.28004f,-3.54407f,-7.40526f,-11.30984f,-15.26336f,-19.27045f,-23.33467f,-27.45845f,-31.64311f,-35.88907f,-40.19599f,-44.56309f,-48.98945f,-53.47437f,-58.01768f,-62.62012f,-67.28359f,-72.01144f,-76.80870f,-81.68223f,-86.64085f,-91.69542f,-96.85886f,-102.14600f,-107.57345f,-113.15916f,-118.92185f,-124.88005f,-131.05078f,-137.44774f,-144.07903f,-150.94447f,-158.03286f,-165.31961f,-172.76553f,179.68260f,172.08924f,164.52508f,157.06086f,149.76098f,142.67847f,135.85203f,129.30530f},
|
||||
{110.25505f,104.17460f,98.66441f,93.63327f,88.99997f,84.69384f,80.65388f,76.82752f,73.16943f,69.64048f,66.20704f,62.84045f,59.51673f,56.21635f,52.92405f,49.62874f,46.32321f,43.00388f,39.67033f,36.32482f,32.97161f,29.61614f,26.26424f,22.92114f,19.59060f,16.27413f,12.97028f,9.67439f,6.37844f,3.07147f,-0.25981f,-3.63001f,-7.05394f,-10.54543f,-14.11625f,-17.77518f,-21.52749f,-25.37470f,-29.31471f,-33.34230f,-37.44981f,-41.62809f,-45.86746f,-50.15868f,-54.49391f,-58.86750f,-63.27664f,-67.72194f,-72.20787f,-76.74318f,-81.34129f,-86.02075f,-90.80586f,-95.72746f,-100.82390f,-106.14225f,-111.73969f,-117.68467f,-124.05749f,-130.94884f,-138.45456f,-146.66322f,-155.63318f,-165.35821f,-175.72937f,173.48623f,162.62307f,152.04575f,142.06085f,132.86000f,124.51417f,117.00338f,110.25505f},
|
||||
{85.76021f,81.52735f,77.79070f,74.43416f,71.37193f,68.53750f,65.87661f,63.34292f,60.89542f,58.49697f,56.11379f,53.71552f,51.27574f,48.77254f,46.18931f,43.51519f,40.74548f,37.88166f,34.93116f,31.90679f,28.82578f,25.70857f,22.57709f,19.45288f,16.35486f,13.29723f,10.28748f,7.32498f,4.40043f,1.49621f,-1.41215f,-4.35362f,-7.35868f,-10.45619f,-13.67038f,-17.01862f,-20.50988f,-24.14424f,-27.91339f,-31.80187f,-35.78895f,-39.85088f,-43.96312f,-48.10247f,-52.24874f,-56.38605f,-60.50365f,-64.59643f,-68.66507f,-72.71624f,-76.76272f,-80.82387f,-84.92649f,-89.10641f,-93.41127f,-97.90497f,-102.67492f,-107.84353f,-113.58678f,-120.16345f,-127.95920f,-137.54085f,-149.67212f,-165.09730f,176.27330f,156.41262f,138.33488f,123.68413f,112.33089f,103.49538f,96.44591f,90.65322f,85.76021f},
|
||||
{63.49063f,61.53268f,59.70157f,57.98263f,56.36269f,54.82753f,53.36027f,51.94025f,50.54250f,49.13776f,47.69331f,46.17455f,44.54727f,42.78015f,40.84742f,38.73085f,36.42148f,33.92045f,31.23933f,28.39991f,25.43322f,22.37797f,19.27812f,16.17948f,13.12567f,10.15346f,7.28821f,4.54010f,1.90186f,-0.65133f,-3.15956f,-5.67358f,-8.24878f,-10.93849f,-13.78779f,-16.82860f,-20.07661f,-23.53033f,-27.17213f,-30.97101f,-34.88671f,-38.87435f,-42.88883f,-46.88860f,-50.83823f,-54.70981f,-58.48343f,-62.14677f,-65.69440f,-69.12673f,-72.44904f,-75.67052f,-78.80366f,-81.86412f,-84.87128f,-87.85003f,-90.83455f,-93.87592f,-97.05823f,-100.53633f,-104.63927f,-110.22502f,-120.43804f,-157.26638f,111.32321f,89.31102f,81.43675f,76.75453f,73.28001f,70.40353f,67.88022f,65.59556f,63.49063f},
|
||||
{48.02742f,47.38464f,46.65758f,45.89153f,45.11833f,44.35876f,43.62354f,42.91339f,42.21835f,41.51709f,40.77709f,39.95632f,39.00664f,37.87857f,36.52647f,34.91338f,33.01482f,30.82138f,28.34023f,25.59577f,22.62934f,19.49783f,16.27080f,13.02555f,9.84030f,6.78585f,3.91665f,1.26296f,-1.17444f,-3.42572f,-5.54885f,-7.62229f,-9.73470f,-11.97351f,-14.41415f,-17.11133f,-20.09307f,-23.35827f,-26.87804f,-30.60072f,-34.45961f,-38.38184f,-42.29652f,-46.14062f,-49.86226f,-53.42145f,-56.78910f,-59.94509f,-62.87577f,-65.57122f,-68.02220f,-70.21645f,-72.13432f,-73.74302f,-74.98855f,-75.78285f,-75.98080f,-75.33518f,-73.40197f,-69.32885f,-61.37994f,-46.16169f,-20.32594f,8.41772f,27.60663f,37.97792f,43.51550f,46.49369f,48.02544f,48.68241f,48.78368f,48.52307f,48.02742f},
|
||||
{38.02510f,37.95792f,37.73497f,37.41456f,37.04227f,36.65341f,36.27445f,35.92281f,35.60472f,35.31207f,35.01947f,34.68350f,34.24514f,33.63540f,32.78320f,31.62363f,30.10536f,28.19618f,25.88705f,23.19480f,20.16366f,16.86521f,13.39569f,9.86956f,6.40899f,3.12978f,0.12611f,-2.54307f,-4.86312f,-6.86630f,-8.62717f,-10.25201f,-11.86455f,-13.59071f,-15.54422f,-17.81359f,-20.45089f,-23.46424f,-26.81646f,-30.43193f,-34.21032f,-38.04311f,-41.82809f,-45.47842f,-48.92573f,-52.11873f,-55.01953f,-57.59932f,-59.83411f,-61.70043f,-63.17020f,-64.20414f,-64.74344f,-64.69915f,-63.93902f,-62.27080f,-59.42157f,-55.01852f,-48.59713f,-39.71493f,-28.30159f,-15.18866f,-2.13379f,9.17958f,18.04877f,24.61647f,29.33790f,32.66390f,34.94945f,36.45643f,37.37842f,37.86274f,38.02510f},
|
||||
{31.27326f,31.45631f,31.46505f,31.35356f,31.16598f,30.93929f,30.70590f,30.49422f,30.32590f,30.21035f,30.13820f,30.07626f,29.96635f,29.72894f,29.27146f,28.49916f,27.32664f,25.68808f,23.54579f,20.89697f,17.77899f,14.27223f,10.49883f,6.61468f,2.79343f,-0.79613f,-4.01459f,-6.77252f,-9.04210f,-10.85792f,-12.30759f,-13.51606f,-14.62889f,-15.79881f,-17.17497f,-18.89010f,-21.04162f,-23.66988f,-26.74447f,-30.16844f,-33.80096f,-37.48828f,-41.09001f,-44.49284f,-47.61215f,-50.38612f,-52.76791f,-54.71886f,-56.20341f,-57.18453f,-57.61810f,-57.44541f,-56.58460f,-54.92446f,-52.32546f,-48.63487f,-43.72300f,-37.54431f,-30.21313f,-22.05560f,-13.58090f,-5.35314f,2.16813f,8.71933f,14.22506f,18.73400f,22.35164f,25.19521f,27.37356f,28.98370f,30.11459f,30.85085f,31.27326f},
|
||||
{26.36786f,26.66604f,26.79441f,26.79796f,26.71209f,26.56667f,26.39096f,26.21608f,26.07315f,25.98705f,25.96761f,26.00071f,26.04227f,26.01707f,25.82354f,25.34414f,24.45955f,23.06449f,21.08311f,18.48260f,15.28457f,11.57281f,7.49449f,3.25012f,-0.93058f,-4.82388f,-8.24909f,-11.09616f,-13.33660f,-15.01667f,-16.23676f,-17.12582f,-17.82207f,-18.46870f,-19.22186f,-20.25387f,-21.73172f,-23.76952f,-26.38065f,-29.46427f,-32.83736f,-36.29065f,-39.63654f,-42.73095f,-45.47164f,-47.78552f,-49.61560f,-50.91277f,-51.63194f,-51.72970f,-51.16052f,-49.87079f,-47.79505f,-44.86273f,-41.02406f,-36.29488f,-30.80107f,-24.78755f,-18.56808f,-12.43986f,-6.61997f,-1.23543f,3.65142f,8.01587f,11.85648f,15.18803f,18.03396f,20.41861f,22.36396f,23.89345f,25.03898f,25.84526f,26.36786f},
|
||||
{22.56366f,22.90784f,23.10037f,23.17771f,23.16431f,23.07834f,22.93915f,22.77223f,22.60923f,22.48299f,22.41865f,22.42306f,22.47451f,22.51543f,22.45039f,22.15168f,21.47314f,20.27092f,18.42743f,15.87477f,12.61470f,8.73294f,4.40295f,-0.12806f,-4.57495f,-8.66629f,-12.19482f,-15.04947f,-17.22075f,-18.78121f,-19.84870f,-20.54584f,-20.97449f,-21.22186f,-21.39810f,-21.67766f,-22.29853f,-23.49197f,-25.37615f,-27.89268f,-30.83411f,-33.93295f,-36.94491f,-39.68626f,-42.03008f,-43.88606f,-45.18341f,-45.86344f,-45.87958f,-45.19889f,-43.79984f,-41.66647f,-38.78692f,-35.16910f,-30.87803f,-26.07520f,-21.01921f,-16.00229f,-11.25498f,-6.88718f,-2.90022f,0.75638f,4.13078f,7.24498f,10.09921f,12.68564f,14.99541f,17.01707f,18.73549f,20.13796f,21.22534f,22.01993f,22.56366f},
|
||||
{19.49262f,19.83667f,20.05379f,20.17527f,20.21649f,20.18386f,20.08413f,19.93130f,19.74919f,19.56928f,19.42437f,19.33850f,19.31400f,19.31803f,19.27228f,19.05075f,18.49032f,17.41469f,15.66762f,13.14805f,9.84083f,5.83792f,1.34298f,-3.35039f,-7.91048f,-12.03590f,-15.51510f,-18.25608f,-20.28181f,-21.69740f,-22.63861f,-23.21706f,-23.48665f,-23.45490f,-23.14501f,-22.68034f,-22.32882f,-22.44219f,-23.29750f,-24.95324f,-27.23460f,-29.83995f,-32.46585f,-34.87275f,-36.88902f,-38.39021f,-39.28263f,-39.49980f,-39.00659f,-37.80142f,-35.90945f,-33.36829f,-30.22080f,-26.53208f,-22.42894f,-18.12682f,-13.89950f,-9.99029f,-6.52460f,-3.48752f,-0.77184f,1.74639f,4.15087f,6.46808f,8.68408f,10.77078f,12.70017f,14.44314f,15.96584f,17.23560f,18.23538f,18.97548f,19.49262f},
|
||||
{16.97883f,17.28956f,17.49736f,17.63270f,17.70634f,17.71651f,17.65855f,17.53276f,17.34953f,17.13148f,16.91161f,16.72537f,16.59606f,16.51570f,16.42639f,16.21007f,15.69455f,14.67963f,12.97884f,10.46657f,7.11982f,3.04546f,-1.51809f,-6.23618f,-10.74800f,-14.74718f,-18.03985f,-20.56352f,-22.37111f,-23.58964f,-24.36165f,-24.78315f,-24.86525f,-24.54807f,-23.77488f,-22.60092f,-21.27530f,-20.21522f,-19.84302f,-20.38356f,-21.77840f,-23.76039f,-25.99255f,-28.16627f,-30.03382f,-31.40672f,-32.15138f,-32.19178f,-31.51307f,-30.15554f,-28.19296f,-25.70283f,-22.75199f,-19.41794f,-15.83548f,-12.22185f,-8.83494f,-5.87650f,-3.41043f,-1.35484f,0.45563f,2.18421f,3.92991f,5.71280f,7.50009f,9.24384f,10.90154f,12.43396f,13.79691f,14.94542f,15.85090f,16.51678f,16.97883f},
|
||||
{14.93100f,15.18635f,15.35662f,15.47564f,15.55491f,15.58961f,15.56703f,15.47431f,15.30624f,15.07283f,14.80278f,14.53815f,14.31797f,14.15367f,14.00355f,13.75659f,13.23581f,12.22632f,10.52389f,7.99180f,4.61181f,0.51478f,-4.02546f,-8.64514f,-12.97740f,-16.73466f,-19.75345f,-21.99705f,-23.53093f,-24.48178f,-24.98225f,-25.11094f,-24.85499f,-24.12625f,-22.83827f,-21.01546f,-18.87808f,-16.83573f,-15.35794f,-14.78584f,-15.21092f,-16.48364f,-18.30551f,-20.32696f,-22.21443f,-23.69113f,-24.56305f,-24.73343f,-24.20144f,-23.03963f,-21.35203f,-19.23024f,-16.73747f,-13.93871f,-10.95723f,-8.00232f,-5.32287f,-3.10447f,-1.38474f,-0.04693f,1.11102f,2.28032f,3.57005f,4.99114f,6.49051f,8.00055f,9.46670f,10.84386f,12.08259f,13.13004f,13.94893f,14.53733f,14.93100f},
|
||||
{13.28884f,13.47634f,13.58779f,13.66435f,13.72339f,13.76191f,13.76240f,13.70032f,13.55523f,13.32445f,13.03181f,12.72354f,12.44868f,12.22913f,12.02987f,11.74116f,11.18301f,10.13578f,8.39265f,5.82183f,2.42246f,-1.64568f,-6.07995f,-10.50575f,-14.57210f,-18.02426f,-20.72791f,-22.65695f,-23.86739f,-24.46549f,-24.56529f,-24.23837f,-23.48116f,-22.23069f,-20.43350f,-18.13422f,-15.53294f,-12.97246f,-10.85242f,-9.51146f,-9.13413f,-9.71333f,-11.06429f,-12.87374f,-14.77095f,-16.40698f,-17.52234f,-17.98440f,-17.78613f,-17.00868f,-15.76235f,-14.13365f,-12.17100f,-9.92237f,-7.49803f,-5.10053f,-2.97708f,-1.31256f,-0.13817f,0.67997f,1.36924f,2.14363f,3.12084f,4.30256f,5.61549f,6.97286f,8.30960f,9.57771f,10.72621f,11.69738f,12.44649f,12.96552f,13.28884f},
|
||||
{12.00282f,12.11837f,12.15757f,12.17280f,12.19200f,12.21760f,12.22925f,12.19160f,12.07031f,11.85230f,11.55870f,11.23943f,10.94829f,10.70784f,10.47867f,10.14549f,9.52682f,8.40876f,6.59772f,3.98239f,0.58868f,-3.39652f,-7.65593f,-11.82437f,-15.58129f,-18.70505f,-21.07796f,-22.66697f,-23.50437f,-23.67076f,-23.26901f,-22.38660f,-21.06689f,-19.31693f,-17.15424f,-14.65992f,-12.00100f,-9.41297f,-7.16151f,-5.50215f,-4.63707f,-4.66326f,-5.52593f,-7.00714f,-8.76960f,-10.44558f,-11.73428f,-12.46586f,-12.61021f,-12.23504f,-11.43824f,-10.29086f,-8.82422f,-7.07057f,-5.12746f,-3.18888f,-1.49978f,-0.24872f,0.52992f,0.97589f,1.33296f,1.83313f,2.60175f,3.63251f,4.83366f,6.10049f,7.35848f,8.55851f,9.65054f,10.57405f,11.27692f,11.74307f,12.00282f},
|
||||
{11.02739f,11.07622f,11.03933f,10.98421f,10.95339f,10.95728f,10.97332f,10.95552f,10.85678f,10.65621f,10.37470f,10.06586f,9.78388f,9.54402f,9.29421f,8.90939f,8.20943f,6.99576f,5.10152f,2.44783f,-0.90855f,-4.76162f,-8.79704f,-12.67530f,-16.11016f,-18.90310f,-20.93772f,-22.16415f,-22.59233f,-22.28944f,-21.36612f,-19.94707f,-18.14186f,-16.03876f,-13.72227f,-11.29101f,-8.85774f,-6.54187f,-4.47450f,-2.81373f,-1.73949f,-1.40345f,-1.85076f,-2.96503f,-4.47910f,-6.05292f,-7.37991f,-8.26855f,-8.66438f,-8.61274f,-8.19097f,-7.45133f,-6.40875f,-5.08083f,-3.55055f,-1.99810f,-0.66017f,0.27351f,0.76201f,0.94296f,1.06764f,1.38006f,2.01197f,2.95171f,4.09310f,5.31622f,6.53807f,7.70883f,8.78033f,9.68993f,10.37726f,10.81542f,11.02739f},
|
||||
{10.31472f,10.31453f,10.21064f,10.08863f,10.00885f,9.99151f,10.01233f,10.01480f,9.93992f,9.76023f,9.49687f,9.20560f,8.93764f,8.69695f,8.41641f,7.96184f,7.15858f,5.83066f,3.84646f,1.16583f,-2.12473f,-5.81072f,-9.59542f,-13.17310f,-16.28734f,-18.75062f,-20.43922f,-21.28955f,-21.30455f,-20.55871f,-19.18683f,-17.35463f,-15.22699f,-12.95067f,-10.64994f,-8.42037f,-6.31911f,-4.37056f,-2.60134f,-1.08831f,0.02271f,0.55979f,0.41503f,-0.37545f,-1.61611f,-3.01321f,-4.27793f,-5.21498f,-5.75467f,-5.92327f,-5.77955f,-5.35984f,-4.66555f,-3.70057f,-2.53081f,-1.31665f,-0.27875f,0.39794f,0.66647f,0.65655f,0.61794f,0.79941f,1.33742f,2.21923f,3.33090f,4.54215f,5.76289f,6.94188f,8.03189f,8.96743f,9.67821f,10.12326f,10.31472f},
|
||||
{9.80548f,9.79028f,9.64547f,9.47571f,9.36084f,9.33236f,9.36559f,9.39496f,9.35049f,9.19753f,8.95471f,8.67610f,8.40722f,8.14125f,7.79987f,7.24526f,6.31330f,4.85459f,2.77572f,0.07573f,-3.13325f,-6.63665f,-10.16260f,-13.43910f,-16.23268f,-18.36079f,-19.69530f,-20.17293f,-19.80955f,-18.70301f,-17.01472f,-14.93600f,-12.65708f,-10.34921f,-8.15147f,-6.15117f,-4.36707f,-2.76097f,-1.28854f,0.03431f,1.09685f,1.72693f,1.78209f,1.24223f,0.24367f,-0.96603f,-2.12362f,-3.04027f,-3.64042f,-3.93935f,-3.98483f,-3.80402f,-3.38988f,-2.73468f,-1.88594f,-0.97956f,-0.21314f,0.24019f,0.33045f,0.17587f,0.01620f,0.09717f,0.55809f,1.39034f,2.48092f,3.69622f,4.94135f,6.16231f,7.31051f,8.31580f,9.09607f,9.59342f,9.80548f},
|
||||
{9.42061f,9.44269f,9.30332f,9.12372f,9.00240f,8.98309f,9.04347f,9.11226f,9.11026f,8.99373f,8.77341f,8.49585f,8.19865f,7.86787f,7.42197f,6.72779f,5.63702f,4.02821f,1.84470f,-0.87850f,-4.00778f,-7.33151f,-10.60178f,-13.57573f,-16.03952f,-17.81956f,-18.79634f,-18.92464f,-18.24753f,-16.88942f,-15.02701f,-12.85350f,-10.55488f,-8.30042f,-6.23006f,-4.42721f,-2.89364f,-1.55859f,-0.33464f,0.80608f,1.78575f,2.44363f,2.62210f,2.26394f,1.45958f,0.41666f,-0.62651f,-1.49054f,-2.09912f,-2.46332f,-2.62771f,-2.61823f,-2.42568f,-2.03452f,-1.47479f,-0.85584f,-0.34717f,-0.10352f,-0.17336f,-0.45104f,-0.71330f,-0.72444f,-0.34439f,0.42720f,1.48729f,2.70684f,3.98949f,5.27733f,6.51771f,7.63398f,8.53135f,9.13351f,9.42061f},
|
||||
{9.06167f,9.18888f,9.12145f,8.99011f,8.90745f,8.92905f,9.03842f,9.16380f,9.21986f,9.15208f,8.95740f,8.66861f,8.31352f,7.87545f,7.27827f,6.40186f,5.11835f,3.33424f,1.02632f,-1.73833f,-4.80645f,-7.96686f,-10.98954f,-13.65607f,-15.77517f,-17.19456f,-17.82061f,-17.64000f,-16.72654f,-15.22262f,-13.30303f,-11.14274f,-8.90508f,-6.74344f,-4.79255f,-3.13707f,-1.77821f,-0.63553f,0.39969f,1.38495f,2.27215f,2.91947f,3.16817f,2.93852f,2.28580f,1.38356f,0.44726f,-0.35315f,-0.94224f,-1.33011f,-1.56318f,-1.67227f,-1.65234f,-1.48524f,-1.18690f,-0.84095f,-0.58630f,-0.55399f,-0.78557f,-1.18630f,-1.55248f,-1.66345f,-1.38052f,-0.69135f,0.31782f,1.52948f,2.84936f,4.21519f,5.56830f,6.82494f,7.87909f,8.63751f,9.06167f},
|
||||
{8.62618f,8.93281f,9.01770f,9.00969f,9.02653f,9.13240f,9.31934f,9.52089f,9.65030f,9.64274f,9.47763f,9.16936f,8.73421f,8.15557f,7.36859f,6.27213f,4.76201f,2.77242f,0.31104f,-2.52526f,-5.56242f,-8.58411f,-11.37133f,-13.72824f,-15.49367f,-16.55163f,-16.84874f,-16.40943f,-15.33257f,-13.76490f,-11.86461f,-9.77763f,-7.63798f,-5.57870f,-3.72678f,-2.17026f,-0.91907f,0.10149f,1.00480f,1.86583f,2.66250f,3.27711f,3.56090f,3.42364f,2.89396f,2.11484f,1.27906f,0.54622f,-0.00961f,-0.39793f,-0.66810f,-0.85870f,-0.97354f,-0.99760f,-0.93791f,-0.85565f,-0.85902f,-1.05158f,-1.46225f,-2.00284f,-2.48854f,-2.71585f,-2.54958f,-1.96518f,-1.02907f,0.15686f,1.50304f,2.94303f,4.41141f,5.81867f,7.05190f,8.00611f,8.62618f},
|
||||
{8.03598f,8.58889f,8.90722f,9.10460f,9.29148f,9.53362f,9.83144f,10.12834f,10.34195f,10.40095f,10.26805f,9.93790f,9.41372f,8.67870f,7.68051f,6.33877f,4.57424f,2.34883f,-0.29949f,-3.24365f,-6.28574f,-9.19890f,-11.77071f,-13.82904f,-15.25085f,-15.96729f,-15.97208f,-15.32534f,-14.14138f,-12.55967f,-10.71423f,-8.72028f,-6.68390f,-4.71835f,-2.94131f,-1.44306f,-0.24548f,0.71138f,1.53327f,2.30225f,3.01804f,3.59034f,3.88945f,3.82508f,3.40637f,2.74729f,2.01530f,1.35615f,0.84103f,0.46213f,0.16922f,-0.08321f,-0.30987f,-0.50356f,-0.66827f,-0.84729f,-1.11973f,-1.55925f,-2.17664f,-2.88418f,-3.51211f,-3.87370f,-3.83930f,-3.37449f,-2.52699f,-1.38270f,-0.02562f,1.47393f,3.04430f,4.59297f,6.00644f,7.17616f,8.03598f},
|
||||
{7.26404f,8.10965f,8.72719f,9.20363f,9.62912f,10.06111f,10.50424f,10.91333f,11.21567f,11.34011f,11.23825f,10.88772f,10.27813f,9.38958f,8.17873f,6.58333f,4.54783f,2.06192f,-0.80497f,-3.89324f,-6.97776f,-9.81797f,-12.20704f,-13.99879f,-15.11266f,-15.52991f,-15.28958f,-14.48074f,-13.22442f,-11.64711f,-9.85865f,-7.94820f,-5.99936f,-4.10802f,-2.38106f,-0.90774f,0.27922f,1.22103f,2.00764f,2.71959f,3.37356f,3.90798f,4.21895f,4.22501f,3.92204f,3.39553f,2.78286f,2.20986f,1.74142f,1.37229f,1.05518f,0.74140f,0.40656f,0.04769f,-0.34062f,-0.78836f,-1.34780f,-2.06152f,-2.91742f,-3.82180f,-4.61460f,-5.12394f,-5.22760f,-4.88549f,-4.13094f,-3.03660f,-1.68184f,-0.14054f,1.51063f,3.17937f,4.75791f,6.14267f,7.26404f},
|
||||
{6.34227f,7.49980f,8.45427f,9.25999f,9.97710f,10.64486f,11.26504f,11.80143f,12.19363f,12.37738f,12.30115f,11.93159f,11.24603f,10.21813f,8.80747f,6.96409f,4.65257f,1.88967f,-1.22203f,-4.48748f,-7.65190f,-10.46036f,-12.71276f,-14.29025f,-15.15384f,-15.33028f,-14.89618f,-13.96132f,-12.64812f,-11.07016f,-9.31841f,-7.46382f,-5.57411f,-3.73068f,-2.02814f,-0.55067f,0.66167f,1.63144f,2.42842f,3.12502f,3.74960f,4.26821f,4.60649f,4.69831f,4.53154f,4.16345f,3.69621f,3.22841f,2.81353f,2.44841f,2.09234f,1.69868f,1.23732f,0.69634f,0.06726f,-0.66937f,-1.54107f,-2.55884f,-3.68421f,-4.81193f,-5.78656f,-6.44890f,-6.68609f,-6.45751f,-5.78812f,-4.74191f,-3.39558f,-1.82633f,-0.11412f,1.65171f,3.37355f,4.95911f,6.34227f},
|
||||
{5.34603f,6.80801f,8.10430f,9.25699f,10.29292f,11.22674f,12.05003f,12.72994f,13.21683f,13.45645f,13.40063f,13.01148f,12.25724f,11.10344f,9.50726f,7.42475f,4.83602f,1.78342f,-1.59607f,-5.06954f,-8.35132f,-11.17309f,-13.34331f,-14.77010f,-15.45135f,-15.45050f,-14.87171f,-13.83788f,-12.47064f,-10.87411f,-9.12779f,-7.29256f,-5.42650f,-3.59932f,-1.89257f,-0.38187f,0.88983f,1.92927f,2.78537f,3.51820f,4.16232f,4.70759f,5.10911f,5.31921f,5.32149f,5.14594f,4.85608f,4.51693f,4.16472f,3.79586f,3.37783f,2.87062f,2.24401f,1.48161f,0.57414f,-0.48708f,-1.70528f,-3.05949f,-4.48253f,-5.85376f,-7.01874f,-7.82967f,-8.18534f,-8.05000f,-7.44677f,-6.43620f,-5.09470f,-3.50236f,-1.74074f,0.10559f,1.95098f,3.71728f,5.34602f},
|
||||
{4.36709f,6.10488f,7.71807f,9.20246f,10.55497f,11.76498f,12.80925f,13.65183f,14.24831f,14.55221f,14.52007f,14.11282f,13.29243f,12.01646f,10.23708f,7.91232f,5.03471f,1.67141f,-2.00440f,-5.71963f,-9.15722f,-12.03748f,-14.17954f,-15.51759f,-16.08076f,-15.96010f,-15.27810f,-14.16492f,-12.74067f,-11.10407f,-9.32963f,-7.47469f,-5.59264f,-3.74422f,-1.99849f,-0.42053f,0.94775f,2.10162f,3.07144f,3.90327f,4.63269f,5.26717f,5.78686f,6.16168f,6.37295f,6.42579f,6.34523f,6.15957f,5.88255f,5.50540f,5.00183f,4.34036f,3.49569f,2.45339f,1.20932f,-0.23035f,-1.84210f,-3.57115f,-5.31961f,-6.94925f,-8.30504f,-9.25096f,-9.70058f,-9.62856f,-9.06263f,-8.06501f,-6.71413f,-5.09269f,-3.28245f,-1.36256f,0.59288f,2.51929f,4.36709f},
|
||||
{3.48737f,5.45970f,7.34454f,9.11998f,10.76124f,12.23717f,13.50952f,14.53448f,15.26589f,15.65824f,15.66825f,15.25358f,14.36932f,12.96465f,10.98567f,8.39137f,5.18696f,1.46745f,-2.55250f,-6.55480f,-10.19002f,-13.17005f,-15.32853f,-16.62638f,-17.12030f,-16.92228f,-16.16643f,-14.98607f,-13.49940f,-11.80230f,-9.96824f,-8.05483f,-6.11394f,-4.20003f,-2.37140f,-0.68273f,0.82764f,2.14800f,3.29410f,4.29846f,5.19322f,5.99555f,6.70272f,7.29764f,7.75970f,8.07335f,8.22969f,8.22157f,8.03688f,7.65536f,7.05088f,6.19784f,5.07787f,3.68463f,2.02710f,0.13435f,-1.93649f,-4.09162f,-6.19897f,-8.10123f,-9.64329f,-10.70357f,-11.21502f,-11.16885f,-10.60359f,-9.58792f,-8.20440f,-6.53817f,-4.67039f,-2.67498f,-0.61648f,1.45157f,3.48737f},
|
||||
{2.75808f,4.92150f,7.02575f,9.03975f,10.92660f,12.64250f,14.13788f,15.35986f,16.25497f,16.77081f,16.85591f,16.45736f,15.51755f,13.97287f,11.76046f,8.83973f,5.23237f,1.07075f,-3.37550f,-7.73185f,-11.61289f,-14.72687f,-16.92941f,-18.21294f,-18.66191f,-18.40634f,-17.58827f,-16.34172f,-14.78238f,-13.00400f,-11.08009f,-9.06954f,-7.02398f,-4.99357f,-3.02836f,-1.17413f,0.53514f,2.08423f,3.47831f,4.73777f,5.88765f,6.94645f,7.91880f,8.79384f,9.54832f,10.15131f,10.56789f,10.76100f,10.69226f,10.32337f,9.61907f,8.55160f,7.10615f,5.28689f,3.12374f,0.67999f,-1.94104f,-4.59536f,-7.10950f,-9.30500f,-11.02932f,-12.18080f,-12.71873f,-12.65788f,-12.05373f,-10.98552f,-9.54170f,-7.80971f,-5.86969f,-3.79108f,-1.63131f,0.56380f,2.75808f},
|
||||
{2.18511f,4.50396f,6.78193f,8.98511f,11.07254f,12.99554f,14.69879f,16.12226f,17.20311f,17.87639f,18.07415f,17.72311f,16.74237f,15.04512f,12.55069f,9.21484f,5.08111f,0.33741f,-4.66447f,-9.46997f,-13.65027f,-16.91840f,-19.16613f,-20.42842f,-20.82260f,-20.49754f,-19.60237f,-18.27083f,-16.61550f,-14.72741f,-12.67917f,-10.52984f,-8.33033f,-6.12736f,-3.96470f,-1.88120f,0.09329f,1.94189f,3.66217f,5.26356f,6.76108f,8.16726f,9.48488f,10.70242f,11.79287f,12.71521f,13.41758f,13.84105f,13.92351f,13.60388f,12.82695f,11.54972f,9.74994f,7.43733f,4.66650f,1.54813f,-1.74846f,-5.00873f,-8.00386f,-10.53041f,-12.44318f,-13.66949f,-14.20444f,-14.09440f,-13.41755f,-12.26697f,-10.73807f,-8.92042f,-6.89286f,-4.72127f,-2.45833f,-0.14526f,2.18511f},
|
||||
{1.72053f,4.17297f,6.59438f,8.95134f,11.20364f,13.30308f,15.19344f,16.81081f,18.08389f,18.93317f,19.26896f,18.98863f,17.97530f,16.10272f,13.25527f,9.37362f,4.52871f,-1.00461f,-6.74269f,-12.11065f,-16.62809f,-20.03220f,-22.27725f,-23.45977f,-23.73964f,-23.28809f,-22.26206f,-20.79488f,-18.99544f,-16.95096f,-14.73125f,-12.39338f,-9.98585f,-7.55149f,-5.12863f,-2.75055f,-0.44367f,1.77430f,3.89494f,5.91760f,7.84559f,9.68075f,11.41785f,13.03988f,14.51531f,15.79744f,16.82551f,17.52703f,17.82085f,17.62109f,16.84267f,15.41052f,13.27453f,10.43204f,6.95518f,3.01260f,-1.13218f,-5.15905f,-8.75773f,-11.69139f,-13.82848f,-15.13789f,-15.66248f,-15.48890f,-14.72326f,-13.47499f,-11.84717f,-9.93137f,-7.80527f,-5.53214f,-3.16198f,-0.73388f,1.72053f},
|
||||
{1.25648f,3.83346f,6.38361f,8.87461f,11.26836f,13.51909f,15.57188f,17.36120f,18.80886f,19.82102f,20.28386f,20.05887f,18.98034f,16.86251f,13.53001f,8.89097f,3.05679f,-3.54903f,-10.22329f,-16.21814f,-21.01624f,-24.43081f,-26.52507f,-27.48288f,-27.51630f,-26.82066f,-25.55979f,-23.86524f,-21.84075f,-19.56791f,-17.11151f,-14.52415f,-11.84978f,-9.12619f,-6.38628f,-3.65838f,-0.96593f,1.67288f,4.24497f,6.74115f,9.15377f,11.47351f,13.68563f,15.76654f,17.68097f,19.38009f,20.80043f,21.86327f,22.47451f,22.52518f,21.89433f,20.45753f,18.10673f,14.78776f,10.55570f,5.62879f,0.39675f,-4.65483f,-9.08010f,-12.58457f,-15.05374f,-16.51320f,-17.06846f,-16.85678f,-16.01828f,-14.68187f,-12.95989f,-10.94687f,-8.72027f,-6.34224f,-3.86191f,-1.31827f,1.25648f},
|
||||
{0.61274f,3.30609f,5.97339f,8.58191f,11.09408f,13.46503f,15.63979f,17.55005f,19.10974f,20.20899f,20.70620f,20.41900f,19.11786f,16.53390f,12.40662f,6.61050f,-0.63393f,-8.60491f,-16.24674f,-22.64559f,-27.36876f,-30.42378f,-32.04157f,-32.50592f,-32.07420f,-30.95517f,-29.31063f,-27.26407f,-24.90971f,-22.32016f,-19.55232f,-16.65182f,-13.65621f,-10.59718f,-7.50200f,-4.39430f,-1.29461f,1.77927f,4.81167f,7.78814f,10.69402f,13.51268f,16.22331f,18.79876f,21.20313f,23.38945f,25.29705f,26.84843f,27.94548f,28.46508f,28.25526f,27.13565f,24.91066f,21.41082f,16.57999f,10.60085f,3.97961f,-2.54106f,-8.24894f,-12.70524f,-15.79057f,-17.60170f,-18.32929f,-18.17960f,-17.33926f,-15.96496f,-14.18379f,-12.09725f,-9.78580f,-7.31305f,-4.72954f,-2.07615f,0.61273f},
|
||||
{-0.51780f,2.25318f,4.99425f,7.66865f,10.23485f,12.64332f,14.83254f,16.72371f,18.21347f,19.16381f,19.38869f,18.63855f,16.59029f,12.86697f,7.14422f,-0.58466f,-9.65920f,-18.74956f,-26.50752f,-32.23849f,-35.92738f,-37.89259f,-38.51301f,-38.11560f,-36.95302f,-35.21298f,-33.03368f,-30.51738f,-27.74077f,-24.76235f,-21.62771f,-18.37317f,-15.02848f,-11.61858f,-8.16494f,-4.68647f,-1.20023f,2.27799f,5.73306f,9.14986f,12.51243f,15.80303f,19.00093f,22.08101f,25.01199f,27.75429f,30.25706f,32.45424f,34.25895f,35.55571f,36.19006f,35.95632f,34.58787f,31.76497f,27.17577f,20.68735f,12.62891f,3.95837f,-4.05513f,-10.47137f,-14.98139f,-17.73202f,-19.04365f,-19.24250f,-18.60128f,-17.33187f,-15.59484f,-13.51153f,-11.17436f,-8.65479f,-6.00927f,-3.28385f,-0.51781f},
|
||||
{-2.94630f,-0.27015f,2.35392f,4.87475f,7.23381f,9.35996f,11.16265f,12.52250f,13.27822f,13.20942f,12.01747f,9.31709f,4.67824f,-2.19503f,-11.07895f,-20.88160f,-29.97238f,-37.12710f,-41.99746f,-44.82656f,-46.03905f,-46.03089f,-45.11248f,-43.51276f,-41.39774f,-38.88807f,-36.07244f,-33.01710f,-29.77243f,-26.37748f,-22.86313f,-19.25438f,-15.57188f,-11.83313f,-8.05336f,-4.24613f,-0.42389f,3.40158f,7.21877f,11.01604f,14.78119f,18.50092f,22.16027f,25.74181f,29.22467f,32.58313f,35.78478f,38.78779f,41.53690f,43.95751f,45.94660f,47.35884f,47.98567f,47.52511f,45.54571f,41.47140f,34.68705f,24.97739f,13.30733f,1.91060f,-7.18982f,-13.36551f,-16.99104f,-18.69892f,-19.03825f,-18.41248f,-17.10439f,-15.31181f,-13.17571f,-10.79953f,-8.26212f,-5.62654f,-2.94631f},
|
||||
{-15.37669f,-14.26728f,-13.44233f,-13.07088f,-13.34672f,-14.49663f,-16.77455f,-20.42235f,-25.56851f,-32.05942f,-39.32137f,-46.45545f,-52.60312f,-57.27376f,-60.37929f,-62.07479f,-62.59922f,-62.18728f,-61.03725f,-59.30634f,-57.11599f,-54.55931f,-51.70786f,-48.61705f,-45.33014f,-41.88134f,-38.29801f,-34.60230f,-30.81233f,-26.94317f,-23.00747f,-19.01601f,-14.97808f,-10.90183f,-6.79450f,-2.66261f,1.48783f,5.65122f,9.82224f,13.99568f,18.16641f,22.32918f,26.47854f,30.60867f,34.71317f,38.78489f,42.81557f,46.79548f,50.71283f,54.55307f,58.29770f,61.92271f,65.39604f,68.67369f,71.69330f,74.36332f,76.54363f,78.00924f,78.37835f,76.96295f,72.45838f,62.44065f,43.87018f,19.37226f,-0.18356f,-11.16707f,-16.48422f,-18.69494f,-19.20397f,-18.76390f,-17.80785f,-16.61220f,-15.37669f},
|
||||
{-172.49255f,-167.49255f,-162.49255f,-157.49255f,-152.49255f,-147.49255f,-142.49256f,-137.49255f,-132.49255f,-127.49255f,-122.49255f,-117.49255f,-112.49255f,-107.49255f,-102.49255f,-97.49255f,-92.49255f,-87.49255f,-82.49255f,-77.49255f,-72.49256f,-67.49255f,-62.49256f,-57.49255f,-52.49256f,-47.49255f,-42.49255f,-37.49255f,-32.49255f,-27.49256f,-22.49255f,-17.49256f,-12.49255f,-7.49256f,-2.49256f,2.50744f,7.50745f,12.50745f,17.50744f,22.50744f,27.50744f,32.50744f,37.50744f,42.50744f,47.50744f,52.50745f,57.50744f,62.50744f,67.50744f,72.50744f,77.50744f,82.50744f,87.50744f,92.50744f,97.50744f,102.50744f,107.50744f,112.50744f,117.50744f,122.50744f,127.50744f,132.50744f,137.50744f,142.50744f,147.50744f,152.50744f,157.50744f,162.50744f,167.50744f,172.50744f,177.50744f,-177.49256f,-172.49256f}
|
||||
{148.71375f,143.71375f,138.71375f,133.71375f,128.71375f,123.71375f,118.71375f,113.71375f,108.71375f,103.71375f,98.71375f,93.71375f,88.71375f,83.71375f,78.71375f,73.71375f,68.71375f,63.71375f,58.71375f,53.71376f,48.71375f,43.71376f,38.71375f,33.71376f,28.71376f,23.71376f,18.71376f,13.71376f,8.71376f,3.71376f,-1.28624f,-6.28624f,-11.28624f,-16.28624f,-21.28624f,-26.28624f,-31.28624f,-36.28624f,-41.28624f,-46.28624f,-51.28624f,-56.28624f,-61.28624f,-66.28624f,-71.28624f,-76.28624f,-81.28624f,-86.28624f,-91.28624f,-96.28624f,-101.28624f,-106.28624f,-111.28624f,-116.28624f,-121.28624f,-126.28624f,-131.28624f,-136.28624f,-141.28624f,-146.28624f,-151.28624f,-156.28624f,-161.28624f,-166.28624f,-171.28624f,-176.28624f,178.71376f,173.71376f,168.71376f,163.71376f,158.71376f,153.71376f,148.71376f},
|
||||
{141.16128f,135.52505f,129.97167f,124.50519f,119.12795f,113.84062f,108.64249f,103.53157f,98.50490f,93.55869f,88.68859f,83.88980f,79.15730f,74.48592f,69.87048f,65.30585f,60.78702f,56.30912f,51.86745f,47.45746f,43.07476f,38.71510f,34.37433f,30.04842f,25.73338f,21.42530f,17.12030f,12.81458f,8.50436f,4.18595f,-0.14426f,-4.48977f,-8.85394f,-13.23996f,-17.65085f,-22.08943f,-26.55832f,-31.05993f,-35.59653f,-40.17017f,-44.78283f,-49.43637f,-54.13263f,-58.87344f,-63.66066f,-68.49625f,-73.38227f,-78.32091f,-83.31446f,-88.36533f,-93.47597f,-98.64881f,-103.88621f,-109.19027f,-114.56274f,-120.00483f,-125.51701f,-131.09885f,-136.74877f,-142.46388f,-148.23982f,-154.07064f,-159.94875f,-165.86498f,-171.80869f,-177.76800f,176.26985f,170.31816f,164.39026f,158.49913f,152.65689f,146.87447f,141.16129f},
|
||||
{128.96600f,122.73245f,116.78390f,111.10934f,105.69171f,100.51024f,95.54217f,90.76419f,86.15338f,81.68786f,77.34732f,73.11319f,68.96888f,64.89979f,60.89334f,56.93885f,53.02745f,49.15191f,45.30637f,41.48615f,37.68741f,33.90686f,30.14144f,26.38806f,22.64330f,18.90324f,15.16327f,11.41811f,7.66179f,3.88779f,0.08925f,-3.74074f,-7.60894f,-11.52154f,-15.48402f,-19.50086f,-23.57543f,-27.70998f,-31.90568f,-36.16275f,-40.48071f,-44.85867f,-49.29563f,-53.79083f,-58.34414f,-62.95631f,-67.62932f,-72.36662f,-77.17337f,-82.05654f,-87.02512f,-92.09008f,-97.26445f,-102.56315f,-108.00280f,-113.60131f,-119.37726f,-125.34892f,-131.53288f,-137.94229f,-144.58448f,-151.45840f,-158.55185f,-165.83931f,-173.28085f,179.17717f,171.59912f,164.05512f,156.61483f,149.34132f,142.28622f,135.48691f,128.96600f},
|
||||
{110.05608f,104.00676f,98.51850f,93.50201f,88.87779f,84.57651f,80.53830f,76.71148f,73.05139f,69.51945f,66.08247f,62.71212f,59.38469f,56.08087f,52.78559f,49.48788f,46.18068f,42.86046f,39.52691f,36.18229f,32.83082f,29.47789f,26.12914f,22.78960f,19.46270f,16.14958f,12.84838f,9.55396f,6.25786f,2.94873f,-0.38703f,-3.76420f,-7.19765f,-10.70106f,-14.28592f,-17.96059f,-21.72986f,-25.59468f,-29.55243f,-33.59737f,-37.72145f,-41.91519f,-46.16874f,-50.47282f,-54.81963f,-59.20370f,-63.62248f,-68.07692f,-72.57189f,-77.11658f,-81.72488f,-86.41587f,-91.21439f,-96.15180f,-101.26700f,-106.60760f,-112.23120f,-118.20652f,-124.61375f,-131.54284f,-139.08775f,-147.33351f,-156.33284f,-166.07205f,-176.43450f,172.81718f,162.01566f,151.51707f,141.61638f,132.49498f,124.21762f,116.76206f,110.05608f},
|
||||
{85.84556f,81.60900f,77.86311f,74.49388f,71.41686f,68.56641f,65.88896f,63.33869f,60.87494f,58.46089f,56.06296f,53.65095f,51.19854f,48.68395f,46.09065f,43.40791f,40.63119f,37.76213f,34.80833f,31.78275f,28.70277f,25.58882f,22.46276f,19.34586f,16.25661f,13.20854f,10.20830f,7.25426f,4.33603f,1.43495f,-1.47438f,-4.42157f,-7.43740f,-10.55057f,-13.78480f,-17.15657f,-20.67369f,-24.33501f,-28.13095f,-32.04493f,-36.05535f,-40.13783f,-44.26752f,-48.42117f,-52.57881f,-56.72493f,-60.84935f,-64.94758f,-69.02105f,-73.07723f,-77.12976f,-81.19895f,-85.31261f,-89.50779f,-93.83350f,-98.35541f,-103.16313f,-108.38203f,-114.19195f,-120.85655f,-128.76652f,-138.48979f,-150.77406f,-166.30249f,175.12841f,155.54013f,137.81125f,123.43481f,112.25068f,103.50795f,96.50536f,90.73323f,85.84556f},
|
||||
{63.77561f,61.78257f,59.91905f,58.16938f,56.51989f,54.95616f,53.46135f,52.01493f,50.59209f,49.16368f,47.69703f,46.15756f,44.51100f,42.72604f,40.77691f,38.64554f,36.32320f,33.81138f,31.12211f,28.27762f,25.30946f,22.25670f,19.16353f,16.07572f,13.03650f,10.08184f,7.23584f,4.50700f,1.88604f,-0.65403f,-3.15531f,-5.67022f,-8.25512f,-10.96344f,-13.83947f,-16.91354f,-20.19917f,-23.69238f,-27.37309f,-31.20817f,-35.15574f,-39.16984f,-43.20497f,-47.21965f,-51.17892f,-55.05563f,-58.83077f,-62.49304f,-66.03805f,-69.46732f,-72.78724f,-76.00821f,-79.14401f,-82.21177f,-85.23267f,-88.23397f,-91.25326f,-94.34705f,-97.60893f,-101.21243f,-105.52887f,-111.53400f,-122.82976f,-163.39885f,111.91527f,90.30552f,82.20774f,77.36693f,73.78533f,70.83244f,68.25121f,65.92001f,63.77561f},
|
||||
{48.34848f,47.67367f,46.91629f,46.12057f,45.31791f,44.52906f,43.76502f,43.02688f,42.30501f,41.57827f,40.81415f,39.97046f,38.99882f,37.84951f,36.47679f,34.84380f,32.92644f,30.71591f,28.22023f,25.46480f,22.49202f,19.35983f,16.13860f,12.90611f,9.74055f,6.71198f,3.87339f,1.25272f,-1.15232f,-3.37547f,-5.47846f,-7.54305f,-9.66028f,-11.91847f,-14.39230f,-17.13405f,-20.16810f,-23.48899f,-27.06348f,-30.83611f,-34.73744f,-38.69304f,-42.63153f,-46.49031f,-50.21846f,-53.77726f,-57.13899f,-60.28489f,-63.20261f,-65.88351f,-68.31955f,-70.49968f,-72.40536f,-74.00485f,-75.24505f,-76.03845f,-76.23988f,-75.60048f,-73.67005f,-69.57627f,-61.51827f,-45.91356f,-19.25026f,9.92462f,28.87125f,38.94307f,44.27088f,47.10927f,48.54500f,49.13295f,49.18201f,48.87963f,48.34848f},
|
||||
{38.31594f,38.22846f,37.98400f,37.64033f,37.24305f,36.82794f,36.42228f,36.04435f,35.70113f,35.38487f,35.07016f,34.71314f,34.25405f,33.62318f,32.74893f,31.56629f,30.02428f,28.09159f,25.76050f,23.04952f,20.00475f,16.69971f,13.23237f,9.71849f,6.28081f,3.03473f,0.07294f,-2.54834f,-4.81841f,-6.77451f,-8.49682f,-10.09720f,-11.70396f,-13.44571f,-15.43627f,-17.76136f,-20.46775f,-23.55657f,-26.98332f,-30.66599f,-34.49975f,-38.37377f,-42.18553f,-45.84924f,-49.29833f,-52.48350f,-55.36877f,-57.92701f,-60.13574f,-61.97281f,-63.41134f,-64.41319f,-64.92039f,-64.84444f,-64.05279f,-62.35168f,-59.46471f,-55.01245f,-48.51990f,-39.53294f,-27.98132f,-14.72803f,-1.58152f,9.75501f,18.59994f,25.12406f,29.79955f,33.08425f,35.33493f,36.81302f,37.71073f,38.17369f,38.31594f},
|
||||
{31.52329f,31.69537f,31.68975f,31.56015f,31.35099f,31.10014f,30.84142f,30.60472f,30.41299f,30.27641f,30.18561f,30.10666f,29.98002f,29.72464f,29.24660f,28.45048f,27.25097f,25.58323f,23.41131f,20.73483f,17.59399f,14.07225f,10.29470f,6.41961f,2.62197f,-0.92940f,-4.09657f,-6.79308f,-8.99558f,-10.74450f,-12.13443f,-13.29783f,-14.38742f,-15.56144f,-16.97166f,-18.74930f,-20.98567f,-23.71123f,-26.88393f,-30.39617f,-34.09966f,-37.83718f,-41.46827f,-44.88178f,-47.99609f,-50.75244f,-53.10659f,-55.02195f,-56.46464f,-57.39907f,-57.78258f,-57.55789f,-56.64460f,-54.93278f,-52.28397f,-48.54626f,-43.59060f,-37.37199f,-30.00523f,-21.81688f,-13.31670f,-5.06949f,2.46468f,9.02228f,14.52873f,19.03412f,22.64555f,25.48177f,27.65270f,29.25587f,30.38009f,31.10931f,31.52329f},
|
||||
{26.58208f,26.87544f,26.99413f,26.98264f,26.87673f,26.70751f,26.50611f,26.30585f,26.13982f,26.03418f,25.99901f,26.01933f,26.04916f,26.01084f,25.80048f,25.29887f,24.38616f,22.95781f,20.93991f,18.30268f,15.07155f,11.33473f,7.24382f,3.00306f,-1.15555f,-5.00801f,-8.37531f,-11.15076f,-13.31072f,-14.90755f,-16.04892f,-16.87179f,-17.52279f,-18.15324f,-18.92596f,-20.01611f,-21.58708f,-23.74166f,-26.47642f,-29.67330f,-33.13651f,-36.65081f,-40.02863f,-43.12947f,-45.85598f,-48.13964f,-49.92715f,-51.17212f,-51.83159f,-51.86415f,-51.22659f,-49.86827f,-47.72728f,-44.73717f,-40.85252f,-36.09307f,-30.58679f,-24.57698f,-18.37180f,-12.26080f,-6.45453f,-1.07657f,3.81097f,8.18149f,12.03095f,15.37184f,18.22626f,20.61801f,22.56917f,24.10335f,25.25236f,26.06040f,26.58208f},
|
||||
{22.74988f,23.09309f,23.27877f,23.34267f,23.30955f,23.19896f,23.03255f,22.83856f,22.65127f,22.50540f,22.42674f,22.42133f,22.46530f,22.49800f,22.42068f,22.10290f,21.39702f,20.15931f,18.27399f,15.67649f,12.37330f,8.45594f,4.10402f,-0.42990f,-4.85746f,-8.90683f,-12.37302f,-15.14913f,-17.23114f,-18.69796f,-19.67429f,-20.28973f,-20.65327f,-20.86023f,-21.03032f,-21.34746f,-22.05376f,-23.37310f,-25.40371f,-28.06140f,-31.11698f,-34.29156f,-37.33965f,-40.08271f,-42.40122f,-44.21189f,-45.44948f,-46.05937f,-45.99825f,-45.23651f,-43.75680f,-41.54846f,-38.60572f,-34.94261f,-30.62903f,-25.82829f,-20.79584f,-15.81597f,-11.10920f,-6.77691f,-2.81520f,0.82829f,4.20106f,7.32279f,10.19057f,12.79340f,15.11990f,17.15713f,18.88930f,20.30354f,21.40063f,22.20240f,22.74988f},
|
||||
{19.65829f,20.00364f,20.21550f,20.32431f,20.34562f,20.28722f,20.15837f,19.97624f,19.76776f,19.56681f,19.40729f,19.31266f,19.28310f,19.28239f,19.22826f,18.99107f,18.40519f,17.29358f,15.50127f,12.93052f,9.57155f,5.52349f,0.99802f,-3.70420f,-8.24726f,-12.32950f,-15.74247f,-18.39946f,-20.32996f,-21.64605f,-22.49013f,-22.97932f,-23.17176f,-23.07988f,-22.73553f,-22.27589f,-21.98331f,-22.21329f,-23.22684f,-25.05017f,-27.47476f,-30.17740f,-32.84893f,-35.25546f,-37.23592f,-38.67659f,-39.49254f,-39.62380f,-39.04046f,-37.74622f,-35.77227f,-33.16296f,-29.96760f,-26.25619f,-22.15744f,-17.88420f,-13.70291f,-9.84679f,-6.43173f,-3.43622f,-0.74957f,1.75336f,4.15573f,6.48208f,8.71536f,10.82389f,12.77638f,14.54138f,16.08374f,17.37030f,18.38392f,19.13460f,19.65829f},
|
||||
{17.13031f,17.44349f,17.64681f,17.76982f,17.82332f,17.80683f,17.71820f,17.56105f,17.34915f,17.10790f,16.87173f,16.67586f,16.54170f,16.45793f,16.36248f,16.13309f,15.59422f,14.54397f,12.79633f,10.22872f,6.82393f,2.69733f,-1.90283f,-6.63317f,-11.12800f,-15.08104f,-18.30248f,-20.73636f,-22.44321f,-23.55794f,-24.22997f,-24.55976f,-24.56007f,-24.17195f,-23.34363f,-22.14380f,-20.84224f,-19.87231f,-19.65161f,-20.37457f,-21.94030f,-24.04727f,-26.34335f,-28.52268f,-30.35031f,-31.65295f,-32.31015f,-32.25585f,-31.48284f,-30.03820f,-28.00225f,-25.45845f,-22.47813f,-19.14088f,-15.58046f,-12.00929f,-8.67715f,-5.77655f,-3.36361f,-1.35134f,0.42850f,2.14052f,3.88387f,5.67732f,7.48517f,9.25556f,10.94202f,12.50214f,13.88978f,15.05916f,15.98150f,16.66013f,17.13031f},
|
||||
{15.07334f,15.33155f,15.49754f,15.60432f,15.66336f,15.67102f,15.61695f,15.49150f,15.29284f,15.03382f,14.74485f,14.46814f,14.24123f,14.07260f,13.91658f,13.65782f,13.11540f,12.07188f,10.32260f,7.73336f,4.29209f,0.13935f,-4.43949f,-9.07075f,-13.38248f,-17.08788f,-20.02859f,-22.17542f,-23.60242f,-24.44495f,-24.84303f,-24.87942f,-24.54152f,-23.73958f,-22.38878f,-20.52393f,-18.38546f,-16.40402f,-15.05453f,-14.65743f,-15.26415f,-16.68425f,-18.59375f,-20.63808f,-22.49436f,-23.90322f,-24.68772f,-24.76460f,-24.14292f,-22.90270f,-21.15381f,-18.99201f,-16.48277f,-13.69125f,-10.73851f,-7.82897f,-5.20446f,-3.04297f,-1.37572f,-0.08149f,1.04480f,2.19641f,3.48347f,4.91626f,6.43904f,7.98001f,9.48001f,10.89001f,12.15800f,13.22987f,14.06809f,14.67074f,15.07334f},
|
||||
{13.42575f,13.61605f,13.72301f,13.78719f,13.82603f,13.83762f,13.80660f,13.71129f,13.53438f,13.27583f,12.96125f,12.63733f,12.35221f,12.12552f,11.91884f,11.61830f,11.03972f,9.96020f,8.17163f,5.54430f,2.08382f,-2.03919f,-6.50931f,-10.94146f,-14.98002f,-18.37193f,-20.98905f,-22.81359f,-23.91076f,-24.39616f,-24.39177f,-23.97385f,-23.13902f,-21.82189f,-19.96856f,-17.63018f,-15.02169f,-12.50331f,-10.48312f,-9.28955f,-9.07871f,-9.80768f,-11.26257f,-13.11685f,-15.00334f,-16.58758f,-17.62779f,-18.00693f,-17.72953f,-16.88468f,-15.58781f,-13.92833f,-11.95574f,-9.71745f,-7.32158f,-4.96667f,-2.89435f,-1.28341f,-0.15960f,0.61526f,1.27210f,2.02779f,3.00192f,4.19614f,5.53477f,6.92666f,8.30163f,9.60713f,10.78901f,11.78790f,12.55858f,13.09308f,13.42575f},
|
||||
{12.13669f,12.25476f,12.28894f,12.29140f,12.29038f,12.28945f,12.27016f,12.19965f,12.04613f,11.79876f,11.48024f,11.14123f,10.83528f,10.58359f,10.34420f,9.99822f,9.36000f,8.21183f,6.35819f,3.68945f,0.23830f,-3.79675f,-8.08503f,-12.25098f,-15.97026f,-19.02399f,-21.30154f,-22.77883f,-23.49794f,-23.54938f,-23.04478f,-22.07717f,-20.69063f,-18.88939f,-16.68840f,-14.17068f,-11.51117f,-8.95632f,-6.77927f,-5.23270f,-4.50283f,-4.66164f,-5.62900f,-7.17016f,-8.94406f,-10.59099f,-11.82454f,-12.48985f,-12.56891f,-12.13772f,-11.29923f,-10.12702f,-8.65320f,-6.90952f,-4.99184f,-3.09116f,-1.44819f,-0.24667f,0.48375f,0.88716f,1.21142f,1.69216f,2.45729f,3.50101f,4.72941f,6.03338f,7.33303f,8.57425f,9.70335f,10.65770f,11.38438f,11.86724f,12.13669f},
|
||||
{11.15928f,11.21033f,11.16771f,11.09915f,11.04790f,11.02567f,11.01172f,10.96205f,10.83144f,10.60058f,10.29159f,9.95895f,9.65729f,9.40151f,9.13805f,8.73901f,8.02028f,6.77926f,4.84668f,2.14508f,-1.26190f,-5.15643f,-9.21086f,-13.07598f,-16.46272f,-19.17624f,-21.10800f,-22.21782f,-22.52606f,-22.11044f,-21.09105f,-19.59856f,-17.74320f,-15.60916f,-13.27560f,-10.83861f,-8.41336f,-6.12550f,-4.11236f,-2.53335f,-1.56130f,-1.33265f,-1.87370f,-3.05220f,-4.59321f,-6.15870f,-7.45150f,-8.29229f,-8.63779f,-8.54155f,-8.08606f,-7.32631f,-6.27825f,-4.95930f,-3.45127f,-1.93223f,-0.63571f,0.25235f,0.69520f,0.83481f,0.92692f,1.21970f,1.84787f,2.80062f,3.96992f,5.23161f,6.49735f,7.71216f,8.82386f,9.76727f,10.48078f,10.93712f,11.15928f},
|
||||
{10.44423f,10.44611f,10.33573f,10.19941f,10.09875f,10.05562f,10.04752f,10.01951f,9.91371f,9.70348f,9.41069f,9.09206f,8.79983f,8.53862f,8.24094f,7.77066f,6.94960f,5.59777f,3.58094f,0.86010f,-2.47165f,-6.18845f,-9.98106f,-13.53497f,-16.59175f,-18.96829f,-20.54941f,-21.28199f,-21.18004f,-20.32900f,-18.87307f,-16.98335f,-14.82411f,-12.53622f,-10.23619f,-8.01414f,-5.92661f,-4.00180f,-2.27178f,-0.81674f,0.21955f,0.67368f,0.45063f,-0.40044f,-1.67530f,-3.07855f,-4.32633f,-5.23217f,-5.73569f,-5.87067f,-5.70103f,-5.26600f,-4.56836f,-3.61216f,-2.46262f,-1.27856f,-0.27832f,0.35623f,0.58181f,0.53240f,0.46232f,0.62466f,1.15896f,2.05347f,3.19271f,4.44260f,5.70804f,6.93276f,8.06536f,9.03739f,9.77680f,10.24180f,10.44423f},
|
||||
{9.93049f,9.91749f,9.76555f,9.58057f,9.44427f,9.39027f,9.39574f,9.39628f,9.32230f,9.13915f,8.86570f,8.55692f,8.25988f,7.96935f,7.60771f,7.03614f,6.08768f,4.60926f,2.50484f,-0.22578f,-3.46464f,-6.98695f,-10.50963f,-13.75296f,-16.48205f,-18.51924f,-19.74549f,-20.10854f,-19.63568f,-18.43555f,-16.67797f,-14.55808f,-12.26384f,-9.95914f,-7.77411f,-5.78945f,-4.02200f,-2.43618f,-0.99249f,0.28911f,1.29742f,1.86467f,1.85689f,1.26392f,0.23007f,-0.99378f,-2.14637f,-3.04480f,-3.62076f,-3.89605f,-3.92319f,-3.73235f,-3.31798f,-2.67278f,-1.84381f,-0.96579f,-0.23443f,0.17968f,0.22985f,0.03833f,-0.15072f,-0.08748f,0.37018f,1.21457f,2.33148f,3.58408f,4.87315f,6.14007f,7.33214f,8.37595f,9.18714f,9.70635f,9.93049f},
|
||||
{9.53685f,9.56155f,9.41472f,9.21930f,9.07622f,9.03188f,9.06591f,9.10786f,9.07821f,8.93247f,8.68107f,8.37142f,8.04307f,7.68445f,7.21572f,6.50372f,5.39821f,3.77463f,1.57380f,-1.16898f,-4.31549f,-7.64561f,-10.90195f,-13.83505f,-16.23017f,-17.91875f,-18.79050f,-18.81131f,-18.03542f,-16.59713f,-14.67999f,-12.47922f,-10.17727f,-7.93555f,-5.88502f,-4.10236f,-2.58696f,-1.26992f,-0.06806f,1.04248f,1.98226f,2.59262f,2.72143f,2.31876f,1.48172f,0.42166f,-0.62351f,-1.47824f,-2.07182f,-2.42079f,-2.57402f,-2.56021f,-2.37164f,-1.99317f,-1.45440f,-0.86359f,-0.38854f,-0.18172f,-0.28862f,-0.59997f,-0.88850f,-0.91503f,-0.53720f,0.24602f,1.33057f,2.58490f,3.90912f,5.24142f,6.52536f,7.68098f,8.61081f,9.23649f,9.53685f},
|
||||
{9.16257f,9.29288f,9.21812f,9.07098f,8.96697f,8.96473f,9.04983f,9.15096f,9.18186f,9.08656f,8.86120f,8.53931f,8.15098f,7.68257f,7.06055f,6.16590f,4.86982f,3.07647f,0.76034f,-2.01182f,-5.08366f,-8.23766f,-11.23637f,-13.85617f,-15.90527f,-17.23621f,-17.76409f,-17.48604f,-16.48613f,-14.91526f,-12.95342f,-10.77623f,-8.54293f,-6.39939f,-4.47204f,-2.83923f,-1.49962f,-0.37402f,0.64278f,1.60459f,2.46139f,3.07222f,3.28189f,3.01597f,2.33503f,1.41598f,0.47461f,-0.32184f,-0.90236f,-1.28173f,-1.51013f,-1.62084f,-1.61001f,-1.45961f,-1.18489f,-0.86820f,-0.64671f,-0.64928f,-0.91477f,-1.34524f,-1.73368f,-1.85674f,-1.57419f,-0.87349f,0.15815f,1.40130f,2.75900f,4.16595f,5.56028f,6.85518f,7.94178f,8.72436f,9.16257f},
|
||||
{8.70308f,9.01293f,9.09099f,9.06814f,9.06529f,9.14980f,9.31570f,9.49662f,9.60429f,9.57179f,9.37736f,9.03596f,8.56636f,7.95559f,7.14230f,6.02752f,4.50731f,2.51440f,0.05444f,-2.77673f,-5.80366f,-8.80612f,-11.56004f,-13.86593f,-15.56252f,-16.53801f,-16.74659f,-16.22172f,-15.07108f,-13.44839f,-11.51567f,-9.41877f,-7.28768f,-5.24881f,-3.42187f,-1.88923f,-0.65826f,0.34505f,1.23131f,2.07242f,2.84447f,3.43005f,3.68283f,3.51646f,2.96359f,2.16994f,1.32864f,0.59715f,0.04570f,-0.33931f,-0.61060f,-0.80883f,-0.93854f,-0.98434f,-0.95208f,-0.90126f,-0.93811f,-1.16396f,-1.60527f,-2.17116f,-2.67430f,-2.90944f,-2.74080f,-2.14421f,-1.18722f,0.02669f,1.40600f,2.88208f,4.38711f,5.82902f,7.09228f,8.06938f,8.70308f},
|
||||
{8.07910f,8.63437f,8.94649f,9.13100f,9.30140f,9.52640f,9.80802f,10.08928f,10.28574f,10.32355f,10.16382f,9.80161f,9.24277f,8.47460f,7.44914f,6.08931f,4.31735f,2.09468f,-0.54245f,-3.46872f,-6.48669f,-9.36815f,-11.89816f,-13.90256f,-15.25854f,-15.90052f,-15.82807f,-15.10845f,-13.86295f,-12.23655f,-10.36612f,-8.36652f,-6.34038f,-4.39537f,-2.64309f,-1.16897f,0.00759f,0.94632f,1.75097f,2.50123f,3.19535f,3.74321f,4.01692f,3.92913f,3.49197f,2.82141f,2.08491f,1.42613f,0.91270f,0.53298f,0.23373f,-0.03226f,-0.27992f,-0.50105f,-0.69777f,-0.91113f,-1.21788f,-1.68934f,-2.33399f,-3.06195f,-3.70180f,-4.06610f,-4.02558f,-3.54696f,-2.67944f,-1.51042f,-0.12537f,1.40393f,3.00423f,4.58122f,6.01941f,7.20807f,8.07910f},
|
||||
{7.26396f,8.10961f,8.72123f,9.18752f,9.60120f,10.02200f,10.45547f,10.85540f,11.14652f,11.25480f,11.12994f,10.74979f,10.10659f,9.18491f,7.94654f,6.33367f,4.29353f,1.81641f,-1.02967f,-4.08761f,-7.13470f,-9.93161f,-12.27143f,-14.00753f,-15.05974f,-15.41149f,-15.10575f,-14.23662f,-12.93022f,-11.31714f,-9.50934f,-7.59567f,-5.65699f,-3.78478f,-2.08109f,-0.63121f,0.53433f,1.45690f,2.22514f,2.91800f,3.55119f,4.06348f,4.35252f,4.33916f,4.02152f,3.48634f,2.87046f,2.29741f,1.82855f,1.45497f,1.12662f,0.79347f,0.43144f,0.03924f,-0.38599f,-0.87131f,-1.46615f,-2.21051f,-3.09012f,-4.00960f,-4.80816f,-5.31430f,-5.40722f,-5.04881f,-4.27434f,-3.15809f,-1.78064f,-0.21683f,1.45586f,3.14419f,4.73927f,6.13615f,7.26396f},
|
||||
{6.29123f,7.44500f,8.39319f,9.19168f,9.90249f,10.56618f,11.18447f,11.71936f,12.10748f,12.28139f,12.18749f,11.79243f,11.07602f,10.01654f,8.57927f,6.71978f,4.40676f,1.65872f,-1.42280f,-4.64610f,-7.76077f,-10.51563f,-12.71270f,-14.23388f,-15.04058f,-15.16057f,-14.67259f,-13.68936f,-12.33663f,-10.73073f,-8.96418f,-7.10768f,-5.22699f,-3.40024f,-1.71847f,-0.26284f,0.92835f,1.87797f,2.65515f,3.33139f,3.93472f,4.43176f,4.74967f,4.82427f,4.64509f,4.26998f,3.80006f,3.33130f,2.91362f,2.54032f,2.16816f,1.74949f,1.25497f,0.67494f,0.00416f,-0.77322f,-1.68133f,-2.72827f,-3.87345f,-5.01049f,-5.98415f,-6.63678f,-6.85804f,-6.61013f,-5.92048f,-4.85491f,-3.49126f,-1.90727f,-0.18309f,1.59189f,3.31993f,4.90850f,6.29123f},
|
||||
{5.23867f,6.69207f,7.98096f,9.12890f,10.16388f,11.10084f,11.93026f,12.61683f,13.10753f,13.34477f,13.27816f,12.86954f,12.08938f,10.90769f,9.28772f,7.19193f,4.60581f,1.57460f,-1.76537f,-5.18545f,-8.40636f,-11.16584f,-13.27621f,-14.64713f,-15.27661f,-15.22806f,-14.60613f,-13.53496f,-12.13783f,-10.52046f,-8.76327f,-6.92697f,-5.06834f,-3.25487f,-1.56574f,-0.07451f,1.17709f,2.19610f,3.03121f,3.74220f,4.36382f,4.88687f,5.26799f,5.46121f,5.45138f,5.26858f,4.97489f,4.63251f,4.27413f,3.89280f,3.45366f,2.91599f,2.25065f,1.44395f,0.49045f,-0.61431f,-1.86953f,-3.25098f,-4.68939f,-6.06361f,-7.22045f,-8.01491f,-8.34940f,-8.19177f,-7.56810f,-6.54093f,-5.18772f,-3.58877f,-1.82524f,0.01904f,1.85934f,3.61839f,5.23867f},
|
||||
{4.20023f,5.92435f,7.52839f,9.00951f,10.36522f,11.58437f,12.64184f,13.49869f,14.10693f,14.41661f,14.38193f,13.96328f,13.12442f,11.82711f,10.02961f,7.69701f,4.82829f,1.49452f,-2.13159f,-5.78232f,-9.14900f,-11.95997f,-14.03947f,-15.32340f,-15.84047f,-15.68065f,-14.96556f,-13.82518f,-12.37997f,-10.72916f,-8.94763f,-7.09253f,-5.21645f,-3.37886f,-1.64742f,-0.08611f,1.26380f,2.39776f,3.34606f,4.15489f,4.86044f,5.47137f,5.96939f,6.32597f,6.52334f,6.56643f,6.47870f,6.28566f,5.99769f,5.60289f,5.07284f,4.37551f,3.48687f,2.39552f,1.10161f,-0.38383f,-2.03260f,-3.78626f,-5.54497f,-7.17077f,-8.51111f,-9.43408f,-9.85790f,-9.76149f,-9.17579f,-8.16506f,-6.80855f,-5.18880f,-3.38664f,-1.47970f,0.45967f,2.36886f,4.20023f},
|
||||
{3.25875f,5.21276f,7.08623f,8.85856f,10.50518f,11.99398f,13.28448f,14.32972f,15.07994f,15.48625f,15.50292f,15.08681f,14.19433f,12.77840f,10.79106f,8.19870f,5.01368f,1.33552f,-2.62196f,-6.54765f,-10.10255f,-13.00815f,-15.10355f,-16.35092f,-16.80555f,-16.57726f,-15.79818f,-14.60030f,-13.10116f,-11.39637f,-9.55925f,-7.64717f,-5.71157f,-3.80630f,-1.98914f,-0.31439f,1.17969f,2.48131f,3.60617f,4.58709f,5.45700f,6.23432f,6.91783f,7.49182f,7.93641f,8.23575f,8.37947f,8.35793f,8.15604f,7.75064f,7.11370f,6.21911f,5.04989f,3.60290f,1.89188f,-0.04852f,-2.15583f,-4.33225f,-6.44411f,-8.33544f,-9.85511f,-10.88692f,-11.36938f,-11.29829f,-10.71542f,-9.69119f,-8.30864f,-6.65229f,-4.80183f,-2.82909f,-0.79611f,1.24622f,3.25875f},
|
||||
{2.46414f,4.60541f,6.69578f,8.70538f,10.59741f,12.32704f,13.84257f,15.08824f,16.00730f,16.54429f,16.64542f,16.25686f,15.32196f,13.78047f,11.57525f,8.67319f,5.10336f,1.00219f,-3.36321f,-7.62791f,-11.41932f,-14.45596f,-16.59807f,-17.83776f,-18.25655f,-17.98101f,-17.15023f,-15.89612f,-14.33300f,-12.55382f,-10.63162f,-8.62500f,-6.58539f,-4.56287f,-2.60750f,-0.76527f,0.92951f,2.46125f,3.83498f,5.07131f,6.19601f,7.22871f,8.17536f,9.02626f,9.75875f,10.34167f,10.73888f,10.91125f,10.81786f,10.41789f,9.67425f,8.55870f,7.05777f,5.17910f,2.95795f,0.46409f,-2.19297f,-4.86503f,-7.37776f,-9.55559f,-11.25163f,-12.37089f,-12.87873f,-12.79451f,-12.17658f,-11.10540f,-9.66937f,-7.95484f,-6.04001f,-3.99179f,-1.86476f,0.29829f,2.46414f},
|
||||
{1.81787f,4.11151f,6.37281f,8.56892f,10.65900f,12.59357f,14.31561f,15.76284f,16.86984f,17.56926f,17.79139f,17.46235f,16.50241f,14.82820f,12.36491f,9.07585f,5.01124f,0.36062f,-4.53128f,-9.22453f,-13.30573f,-16.49725f,-18.69244f,-19.92268f,-20.29999f,-19.96836f,-19.07311f,-17.74541f,-16.09612f,-14.21527f,-12.17487f,-10.03377f,-7.84286f,-5.64906f,-3.49654f,-1.42467f,0.53607f,2.36825f,4.06914f,5.64820f,7.12091f,8.50065f,9.79119f,10.98189f,12.04619f,12.94289f,13.61920f,14.01451f,14.06458f,13.70605f,12.88190f,11.54849f,9.68483f,7.30437f,4.46803f,1.29440f,-2.03975f,-5.31545f,-8.30425f,-10.80772f,-12.68821f,-13.88085f,-14.38698f,-14.25713f,-13.57164f,-12.42415f,-10.90943f,-9.11552f,-7.11904f,-4.98316f,-2.75764f,-0.48063f,1.81787f},
|
||||
{1.26306f,3.68783f,6.08939f,8.43527f,10.68547f,12.79136f,14.69561f,16.33293f,17.63042f,18.50727f,18.87319f,18.62619f,17.65191f,15.82908f,13.04948f,9.26202f,4.54222f,-0.84044f,-6.42049f,-11.64718f,-16.05773f,-19.39377f,-21.60387f,-22.77518f,-23.05891f,-22.61981f,-21.61051f,-20.16166f,-18.38055f,-16.35352f,-14.15000f,-11.82701f,-9.43322f,-7.01188f,-4.60192f,-2.23729f,0.05486f,2.25618f,4.35781f,6.35894f,8.26302f,10.07238f,11.78233f,13.37639f,14.82328f,16.07608f,17.07323f,17.74080f,17.99570f,17.74975f,16.91580f,15.41754f,13.20562f,10.28128f,6.72432f,2.71389f,-1.47644f,-5.52127f,-9.11219f,-12.02013f,-14.12352f,-15.40009f,-15.89892f,-15.71012f,-14.94115f,-13.70131f,-12.09256f,-10.20468f,-8.11301f,-5.87824f,-3.54760f,-1.15747f,1.26305f},
|
||||
{0.67537f,3.22262f,5.74929f,8.22388f,10.60865f,12.85774f,14.91584f,16.71688f,18.18234f,19.21858f,19.71317f,19.53085f,18.51209f,16.48084f,13.27449f,8.81245f,3.20556f,-3.14663f,-9.58532f,-15.40342f,-20.09796f,-23.47144f,-25.56679f,-26.54966f,-26.61954f,-25.96427f,-24.74351f,-23.08676f,-21.09682f,-18.85497f,-16.42611f,-13.86313f,-11.21048f,-8.50655f,-5.78492f,-3.07465f,-0.39990f,2.22051f,4.77299f,7.24805f,9.63797f,11.93349f,14.12006f,16.17423f,18.06069f,19.73025f,21.11858f,22.14556f,22.71500f,22.71530f,22.02246f,20.50928f,18.06653f,14.64266f,10.30142f,5.27599f,-0.02743f,-5.11359f,-9.53886f,-13.02021f,-15.45680f,-16.88509f,-17.41720f,-17.19345f,-16.35472f,-15.02931f,-13.32815f,-11.34388f,-9.15180f,-6.81173f,-4.37046f,-1.86471f,0.67537f},
|
||||
{-0.15875f,2.50344f,5.14336f,7.72898f,10.22321f,12.58144f,14.74896f,16.65790f,18.22328f,19.33758f,19.86384f,19.62812f,18.41511f,15.97751f,12.08153f,6.62021f,-0.20406f,-7.74571f,-15.05019f,-21.25808f,-25.92189f,-29.00236f,-30.68798f,-31.23555f,-30.88824f,-29.84832f,-28.27518f,-26.29182f,-23.99286f,-21.45165f,-18.72595f,-15.86225f,-12.89895f,-9.86859f,-6.79920f,-3.71519f,-0.63775f,2.41472f,5.42607f,8.38149f,11.26609f,14.06307f,16.75154f,19.30418f,21.68486f,23.84608f,25.72625f,27.24642f,28.30621f,28.77920f,28.50884f,27.30893f,24.97756f,21.34123f,16.34777f,10.19834f,3.43076f,-3.18381f,-8.92663f,-13.37432f,-16.42989f,-18.20765f,-18.90828f,-18.74232f,-17.89743f,-16.52958f,-14.76440f,-12.70156f,-10.41958f,-7.98011f,-5.43179f,-2.81372f,-0.15875f},
|
||||
{-1.63032f,1.11029f,3.82094f,6.46559f,9.00335f,11.38544f,13.55140f,15.42433f,16.90438f,17.86001f,18.11697f,17.44644f,15.55989f,12.13112f,6.89017f,-0.16134f,-8.47479f,-16.93478f,-24.34263f,-29.98789f,-33.75357f,-35.86680f,-36.65310f,-36.41467f,-35.39499f,-33.77977f,-31.70817f,-29.28441f,-26.58730f,-23.67731f,-20.60172f,-17.39837f,-14.09823f,-10.72734f,-7.30807f,-3.86013f,-0.40122f,3.05229f,6.48483f,9.88092f,13.22434f,16.49713f,19.67838f,22.74279f,25.65881f,28.38645f,30.87416f,33.05473f,34.83933f,36.10925f,36.70468f,36.41120f,34.94849f,31.97721f,27.16400f,20.36917f,11.95980f,2.98196f,-5.21787f,-11.69432f,-16.18472f,-18.88347f,-20.13979f,-20.29288f,-19.61962f,-18.33201f,-16.58917f,-14.51046f,-12.18627f,-9.68615f,-7.06485f,-4.36690f,-1.63032f},
|
||||
{-4.86319f,-2.20478f,0.39439f,2.88476f,5.20973f,7.30099f,9.07253f,10.41286f,11.17466f,11.16232f,10.12017f,7.73276f,3.66648f,-2.29235f,-9.96969f,-18.56156f,-26.80682f,-33.61496f,-38.51216f,-41.55782f,-43.05047f,-43.32282f,-42.65996f,-41.28379f,-39.36094f,-37.01540f,-34.33981f,-31.40415f,-28.26203f,-24.95522f,-21.51685f,-17.97373f,-14.34803f,-10.65846f,-6.92123f,-3.15072f,0.63998f,4.43858f,8.23319f,12.01190f,15.76231f,19.47105f,23.12314f,26.70121f,30.18447f,33.54735f,36.75754f,39.77317f,42.53867f,44.97850f,46.98732f,48.41481f,49.04177f,48.54423f,46.44654f,42.09071f,34.74167f,24.11814f,11.39523f,-0.74689f,-10.10343f,-16.21566f,-19.65974f,-21.17408f,-21.34601f,-20.58745f,-19.17927f,-17.31461f,-15.12960f,-12.72348f,-10.17166f,-7.53446f,-4.86320f},
|
||||
{-21.36842f,-19.92091f,-18.77648f,-18.06134f,-17.91631f,-18.49888f,-19.97533f,-22.49436f,-26.13132f,-30.80427f,-36.19942f,-41.78482f,-46.95689f,-51.23862f,-54.38812f,-56.37687f,-57.30502f,-57.32362f,-56.58783f,-55.23597f,-53.38359f,-51.12423f,-48.53259f,-45.66813f,-42.57830f,-39.30114f,-35.86738f,-32.30208f,-28.62585f,-24.85583f,-21.00641f,-17.08980f,-13.11649f,-9.09560f,-5.03514f,-0.94226f,3.17657f,7.31543f,11.46878f,15.63138f,19.79812f,23.96398f,28.12382f,32.27235f,36.40387f,40.51216f,44.59015f,48.62967f,52.62092f,56.55187f,60.40730f,64.16736f,67.80545f,71.28454f,74.55128f,77.52522f,80.07874f,81.99602f,82.88239f,81.94095f,77.36018f,64.62758f,35.69825f,0.74425f,-17.99241f,-25.46521f,-28.05649f,-28.41076f,-27.64710f,-26.30771f,-24.69441f,-23.00033f,-21.36842f},
|
||||
{-168.15244f,-163.15244f,-158.15244f,-153.15244f,-148.15244f,-143.15244f,-138.15244f,-133.15244f,-128.15244f,-123.15244f,-118.15244f,-113.15244f,-108.15244f,-103.15244f,-98.15244f,-93.15244f,-88.15244f,-83.15244f,-78.15244f,-73.15244f,-68.15244f,-63.15244f,-58.15244f,-53.15244f,-48.15244f,-43.15244f,-38.15244f,-33.15244f,-28.15244f,-23.15244f,-18.15244f,-13.15244f,-8.15244f,-3.15244f,1.84756f,6.84756f,11.84756f,16.84756f,21.84756f,26.84756f,31.84756f,36.84756f,41.84756f,46.84756f,51.84756f,56.84756f,61.84756f,66.84756f,71.84756f,76.84756f,81.84756f,86.84756f,91.84756f,96.84756f,101.84756f,106.84756f,111.84756f,116.84756f,121.84756f,126.84756f,131.84756f,136.84756f,141.84756f,146.84756f,151.84756f,156.84756f,161.84756f,166.84756f,171.84756f,176.84756f,-178.15244f,-173.15244f,-168.15244f}
|
||||
};
|
||||
|
||||
|
||||
@@ -472,9 +472,9 @@ int MPU9250::readSensor() {
|
||||
recalibrateMag();
|
||||
}
|
||||
|
||||
_hx = (((float)(_hxcounts) * _magScaleX) - _hxb)*_hxs;
|
||||
_hy = (((float)(_hycounts) * _magScaleY) - _hyb)*_hys;
|
||||
_hz = (((float)(_hzcounts) * _magScaleZ) - _hzb)*_hzs;
|
||||
_hx = (_hrx - _hxb)*_hxs;
|
||||
_hy = (_hry - _hyb)*_hys;
|
||||
_hz = (_hrz - _hzb)*_hzs;
|
||||
_t = ((((float) _tcounts) - _tempOffset)/_tempScale) + _tempOffset;
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -154,7 +154,7 @@ class MPU9250{
|
||||
float _gx, _gy, _gz;
|
||||
float _hx, _hy, _hz;
|
||||
float _hrx, _hry, _hrz;
|
||||
float _hrax, _hray, _hraz;
|
||||
float _hrax = 0, _hray = 0, _hraz = 0;
|
||||
float _t;
|
||||
// wake on motion
|
||||
uint8_t _womThreshold;
|
||||
@@ -187,7 +187,7 @@ class MPU9250{
|
||||
uint8_t _coeff = 8;
|
||||
uint16_t _counter;
|
||||
float _framedelta, _delta;
|
||||
float _hxfilt, _hyfilt, _hzfilt;
|
||||
float _hxfilt = 0, _hyfilt = 0, _hzfilt = 0;
|
||||
float _hxmax, _hymax, _hzmax;
|
||||
float _hxmin, _hymin, _hzmin;
|
||||
float _hxb, _hyb, _hzb;
|
||||
|
||||
203
src/Power.cpp
203
src/Power.cpp
@@ -1,13 +1,110 @@
|
||||
#include "power.h"
|
||||
#include "utils.h"
|
||||
|
||||
#ifdef HAS_AXP20X
|
||||
#if defined(HAS_AXP20X) || defined(USE_XPOWERSLIB)
|
||||
bool pmu_irq = false;
|
||||
#endif
|
||||
bool Power::setup()
|
||||
{
|
||||
#ifdef HAS_AXP20X
|
||||
axp192Init();
|
||||
#endif
|
||||
|
||||
#ifdef USE_XPOWERSLIB
|
||||
#ifdef PMU_USE_WIRE1
|
||||
TwoWire &wire = Wire1;
|
||||
#else
|
||||
TwoWire &wire = Wire;
|
||||
#endif
|
||||
m_power = new XPowersPMU(wire);
|
||||
m_pmuFound = m_power->init();
|
||||
if(m_pmuFound)
|
||||
{
|
||||
DEBUG_MSG("PMU Found\n");
|
||||
m_power->setChargingLedMode(XPOWERS_CHG_LED_CTRL_CHG);
|
||||
|
||||
/**
|
||||
* gnss module power channel
|
||||
* The default ALDO4 is off, you need to turn on the GNSS power first, otherwise it will be invalid during
|
||||
* initialization
|
||||
*/
|
||||
m_power->setPowerChannelVoltage(XPOWERS_ALDO4, 3300);
|
||||
m_power->enablePowerOutput(XPOWERS_ALDO4);
|
||||
|
||||
// lora radio power channel
|
||||
m_power->setPowerChannelVoltage(XPOWERS_ALDO3, 3300);
|
||||
m_power->enablePowerOutput(XPOWERS_ALDO3);
|
||||
|
||||
// m.2 interface
|
||||
m_power->setPowerChannelVoltage(XPOWERS_DCDC3, 3300);
|
||||
m_power->enablePowerOutput(XPOWERS_DCDC3);
|
||||
|
||||
/**
|
||||
* ALDO2 cannot be turned off.
|
||||
* It is a necessary condition for sensor communication.
|
||||
* It must be turned on to properly access the sensor and screen
|
||||
* It is also responsible for the power supply of PCF8563
|
||||
*/
|
||||
m_power->setPowerChannelVoltage(XPOWERS_ALDO2, 3300);
|
||||
m_power->enablePowerOutput(XPOWERS_ALDO2);
|
||||
|
||||
// 6-axis , magnetometer ,bme280 , oled screen power channel
|
||||
m_power->setPowerChannelVoltage(XPOWERS_ALDO1, 3300);
|
||||
m_power->enablePowerOutput(XPOWERS_ALDO1);
|
||||
|
||||
// sdcard power channel
|
||||
m_power->setPowerChannelVoltage(XPOWERS_BLDO1, 3300);
|
||||
m_power->enablePowerOutput(XPOWERS_BLDO1);
|
||||
|
||||
// not use channel
|
||||
m_power->disablePowerOutput(XPOWERS_DCDC2); // not elicited
|
||||
m_power->disablePowerOutput(XPOWERS_DCDC5); // not elicited
|
||||
m_power->disablePowerOutput(XPOWERS_DLDO1); // Invalid power channel, it does not exist
|
||||
m_power->disablePowerOutput(XPOWERS_DLDO2); // Invalid power channel, it does not exist
|
||||
m_power->disablePowerOutput(XPOWERS_VBACKUP);
|
||||
|
||||
m_power->setChargeTargetVoltage(XPOWERS_AXP2101_CHG_VOL_4V2);
|
||||
m_power->setChargerConstantCurr(XPOWERS_AXP2101_CHG_CUR_1000MA);
|
||||
|
||||
|
||||
m_power->disableIRQ(XPOWERS_AXP2101_ALL_IRQ);
|
||||
m_power->clearIrqStatus();
|
||||
|
||||
// TBeam1.1 /T-Beam S3-Core has no external TS detection,
|
||||
// it needs to be disabled, otherwise it will cause abnormal charging
|
||||
m_power->disableTSPinMeasure();
|
||||
|
||||
// PMU->enableSystemVoltageMeasure();
|
||||
m_power->enableVbusVoltageMeasure();
|
||||
m_power->enableBattVoltageMeasure();
|
||||
m_power->setPowerKeyPressOnTime(XPOWERS_POWERON_1S);
|
||||
m_power->setPowerKeyPressOffTime(XPOWERS_POWEROFF_6S);
|
||||
}
|
||||
else
|
||||
{
|
||||
DEBUG_MSG("PMU NOT Found\n");
|
||||
}
|
||||
#ifdef PMU_IRQ
|
||||
uint64_t pmuIrqMask = 0;
|
||||
|
||||
if (m_power->getChipModel() == XPOWERS_AXP192) {
|
||||
pmuIrqMask = XPOWERS_AXP192_VBUS_INSERT_IRQ | XPOWERS_AXP192_BAT_INSERT_IRQ | XPOWERS_AXP192_PKEY_SHORT_IRQ | XPOWERS_AXP192_PKEY_LONG_IRQ;
|
||||
} else if (m_power->getChipModel() == XPOWERS_AXP2101) {
|
||||
pmuIrqMask = XPOWERS_AXP2101_VBUS_INSERT_IRQ | XPOWERS_AXP2101_BAT_INSERT_IRQ | XPOWERS_AXP2101_PKEY_SHORT_IRQ | XPOWERS_AXP2101_PKEY_LONG_IRQ;
|
||||
}
|
||||
|
||||
pinMode(PMU_IRQ, INPUT);
|
||||
attachInterrupt(
|
||||
PMU_IRQ, [] { pmu_irq = true; }, FALLING);
|
||||
|
||||
// we do not look for AXPXXX_CHARGING_FINISHED_IRQ & AXPXXX_CHARGING_IRQ because it occurs repeatedly while there is
|
||||
// no battery also it could cause inadvertent waking from light sleep just because the battery filled
|
||||
// we don't look for AXPXXX_BATT_REMOVED_IRQ because it occurs repeatedly while no battery installed
|
||||
// we don't look at AXPXXX_VBUS_REMOVED_IRQ because we don't have anything hooked to vbus
|
||||
m_power->enableIRQ(pmuIrqMask);
|
||||
|
||||
m_power->clearIrqStatus();
|
||||
#endif
|
||||
#endif
|
||||
concurrency::PeriodicTask::setup(); // We don't start our periodic task unless we actually found the device
|
||||
setPeriod(1);
|
||||
@@ -16,12 +113,22 @@ bool Power::setup()
|
||||
}
|
||||
#ifdef BATTERY_PIN
|
||||
static float read_battery() {
|
||||
#ifdef ADC_CTRL
|
||||
digitalWrite(ADC_CTRL, HIGH);
|
||||
delay(2);
|
||||
#endif
|
||||
uint16_t v = analogRead(BATTERY_PIN);
|
||||
//float battery_voltage = (float)v/4095*2*3.3*1.1;
|
||||
float battery_voltage = (float)v*0.00246*1.19;
|
||||
|
||||
float battery_voltage = (float)v*BATTERY_M;
|
||||
#ifdef ADC_CTRL
|
||||
digitalWrite(ADC_CTRL, LOW);
|
||||
#endif
|
||||
return battery_voltage;
|
||||
}
|
||||
#else
|
||||
static float read_battery() {
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
/// Reads power status to powerStatus singleton.
|
||||
@@ -59,6 +166,36 @@ void Power::readPowerStatus()
|
||||
{
|
||||
//powerFSM.trigger(EVENT_LOW_BATTERY);
|
||||
}
|
||||
#elif defined(USE_XPOWERSLIB)
|
||||
bool hasBattery = m_power->isBatteryConnect();
|
||||
int batteryVoltageMv = 0;
|
||||
uint8_t batteryChargePercent = 0;
|
||||
if (hasBattery)
|
||||
{
|
||||
batteryVoltageMv = m_power->getBattVoltage();
|
||||
// If the AXP192 returns a valid battery percentage, use it
|
||||
if (m_power->getBatteryPercent() >= 0)
|
||||
{
|
||||
batteryChargePercent = m_power->getBatteryPercent();
|
||||
}
|
||||
else
|
||||
{
|
||||
// If the AXP192 returns a percentage less than 0, the feature is either not supported or there is an error
|
||||
// In that case, we compute an estimate of the charge percent based on maximum and minimum voltages defined in power.h
|
||||
batteryChargePercent = clamp((int)(((batteryVoltageMv - BAT_MILLIVOLTS_EMPTY) * 1e2) / (BAT_MILLIVOLTS_FULL - BAT_MILLIVOLTS_EMPTY)), 0, 100);
|
||||
}
|
||||
}
|
||||
|
||||
// Notify any status instances that are observing us
|
||||
const PowerStatus powerStatus = PowerStatus(hasBattery, m_power->isVbusIn(), m_power->isCharging(), batteryVoltageMv, batteryChargePercent);
|
||||
newStatus.notifyObservers(&powerStatus);
|
||||
|
||||
// If we have a battery at all and it is less than 10% full, force deep sleep
|
||||
if (powerStatus.getHasBattery() && !powerStatus.getHasUSB() &&
|
||||
m_power->getBattVoltage() < MIN_BAT_MILLIVOLTS)
|
||||
{
|
||||
//powerFSM.trigger(EVENT_LOW_BATTERY);
|
||||
}
|
||||
#else
|
||||
int batteryVoltageMv = read_battery()*1000;
|
||||
uint8_t batteryChargePercent = clamp((int)(((batteryVoltageMv - BAT_MILLIVOLTS_EMPTY) * 1e2) / (BAT_MILLIVOLTS_FULL - BAT_MILLIVOLTS_EMPTY)), 0, 100);
|
||||
@@ -78,6 +215,10 @@ void Power::doTask()
|
||||
|
||||
void Power::gpsOff()
|
||||
{
|
||||
#ifdef USE_XPOWERSLIB
|
||||
m_power->disablePowerOutput(XPOWERS_ALDO4);
|
||||
#endif
|
||||
|
||||
#ifdef HAS_AXP20X
|
||||
axp.setPowerOutPut(AXP192_LDO3, AXP202_OFF);
|
||||
#endif
|
||||
@@ -85,6 +226,9 @@ void Power::gpsOff()
|
||||
|
||||
void Power::shutdown()
|
||||
{
|
||||
#ifdef USE_XPOWERSLIB
|
||||
m_power->shutdown();
|
||||
#endif
|
||||
#ifdef HAS_AXP20X
|
||||
axp.shutdown();
|
||||
#endif
|
||||
@@ -92,6 +236,9 @@ void Power::shutdown()
|
||||
|
||||
void Power::gpsOn()
|
||||
{
|
||||
#ifdef USE_XPOWERSLIB
|
||||
m_power->enablePowerOutput(XPOWERS_ALDO4);
|
||||
#endif
|
||||
#ifdef HAS_AXP20X
|
||||
axp.setPowerOutPut(AXP192_LDO3, AXP202_ON);
|
||||
#endif
|
||||
@@ -232,7 +379,55 @@ int Power::loop()
|
||||
}
|
||||
#endif
|
||||
#else
|
||||
// readPowerStatus();
|
||||
#ifdef USE_XPOWERSLIB
|
||||
#ifdef PMU_IRQ
|
||||
if (pmu_irq)
|
||||
{
|
||||
pmu_irq = false;
|
||||
m_power->getIrqStatus();
|
||||
|
||||
DEBUG_MSG("pmu irq!\n");
|
||||
|
||||
if (m_power->isBatChargeStartIrq())
|
||||
{
|
||||
DEBUG_MSG("Battery start charging\n");
|
||||
}
|
||||
if (m_power->isBatChargeDoneIrq())
|
||||
{
|
||||
DEBUG_MSG("Battery fully charged\n");
|
||||
}
|
||||
if (m_power->isVbusRemoveIrq())
|
||||
{
|
||||
DEBUG_MSG("USB unplugged\n");
|
||||
}
|
||||
if (m_power->isBatInsertIrq())
|
||||
{
|
||||
DEBUG_MSG("USB plugged In\n");
|
||||
}
|
||||
if (m_power->isBatInsertIrq())
|
||||
{
|
||||
DEBUG_MSG("Battery inserted\n");
|
||||
}
|
||||
if (m_power->isBatRemoveIrq())
|
||||
{
|
||||
DEBUG_MSG("Battery removed\n");
|
||||
}
|
||||
if (m_power->isPekeyShortPressIrq())
|
||||
{
|
||||
DEBUG_MSG("PEK short button press\n");
|
||||
result |= 1;
|
||||
}
|
||||
if (m_power->isPekeyLongPressIrq())
|
||||
{
|
||||
DEBUG_MSG("PEK long button press\n");
|
||||
result |= 2;
|
||||
}
|
||||
|
||||
readPowerStatus();
|
||||
m_power->clearIrqStatus();
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -146,6 +146,7 @@ protected:
|
||||
lv_mcal_axis_s m_axisZ;
|
||||
lv_obj_t* m_headingLabel;
|
||||
lv_obj_t* m_autoButton;
|
||||
lv_obj_t* m_resetMMButton;
|
||||
virtual void internalInit();
|
||||
virtual void internalDeinit();
|
||||
lv_obj_t* lv_button_create(lv_obj_t* parent, const char* caption);
|
||||
@@ -756,10 +757,15 @@ void cLVGLScreenIMUCalibration::internalInit()
|
||||
|
||||
m_autoButton = lv_button_create(mainPage, "Auto");
|
||||
lv_btn_set_checkable(m_autoButton, true);
|
||||
lv_obj_set_pos(m_autoButton, 90, 100);
|
||||
lv_obj_set_pos(m_autoButton, 30, 100);
|
||||
lv_obj_set_size(m_autoButton, 60, 26);
|
||||
setEventHandler(m_autoButton);
|
||||
|
||||
m_resetMMButton = lv_button_create(mainPage, "Reset M/M");
|
||||
lv_obj_set_pos(m_resetMMButton, 110, 100);
|
||||
lv_obj_set_size(m_resetMMButton, 100, 26);
|
||||
setEventHandler(m_resetMMButton);
|
||||
|
||||
// lv_obj_t* s0Button = lv_button_create(mainPage, "0°");
|
||||
// lv_obj_set_pos(s0Button, 160, 100);
|
||||
// lv_obj_set_size(s0Button, 60, 26);
|
||||
@@ -886,6 +892,11 @@ void cLVGLScreenIMUCalibration::lvIScreenEvent(struct _lv_obj_t * obj, lv_event_
|
||||
global->getIMU()->setAutoMag(lv_obj_get_state(m_autoButton,LV_OBJ_PART_MAIN) & LV_STATE_CHECKED);
|
||||
}
|
||||
else
|
||||
if(obj==m_resetMMButton)
|
||||
{
|
||||
global->getIMU()->resetMM();
|
||||
}
|
||||
else
|
||||
if(obj==m_axisX.btnM)
|
||||
{
|
||||
global->getIMU()->adjustMagCalibrationBias(-MAG_ADJ_VAL,0);
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
#include "mapTiles.h"
|
||||
#include "atstrings.h"
|
||||
#include <vector>
|
||||
#include "concurrency/OSThread.h"
|
||||
|
||||
#define MAX_CONFIG_ID 0xFFFF
|
||||
#define U_METRIC 0
|
||||
@@ -376,6 +377,10 @@ protected:
|
||||
m_power->setup();
|
||||
m_power->setStatusHandler(m_powerStatus);
|
||||
m_powerStatus->observe(&m_power->newStatus);
|
||||
#ifdef ADC_CTRL
|
||||
digitalWrite(ADC_CTRL, LOW);
|
||||
pinMode(ADC_CTRL, OUTPUT);
|
||||
#endif
|
||||
}
|
||||
uint16_t m_lastPOIID;
|
||||
public:
|
||||
@@ -476,17 +481,24 @@ public:
|
||||
virtual void init()
|
||||
{
|
||||
initPower();
|
||||
concurrency::OSThread::setup();
|
||||
concurrency::hasBeenSetup = true;
|
||||
}
|
||||
|
||||
virtual void loop()
|
||||
{
|
||||
concurrency::periodicScheduler.loop();
|
||||
concurrency::mainController.runOrDelay();
|
||||
}
|
||||
|
||||
Power *getPower() {
|
||||
return m_power;
|
||||
}
|
||||
|
||||
PowerStatus *getPowerStatus() {
|
||||
return m_powerStatus;
|
||||
}
|
||||
|
||||
atMainConfig &getConfig()
|
||||
{
|
||||
return m_config;
|
||||
|
||||
157
src/atracker.cpp
157
src/atracker.cpp
@@ -5,8 +5,13 @@
|
||||
#include "radio/LoraDevSX1262.h"
|
||||
#include "dwm1000/DW1000Ng.hpp"
|
||||
#include "progCommon.h"
|
||||
#include "gps/GenericGPS.h"
|
||||
#ifdef USE_SCREEN_EVE
|
||||
#include "atScreenEVE.h"
|
||||
#elif defined(USE_SCREEN_TFT_ESPI)
|
||||
#include "atScreenTFTeSPI.h"
|
||||
#elif defined(USE_SCREEN_LCD_GFX)
|
||||
#include "atScreenLCDGfx.h"
|
||||
#else
|
||||
#include "atscreendummy.h"
|
||||
#endif
|
||||
@@ -105,8 +110,12 @@ cAirsoftTracker::cAirsoftTracker():m_loraPackets(20),m_loraPacketsToSend(20),m_s
|
||||
m_core0ThreadReady = false;
|
||||
m_loraThread = NULL;
|
||||
m_imu = NULL;
|
||||
#ifdef HAS_EXPANDER
|
||||
m_expander = NULL;
|
||||
#endif
|
||||
#ifdef HAS_MOTOR
|
||||
m_vmotor = NULL;
|
||||
#endif
|
||||
memset(m_buttonsTime,0,sizeof(m_buttonsTime));
|
||||
m_buttonsIdx[0] = BTN1_PIN;
|
||||
m_buttonsIdx[1] = BTN2_PIN;
|
||||
@@ -137,11 +146,12 @@ void cAirsoftTracker::mainLoop()
|
||||
if(!m_displaySleep)
|
||||
m_screen->showShutdownScreen();
|
||||
m_config.saveConfig(MAIN_CONFIG_FILENAME);
|
||||
m_imu->shutdown();
|
||||
if(m_imu)
|
||||
m_imu->shutdown();
|
||||
DEBUG_MSG("Backup GNSS database\n");
|
||||
m_gps.backupDatabase(GNSS_DBD_FILENAME);
|
||||
m_gps->backupDatabase(GNSS_DBD_FILENAME);
|
||||
delay(10);
|
||||
m_gps.shutdown();
|
||||
m_gps->shutdown();
|
||||
delay(100);
|
||||
DEBUG_MSG("Shutdown\n");
|
||||
m_power->shutdown();
|
||||
@@ -172,7 +182,7 @@ void cAirsoftTracker::mainLoop()
|
||||
case SS_MAIN:
|
||||
{
|
||||
m_screen->loop();
|
||||
if((now-m_screenTimer)>=50 && !m_displaySleep)
|
||||
if((now-m_screenTimer)>=m_screenUpdateTime && !m_displaySleep)
|
||||
{
|
||||
processTimers(now);
|
||||
m_screenTimer = now;
|
||||
@@ -309,10 +319,12 @@ void cAirsoftTracker::mainLoop()
|
||||
}
|
||||
m_timer1 = now;
|
||||
#ifdef HAS_GPS
|
||||
m_gps.loop();
|
||||
m_gps->loop();
|
||||
#endif
|
||||
processExpander();
|
||||
#ifdef HAS_MOTOR
|
||||
m_vmotor->loop();
|
||||
#endif
|
||||
LOCK_DEBUG_PORT();
|
||||
while(SERIAL_PROG.available())
|
||||
{
|
||||
@@ -343,7 +355,9 @@ void cAirsoftTracker::mainLoop()
|
||||
if(byte==SERIAL_PROG_MODE_RESP)
|
||||
{
|
||||
SERIAL_PROG.flush();
|
||||
#ifndef UART_DO_NOT_UPDATE_BR
|
||||
SERIAL_PROG.updateBaudRate(921600);
|
||||
#endif
|
||||
if(m_displaySleep)
|
||||
{
|
||||
m_displaySleep = false;
|
||||
@@ -352,7 +366,9 @@ void cAirsoftTracker::mainLoop()
|
||||
}
|
||||
m_screen->showProgramMode();
|
||||
programMode();
|
||||
#ifndef UART_DO_NOT_UPDATE_BR
|
||||
SERIAL_PROG.updateBaudRate(115200);
|
||||
#endif
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -367,7 +383,8 @@ void cAirsoftTracker::mainLoop()
|
||||
UNLOCK_DEBUG_PORT();
|
||||
}
|
||||
|
||||
m_imu->loop();
|
||||
if(m_imu)
|
||||
m_imu->loop();
|
||||
|
||||
if(!isAGDUpdate())
|
||||
{
|
||||
@@ -466,11 +483,11 @@ void cAirsoftTracker::mainThread(cThreadFunction *thread)
|
||||
}
|
||||
#ifdef HAS_GPS
|
||||
if(canSleep)
|
||||
canSleep = m_gps.canSleep();
|
||||
canSleep = m_gps->canSleep();
|
||||
#endif
|
||||
if(canSleep)
|
||||
{
|
||||
m_gps.getSerial().flush();
|
||||
m_gps->getSerial().flush();
|
||||
digitalWrite(LED_PIN,HIGH);
|
||||
detachInterrupt(LORA_IRQ);
|
||||
gpio_wakeup_enable((gpio_num_t)LORA_IRQ,GPIO_INTR_HIGH_LEVEL);
|
||||
@@ -497,8 +514,15 @@ void cAirsoftTracker::mainThread(cThreadFunction *thread)
|
||||
void cAirsoftTracker::mainInit()
|
||||
{
|
||||
DEBUG_MSG("Main Thread on core %d\n", xPortGetCoreID());
|
||||
#ifdef I2C_SDA
|
||||
Wire.begin(I2C_SDA, I2C_SCL,400000);
|
||||
scanI2Cdevice(Wire);
|
||||
#endif
|
||||
|
||||
#ifdef I2C2_SDA
|
||||
Wire1.begin(I2C2_SDA, I2C2_SCL,400000);
|
||||
scanI2Cdevice(Wire1);
|
||||
#endif
|
||||
|
||||
atGlobal::init();
|
||||
|
||||
@@ -507,23 +531,20 @@ void cAirsoftTracker::mainInit()
|
||||
|
||||
DEBUG_MSG("Set TZ %s\n",m_config.timeZone.c_str());
|
||||
|
||||
#ifdef GPS_UC6580
|
||||
m_gps = new GenericGPS();
|
||||
#else
|
||||
m_gps = new UBloxGPS();
|
||||
#endif
|
||||
|
||||
m_power->gpsOff();
|
||||
delay(50);
|
||||
m_power->gpsOn();
|
||||
|
||||
sRFModuleConfig loraModule;
|
||||
|
||||
#ifdef USE_SX1262
|
||||
loraModule.cs = NSS_GPIO;
|
||||
loraModule.irq = SX1262_IRQ;
|
||||
loraModule.rst = SX1262_RST;
|
||||
loraModule.busy = SX1262_BUSY;
|
||||
#else
|
||||
loraModule.cs = LORA_CS;
|
||||
loraModule.irq = LORA_IRQ;
|
||||
loraModule.rst = LORA_RST;
|
||||
loraModule.busy = 0;
|
||||
#ifdef BUTTON1_PIN
|
||||
pinMode(BUTTON1_PIN, INPUT);
|
||||
#endif
|
||||
|
||||
#ifdef HAS_EXPANDER
|
||||
m_expander = new Adafruit_MCP23017();
|
||||
m_expander->begin(&Wire);
|
||||
for(int i=0; i<16; i++)
|
||||
@@ -555,18 +576,31 @@ void cAirsoftTracker::mainInit()
|
||||
m_expander->pinMode(VIBRO_PIN2,OUTPUT);
|
||||
m_expander->digitalWrite(VIBRO_PIN2,LOW);
|
||||
|
||||
#ifdef HAS_MOTOR
|
||||
m_vmotor = new cVMotor(VIBRO_PIN,VIBRO_PIN2, m_expander);
|
||||
vibration();
|
||||
#endif
|
||||
#endif
|
||||
|
||||
DEBUG_MSG("Starting screen\n");
|
||||
#ifdef USE_SCREEN_EVE
|
||||
m_screen = new cATScreenEVE(*this);
|
||||
#elif defined(USE_SCREEN_TFT_ESPI)
|
||||
m_screen = new cATScreenTFTeSPI(*this);
|
||||
m_screenUpdateTime = 250;
|
||||
#elif defined(USE_SCREEN_LCD_GFX)
|
||||
m_screen = new cATScreenLCDGfx(*this);
|
||||
m_screenUpdateTime = 250;
|
||||
#else
|
||||
m_screen = new cATScreenDummy(*this);
|
||||
#endif
|
||||
#ifdef HAS_EXPANDER
|
||||
m_expander->pinMode(DW1000_CS,OUTPUT);
|
||||
m_expander->digitalWrite(DW1000_CS,HIGH);
|
||||
#endif
|
||||
#ifdef HAS_MOTOR
|
||||
m_vmotor->loop();
|
||||
#endif
|
||||
#ifndef AD_NOSCREEN
|
||||
if(m_maps.getMaps().size())
|
||||
{
|
||||
@@ -582,7 +616,9 @@ void cAirsoftTracker::mainInit()
|
||||
else
|
||||
DEBUG_MSG("No maps\n");
|
||||
#endif
|
||||
#ifdef HAS_MOTOR
|
||||
m_vmotor->loop();
|
||||
#endif
|
||||
randomSeed(m_networkConfig.networkId*m_config.id*esp_random());
|
||||
m_screen->init();
|
||||
m_bootMsg1 = "Initializing DWM1000";
|
||||
@@ -605,18 +641,13 @@ void cAirsoftTracker::mainInit()
|
||||
DEBUG_MSG("DWM1000 NET %s\n",buffer);
|
||||
#endif
|
||||
|
||||
SPIClass *SPI2 = new SPIClass(VSPI);
|
||||
|
||||
SPI2->begin(SCK_GPIO, MISO_GPIO, MOSI_GPIO, NSS_GPIO);
|
||||
SPI2->setFrequency(4000000);
|
||||
|
||||
loraModule.spi = SPI2;
|
||||
loraModule.spiSettings = &spiSettings;
|
||||
|
||||
m_core0Thread = new cThreadFunction(*this, &cAirsoftTracker::core0Thread);
|
||||
m_core0Thread->start("Core0", 4096, tskIDLE_PRIORITY+10, 0);
|
||||
|
||||
#ifdef HAS_MOTOR
|
||||
m_vmotor->loop();
|
||||
#endif
|
||||
#ifdef I2C_SDA
|
||||
m_bootMsg1 = "Initializing IMU";
|
||||
updateBootScreen();
|
||||
|
||||
@@ -624,7 +655,8 @@ void cAirsoftTracker::mainInit()
|
||||
|
||||
if(m_imu->setup())
|
||||
m_imuStatus->observe(&m_imu->newStatus);
|
||||
|
||||
#endif
|
||||
#ifdef HAS_EXPANDER
|
||||
if(m_expander->digitalRead(BTN1_PIN)==LOW)
|
||||
{
|
||||
m_bootMsg1 = "Calibrating IMU";
|
||||
@@ -632,11 +664,14 @@ void cAirsoftTracker::mainInit()
|
||||
m_vmotor->stop();
|
||||
m_imu->calibrate();
|
||||
}
|
||||
#endif
|
||||
#ifdef HAS_MOTOR
|
||||
m_vmotor->loop();
|
||||
#endif
|
||||
m_bootMsg1 = "Initializing GNSS";
|
||||
updateBootScreen();
|
||||
#ifdef HAS_GPS
|
||||
if(!m_gps.setup())
|
||||
if(!m_gps->setup())
|
||||
{
|
||||
for(int i=0; i<5; i++)
|
||||
{
|
||||
@@ -647,14 +682,16 @@ void cAirsoftTracker::mainInit()
|
||||
delay(50+10*i);
|
||||
m_power->gpsOn();
|
||||
delay(1000+100*i);
|
||||
if(m_gps.setup())
|
||||
if(m_gps->setup())
|
||||
break;
|
||||
}
|
||||
}
|
||||
m_gps.startLock();
|
||||
m_gpsStatus->observe(&m_gps.newStatus);
|
||||
m_gps->startLock();
|
||||
m_gpsStatus->observe(&m_gps->newStatus);
|
||||
#endif
|
||||
#ifdef HAS_MOTOR
|
||||
m_vmotor->stop();
|
||||
#endif
|
||||
m_bootMsg1 = "Waiting core 0";
|
||||
m_bootMsg2 = "";
|
||||
updateBootScreen();
|
||||
@@ -666,6 +703,27 @@ void cAirsoftTracker::mainInit()
|
||||
m_bootMsg1 = "Initializing LORA";
|
||||
updateBootScreen();
|
||||
|
||||
SPI2 = new SPIClass(VSPI);
|
||||
SPI2->begin(SCK_GPIO, MISO_GPIO, MOSI_GPIO, NSS_GPIO);
|
||||
SPI2->setFrequency(4000000);
|
||||
|
||||
sRFModuleConfig loraModule;
|
||||
|
||||
#ifdef USE_SX1262
|
||||
loraModule.cs = NSS_GPIO;
|
||||
loraModule.irq = SX1262_IRQ;
|
||||
loraModule.rst = SX1262_RST;
|
||||
loraModule.busy = SX1262_BUSY;
|
||||
#else
|
||||
loraModule.cs = LORA_CS;
|
||||
loraModule.irq = LORA_IRQ;
|
||||
loraModule.rst = LORA_RST;
|
||||
loraModule.busy = 0;
|
||||
#endif
|
||||
|
||||
loraModule.spi = SPI2;
|
||||
loraModule.spiSettings = &spiSettings;
|
||||
|
||||
#ifdef USE_SX1262
|
||||
m_lora = new cLoraDeviceSX1262(loraModule, m_networkConfig.channelConfig);
|
||||
int16_t status = m_lora->applyConfig();
|
||||
@@ -675,12 +733,12 @@ void cAirsoftTracker::mainInit()
|
||||
int16_t status = m_lora->applyConfig();
|
||||
DEBUG_MSG("Lora RF95 device status %d\n", status);
|
||||
#endif
|
||||
|
||||
if (status == 0)
|
||||
if(status==0)
|
||||
{
|
||||
m_loraThread = new cThreadFunction(*this, &cAirsoftTracker::loraThread);
|
||||
m_loraThread->start("Lora", 4096, tskIDLE_PRIORITY+1, 1);
|
||||
}
|
||||
|
||||
m_agdPOI = createPOI();
|
||||
m_bootMsg1 = "Initializing BLE";
|
||||
updateBootScreen();
|
||||
@@ -713,6 +771,7 @@ void IRAM_ATTR loraRINT(void)
|
||||
void cAirsoftTracker::loraThread(cThreadFunction *thread)
|
||||
{
|
||||
DEBUG_MSG("Lora Thread on core %d\n", xPortGetCoreID());
|
||||
|
||||
int16_t configID = 0;
|
||||
loraEnableInterrupt = true;
|
||||
xEventGroupClearBits(loraInterruptEvent,1);
|
||||
@@ -735,13 +794,13 @@ void cAirsoftTracker::loraThread(cThreadFunction *thread)
|
||||
auto size = m_lora->getPacketLength(true);
|
||||
if(size > 0)
|
||||
{
|
||||
//DEBUG_MSG("%d Lora has data %d\n",millis(), size);
|
||||
DEBUG_MSG("%d Lora has data %d\n",millis(), size);
|
||||
sLoraPacket packet;
|
||||
packet.data.resize(size);
|
||||
status = m_lora->readData(&packet.data[0], size);
|
||||
if (status == ERR_NONE)
|
||||
{
|
||||
// DEBUG_MSG("%d Lora got packet %d %f\n", millis(),size,m_lora->getSNR());
|
||||
DEBUG_MSG("%d Lora got packet %d %f\n", millis(),size,m_lora->getSNR());
|
||||
packet.RSSI = m_lora->getRSSI();
|
||||
packet.SNR = m_lora->getSNR();
|
||||
packet.time = millis();
|
||||
@@ -759,7 +818,7 @@ void cAirsoftTracker::loraThread(cThreadFunction *thread)
|
||||
else
|
||||
if(m_lora->isPreambleIrq(irq))
|
||||
{
|
||||
//DEBUG_MSG("%d P\n",millis());
|
||||
DEBUG_MSG("%d P\n",millis());
|
||||
m_lora->clearPreambleIrq();
|
||||
lastPreamble = millis();
|
||||
}
|
||||
@@ -773,10 +832,10 @@ void cAirsoftTracker::loraThread(cThreadFunction *thread)
|
||||
{
|
||||
auto packet = m_loraPacketsToSend.front();
|
||||
m_loraPacketsToSend.pop();
|
||||
//DEBUG_MSG("%d Transmit\n",millis());
|
||||
//int64_t t = millis();
|
||||
DEBUG_MSG("%d Transmit\n",millis());
|
||||
int64_t t = millis();
|
||||
auto res = m_lora->transmit(packet.packet.data.data(),packet.packet.data.size());
|
||||
//DEBUG_MSG("%d Transmit %d %d %d\n",millis(),(int)packet.packet.data.size(),(int) res, (int)(millis()-t));
|
||||
DEBUG_MSG("%d Transmit %d %d %d\n",millis(),(int)packet.packet.data.size(),(int) res, (int)(millis()-t));
|
||||
}
|
||||
xEventGroupClearBits(loraInterruptEvent,1);
|
||||
loraReceived = lastLoraReceived;
|
||||
@@ -871,7 +930,16 @@ void cAirsoftTracker::processCommand(const sCommand &cmd)
|
||||
void cAirsoftTracker::processExpander()
|
||||
{
|
||||
int64_t now = millis();
|
||||
uint16_t gpioab = m_expander->readGPIOAB();
|
||||
uint16_t gpioab = 0;
|
||||
#ifdef HAS_EXPANDER
|
||||
gpioab = m_expander->readGPIOAB();
|
||||
#endif
|
||||
#ifdef BUTTON1_PIN
|
||||
if(digitalRead(BUTTON1_PIN)==LOW)
|
||||
{
|
||||
gpioab = ((uint16_t)1)<<(uint16_t)BTN1_PIN;
|
||||
}
|
||||
#endif
|
||||
//if(gpioab!=m_gpioExpander)
|
||||
{
|
||||
for(int idx=0; idx<AT_BUTTONS_COUNT; idx++)
|
||||
@@ -940,7 +1008,6 @@ void cAirsoftTracker::processExpander()
|
||||
m_gpioExpander = gpioab;
|
||||
}
|
||||
}
|
||||
|
||||
uint16_t ps = analogRead(PSENSOR_PIN);
|
||||
if(m_ps>0)
|
||||
m_ps = (m_ps*10+ps)/11;
|
||||
@@ -1435,8 +1502,10 @@ void cAirsoftTracker::onButtonClick(uint8_t idx,uint8_t type)
|
||||
|
||||
void cAirsoftTracker::vibration()
|
||||
{
|
||||
#ifdef HAS_MOTOR
|
||||
if(m_config.useVibration)
|
||||
m_vmotor->vibrate(m_config.vibrationTime);
|
||||
#endif
|
||||
}
|
||||
|
||||
#define prgSendPacket(P,V) SERIAL_PROG.write(newPacketBuffer,serialParser.create_packet(newPacketBuffer,MAX_SERIAL_PACKET_SIZE,P,&V,sizeof(V)))
|
||||
|
||||
@@ -129,7 +129,8 @@ class cAirsoftTracker:public atGlobal, public cNetworkProcessorInterface
|
||||
{
|
||||
protected:
|
||||
typedef concurrency::ThreadFunctionTemplate<cAirsoftTracker> cThreadFunction;
|
||||
UBloxGPS m_gps;
|
||||
SPIClass *SPI2=NULL;
|
||||
GPS *m_gps;
|
||||
cLoraDevice *m_lora;
|
||||
cThreadFunction *m_loraThread;
|
||||
cLoraPackets m_loraPackets;
|
||||
@@ -139,8 +140,12 @@ protected:
|
||||
bool m_core0ThreadReady;
|
||||
cCommands m_commands;
|
||||
cIMU *m_imu;
|
||||
#ifdef HAS_EXPANDER
|
||||
Adafruit_MCP23017 *m_expander;
|
||||
#endif
|
||||
#ifdef HAS_MOTOR
|
||||
cVMotor *m_vmotor;
|
||||
#endif
|
||||
uint16_t m_gpioExpander = 0;
|
||||
int64_t m_timer1 = 0;
|
||||
int64_t m_timer2 = 0;
|
||||
@@ -160,6 +165,7 @@ protected:
|
||||
int64_t m_agdUpdateTimer = 0;
|
||||
uint16_t m_agdPOI=0;
|
||||
int64_t m_sideButtonsUpdateTime = 0;
|
||||
int64_t m_screenUpdateTime = 50;
|
||||
|
||||
void scanI2Cdevice(TwoWire &wd)
|
||||
{
|
||||
|
||||
@@ -100,29 +100,29 @@ public:
|
||||
virtual ~cATScreen();
|
||||
|
||||
virtual bool init();
|
||||
virtual void showBootScreen(const char * msg1,const char * msg2)=0;
|
||||
virtual void showBootScreen(const char * msg1,const char * msg2) {};
|
||||
virtual void showShutdownScreen() {};
|
||||
virtual void closeBootScreen()=0;
|
||||
virtual void beginMainScreen()=0;
|
||||
virtual void drawPOI(sPOI &poi,int16_t count=0)=0;
|
||||
virtual void endMainScreen()=0;
|
||||
virtual void setBacklight(uint8_t level)=0;
|
||||
virtual void screenOn()=0;
|
||||
virtual void screenOff()=0;
|
||||
virtual void drawSideButtons()=0;
|
||||
virtual void showProgramMode()=0;
|
||||
virtual void closeBootScreen() {};
|
||||
virtual void beginMainScreen() {};
|
||||
virtual void drawPOI(sPOI &poi,int16_t count=0) {};
|
||||
virtual void endMainScreen() {};
|
||||
virtual void setBacklight(uint8_t level) {};
|
||||
virtual void screenOn() {};
|
||||
virtual void screenOff() {};
|
||||
virtual void drawSideButtons() {};
|
||||
virtual void showProgramMode() {};
|
||||
virtual void showMenu(){};
|
||||
virtual uint32_t getFramesCount()=0;
|
||||
virtual uint32_t getFramesCount() { return 0; };
|
||||
virtual void loop() {};
|
||||
virtual uint8_t getScreenState() { return m_screenState; }
|
||||
virtual void setScreenState(uint8_t value) { m_screenState=value; }
|
||||
virtual void processEvent(uint8_t event, uint32_t param1, uint32_t param2){};
|
||||
virtual void drawTimers(bool forceAll) {};
|
||||
virtual uint16_t getRadius() = 0;
|
||||
virtual uint16_t getRadius() { return 0; };
|
||||
|
||||
//Flash interface
|
||||
virtual uint32_t flashProgrammStart()=0;
|
||||
virtual void flashProgrammEnd()=0;
|
||||
virtual void flashWrite(uint32_t address,uint16_t size, uint8_t *data)=0;
|
||||
virtual void flashRead(uint32_t address,uint16_t size, uint8_t *data)=0;
|
||||
virtual uint32_t flashProgrammStart() { return 0; };
|
||||
virtual void flashProgrammEnd() {};
|
||||
virtual void flashWrite(uint32_t address,uint16_t size, uint8_t *data) {};
|
||||
virtual void flashRead(uint32_t address,uint16_t size, uint8_t *data) {};
|
||||
};
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
namespace concurrency {
|
||||
|
||||
void Thread::start(const char *name, size_t stackSize, uint32_t priority, int8_t core)
|
||||
void RTOSThread::start(const char *name, size_t stackSize, uint32_t priority, int8_t core)
|
||||
{
|
||||
if(core<0)
|
||||
{
|
||||
@@ -17,9 +17,9 @@ void Thread::start(const char *name, size_t stackSize, uint32_t priority, int8_t
|
||||
}
|
||||
}
|
||||
|
||||
void Thread::callRun(void *_this)
|
||||
void RTOSThread::callRun(void *_this)
|
||||
{
|
||||
((Thread *)_this)->doRun();
|
||||
((RTOSThread *)_this)->doRun();
|
||||
}
|
||||
|
||||
} // namespace concurrency
|
||||
|
||||
@@ -9,7 +9,7 @@ namespace concurrency
|
||||
/**
|
||||
* @brief Base threading
|
||||
*/
|
||||
class Thread
|
||||
class RTOSThread
|
||||
{
|
||||
protected:
|
||||
TaskHandle_t taskHandle = NULL;
|
||||
@@ -22,7 +22,7 @@ namespace concurrency
|
||||
public:
|
||||
void start(const char *name, size_t stackSize = 1024, uint32_t priority = tskIDLE_PRIORITY, int8_t core=-1);
|
||||
|
||||
virtual ~Thread() { vTaskDelete(taskHandle); }
|
||||
virtual ~RTOSThread() { vTaskDelete(taskHandle); }
|
||||
|
||||
uint32_t getStackHighwaterMark() { return uxTaskGetStackHighWaterMark(taskHandle); }
|
||||
|
||||
@@ -54,7 +54,7 @@ namespace concurrency
|
||||
};
|
||||
|
||||
template <typename T>
|
||||
class ThreadFunctionTemplate : public Thread
|
||||
class ThreadFunctionTemplate : public RTOSThread
|
||||
{
|
||||
public:
|
||||
typedef void (T::*thread_func_t)(ThreadFunctionTemplate<T> *thread);
|
||||
|
||||
197
src/config.h
197
src/config.h
@@ -102,6 +102,66 @@ extern SemaphoreHandle_t debugLock;
|
||||
#define LORA_CURRENT 140
|
||||
#endif
|
||||
|
||||
#ifdef AD_TRACKER_V1
|
||||
#undef HAS_MOTOR
|
||||
#undef HAS_EXPANDER
|
||||
#define HAS_GPS 1
|
||||
#define GPS_M10S 1
|
||||
#define LORA_CURRENT 140
|
||||
#undef PMU_IRQ
|
||||
#define USE_SX1262
|
||||
#undef LORA_POWER
|
||||
#define LORA_POWER SX1262_MAXPOWER
|
||||
#define LORA_DIO0 -1 // a No connect on the SX1262 module
|
||||
#define LORA_RESET 40
|
||||
#define LORA_DIO1 38 // SX1262 IRQ
|
||||
#define LORA_DIO2 1 // SX1262 BUSY
|
||||
#define LORA_DIO3 // Not connected on PCB, but internally on the TTGO SX1262, if DIO3 is high the TXCO is enabled
|
||||
|
||||
#undef SCK_GPIO
|
||||
#undef MISO_GPIO
|
||||
#undef MOSI_GPIO
|
||||
#undef NSS_GPIO
|
||||
#define SCK_GPIO 12
|
||||
#define MISO_GPIO 13
|
||||
#define MOSI_GPIO 11
|
||||
#define NSS_GPIO 10
|
||||
|
||||
#undef SX1262_IRQ
|
||||
#undef SX1262_RST
|
||||
#undef SX1262_BUSY
|
||||
|
||||
#define SX1262_IRQ LORA_DIO1
|
||||
#define SX1262_RST LORA_RESET
|
||||
#define SX1262_BUSY 39
|
||||
|
||||
#define HAS_GPS 1
|
||||
#define LORA_CURRENT 140
|
||||
|
||||
#define BUTTON1_PIN -1
|
||||
|
||||
#undef GPS_RX_PIN
|
||||
#undef GPS_TX_PIN
|
||||
#define GPS_RX_PIN 14
|
||||
#define GPS_TX_PIN 9
|
||||
//#define PIN_GPS_RESET 21
|
||||
#define PIN_GPS_PPS -1
|
||||
#define GPS_RESET_MODE LOW
|
||||
|
||||
#undef I2C_SDA
|
||||
#undef I2C_SCL
|
||||
|
||||
#undef I2C2_SDA
|
||||
#undef I2C2_SCL
|
||||
|
||||
#define I2C_SDA 18
|
||||
#define I2C_SCL 8
|
||||
|
||||
#define I2C2_SDA 16
|
||||
#define I2C2_SCL 17
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef AD_LORA32_V1
|
||||
#undef USE_SX1262
|
||||
#undef PMU_IRQ
|
||||
@@ -119,11 +179,139 @@ extern SemaphoreHandle_t debugLock;
|
||||
#define LORA_CURRENT 240
|
||||
|
||||
#define BATTERY_PIN 39
|
||||
#define BATTERY_M (0.00246*1.19)
|
||||
#define LED_PIN -1
|
||||
#undef I2C_SCL
|
||||
#define I2C_SCL 19
|
||||
#endif
|
||||
|
||||
#ifdef AD_HELTEC_TRACKER
|
||||
#undef PMU_IRQ
|
||||
#define USE_SX1262
|
||||
#undef LORA_POWER
|
||||
#define LORA_POWER SX1262_MAXPOWER
|
||||
#define LORA_DIO0 -1 // a No connect on the SX1262 module
|
||||
#define LORA_RESET 12
|
||||
#define LORA_DIO1 14 // SX1262 IRQ
|
||||
#define LORA_DIO2 13 // SX1262 BUSY
|
||||
#define LORA_DIO3 // Not connected on PCB, but internally on the TTGO SX1262, if DIO3 is high the TXCO is enabled
|
||||
|
||||
#undef SCK_GPIO
|
||||
#undef MISO_GPIO
|
||||
#undef MOSI_GPIO
|
||||
#undef NSS_GPIO
|
||||
#define SCK_GPIO 9
|
||||
#define MISO_GPIO 11
|
||||
#define MOSI_GPIO 10
|
||||
#define NSS_GPIO 8
|
||||
|
||||
#undef SX1262_IRQ
|
||||
#undef SX1262_RST
|
||||
#undef SX1262_BUSY
|
||||
|
||||
#define SX1262_IRQ LORA_DIO1
|
||||
#define SX1262_RST LORA_RESET
|
||||
#define SX1262_BUSY LORA_DIO2
|
||||
|
||||
#define HAS_GPS 1
|
||||
#define LORA_CURRENT 140
|
||||
|
||||
#define BATTERY_PIN 1
|
||||
#define BATTERY_M (0.0039487179487179*1.1)
|
||||
#define BUTTON1_PIN 0
|
||||
|
||||
#undef GPS_RX_PIN
|
||||
#undef GPS_TX_PIN
|
||||
#define GPS_RX_PIN 33
|
||||
#define GPS_TX_PIN 34
|
||||
#define PIN_GPS_RESET 35
|
||||
#define PIN_GPS_PPS 36
|
||||
#define VGNSS_CTRL 37 // Heltec Tracker needs this pulled low for GPS
|
||||
#define GPS_RESET_MODE LOW
|
||||
#define GPS_UC6580
|
||||
#undef GPS_BAUDRATE
|
||||
#define GPS_BAUDRATE 115200
|
||||
#define VEXT_EN 3
|
||||
#define ADC_CTRL 2
|
||||
|
||||
#undef I2C_SDA
|
||||
#undef I2C_SCL
|
||||
|
||||
#undef I2C2_SDA
|
||||
#undef I2C2_SCL
|
||||
|
||||
#define UART_DO_NOT_UPDATE_BR
|
||||
|
||||
#define USE_SCREEN_TFT_ESPI 1
|
||||
#define TFT_W 160
|
||||
#define TFT_H 80
|
||||
#endif
|
||||
|
||||
#ifdef AD_TBEAM_SUPREME
|
||||
#undef HAS_MOTOR
|
||||
#undef HAS_EXPANDER
|
||||
#undef PMU_IRQ
|
||||
#define USE_XPOWERSLIB
|
||||
#define XPOWERS_CHIP_AXP2101
|
||||
#define PMU_IRQ 40
|
||||
#define PMU_USE_WIRE1
|
||||
#undef I2C2_SDA
|
||||
#undef I2C2_SCL
|
||||
#define I2C2_SDA 42
|
||||
#define I2C2_SCL 41
|
||||
|
||||
#define USE_SX1262
|
||||
#undef LORA_POWER
|
||||
#define LORA_POWER SX1262_MAXPOWER
|
||||
#define LORA_DIO0 -1 // a No connect on the SX1262 module
|
||||
#define LORA_RESET 5
|
||||
#define LORA_DIO1 1 // SX1262 IRQ
|
||||
#define LORA_DIO2 4 // SX1262 BUSY
|
||||
#define LORA_DIO3 // Not connected on PCB, but internally on the TTGO SX1262, if DIO3 is high the TXCO is enabled
|
||||
|
||||
#undef SCK_GPIO
|
||||
#undef MISO_GPIO
|
||||
#undef MOSI_GPIO
|
||||
#undef NSS_GPIO
|
||||
#define SCK_GPIO 12
|
||||
#define MISO_GPIO 13
|
||||
#define MOSI_GPIO 11
|
||||
#define NSS_GPIO 10
|
||||
|
||||
#undef SX1262_IRQ
|
||||
#undef SX1262_RST
|
||||
#undef SX1262_BUSY
|
||||
|
||||
#define SX1262_IRQ LORA_DIO1
|
||||
#define SX1262_RST LORA_RESET
|
||||
#define SX1262_BUSY LORA_DIO2
|
||||
|
||||
#define HAS_GPS 1
|
||||
#define LORA_CURRENT 140
|
||||
|
||||
#undef BATTERY_PIN
|
||||
#undef BUTTON1_PIN
|
||||
|
||||
#undef GPS_RX_PIN
|
||||
#undef GPS_TX_PIN
|
||||
#undef VGNSS_CTRL
|
||||
#define GPS_RX_PIN 9
|
||||
#define GPS_TX_PIN 8
|
||||
#define PIN_GPS_RESET 7
|
||||
#define PIN_GPS_PPS 6
|
||||
#define GPS_RESET_MODE LOW
|
||||
|
||||
#undef I2C_SDA
|
||||
#undef I2C_SCL
|
||||
|
||||
#define I2C_SDA 17
|
||||
#define I2C_SCL 18
|
||||
|
||||
#define UART_DO_NOT_UPDATE_BR
|
||||
#define USE_SCREEN_LCD_GFX
|
||||
#define LCD_SH1106
|
||||
#endif
|
||||
|
||||
#ifdef AD_NOSCREEN
|
||||
#define AD_BLE_NO_CLIENT
|
||||
#endif
|
||||
@@ -178,4 +366,13 @@ extern SemaphoreHandle_t debugLock;
|
||||
#define SCREEN_FLASH_META_FILE_PATH "/spiffs/"
|
||||
#define AT_POINTS_FILE_TEMPLATE "/spiffs/p_%s.json"
|
||||
|
||||
#if CONFIG_IDF_TARGET_ESP32S2 || CONFIG_IDF_TARGET_ESP32S3
|
||||
#define VSPI SPI1_HOST
|
||||
#endif
|
||||
|
||||
#ifdef I2C_SDA
|
||||
#define HAS_EXPANDER
|
||||
#define HAS_MOTOR
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -57,7 +57,7 @@ class GPS : public Observable<void *>
|
||||
virtual void loop() {}
|
||||
|
||||
/// Returns ture if we have acquired GPS lock.
|
||||
bool hasLock() const { return hasValidLocation; }
|
||||
virtual bool hasLock() const { return hasValidLocation; }
|
||||
|
||||
/**
|
||||
* Restart our lock attempt - try to get and broadcast a GPS reading ASAP
|
||||
@@ -68,4 +68,6 @@ class GPS : public Observable<void *>
|
||||
virtual bool canSleep() { return true; }
|
||||
virtual void shutdown() {}
|
||||
HardwareSerial &getSerial() { return _serial_gps; }
|
||||
virtual void backupDatabase(const char *filename){};
|
||||
virtual void restoreDatabase(const char *filename){};
|
||||
};
|
||||
|
||||
@@ -12,6 +12,13 @@ UBloxGPS::UBloxGPS()
|
||||
bool UBloxGPS::internalSetup()
|
||||
{
|
||||
bool ok;
|
||||
#ifdef PIN_GPS_RESET
|
||||
digitalWrite(PIN_GPS_RESET, GPS_RESET_MODE); // assert for 10ms
|
||||
pinMode(PIN_GPS_RESET, OUTPUT);
|
||||
delay(10);
|
||||
digitalWrite(PIN_GPS_RESET, !GPS_RESET_MODE);
|
||||
#endif
|
||||
|
||||
ok = ublox.setUART1Output(COM_TYPE_UBX, 3000); // Use native API
|
||||
if(!ok) return false;
|
||||
ok = ublox.setNavigationFrequency(GPS_FREQ+1, 3000); // Produce 4x/sec to keep the amount of time we stall in getPVT low
|
||||
@@ -21,6 +28,15 @@ bool UBloxGPS::internalSetup()
|
||||
//ok = ublox.powerSaveMode(false, 2000); // use power save mode, the default timeout (1100ms seems a bit too tight)
|
||||
//if(!ok) return false;
|
||||
|
||||
#ifdef GPS_M10S
|
||||
uint8_t payloadGNSS[] = {0x00,0x31,0x31,0x06,
|
||||
0x00,0x08,0x10,0x00,0x01,0x00,0x01,0x01,
|
||||
0x01,0x03,0x03,0x00,0x01,0x00,0x01,0x01,
|
||||
0x02,0x08,0x0C,0x00,0x01,0x00,0x01,0x01,
|
||||
0x03,0x06,0x0E,0x00,0x01,0x00,0x04,0x05,
|
||||
0x05,0x03,0x04,0x00,0x01,0x00,0x05,0x05,
|
||||
0x06,0x08,0x0C,0x00,0x01,0x00,0x01,0x01};
|
||||
#else
|
||||
uint8_t payloadGNSS[] = {0x00,0x00,0x20,0x07,
|
||||
0x00,0x08,0x10,0x00,0x01,0x00,0x01,0x01,
|
||||
0x01,0x01,0x03,0x00,0x01,0x00,0x01,0x01,
|
||||
@@ -29,10 +45,12 @@ bool UBloxGPS::internalSetup()
|
||||
0x04,0x00,0x08,0x00,0x00,0x00,0x01,0x01,
|
||||
0x05,0x00,0x03,0x00,0x01,0x00,0x01,0x01,
|
||||
0x06,0x08,0x0E,0x00,0x01,0x00,0x01,0x01};
|
||||
#endif
|
||||
|
||||
ubxPacket packetCfg = {0, 0, 0, 0, 0, payloadGNSS, 0, 0, SFE_UBLOX_PACKET_VALIDITY_NOT_DEFINED,SFE_UBLOX_PACKET_VALIDITY_NOT_DEFINED};
|
||||
packetCfg.cls = UBX_CLASS_CFG;
|
||||
packetCfg.id = UBX_CFG_GNSS;
|
||||
packetCfg.len = 0x3C;
|
||||
packetCfg.len = sizeof(payloadGNSS);
|
||||
packetCfg.startingSpot = 0;
|
||||
ublox.sendCommand(&packetCfg,0);
|
||||
delay(50);
|
||||
@@ -46,7 +64,7 @@ bool UBloxGPS::internalSetup()
|
||||
ublox.sendCommand(&packetCfg,0);
|
||||
delay(50);
|
||||
|
||||
#ifdef HAS_AXP20X
|
||||
#if defined(HAS_AXP20X) || defined(PIN_GPS_RESET)
|
||||
ublox.setSerialRate(GPS_BAUDRATE2,1,3000);
|
||||
delay(2);
|
||||
_serial_gps.updateBaudRate(GPS_BAUDRATE2);
|
||||
|
||||
25
src/imu.cpp
25
src/imu.cpp
@@ -11,6 +11,11 @@ cIMU::cIMU()
|
||||
m_lastUpdate = 0;
|
||||
}
|
||||
|
||||
void cIMU::resetMM()
|
||||
{
|
||||
m_imu->setMagMinMax(m_imu->getRawMagX_uT(),m_imu->getRawMagX_uT()+0.1,m_imu->getRawMagY_uT(),m_imu->getRawMagY_uT()+0.1,m_imu->getRawMagZ_uT(),m_imu->getRawMagZ_uT()+0.1);
|
||||
}
|
||||
|
||||
void cIMU::adjustMagCalibrationBias(float value,uint8_t axis)
|
||||
{
|
||||
float o,s;
|
||||
@@ -225,9 +230,10 @@ void cIMU::loop()
|
||||
newStatus.notifyObservers(&status);
|
||||
#ifdef IMU_DEBUG
|
||||
vvv++;
|
||||
if(vvv%5==0)
|
||||
if(vvv%1==0)
|
||||
{
|
||||
m_imu->getMagMinMax(m_calibration.magMinX,m_calibration.magMaxX,m_calibration.magMinY,m_calibration.magMaxY,m_calibration.magMinZ,m_calibration.magMaxZ);
|
||||
/*
|
||||
Serial.print(m_imu->getAccelX_mss(),6);
|
||||
Serial.print("\t");
|
||||
Serial.print(m_imu->getAccelY_mss(),6);
|
||||
@@ -240,21 +246,26 @@ void cIMU::loop()
|
||||
Serial.print("\t");
|
||||
Serial.print(m_imu->getGyroZ_rads(),6);
|
||||
Serial.print("\t");
|
||||
*/
|
||||
Serial.print(m_imu->getMagX_uT(),6);
|
||||
Serial.print("\t");
|
||||
Serial.print(";");
|
||||
Serial.print(m_imu->getMagY_uT(),6);
|
||||
Serial.print("\t");
|
||||
Serial.print(";");
|
||||
Serial.print(m_imu->getMagZ_uT(),6);
|
||||
Serial.print("\t");
|
||||
Serial.print(";");
|
||||
Serial.print(m_imu->getRawMagX_uT(),6);
|
||||
Serial.print("\t");
|
||||
Serial.print(";");
|
||||
Serial.print(m_imu->getRawMagY_uT(),6);
|
||||
Serial.print("\t");
|
||||
Serial.print(";");
|
||||
Serial.print(m_imu->getRawMagZ_uT(),6);
|
||||
Serial.print(";");
|
||||
Serial.print(compHeading,6);
|
||||
|
||||
|
||||
Serial.print("\n");
|
||||
//Serial.print("\t");
|
||||
//Serial.print(m_imu->getTemperature_C(),6);
|
||||
DEBUG_MSG("\tHeading %0.2f %0.2f/%0.2f, Y: %0.2f/%0.2f, Z: %0.2f/%0.2f\n",compHeading,m_calibration.magMinX,m_calibration.magMaxX,m_calibration.magMinY,m_calibration.magMaxY,m_calibration.magMinZ,m_calibration.magMaxZ);
|
||||
//DEBUG_MSG("\tHeading %0.2f %0.2f/%0.2f, Y: %0.2f/%0.2f, Z: %0.2f/%0.2f\n",compHeading,m_calibration.magMinX,m_calibration.magMaxX,m_calibration.magMinY,m_calibration.magMaxY,m_calibration.magMinZ,m_calibration.magMaxZ);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -67,5 +67,6 @@ public:
|
||||
void setAutoMag(bool v) { m_imu->setAutoMag(v); }
|
||||
bool getAutoMag() { return m_imu->getAutoMag(); }
|
||||
void adjustMagCalibrationBias(float value,uint8_t axis);
|
||||
void resetMM();
|
||||
sIMUCalibration &getCalibration() { return m_calibration; }
|
||||
};
|
||||
|
||||
@@ -15,7 +15,11 @@
|
||||
#define CONFIG_LV_DISPLAY_ORIENTATION_LANDSCAPE 1
|
||||
#define CONFIG_LV_FT81X_CONFIG_EVE_EVE3_35 1
|
||||
//#define CONFIG_LV_TFT_DISPLAY_SPI_HSPI 1
|
||||
#define CONFIG_LV_TFT_DISPLAY_SPI_HSPI 1
|
||||
#if CONFIG_IDF_TARGET_ESP32S2 || CONFIG_IDF_TARGET_ESP32S3
|
||||
#define TFT_SPI_HOST SPI3_HOST
|
||||
#else
|
||||
#define CONFIG_LV_TFT_DISPLAY_SPI_HSPI 1
|
||||
#endif
|
||||
#define CONFIG_LV_DISPLAY_WIDTH 320
|
||||
#define CONFIG_LV_DISPLAY_HEIGHT 240
|
||||
#define CONFIG_LV_TFT_USE_CUSTOM_SPI_CLK_DIVIDER 1
|
||||
|
||||
@@ -17,7 +17,9 @@ cAirsoftTracker *global = NULL;
|
||||
SemaphoreHandle_t debugLock = xSemaphoreCreateMutex();
|
||||
void setup() {
|
||||
//Hardware init
|
||||
#if CONFIG_IDF_TARGET_ESP32
|
||||
esp_bt_controller_mem_release(ESP_BT_MODE_CLASSIC_BT);
|
||||
#endif
|
||||
#ifdef AD_NOSCREEN
|
||||
// esp_bt_controller_mem_release(ESP_BT_MODE_BTDM);
|
||||
#endif
|
||||
@@ -25,8 +27,7 @@ void setup() {
|
||||
Serial.begin(115200);
|
||||
Serial.setDebugOutput(false);
|
||||
EEPROM.begin(256);
|
||||
|
||||
FS.begin(true);
|
||||
//delay(5000);
|
||||
|
||||
uint32_t seed = esp_random();
|
||||
DEBUG_MSG("Setting random seed %u\n", seed);
|
||||
@@ -39,6 +40,7 @@ void setup() {
|
||||
DEBUG_MSG("Free PSRAM: %d\n", ESP.getFreePsram());
|
||||
|
||||
|
||||
FS.begin(true);
|
||||
auto res = esp_task_wdt_init(APP_WATCHDOG_SECS_INIT, true);
|
||||
assert(res == ESP_OK);
|
||||
|
||||
@@ -73,7 +75,6 @@ void setup() {
|
||||
{
|
||||
DEBUG_MSG("SPIFFS %s used %d, total %d\n",spiffs_2.partition_label, used, total);
|
||||
}
|
||||
|
||||
global = new cAirsoftTracker();
|
||||
global->init();
|
||||
esp_task_wdt_delete(NULL);
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
#pragma once
|
||||
#include "concurrency/PeriodicTask.h"
|
||||
#include "PowerStatus.h"
|
||||
#ifdef USE_XPOWERSLIB
|
||||
#include <XPowersLib.h>
|
||||
#endif
|
||||
|
||||
#define MIN_BAT_MILLIVOLTS 3250 // millivolts. 10% per https://blog.ampow.com/lipo-voltage-chart/
|
||||
|
||||
@@ -17,6 +20,10 @@ class Power : public concurrency::PeriodicTask
|
||||
protected:
|
||||
AXP20X_Class axp;
|
||||
#endif
|
||||
#ifdef USE_XPOWERSLIB
|
||||
XPowersLibInterface *m_power;
|
||||
bool m_pmuFound;
|
||||
#endif
|
||||
public:
|
||||
Observable<const PowerStatus *> newStatus;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user