1
0
mirror of https://bitbucket.org/librepilot/librepilot.git synced 2025-01-30 15:52:12 +01:00

Merge branch 'next' into CC_GPS

This commit is contained in:
Corvus Corax 2011-08-19 21:34:38 +02:00
commit b75890fcd4
546 changed files with 49976 additions and 26241 deletions

View File

@ -27,6 +27,10 @@ N: Pedro Assuncao
E: pedro (dot) agda (plus) openpilot (at) gmail (dot) com
D: Initial GCS Settings Gadget work
N: Werner Backes
E: werner (at) bit-1 (dot) de
D: Port of CopterControl to PS3 Move Controller (MoveCopter)
N: Jose Barros
E: josembarros (at) hotmail (dot) com
D: Next-Gen OP Map Lib, Y-Modem Library, Uploader Plugin
@ -162,6 +166,8 @@ D: Creator of the OpenPilot INS / EKF
N: Oleg Semyonov
E: os-openpilot-org (at) os-propo (dot) info
D: Core tester & Project organisation
M: Common part of multi-platform packaging system
M: Windows NSIS Installer
M: Russian Documentation Lead
N: Stacey Sheldon
@ -201,4 +207,3 @@ M: Architecture co-lead
N: Alex Vrubel
E: alex (dot) vrubel (plus) openpilot (at) gmail (dot) com
D: Russian translation of the GCS

43
HISTORY.txt Normal file
View File

@ -0,0 +1,43 @@
Short summary of changes. For a complete list see the git log.
2011-08-10
Added Camera Stabilization and a gui to configure this. This is a software
selectable module from the GUI. However, a restart is required to make it
active. The GUI does not currently expose the configuration for using the
transmitter to change the view angle but this is supported by the hardware.
2011-08-10
By default a lot of diagnostic objects that were enabled by default are now
disabled in the build. This include TaskInfo (and all the FreeRTOS options
that provide that debugging information). Also MixerStatus, I2CStatus,
WatchdogStatus and RateDesired. These can be reenabled for debugging with
-DDIAGNOSTICS.
2011-08-04
Fixed packaging aesthetic issues. Also avoid runtime issues on OSX Lion by
disabling the ModelView and Notify plugins for now (sorry).
2011-07-29
Added support for PPM receivers from James W. Now all 4 interfaces (R/C
standard PWM, combined PPM (MK), Spektrum satellite, Futaba S.Bus) are
supported and configurable through the GCS hardware configuration tab.
2011-07-17
Updated module initialization from Mathieu which separates the initialization
from the task startup. Also implements a method to reclaim unused ram from
initialization and end of memory for the FreeRTOS heap.
2011-07-12
Improvements to the stabilization code. Included a LPF on the gyros to smooth
out noise in high vibration environments. Also two new modes: axis-lock and
weak leveling. Axis-lock will try and hold an axis at a fixed position and
reject any disturbances. This is like heading-hold on a heli for the tail but
can be useful for other axes. Weak leveling is rate mode with a weak
correction to self level the craft - good for easier rate mode flying.
2011-07-07
Dynamic hardware configuration from Stac. The input type is now
selected from ManualControlSettings.InputMode and the aircraft must be rebooted
after changing this. Also for CopterControl the HwSettings object must
indicate which modules are connected to which ports. PPM currently not
working.

View File

@ -38,7 +38,7 @@ C: Cathy Moss
D: October 2010
M: First OpenPilot night flight
C: Dale Schintock
C: Dale Schinstock
D: October 2010
V: http://www.youtube.com/watch?v=yk8ckeRMV8U
@ -53,7 +53,7 @@ D: November 2010
V: http://vimeo.com/17488702
M: First solid OpenPilot Position Hold
C: Dale Schintock
C: Dale Schinstock
D: December 2010
V: http://www.youtube.com/watch?v=BBCGVP0Vpgw
@ -94,37 +94,87 @@ V: http://vimeo.com/22221798
M: First CopterControl flight on a Hexa
C: Edouard Lafargue
D: March 2011
V: http://vimeo.com/21476466
M: First CopterControl flight on a Tri
C: Gary Mortimer and the Scorpion
D: March 2011
V: http://vimeo.com/22104334
M: First Y6 OpenPilot flight
C: Sami Korhonen (Sambas)
D: May 2011
V: http://www.vimeo.com/23637586
M: First CopterControl flight on a Flybarless Heli
C: ?
D: ?
V:
C: Oleg Semyonov (osnwt)
D: May 2011
V: http://www.youtube.com/watch?v=-J8cxqzxxWw
M: First V8 Octo OpenPilot flight
C: Sami Korhonen (Sambas)
D: May 2011
V: http://vimeo.com/24258192
M: First Y6 CopterControl flight
C: ?
D: ?
C: Michel Pet
D: June 2011
V: http://www.youtube.com/watch?v=QsE2MQELPZY
M: First MoveCopter flight
C: Werner Backes
D: July 2011
V: http://vimeo.com/25983655
M: First Y4 CopterControl flight
C: Mat Wellington
D: July 2011
V: http://www.youtube.com/watch?v=TxZ4MDGIj1o
M: First V-Tail4 CopterControl flight
C: Mat Wellington
D: July 2011
V: http://www.youtube.com/watch?v=YE4Fd9vdg1I
M: First CopterControl Flybared Heli inverted flight (2:33)
C: Maxim Izergin (Maximus43)
D: August 2011
V: http://www.youtube.com/watch?v=8SrfIS7OkB4
M: First CopterControl Flybared Heli funnel (4:18), loop (5:35)
C: Sergey Solodennikov (alconaft43)
D: August 2011
V: http://www.youtube.com/watch?v=8SrfIS7OkB4
M: First Altitude Hold using Sonar
C:
D:
V:
M: First CopterControl Navigation on RC Ground Vechicle
C:
D:
V:
M: First CopterControl Navigation on RC Water Vechicle
C:
D:
V:
M: First CopterControl flip on a Flybarless Heli
C:
D:
V:
An incomplete list of some future Milestones is below:
* First Y6 CopterControl flight
* First Helicopter flight with OpenPilot
* First Octo flight with OpenPilot
* First successful flight using the GCS only and no RC TX
* First use of Magic Waypoint
* First Flybarless Helicopter flight with OpenPilot
* First flight with CopterControl
* First fixed wing navigation flight
* First Multirotor navigation flight
* First Helicopter navigation flight

439
Makefile
View File

@ -71,36 +71,46 @@ help:
@echo " qt_sdk_install - Install the QT v4.6.2 tools"
@echo " arm_sdk_install - Install the Code Sourcery ARM gcc toolchain"
@echo " openocd_install - Install the OpenOCD JTAG daemon"
@echo " stm32flash_install - Install the stm32flash tool for unbricking boards"
@echo
@echo " [Big Hammer]"
@echo " all - Generate UAVObjects, build openpilot firmware and gcs"
@echo " all_flight - Build all firmware, bootloaders and bootloader updaters"
@echo " all_fw - Build only firmware for all boards"
@echo " all_bl - Build only bootloaders for all boards"
@echo " all_blupd - Build only bootloader updaters for all boards"
@echo " all_bu - Build only bootloader updaters for all boards"
@echo
@echo " all_clean - Remove your build directory ($(BUILD_DIR))"
@echo " all_flight_clean - Remove all firmware, bootloaders and bootloader updaters"
@echo " all_fw_clean - Remove firmware for all boards"
@echo " all_bl_clean - Remove bootlaoders for all boards"
@echo " all_blupd_clean - Remove bootloader updaters for all boards"
@echo " all_bu_clean - Remove bootloader updaters for all boards"
@echo
@echo " all_<board> - Build all available images for <board>"
@echo " all_<board>_clean - Remove all available images for <board>"
@echo
@echo " [Firmware]"
@echo " <board> - Build firmware for <board>"
@echo " supported boards are ($(FW_TARGETS))"
@echo " <board>_clean - Remove firmware for <board>"
@echo " <board>_program - Use OpenOCD + JTAG to write firmware to <board>"
@echo " supported boards are ($(ALL_BOARDS))"
@echo " fw_<board> - Build firmware for <board>"
@echo " supported boards are ($(FW_BOARDS))"
@echo " fw_<board>_clean - Remove firmware for <board>"
@echo " fw_<board>_program - Use OpenOCD + JTAG to write firmware to <board>"
@echo
@echo " [Bootloader]"
@echo " bl_<board> - Build bootloader for <board>"
@echo " supported boards are ($(BL_TARGETS))"
@echo " supported boards are ($(BL_BOARDS))"
@echo " bl_<board>_clean - Remove bootloader for <board>"
@echo " bl_<board>_program - Use OpenOCD + JTAG to write bootloader to <board>"
@echo
@echo " [Bootloader Updater]"
@echo " blupd_<board> - Build bootloader updater for <board>"
@echo " supported boards are ($(BLUPD_TARGETS))"
@echo " blupd_<board>_clean - Remove bootloader updater for <board>"
@echo " bu_<board> - Build bootloader updater for <board>"
@echo " supported boards are ($(BU_BOARDS))"
@echo " bu_<board>_clean - Remove bootloader updater for <board>"
@echo
@echo " [Unbrick a board]"
@echo " unbrick_<board> - Use the STM32's built in boot ROM to write a bootloader to <board>"
@echo " supported boards are ($(BL_BOARDS))"
@echo
@echo " [Simulation]"
@echo " sim_posix - Build OpenPilot simulation firmware for"
@ -170,10 +180,10 @@ qt_sdk_clean:
$(V1) [ ! -d "$(QT_SDK_DIR)" ] || $(RM) -rf $(QT_SDK_DIR)
# Set up ARM (STM32) SDK
ARM_SDK_DIR := $(TOOLS_DIR)/arm-2009q3
ARM_SDK_DIR := $(TOOLS_DIR)/arm-2011.03
.PHONY: arm_sdk_install
arm_sdk_install: ARM_SDK_URL := http://www.codesourcery.com/sgpp/lite/arm/portal/package5353/public/arm-none-eabi/arm-2009q3-68-arm-none-eabi-i686-pc-linux-gnu.tar.bz2
arm_sdk_install: ARM_SDK_URL := http://www.codesourcery.com/sgpp/lite/arm/portal/package8734/public/arm-none-eabi/arm-2011.03-42-arm-none-eabi-i686-pc-linux-gnu.tar.bz2
arm_sdk_install: ARM_SDK_FILE := $(notdir $(ARM_SDK_URL))
# order-only prereq on directory existance:
arm_sdk_install: | $(DL_DIR) $(TOOLS_DIR)
@ -221,6 +231,25 @@ openocd_install: openocd_clean
openocd_clean:
$(V1) [ ! -d "$(OPENOCD_DIR)" ] || $(RM) -r "$(OPENOCD_DIR)"
STM32FLASH_DIR := $(TOOLS_DIR)/stm32flash
.PHONY: stm32flash_install
stm32flash_install: STM32FLASH_URL := http://stm32flash.googlecode.com/svn/trunk
stm32flash_install: STM32FLASH_REV := 52
stm32flash_install: stm32flash_clean
# download the source
$(V0) @echo " DOWNLOAD $(STM32FLASH_URL) @ r$(STM32FLASH_REV)"
$(V1) svn export -q -r "$(STM32FLASH_REV)" "$(STM32FLASH_URL)" "$(STM32FLASH_DIR)"
# build
$(V0) @echo " BUILD $(STM32FLASH_DIR)"
$(V1) $(MAKE) --silent -C $(STM32FLASH_DIR) all
.PHONY: stm32flash_clean
stm32flash_clean:
$(V0) @echo " CLEAN $(STM32FLASH_DIR)"
$(V1) [ ! -d "$(STM32FLASH_DIR)" ] || $(RM) -r "$(STM32FLASH_DIR)"
##############################
#
# Set up paths to tools
@ -265,23 +294,11 @@ gcs_clean: openpilotgcs_clean
.PHONY: openpilotgcs
openpilotgcs: uavobjects_gcs
$(V1) mkdir -p $(BUILD_DIR)/ground/$@
$(V1) ( cd $(BUILD_DIR)/ground/$@ ; \
$(QMAKE) $(ROOT_DIR)/ground/openpilotgcs/openpilotgcs.pro -spec $(QT_SPEC) -r CONFIG+=$(GCS_BUILD_CONF) ; \
$(V1) ( cd $(BUILD_DIR)/ground/$@ && \
$(QMAKE) $(ROOT_DIR)/ground/openpilotgcs/openpilotgcs.pro -spec $(QT_SPEC) -r CONFIG+=$(GCS_BUILD_CONF) && \
$(MAKE) -w ; \
)
.PHONY: gcs_installer
gcs_installer: openpilotgcs
ifeq ($(QT_SPEC), win32-g++)
ifeq ($(GCS_BUILD_CONF), release)
$(V1) cd $(BUILD_DIR)/ground/openpilotgcs/packaging/winx86 && $(MAKE) -r --no-print-directory $@
else
$(error $@ can be generated for release build only (GCS_BUILD_CONF=release))
endif
else
$(error $@ is currently only available on Windows)
endif
.PHONY: openpilotgcs_clean
openpilotgcs_clean:
$(V0) @echo " CLEAN $@"
@ -290,8 +307,8 @@ openpilotgcs_clean:
.PHONY: uavobjgenerator
uavobjgenerator:
$(V1) mkdir -p $(BUILD_DIR)/ground/$@
$(V1) ( cd $(BUILD_DIR)/ground/$@ ; \
$(QMAKE) $(ROOT_DIR)/ground/uavobjgenerator/uavobjgenerator.pro -spec $(QT_SPEC) -r CONFIG+=debug ; \
$(V1) ( cd $(BUILD_DIR)/ground/$@ && \
$(QMAKE) $(ROOT_DIR)/ground/uavobjgenerator/uavobjgenerator.pro -spec $(QT_SPEC) -r CONFIG+=debug && \
$(MAKE) --no-print-directory -w ; \
)
@ -306,7 +323,7 @@ $(UAVOBJ_OUT_DIR):
$(V1) mkdir -p $@
uavobjects_%: $(UAVOBJ_OUT_DIR) uavobjgenerator
$(V1) ( cd $(UAVOBJ_OUT_DIR) ; \
$(V1) ( cd $(UAVOBJ_OUT_DIR) && \
$(UAVOBJGENERATOR) -$* $(UAVOBJ_XML_DIR) $(ROOT_DIR) ; \
)
@ -323,254 +340,149 @@ uavobjects_clean:
#
##############################
FW_TARGETS := openpilot ahrs coptercontrol pipxtreme ins
BL_TARGETS := $(addprefix bl_, $(FW_TARGETS))
BLUPD_TARGETS := $(addprefix blupd_, $(FW_TARGETS))
# $(1) = Canonical board name all in lower case (e.g. coptercontrol)
# $(2) = Name of board used in source tree (e.g. CopterControl)
define FW_TEMPLATE
.PHONY: $(1) fw_$(1)
$(1): fw_$(1)_opfw
fw_$(1): fw_$(1)_opfw
fw_$(1)_%: uavobjects_flight
$(V1) mkdir -p $(BUILD_DIR)/fw_$(1)/dep
$(V1) cd $(ROOT_DIR)/flight/$(2) && \
$$(MAKE) -r --no-print-directory \
BOARD_NAME=$(1) \
TCHAIN_PREFIX="$(ARM_SDK_PREFIX)" \
REMOVE_CMD="$(RM)" OOCD_EXE="$(OPENOCD)" \
$$*
.PHONY: $(1)_clean
$(1)_clean: fw_$(1)_clean
fw_$(1)_clean:
$(V0) @echo " CLEAN $$@"
$(V1) $(RM) -fr $(BUILD_DIR)/fw_$(1)
endef
# $(1) = Canonical board name all in lower case (e.g. coptercontrol)
# $(2) = Name of board used in source tree (e.g. CopterControl)
define BL_TEMPLATE
.PHONY: bl_$(1)
bl_$(1): bl_$(1)_bin
bl_$(1)_bino: bl_$(1)_bin
bl_$(1)_%:
$(V1) mkdir -p $(BUILD_DIR)/bl_$(1)/dep
$(V1) cd $(ROOT_DIR)/flight/Bootloaders/$(2) && \
$$(MAKE) -r --no-print-directory \
BOARD_NAME=$(1) \
TCHAIN_PREFIX="$(ARM_SDK_PREFIX)" \
REMOVE_CMD="$(RM)" OOCD_EXE="$(OPENOCD)" \
$$*
.PHONY: unbrick_$(1)
unbrick_$(1): bl_$(1)_hex
$(if $(filter-out undefined,$(origin UNBRICK_TTY)),
$(V0) @echo " UNBRICK $(1) via $$(UNBRICK_TTY)"
$(V1) $(STM32FLASH_DIR)/stm32flash \
-w $(BUILD_DIR)/bl_$(1)/bl_$(1).hex \
-g 0x0 \
$$(UNBRICK_TTY)
,
$(V0) @echo
$(V0) @echo "ERROR: You must specify UNBRICK_TTY=<serial-device> to use for unbricking."
$(V0) @echo " eg. $$(MAKE) $$@ UNBRICK_TTY=/dev/ttyUSB0"
)
.PHONY: bl_$(1)_clean
bl_$(1)_clean:
$(V0) @echo " CLEAN $$@"
$(V1) $(RM) -fr $(BUILD_DIR)/bl_$(1)
endef
# $(1) = Canonical board name all in lower case (e.g. coptercontrol)
define BU_TEMPLATE
.PHONY: bu_$(1)
bu_$(1): bu_$(1)_opfw
bu_$(1)_%: bl_$(1)_bino
$(V1) mkdir -p $(BUILD_DIR)/bu_$(1)/dep
$(V1) cd $(ROOT_DIR)/flight/Bootloaders/BootloaderUpdater && \
$$(MAKE) -r --no-print-directory \
BOARD_NAME=$(1) \
TCHAIN_PREFIX="$(ARM_SDK_PREFIX)" \
REMOVE_CMD="$(RM)" OOCD_EXE="$(OPENOCD)" \
$$*
.PHONY: bu_$(1)_clean
bu_$(1)_clean:
$(V0) @echo " CLEAN $$@"
$(V1) $(RM) -fr $(BUILD_DIR)/bu_$(1)
endef
# $(1) = Canonical board name all in lower case (e.g. coptercontrol)
define BOARD_PHONY_TEMPLATE
.PHONY: all_$(1)
all_$(1): $$(filter fw_$(1), $$(FW_TARGETS))
all_$(1): $$(filter bl_$(1), $$(BL_TARGETS))
all_$(1): $$(filter bu_$(1), $$(BU_TARGETS))
.PHONY: all_$(1)_clean
all_$(1)_clean: $$(addsuffix _clean, $$(filter fw_$(1), $$(FW_TARGETS)))
all_$(1)_clean: $$(addsuffix _clean, $$(filter bl_$(1), $$(BL_TARGETS)))
all_$(1)_clean: $$(addsuffix _clean, $$(filter bu_$(1), $$(BU_TARGETS)))
endef
ALL_BOARDS := openpilot ahrs coptercontrol pipxtreme ins
# Friendly names of each board (used to find source tree)
openpilot_friendly := OpenPilot
coptercontrol_friendly := CopterControl
pipxtreme_friendly := PipXtreme
ins_friendly := INS
ahrs_friendly := AHRS
# Start out assuming that we'll build fw, bl and bu for all boards
FW_BOARDS := $(ALL_BOARDS)
BL_BOARDS := $(ALL_BOARDS)
BU_BOARDS := $(ALL_BOARDS)
# FIXME: The INS build doesn't have a bootloader or bootloader
# updater yet so we need to filter them out to prevent errors.
BL_TARGETS := $(filter-out bl_ins, $(BL_TARGETS))
BLUPD_TARGETS := $(filter-out blupd_ins, $(BLUPD_TARGETS))
BL_BOARDS := $(filter-out ins, $(ALL_BOARDS))
BU_BOARDS := $(filter-out ins, $(ALL_BOARDS))
# Generate the targets for whatever boards are left in each list
FW_TARGETS := $(addprefix fw_, $(FW_BOARDS))
BL_TARGETS := $(addprefix bl_, $(BL_BOARDS))
BU_TARGETS := $(addprefix bu_, $(BU_BOARDS))
.PHONY: all_fw all_fw_clean
all_fw: $(addsuffix _bin, $(FW_TARGETS))
all_fw: $(addsuffix _opfw, $(FW_TARGETS))
all_fw_clean: $(addsuffix _clean, $(FW_TARGETS))
.PHONY: all_bl all_bl_clean
all_bl: $(addsuffix _bin, $(BL_TARGETS))
all_bl_clean: $(addsuffix _clean, $(BL_TARGETS))
.PHONY: all_blupd all_blupd_clean
all_blupd: $(addsuffix _bin, $(BLUPD_TARGETS))
all_blupd_clean: $(addsuffix _clean, $(BLUPD_TARGETS))
.PHONY: all_bu all_bu_clean
all_bu: $(addsuffix _opfw, $(BU_TARGETS))
all_bu_clean: $(addsuffix _clean, $(BU_TARGETS))
.PHONY: all_flight all_flight_clean
all_flight: all_fw all_bl all_blupd
all_flight_clean: all_fw_clean all_bl_clean all_blupd_clean
all_flight: all_fw all_bl all_bu
all_flight_clean: all_fw_clean all_bl_clean all_bu_clean
.PHONY: openpilot
openpilot: openpilot_bin
# Expand the groups of targets for each board
$(foreach board, $(ALL_BOARDS), $(eval $(call BOARD_PHONY_TEMPLATE,$(board))))
openpilot_%: uavobjects_flight
$(V1) mkdir -p $(BUILD_DIR)/openpilot/dep
$(V1) cd $(ROOT_DIR)/flight/OpenPilot && \
$(MAKE) -r --no-print-directory \
OUTDIR="$(BUILD_DIR)/openpilot" TCHAIN_PREFIX="$(ARM_SDK_PREFIX)" \
REMOVE_CMD="$(RM)" OOCD_EXE="$(OPENOCD)" $*
# Expand the bootloader updater rules
$(foreach board, $(ALL_BOARDS), $(eval $(call BU_TEMPLATE,$(board),$($(board)_friendly))))
.PHONY: openpilot_clean
openpilot_clean:
$(V0) @echo " CLEAN $@"
$(V1) $(RM) -fr $(BUILD_DIR)/openpilot
.PHONY: bl_openpilot
bl_openpilot: bl_openpilot_bin
bl_openpilot_bino: bl_openpilot_bin
bl_openpilot_%:
$(V1) mkdir -p $(BUILD_DIR)/bl_openpilot/dep
$(V1) cd $(ROOT_DIR)/flight/Bootloaders/OpenPilot && \
$(MAKE) -r --no-print-directory \
OUTDIR="$(BUILD_DIR)/bl_openpilot" TCHAIN_PREFIX="$(ARM_SDK_PREFIX)" \
REMOVE_CMD="$(RM)" OOCD_EXE="$(OPENOCD)" $*
.PHONY: bl_openpilot_clean
bl_openpilot_clean:
$(V0) @echo " CLEAN $@"
$(V1) $(RM) -fr $(BUILD_DIR)/bl_openpilot
.PHONY: blupd_openpilot
blupd_openpilot: blupd_openpilot_bin
blupd_openpilot_%: bl_openpilot_bino
$(V1) mkdir -p $(BUILD_DIR)/blupd_openpilot/dep
$(V1) cd $(ROOT_DIR)/flight/Bootloaders/BootloaderUpdater && \
$(MAKE) -r --no-print-directory \
OUTDIR="$(BUILD_DIR)/blupd_openpilot" TCHAIN_PREFIX="$(ARM_SDK_PREFIX)" \
REMOVE_CMD="$(RM)" OOCD_EXE="$(OPENOCD)" \
BOARD=STM3210E_OP MODEL=HD MODEL_SUFFIX=_OP \
BLOBJ=$(BUILD_DIR)/bl_openpilot/OpenPilot_BL.bin.o $*
.PHONY: blupd_openpilot_clean
blupd_openpilot_clean:
$(V0) @echo " CLEAN $@"
$(V1) $(RM) -fr $(BUILD_DIR)/blupd_openpilot
.PHONY: ahrs
ahrs: ahrs_bin
ahrs_%: uavobjects_flight
$(V1) mkdir -p $(BUILD_DIR)/ahrs/dep
$(V1) cd $(ROOT_DIR)/flight/AHRS && \
$(MAKE) -r --no-print-directory \
OUTDIR="$(BUILD_DIR)/ahrs" TCHAIN_PREFIX="$(ARM_SDK_PREFIX)" \
REMOVE_CMD="$(RM)" OOCD_EXE="$(OPENOCD)" $*
.PHONY: ahrs_clean
ahrs_clean:
$(V0) @echo " CLEAN $@"
$(V1) $(RM) -fr $(BUILD_DIR)/ahrs
.PHONY: bl_ahrs
bl_ahrs: bl_ahrs_bin
bl_ahrs_bino: bl_ahrs_bin
bl_ahrs_%:
$(V1) mkdir -p $(BUILD_DIR)/bl_ahrs/dep
$(V1) cd $(ROOT_DIR)/flight/Bootloaders/AHRS && \
$(MAKE) -r --no-print-directory \
OUTDIR="$(BUILD_DIR)/bl_ahrs" TCHAIN_PREFIX="$(ARM_SDK_PREFIX)" \
REMOVE_CMD="$(RM)" OOCD_EXE="$(OPENOCD)" $*
.PHONY: bl_ahrs_clean
bl_ahrs_clean:
$(V0) @echo " CLEAN $@"
$(V1) $(RM) -fr $(BUILD_DIR)/bl_ahrs
.PHONY: blupd_ahrs
blupd_ahrs: blupd_ahrs_bin
blupd_ahrs_%: bl_ahrs_bino bl_ahrs
$(V1) mkdir -p $(BUILD_DIR)/blupd_ahrs/dep
$(V1) cd $(ROOT_DIR)/flight/Bootloaders/BootloaderUpdater && \
$(MAKE) -r --no-print-directory \
OUTDIR="$(BUILD_DIR)/blupd_ahrs" TCHAIN_PREFIX="$(ARM_SDK_PREFIX)" \
REMOVE_CMD="$(RM)" OOCD_EXE="$(OPENOCD)" \
BOARD=STM32103CB_AHRS MODEL=MD \
BLOBJ=$(BUILD_DIR)/bl_ahrs/AHRS_BL.bin.o $*
.PHONY: blupd_ahrs_clean
blupd_ahrs_clean:
$(V0) @echo " CLEAN $@"
$(V1) $(RM) -fr $(BUILD_DIR)/blupd_ahrs
.PHONY: coptercontrol
coptercontrol: coptercontrol_bin
coptercontrol_%: uavobjects_flight
$(V1) mkdir -p $(BUILD_DIR)/coptercontrol/dep
$(V1) cd $(ROOT_DIR)/flight/CopterControl && \
$(MAKE) -r --no-print-directory \
OUTDIR="$(BUILD_DIR)/coptercontrol" TCHAIN_PREFIX="$(ARM_SDK_PREFIX)" \
REMOVE_CMD="$(RM)" OOCD_EXE="$(OPENOCD)" $*
.PHONY: coptercontrol_clean
coptercontrol_clean:
$(V0) @echo " CLEAN $@"
$(V1) $(RM) -fr $(BUILD_DIR)/coptercontrol
.PHONY: bl_coptercontrol
bl_coptercontrol: bl_coptercontrol_bin
bl_coptercontrol_bino: bl_coptercontrol_bin
bl_coptercontrol_%:
$(V1) mkdir -p $(BUILD_DIR)/bl_coptercontrol/dep
$(V1) cd $(ROOT_DIR)/flight/Bootloaders/CopterControl && \
$(MAKE) -r --no-print-directory \
OUTDIR="$(BUILD_DIR)/bl_coptercontrol" TCHAIN_PREFIX="$(ARM_SDK_PREFIX)" \
REMOVE_CMD="$(RM)" OOCD_EXE="$(OPENOCD)" $*
.PHONY: bl_coptercontrol_clean
bl_coptercontrol_clean:
$(V0) @echo " CLEAN $@"
$(V1) $(RM) -fr $(BUILD_DIR)/bl_coptercontrol
.PHONY: blupd_coptercontrol
blupd_coptercontrol: blupd_coptercontrol_bin
blupd_coptercontrol_%: bl_coptercontrol_bino
$(V1) mkdir -p $(BUILD_DIR)/blupd_coptercontrol/dep
$(V1) cd $(ROOT_DIR)/flight/Bootloaders/BootloaderUpdater && \
$(MAKE) -r --no-print-directory \
OUTDIR="$(BUILD_DIR)/blupd_coptercontrol" TCHAIN_PREFIX="$(ARM_SDK_PREFIX)" \
REMOVE_CMD="$(RM)" OOCD_EXE="$(OPENOCD)" \
BOARD=STM32103CB_CC_Rev1 MODEL=MD MODEL_SUFFIX=_CC \
BLOBJ=$(BUILD_DIR)/bl_coptercontrol/CopterControl_BL.bin.o $*
.PHONY: blupd_coptercontrol_clean
blupd_coptercontrol_clean:
$(V0) @echo " CLEAN $@"
$(V1) $(RM) -fr $(BUILD_DIR)/blupd_coptercontrol
.PHONY: pipxtreme
pipxtreme: pipxtreme_bin
pipxtreme_%: uavobjects_flight
$(V1) mkdir -p $(BUILD_DIR)/pipxtreme/dep
$(V1) cd $(ROOT_DIR)/flight/PipXtreme && \
$(MAKE) -r --no-print-directory \
OUTDIR="$(BUILD_DIR)/pipxtreme" TCHAIN_PREFIX="$(ARM_SDK_PREFIX)" \
REMOVE_CMD="$(RM)" OOCD_EXE="$(OPENOCD)" $*
.PHONY: pipxtreme_clean
pipxtreme_clean:
$(V0) @echo " CLEAN $@"
$(V1) $(RM) -fr $(BUILD_DIR)/pipxtreme
.PHONY: bl_pipxtreme
bl_pipxtreme: bl_pipxtreme_bin
bl_pipxtreme_bino: bl_pipxtreme_bin
bl_pipxtreme_%:
$(V1) mkdir -p $(BUILD_DIR)/bl_pipxtreme/dep
$(V1) cd $(ROOT_DIR)/flight/Bootloaders/PipXtreme && \
$(MAKE) -r --no-print-directory \
OUTDIR="$(BUILD_DIR)/bl_pipxtreme" TCHAIN_PREFIX="$(ARM_SDK_PREFIX)" \
REMOVE_CMD="$(RM)" OOCD_EXE="$(OPENOCD)" $*
.PHONY: bl_pipxtreme_clean
bl_pipxtreme_clean:
$(V0) @echo " CLEAN $@"
$(V1) $(RM) -fr $(BUILD_DIR)/bl_pipxtreme
.PHONY: blupd_pipxtreme
blupd_pipxtreme: blupd_pipxtreme_bin
blupd_pipxtreme_%: bl_pipxtreme_bino
$(V1) mkdir -p $(BUILD_DIR)/blupd_pipxtreme/dep
$(V1) cd $(ROOT_DIR)/flight/Bootloaders/BootloaderUpdater && \
$(MAKE) -r --no-print-directory \
OUTDIR="$(BUILD_DIR)/blupd_pipxtreme" TCHAIN_PREFIX="$(ARM_SDK_PREFIX)" \
REMOVE_CMD="$(RM)" OOCD_EXE="$(OPENOCD)" \
BOARD=STM32103CB_PIPXTREME MODEL=MD MODEL_SUFFIX=_CC \
BLOBJ=$(BUILD_DIR)/bl_pipxtreme/PipXtreme_BL.bin.o $*
.PHONY: blupd_pipxtreme_clean
blupd_pipxtreme_clean:
$(V0) @echo " CLEAN $@"
$(V1) $(RM) -fr $(BUILD_DIR)/blupd_pipxtreme
.PHONY: ins
ins: ins_bin
ins_%: uavobjects_flight
$(V1) mkdir -p $(BUILD_DIR)/ins/dep
$(V1) cd $(ROOT_DIR)/flight/INS && \
$(MAKE) -r --no-print-directory \
OUTDIR="$(BUILD_DIR)/ins" TCHAIN_PREFIX="$(ARM_SDK_PREFIX)" \
REMOVE_CMD="$(RM)" OOCD_EXE="$(OPENOCD)" $*
.PHONY: ins_clean
ins_clean:
$(V0) @echo " CLEAN $@"
$(V1) $(RM) -fr $(BUILD_DIR)/ins
.PHONY: bl_ins
bl_ins: bl_ins_elf
bl_ins_%:
$(V1) mkdir -p $(BUILD_DIR)/bl_ins/dep
$(V1) cd $(ROOT_DIR)/flight/Bootloaders/INS && \
$(MAKE) -r --no-print-directory \
OUTDIR="$(BUILD_DIR)/bl_ins" TCHAIN_PREFIX="$(ARM_SDK_PREFIX)" \
REMOVE_CMD="$(RM)" OOCD_EXE="$(OPENOCD)" $*
.PHONY: bl_ins_clean
bl_ins_clean:
$(V0) @echo " CLEAN $@"
$(V1) $(RM) -fr $(BUILD_DIR)/bl_ins
# Expand the firmware rules
$(foreach board, $(ALL_BOARDS), $(eval $(call FW_TEMPLATE,$(board),$($(board)_friendly))))
# Expand the bootloader rules
$(foreach board, $(ALL_BOARDS), $(eval $(call BL_TEMPLATE,$(board),$($(board)_friendly))))
.PHONY: sim_posix
sim_posix: sim_posix_elf
@ -587,3 +499,12 @@ sim_win32_%: uavobjects_flight
$(V1) mkdir -p $(BUILD_DIR)/sitl_win32
$(V1) $(MAKE) --no-print-directory \
-C $(ROOT_DIR)/flight/OpenPilot --file=$(ROOT_DIR)/flight/OpenPilot/Makefile.win32 $*
##############################
#
# Packaging components
#
##############################
.PHONY: package
package:
$(V1) cd $@ && $(MAKE) --no-print-directory $@

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 125 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 132 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 84 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 84 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -14,7 +14,7 @@
height="80.827866"
id="svg10068"
version="1.1"
inkscape:version="0.47 r22583"
inkscape:version="0.48.1 r9760"
sodipodi:docname="flightmode-status.svg"
inkscape:export-filename="H:\Documents\Hobbies\W433\My Gauges\vbat-001.png"
inkscape:export-xdpi="103.61"
@ -949,6 +949,94 @@
fx="29.77438"
fy="7.0922189"
r="25.380436" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient5224-4"
id="radialGradient3197"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,0.29375,0,18.848047)"
cx="14.5"
cy="26.6875"
fx="14.5"
fy="26.6875"
r="10" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient5224-4"
id="radialGradient3199"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,0.29375,0,18.848047)"
cx="14.5"
cy="26.6875"
fx="14.5"
fy="26.6875"
r="10" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient5237-2"
id="radialGradient3201"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.5354369,0,0,1.5485894,-15.737913,-10.36738)"
cx="29.392656"
cy="18.898249"
fx="29.392656"
fy="18.898249"
r="29.699959" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient5300-7"
id="radialGradient3203"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(2.2469896,0,0,2.2469896,-37.128341,-8.8439229)"
cx="29.77438"
cy="7.0922189"
fx="29.77438"
fy="7.0922189"
r="25.380436" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient5224-4"
id="radialGradient3231"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,0.29375,0,18.848047)"
cx="14.5"
cy="26.6875"
fx="14.5"
fy="26.6875"
r="10" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient5224-4"
id="radialGradient3233"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,0.29375,0,18.848047)"
cx="14.5"
cy="26.6875"
fx="14.5"
fy="26.6875"
r="10" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient5237-2"
id="radialGradient3235"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.5354369,0,0,1.5485894,-15.737913,-10.36738)"
cx="29.392656"
cy="18.898249"
fx="29.392656"
fy="18.898249"
r="29.699959" />
<radialGradient
inkscape:collect="always"
xlink:href="#linearGradient5300-7"
id="radialGradient3237"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(2.2469896,0,0,2.2469896,-37.128341,-8.8439229)"
cx="29.77438"
cy="7.0922189"
fx="29.77438"
fy="7.0922189"
r="25.380436" />
</defs>
<sodipodi:namedview
id="base"
@ -958,13 +1046,13 @@
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="1.979899"
inkscape:cx="56.191298"
inkscape:cx="-7.1957738"
inkscape:cy="90.710362"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:window-width="1280"
inkscape:window-height="725"
inkscape:window-width="1366"
inkscape:window-height="691"
inkscape:window-x="0"
inkscape:window-y="24"
inkscape:window-maximized="1"
@ -1090,13 +1178,13 @@
style="opacity:0.98000004;fill:#ffffff;fill-opacity:1;stroke:#e31717;stroke-width:3.18836617;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
id="value"
width="132.66878"
height="20.899738"
height="13.323594"
x="15.425945"
y="29.964067"
ry="5.4077783"
y="33.75214"
ry="3.4474616"
inkscape:label="#rect2989" />
<g
id="symbol-Stabilized"
id="symbol-Stabilized1"
inkscape:label="#g3832"
transform="matrix(1.2181818,0,0,1.2181818,-416.7342,39.213763)">
<g
@ -1297,7 +1385,7 @@
</g>
</g>
<g
id="symbol-Auto"
id="symbol-VelocityControl"
inkscape:label="#g4229"
transform="matrix(1.2181818,0,0,1.2181818,-132.92733,94.550987)">
<g
@ -1354,5 +1442,245 @@
inkscape:export-xdpi="103.61"
inkscape:export-ydpi="103.61" />
</g>
<g
transform="matrix(1.2181818,0,0,1.2181818,-488.7342,39.213763)"
inkscape:label="#g3832"
id="symbol-Stabilized2">
<g
style="display:inline"
id="g3173"
inkscape:label="#g4504"
transform="matrix(1.6946172,0,0,1.6946172,90.69312,69.91641)">
<path
d="m 24.5,26.6875 c 0,1.622336 -4.477153,2.9375 -10,2.9375 -5.5228475,0 -10,-1.315164 -10,-2.9375 0,-1.622336 4.4771525,-2.9375 10,-2.9375 5.522847,0 10,1.315164 10,2.9375 z"
id="path3175"
sodipodi:cx="14.5"
sodipodi:cy="26.6875"
sodipodi:rx="10"
sodipodi:ry="2.9375"
sodipodi:type="arc"
style="opacity:0.53012049;color:#000000;fill:url(#radialGradient3197);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;filter:url(#filter5296-2);enable-background:accumulate"
transform="matrix(1.3565115,0,0,1.3564842,148.6163,-105.84566)" />
<path
d="m 24.5,26.6875 c 0,1.622336 -4.477153,2.9375 -10,2.9375 -5.5228475,0 -10,-1.315164 -10,-2.9375 0,-1.622336 4.4771525,-2.9375 10,-2.9375 5.522847,0 10,1.315164 10,2.9375 z"
id="path3177"
sodipodi:cx="14.5"
sodipodi:cy="26.6875"
sodipodi:rx="10"
sodipodi:ry="2.9375"
sodipodi:type="arc"
style="opacity:0.80120479;color:#000000;fill:url(#radialGradient3199);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;filter:url(#filter5296-2);enable-background:accumulate"
transform="matrix(0.8476709,0,0,0.8476539,155.99448,-91.479567)" />
<path
d="m 58.403591,29.207693 c 0,16.022297 -12.988638,29.010935 -29.010935,29.010935 -16.022297,0 -29.0109345,-12.988638 -29.0109345,-29.010935 0,-16.022297 12.9886375,-29.01093473 29.0109345,-29.01093473 16.022297,0 29.010935,12.98863773 29.010935,29.01093473 z"
id="path3179"
sodipodi:cx="29.392656"
sodipodi:cy="29.207693"
sodipodi:rx="29.010935"
sodipodi:ry="29.010935"
sodipodi:type="arc"
style="fill:url(#radialGradient3201);fill-opacity:1;fill-rule:evenodd;stroke:#d4d0d0;stroke-width:2.19046068;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
transform="matrix(0.4552142,0,0,0.4578395,154.92379,-94.080092)" />
<path
d="m 53.950159,30.352861 c 0,13.351915 -10.823865,24.17578 -24.175779,24.17578 -13.351915,0 -24.1757796,-10.823865 -24.1757796,-24.17578 0,-13.351914 10.8238646,-24.1757789 24.1757796,-24.1757789 13.351914,0 24.175779,10.8238649 24.175779,24.1757789 z"
id="path3181"
sodipodi:cx="29.77438"
sodipodi:cy="30.352861"
sodipodi:rx="24.175779"
sodipodi:ry="24.175779"
sodipodi:type="arc"
style="fill:none;stroke:url(#radialGradient3203);stroke-width:1.98282218;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
transform="matrix(0.5041973,0,0,0.5044661,153.2742,-96.019639)" />
</g>
<g
style="stroke-width:5.32037735;stroke-miterlimit:4;stroke-dasharray:none"
id="g3183"
transform="matrix(0.33832187,0,0,0.33832187,410.06766,-39.187259)">
<path
sodipodi:open="true"
sodipodi:type="arc"
style="opacity:0.98000004;fill:none;stroke:#ff4e34;stroke-width:5.56557703;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline"
id="path3185"
sodipodi:cx="-102.85714"
sodipodi:cy="-85.6007"
sodipodi:rx="21.428572"
sodipodi:ry="5.7142859"
d="m -124.28571,-85.600701 c 0,-3.155913 9.5939,-5.714285 21.42857,-5.714285 11.834674,0 21.428572,2.558373 21.428572,5.714286"
transform="matrix(0.9559435,0,0,0.9559435,-2.74581,-3.77127)"
sodipodi:start="3.1415927"
sodipodi:end="6.2831853" />
<path
transform="translate(0,-0.35714)"
d="m -51.42857,-85.243561 c 0,6.50907 -22.225864,11.785714 -49.64286,11.785714 -27.41699,0 -49.64285,-5.276644 -49.64285,-11.785714 0,-6.50907 22.22586,-11.785714 49.64285,-11.785714 27.416996,0 49.64286,5.276644 49.64286,11.785714 z"
sodipodi:ry="11.785714"
sodipodi:rx="49.642857"
sodipodi:cy="-85.243561"
sodipodi:cx="-101.07143"
id="path3187"
style="opacity:0.98000004;fill:none;stroke:#ff4e34;stroke-width:5.32037735;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline"
sodipodi:type="arc" />
<path
id="path3189"
d="m -101.07143,-37.895278 0,-96.382562"
style="fill:none;stroke:#ff4e34;stroke-width:5.32037735;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
inkscape:connector-curvature="0" />
<path
sodipodi:open="true"
transform="matrix(0.9559435,0,0,0.9559435,-2.7458124,-3.7712673)"
d="m -81.428568,-85.6007 c 0,3.155913 -9.593898,5.714285 -21.428572,5.714285 -11.83467,0 -21.42857,-2.558372 -21.42857,-5.714285 0,0 0,-10e-7 0,-10e-7"
sodipodi:ry="5.7142859"
sodipodi:rx="21.428572"
sodipodi:cy="-85.6007"
sodipodi:cx="-102.85714"
id="path3191"
style="opacity:0.98000004;fill:none;stroke:#ff4e34;stroke-width:5.56557703;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
sodipodi:type="arc"
sodipodi:start="0"
sodipodi:end="3.1415927" />
<path
transform="matrix(1.0062564,0,0,1,1.3510971,0)"
d="m -81.42857,-85.6007 c 0,21.6969 -9.114203,39.285713 -20.35714,39.285713 -11.24294,0 -20.35715,-17.588813 -20.35715,-39.285713 0,-21.6969 9.11421,-39.28571 20.35715,-39.28571 11.242937,0 20.35714,17.58881 20.35714,39.28571 z"
sodipodi:ry="39.285713"
sodipodi:rx="20.357143"
sodipodi:cy="-85.6007"
sodipodi:cx="-101.78571"
id="path3193"
style="opacity:0.98000004;fill:none;stroke:#ff4e34;stroke-width:5.30381203;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
sodipodi:type="arc" />
<path
sodipodi:open="true"
sodipodi:end="3.1415927"
sodipodi:start="0"
sodipodi:type="arc"
style="opacity:0.98000004;fill:none;stroke:#ff4e34;stroke-width:5.32037735;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
id="path3195"
sodipodi:cx="-101.07143"
sodipodi:cy="-85.243561"
sodipodi:rx="49.642857"
sodipodi:ry="11.785714"
d="m -51.42857,-85.243561 c 0,6.50907 -22.225864,11.785714 -49.64286,11.785714 -27.41699,0 -49.64285,-5.276644 -49.64285,-11.785714 0,0 0,0 0,0"
transform="translate(0,-0.35713959)" />
</g>
</g>
<g
id="symbol-Stabilized3"
inkscape:label="#g3832"
transform="matrix(1.2181818,0,0,1.2181818,-488.7342,-34.786237)">
<g
transform="matrix(1.6946172,0,0,1.6946172,90.69312,69.91641)"
inkscape:label="#g4504"
id="g3207"
style="display:inline">
<path
transform="matrix(1.3565115,0,0,1.3564842,148.6163,-105.84566)"
style="opacity:0.53012049;color:#000000;fill:url(#radialGradient3231);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;filter:url(#filter5296-2);enable-background:accumulate"
sodipodi:type="arc"
sodipodi:ry="2.9375"
sodipodi:rx="10"
sodipodi:cy="26.6875"
sodipodi:cx="14.5"
id="path3209"
d="m 24.5,26.6875 c 0,1.622336 -4.477153,2.9375 -10,2.9375 -5.5228475,0 -10,-1.315164 -10,-2.9375 0,-1.622336 4.4771525,-2.9375 10,-2.9375 5.522847,0 10,1.315164 10,2.9375 z" />
<path
transform="matrix(0.8476709,0,0,0.8476539,155.99448,-91.479567)"
style="opacity:0.80120479;color:#000000;fill:url(#radialGradient3233);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;filter:url(#filter5296-2);enable-background:accumulate"
sodipodi:type="arc"
sodipodi:ry="2.9375"
sodipodi:rx="10"
sodipodi:cy="26.6875"
sodipodi:cx="14.5"
id="path3211"
d="m 24.5,26.6875 c 0,1.622336 -4.477153,2.9375 -10,2.9375 -5.5228475,0 -10,-1.315164 -10,-2.9375 0,-1.622336 4.4771525,-2.9375 10,-2.9375 5.522847,0 10,1.315164 10,2.9375 z" />
<path
transform="matrix(0.4552142,0,0,0.4578395,154.92379,-94.080092)"
style="fill:url(#radialGradient3235);fill-opacity:1;fill-rule:evenodd;stroke:#d4d0d0;stroke-width:2.19046068;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
sodipodi:type="arc"
sodipodi:ry="29.010935"
sodipodi:rx="29.010935"
sodipodi:cy="29.207693"
sodipodi:cx="29.392656"
id="path3213"
d="m 58.403591,29.207693 c 0,16.022297 -12.988638,29.010935 -29.010935,29.010935 -16.022297,0 -29.0109345,-12.988638 -29.0109345,-29.010935 0,-16.022297 12.9886375,-29.01093473 29.0109345,-29.01093473 16.022297,0 29.010935,12.98863773 29.010935,29.01093473 z" />
<path
transform="matrix(0.5041973,0,0,0.5044661,153.2742,-96.019639)"
style="fill:none;stroke:url(#radialGradient3237);stroke-width:1.98282218;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
sodipodi:type="arc"
sodipodi:ry="24.175779"
sodipodi:rx="24.175779"
sodipodi:cy="30.352861"
sodipodi:cx="29.77438"
id="path3215"
d="m 53.950159,30.352861 c 0,13.351915 -10.823865,24.17578 -24.175779,24.17578 -13.351915,0 -24.1757796,-10.823865 -24.1757796,-24.17578 0,-13.351914 10.8238646,-24.1757789 24.1757796,-24.1757789 13.351914,0 24.175779,10.8238649 24.175779,24.1757789 z" />
</g>
<g
transform="matrix(0.33832187,0,0,0.33832187,410.06766,-39.187259)"
id="g3217"
style="stroke-width:5.32037735;stroke-miterlimit:4;stroke-dasharray:none">
<path
sodipodi:end="6.2831853"
sodipodi:start="3.1415927"
transform="matrix(0.9559435,0,0,0.9559435,-2.74581,-3.77127)"
d="m -124.28571,-85.600701 c 0,-3.155913 9.5939,-5.714285 21.42857,-5.714285 11.834674,0 21.428572,2.558373 21.428572,5.714286"
sodipodi:ry="5.7142859"
sodipodi:rx="21.428572"
sodipodi:cy="-85.6007"
sodipodi:cx="-102.85714"
id="path3219"
style="opacity:0.98000004;fill:none;stroke:#ff4e34;stroke-width:5.56557703;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline"
sodipodi:type="arc"
sodipodi:open="true" />
<path
sodipodi:type="arc"
style="opacity:0.98000004;fill:none;stroke:#ff4e34;stroke-width:5.32037735;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline"
id="path3221"
sodipodi:cx="-101.07143"
sodipodi:cy="-85.243561"
sodipodi:rx="49.642857"
sodipodi:ry="11.785714"
d="m -51.42857,-85.243561 c 0,6.50907 -22.225864,11.785714 -49.64286,11.785714 -27.41699,0 -49.64285,-5.276644 -49.64285,-11.785714 0,-6.50907 22.22586,-11.785714 49.64285,-11.785714 27.416996,0 49.64286,5.276644 49.64286,11.785714 z"
transform="translate(0,-0.35714)" />
<path
inkscape:connector-curvature="0"
style="fill:none;stroke:#ff4e34;stroke-width:5.32037735;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m -101.07143,-37.895278 0,-96.382562"
id="path3223" />
<path
sodipodi:end="3.1415927"
sodipodi:start="0"
sodipodi:type="arc"
style="opacity:0.98000004;fill:none;stroke:#ff4e34;stroke-width:5.56557703;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
id="path3225"
sodipodi:cx="-102.85714"
sodipodi:cy="-85.6007"
sodipodi:rx="21.428572"
sodipodi:ry="5.7142859"
d="m -81.428568,-85.6007 c 0,3.155913 -9.593898,5.714285 -21.428572,5.714285 -11.83467,0 -21.42857,-2.558372 -21.42857,-5.714285 0,0 0,-10e-7 0,-10e-7"
transform="matrix(0.9559435,0,0,0.9559435,-2.7458124,-3.7712673)"
sodipodi:open="true" />
<path
sodipodi:type="arc"
style="opacity:0.98000004;fill:none;stroke:#ff4e34;stroke-width:5.30381203;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
id="path3227"
sodipodi:cx="-101.78571"
sodipodi:cy="-85.6007"
sodipodi:rx="20.357143"
sodipodi:ry="39.285713"
d="m -81.42857,-85.6007 c 0,21.6969 -9.114203,39.285713 -20.35714,39.285713 -11.24294,0 -20.35715,-17.588813 -20.35715,-39.285713 0,-21.6969 9.11421,-39.28571 20.35715,-39.28571 11.242937,0 20.35714,17.58881 20.35714,39.28571 z"
transform="matrix(1.0062564,0,0,1,1.3510971,0)" />
<path
transform="translate(0,-0.35713959)"
d="m -51.42857,-85.243561 c 0,6.50907 -22.225864,11.785714 -49.64286,11.785714 -27.41699,0 -49.64285,-5.276644 -49.64285,-11.785714 0,0 0,0 0,0"
sodipodi:ry="11.785714"
sodipodi:rx="49.642857"
sodipodi:cy="-85.243561"
sodipodi:cx="-101.07143"
id="path3229"
style="opacity:0.98000004;fill:none;stroke:#ff4e34;stroke-width:5.32037735;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
sodipodi:type="arc"
sodipodi:start="0"
sodipodi:end="3.1415927"
sodipodi:open="true" />
</g>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 52 KiB

After

Width:  |  Height:  |  Size: 69 KiB

View File

@ -0,0 +1,1329 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="280.76797"
height="70.597504"
id="svg10068"
version="1.1"
inkscape:version="0.48.1 "
sodipodi:docname="lineardial-horizontal.svg"
inkscape:export-filename="H:\Documents\Hobbies\W433\My Gauges\vbat-001.png"
inkscape:export-xdpi="103.61"
inkscape:export-ydpi="103.61"
style="display:inline">
<defs
id="defs10070">
<linearGradient
id="linearGradient4439">
<stop
style="stop-color:#1a1a1a;stop-opacity:1"
offset="0"
id="stop4441" />
<stop
id="stop4443"
offset="0.19742694"
style="stop-color:#808080;stop-opacity:1" />
<stop
style="stop-color:#000000;stop-opacity:1"
offset="1"
id="stop4445" />
</linearGradient>
<linearGradient
id="linearGradient4413">
<stop
id="stop4415"
offset="0"
style="stop-color:#1a1a1a;stop-opacity:1" />
<stop
style="stop-color:#4d4d4d;stop-opacity:1"
offset="0.19742694"
id="stop4417" />
<stop
id="stop4419"
offset="1"
style="stop-color:#000000;stop-opacity:1" />
</linearGradient>
<linearGradient
id="linearGradient4387">
<stop
id="stop4389"
offset="0"
style="stop-color:#4d4d4d;stop-opacity:1" />
<stop
style="stop-color:#000000;stop-opacity:1"
offset="0.60976541"
id="stop4391" />
<stop
id="stop4393"
offset="1"
style="stop-color:#4d4d4d;stop-opacity:1" />
</linearGradient>
<linearGradient
id="linearGradient4361">
<stop
style="stop-color:#4d4d4d;stop-opacity:1"
offset="0"
id="stop4363" />
<stop
id="stop4365"
offset="0.60976541"
style="stop-color:#000000;stop-opacity:1" />
<stop
style="stop-color:#4d4d4d;stop-opacity:1"
offset="1"
id="stop4367" />
</linearGradient>
<linearGradient
id="linearGradient4317">
<stop
id="stop4319"
offset="0"
style="stop-color:#4d4d4d;stop-opacity:1" />
<stop
style="stop-color:#000000;stop-opacity:1"
offset="0.60976541"
id="stop4321" />
<stop
id="stop4323"
offset="1"
style="stop-color:#b3b3b3;stop-opacity:1" />
</linearGradient>
<linearGradient
id="linearGradient4265">
<stop
style="stop-color:#333333;stop-opacity:1"
offset="0"
id="stop4267" />
<stop
id="stop4269"
offset="0.60976541"
style="stop-color:#000000;stop-opacity:1" />
<stop
style="stop-color:#333333;stop-opacity:1"
offset="1"
id="stop4271" />
</linearGradient>
<linearGradient
id="linearGradient4239">
<stop
id="stop4241"
offset="0"
style="stop-color:#000000;stop-opacity:1" />
<stop
style="stop-color:#808080;stop-opacity:1"
offset="0.60976541"
id="stop4243" />
<stop
id="stop4245"
offset="1"
style="stop-color:#000000;stop-opacity:1" />
</linearGradient>
<linearGradient
id="linearGradient4215">
<stop
style="stop-color:#1a1a1a;stop-opacity:1"
offset="0"
id="stop4217" />
<stop
id="stop4219"
offset="0.3051295"
style="stop-color:#808080;stop-opacity:1" />
<stop
style="stop-color:#000000;stop-opacity:1"
offset="1"
id="stop4221" />
</linearGradient>
<linearGradient
id="linearGradient4193">
<stop
id="stop4195"
offset="0"
style="stop-color:#1a1a1a;stop-opacity:1" />
<stop
style="stop-color:#999999;stop-opacity:1"
offset="0.3051295"
id="stop4197" />
<stop
id="stop4199"
offset="1"
style="stop-color:#000000;stop-opacity:1" />
</linearGradient>
<linearGradient
id="linearGradient4171">
<stop
style="stop-color:#1a1a1a;stop-opacity:1"
offset="0"
id="stop4173" />
<stop
id="stop4175"
offset="0.3051295"
style="stop-color:#666666;stop-opacity:1" />
<stop
style="stop-color:#1a1a1a;stop-opacity:1"
offset="1"
id="stop4177" />
</linearGradient>
<linearGradient
id="linearGradient4121">
<stop
id="stop4123"
offset="0"
style="stop-color:#1a1a1a;stop-opacity:1" />
<stop
style="stop-color:#666666;stop-opacity:1"
offset="0.2984421"
id="stop4125" />
<stop
id="stop4127"
offset="1"
style="stop-color:#1a1a1a;stop-opacity:1" />
</linearGradient>
<linearGradient
id="linearGradient4085">
<stop
style="stop-color:#1a1a1a;stop-opacity:1"
offset="0"
id="stop4087" />
<stop
id="stop4089"
offset="0.2984421"
style="stop-color:#999999;stop-opacity:1" />
<stop
style="stop-color:#1a1a1a;stop-opacity:1"
offset="1"
id="stop4091" />
</linearGradient>
<linearGradient
id="linearGradient4063">
<stop
id="stop4065"
offset="0"
style="stop-color:#1a1a1a;stop-opacity:1" />
<stop
style="stop-color:#b3b3b3;stop-opacity:1"
offset="0.39999998"
id="stop4067" />
<stop
id="stop4069"
offset="1"
style="stop-color:#1a1a1a;stop-opacity:1" />
</linearGradient>
<linearGradient
id="linearGradient4027">
<stop
style="stop-color:#000000;stop-opacity:1"
offset="0"
id="stop4029" />
<stop
id="stop4031"
offset="0.31880337"
style="stop-color:#b3b3b3;stop-opacity:1" />
<stop
style="stop-color:#000000;stop-opacity:1"
offset="1"
id="stop4033" />
</linearGradient>
<linearGradient
id="linearGradient3903">
<stop
id="stop3905"
offset="0"
style="stop-color:#000000;stop-opacity:1" />
<stop
style="stop-color:#ffffff;stop-opacity:1"
offset="0.3220683"
id="stop3907" />
<stop
id="stop3909"
offset="1"
style="stop-color:#000000;stop-opacity:1" />
</linearGradient>
<linearGradient
id="linearGradient5375">
<stop
style="stop-color:#00000c;stop-opacity:1"
offset="0"
id="stop5377" />
<stop
id="stop5383"
offset="0.34210527"
style="stop-color:#0044d8;stop-opacity:1" />
<stop
style="stop-color:#00000c;stop-opacity:1"
offset="1"
id="stop5379" />
</linearGradient>
<linearGradient
id="linearGradient5367">
<stop
style="stop-color:#000020;stop-opacity:1"
offset="0"
id="stop5369" />
<stop
id="stop5371"
offset="1"
style="stop-color:#000018;stop-opacity:1" />
</linearGradient>
<linearGradient
id="linearGradient5359">
<stop
style="stop-color:#00002c;stop-opacity:1"
offset="0"
id="stop5361" />
<stop
id="stop5363"
offset="0.32456139"
style="stop-color:#00ffff;stop-opacity:1" />
<stop
style="stop-color:#00c8fc;stop-opacity:1"
offset="1"
id="stop5365" />
</linearGradient>
<linearGradient
id="linearGradient5346">
<stop
id="stop5348"
offset="0"
style="stop-color:#1a1a1a;stop-opacity:1" />
<stop
style="stop-color:#666666;stop-opacity:1"
offset="0.37595931"
id="stop5350" />
<stop
id="stop5352"
offset="1"
style="stop-color:#1a1a1a;stop-opacity:1" />
</linearGradient>
<linearGradient
id="linearGradient5326">
<stop
style="stop-color:#000000;stop-opacity:1"
offset="0"
id="stop5328" />
<stop
id="stop5330"
offset="0.35277387"
style="stop-color:#4d4d4d;stop-opacity:1" />
<stop
style="stop-color:#000000;stop-opacity:1"
offset="1"
id="stop5332" />
</linearGradient>
<linearGradient
id="linearGradient5306">
<stop
id="stop5308"
offset="0"
style="stop-color:#000000;stop-opacity:1" />
<stop
style="stop-color:#808080;stop-opacity:1"
offset="0.35277387"
id="stop5310" />
<stop
id="stop5312"
offset="1"
style="stop-color:#000000;stop-opacity:1" />
</linearGradient>
<linearGradient
id="linearGradient5271">
<stop
id="stop5273"
offset="0"
style="stop-color:#000080;stop-opacity:1" />
<stop
style="stop-color:#00ffff;stop-opacity:1"
offset="0.32456139"
id="stop5275" />
<stop
id="stop5277"
offset="1"
style="stop-color:#000080;stop-opacity:1" />
</linearGradient>
<linearGradient
id="linearGradient5248">
<stop
style="stop-color:#000080;stop-opacity:1"
offset="0"
id="stop5250" />
<stop
id="stop5256"
offset="0.32456139"
style="stop-color:#00ffff;stop-opacity:1" />
<stop
style="stop-color:#000080;stop-opacity:1"
offset="1"
id="stop5252" />
</linearGradient>
<linearGradient
id="linearGradient5236">
<stop
style="stop-color:#000000;stop-opacity:1;"
offset="0"
id="stop5238" />
<stop
id="stop5244"
offset="0.5"
style="stop-color:#000000;stop-opacity:0.49803922;" />
<stop
style="stop-color:#000000;stop-opacity:0;"
offset="1"
id="stop5240" />
</linearGradient>
<linearGradient
id="linearGradient5219">
<stop
style="stop-color:#000000;stop-opacity:1"
offset="0"
id="stop5221" />
<stop
id="stop5223"
offset="0.35277387"
style="stop-color:#b3b3b3;stop-opacity:1" />
<stop
style="stop-color:#1a1a1a;stop-opacity:1"
offset="1"
id="stop5225" />
</linearGradient>
<linearGradient
id="linearGradient5151">
<stop
id="stop5153"
offset="0"
style="stop-color:#000000;stop-opacity:1" />
<stop
style="stop-color:#b3b3b3;stop-opacity:1"
offset="0.38512576"
id="stop5155" />
<stop
id="stop5157"
offset="1"
style="stop-color:#000000;stop-opacity:1" />
</linearGradient>
<linearGradient
id="linearGradient5129">
<stop
style="stop-color:#1a1a1a;stop-opacity:1"
offset="0"
id="stop5131" />
<stop
id="stop5137"
offset="0.38512576"
style="stop-color:#cccccc;stop-opacity:1" />
<stop
style="stop-color:#4d4d4d;stop-opacity:1"
offset="1"
id="stop5133" />
</linearGradient>
<linearGradient
id="linearGradient5116">
<stop
style="stop-color:#000000;stop-opacity:1"
offset="0"
id="stop5118" />
<stop
id="stop5124"
offset="0.35911319"
style="stop-color:#dcaf28;stop-opacity:1" />
<stop
style="stop-color:#000000;stop-opacity:1"
offset="1"
id="stop5120" />
</linearGradient>
<linearGradient
id="linearGradient5106">
<stop
style="stop-color:#000000;stop-opacity:1"
offset="0"
id="stop5108" />
<stop
id="stop5114"
offset="0.36023793"
style="stop-color:#00a000;stop-opacity:1" />
<stop
style="stop-color:#000000;stop-opacity:1"
offset="1"
id="stop5110" />
</linearGradient>
<linearGradient
id="linearGradient5096">
<stop
style="stop-color:#100000;stop-opacity:1"
offset="0"
id="stop5098" />
<stop
id="stop5104"
offset="0.36453304"
style="stop-color:#aa0000;stop-opacity:1" />
<stop
style="stop-color:#0c0000;stop-opacity:1"
offset="1"
id="stop5100" />
</linearGradient>
<marker
inkscape:stockid="Arrow2Sstart"
orient="auto"
refY="0"
refX="0"
id="Arrow2Sstart"
style="overflow:visible">
<path
id="path4640"
style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
transform="matrix(0.3,0,0,0.3,-0.69,0)"
inkscape:connector-curvature="0" />
</marker>
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 526.18109 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="744.09448 : 526.18109 : 1"
inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
id="perspective10076" />
<inkscape:perspective
id="perspective9987"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective10250"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective10279"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective10517"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective11202"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective3720"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective3735"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective3757"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective3828"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective3889"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective3925"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective3968"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective3982"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective4682"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective3347"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective5659"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective5719"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective5810"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective3546"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective4328"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient8928"
id="linearGradient5318"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(2.2532936,0,0,2.206809,446.89077,-285.33499)"
x1="-29.837337"
y1="285.0596"
x2="-29.837337"
y2="342.60553" />
<linearGradient
id="linearGradient8928">
<stop
style="stop-color:#ffffff;stop-opacity:0.89156628;"
offset="0"
id="stop8930" />
<stop
style="stop-color:#ffffff;stop-opacity:0;"
offset="1"
id="stop8932" />
</linearGradient>
<inkscape:perspective
id="perspective4367"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective4402"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective2940"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective2864"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5096"
id="linearGradient5102"
x1="117.41457"
y1="168.83261"
x2="87.074203"
y2="168.83261"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0,0.99999995,-0.99999975,0,-11.23354,-270.8763)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5106"
id="linearGradient5112"
x1="117.57944"
y1="173.46591"
x2="86.644958"
y2="173.46591"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0,0.99999997,-1,0,-11.23354,-270.8763)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5116"
id="linearGradient5122"
x1="117.77806"
y1="168.82289"
x2="86.547356"
y2="168.82289"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0,1,-1,0,-11.23354,-270.8763)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5129"
id="linearGradient5135"
x1="-246.82069"
y1="353.9455"
x2="-246.82069"
y2="408.26157"
gradientUnits="userSpaceOnUse" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5129"
id="linearGradient5144"
gradientUnits="userSpaceOnUse"
x1="-246.82069"
y1="353.9455"
x2="-246.82069"
y2="408.26157" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5151"
id="linearGradient5149"
gradientUnits="userSpaceOnUse"
x1="-246.82069"
y1="353.9455"
x2="-246.82069"
y2="408.26157" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5151"
id="linearGradient5164"
gradientUnits="userSpaceOnUse"
x1="-246.82069"
y1="353.9455"
x2="-246.82069"
y2="408.26157" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5151"
id="linearGradient5169"
gradientUnits="userSpaceOnUse"
x1="-246.82069"
y1="353.9455"
x2="-246.82069"
y2="408.26157" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5151"
id="linearGradient5176"
gradientUnits="userSpaceOnUse"
x1="-246.82069"
y1="353.9455"
x2="-246.82069"
y2="408.26157" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5151"
id="linearGradient5181"
gradientUnits="userSpaceOnUse"
x1="-246.82069"
y1="353.9455"
x2="-246.82069"
y2="408.26157" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5151"
id="linearGradient5188"
gradientUnits="userSpaceOnUse"
x1="-246.82069"
y1="353.9455"
x2="-246.82069"
y2="408.26157" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5151"
id="linearGradient5193"
gradientUnits="userSpaceOnUse"
x1="-246.82069"
y1="353.9455"
x2="-246.82069"
y2="408.26157" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5151"
id="linearGradient5200"
gradientUnits="userSpaceOnUse"
x1="-246.82069"
y1="353.9455"
x2="-246.82069"
y2="408.26157" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5151"
id="linearGradient5205"
gradientUnits="userSpaceOnUse"
x1="-246.82069"
y1="353.9455"
x2="-246.82069"
y2="408.26157" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5151"
id="linearGradient5212"
gradientUnits="userSpaceOnUse"
x1="-246.82069"
y1="353.9455"
x2="-246.82069"
y2="408.26157" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5219"
id="linearGradient5217"
gradientUnits="userSpaceOnUse"
x1="-246.82069"
y1="353.9455"
x2="-247.44464"
y2="412.00528" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5236"
id="linearGradient5242"
x1="3.7395172"
y1="59.899364"
x2="42.432911"
y2="59.899364"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(129.62194,-129.52019)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5248"
id="linearGradient5254"
x1="-172.83463"
y1="74.562233"
x2="-137.26938"
y2="74.562233"
gradientUnits="userSpaceOnUse" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5271"
id="linearGradient5285"
x1="-172.83463"
y1="74.562233"
x2="-137.26938"
y2="74.562233"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,0.58333333,-2.7039997e-8,32.705471)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5219"
id="linearGradient5287"
gradientUnits="userSpaceOnUse"
x1="-246.82069"
y1="353.9455"
x2="-247.44464"
y2="412.00528" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5219"
id="linearGradient5292"
gradientUnits="userSpaceOnUse"
x1="-246.82069"
y1="353.9455"
x2="-247.44464"
y2="412.00528" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5219"
id="linearGradient5299"
gradientUnits="userSpaceOnUse"
x1="-246.82069"
y1="353.9455"
x2="-247.44464"
y2="412.00528" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5306"
id="linearGradient5304"
gradientUnits="userSpaceOnUse"
x1="-246.82069"
y1="353.9455"
x2="-247.44464"
y2="412.00528" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5306"
id="linearGradient5319"
gradientUnits="userSpaceOnUse"
x1="-246.82069"
y1="353.9455"
x2="-247.44464"
y2="412.00528" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5326"
id="linearGradient5324"
gradientUnits="userSpaceOnUse"
x1="-246.82069"
y1="353.9455"
x2="-247.44464"
y2="412.00528" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5326"
id="linearGradient5339"
gradientUnits="userSpaceOnUse"
x1="-246.82069"
y1="353.9455"
x2="-247.44464"
y2="412.00528" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5375"
id="linearGradient5381"
x1="-172.83463"
y1="74.562233"
x2="-137.26938"
y2="74.562233"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(128.37404,-129.52019)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3903"
id="linearGradient3899"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0,-0.99999988,1.7142859,0,35.373449,-317.43383)"
x1="-150.75359"
y1="68.860146"
x2="-150.75359"
y2="87.776077" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient4317"
id="linearGradient4337"
gradientUnits="userSpaceOnUse"
x1="-384.0242"
y1="-558.1579"
x2="-384.0242"
y2="-510.8558" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient4215"
id="linearGradient4340"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0,0.99999998,-0.99999991,0,-11.233538,-270.87634)"
x1="-235.30438"
y1="369.2117"
x2="-299.45587"
y2="369.2117" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient4215"
id="linearGradient4349"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0,0.99999998,-0.99999991,0,-11.233538,-270.87634)"
x1="-235.30438"
y1="369.2117"
x2="-299.45587"
y2="369.2117" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient4317"
id="linearGradient4351"
gradientUnits="userSpaceOnUse"
x1="-384.0242"
y1="-558.1579"
x2="-384.0242"
y2="-510.8558" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient4361"
id="linearGradient4355"
gradientUnits="userSpaceOnUse"
x1="-384.0242"
y1="-558.1579"
x2="-383.71014"
y2="-510.8558" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient4215"
id="linearGradient4358"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0,0.99999998,-0.99999991,0,-11.233538,-270.87634)"
x1="-235.30438"
y1="369.2117"
x2="-299.45587"
y2="369.2117" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient4215"
id="linearGradient4375"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0,0.99999998,-0.99999991,0,-11.233538,-270.87634)"
x1="-235.30438"
y1="369.2117"
x2="-299.45587"
y2="369.2117" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient4361"
id="linearGradient4377"
gradientUnits="userSpaceOnUse"
x1="-384.0242"
y1="-558.1579"
x2="-383.71014"
y2="-510.8558" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient4387"
id="linearGradient4381"
gradientUnits="userSpaceOnUse"
x1="-383.39609"
y1="-561.92657"
x2="-383.71014"
y2="-510.8558" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient4215"
id="linearGradient4384"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0,0.99999998,-0.99999991,0,-11.233538,-270.87634)"
x1="-235.30438"
y1="369.2117"
x2="-299.45587"
y2="369.2117" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient4215"
id="linearGradient4401"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0,0.99999998,-0.99999991,0,-11.233536,-270.87635)"
x1="-235.30438"
y1="369.2117"
x2="-299.45587"
y2="369.2117" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient4387"
id="linearGradient4403"
gradientUnits="userSpaceOnUse"
x1="-383.39609"
y1="-561.92657"
x2="-383.71014"
y2="-510.8558"
gradientTransform="translate(2.3925782e-6,-1.3232422e-5)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient4387"
id="linearGradient4407"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(2.3925782e-6,-1.3232422e-5)"
x1="-383.39609"
y1="-561.92657"
x2="-383.71014"
y2="-510.8558" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient4413"
id="linearGradient4410"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0,0.99999998,-0.99999991,0,-11.233536,-270.87635)"
x1="-235.30438"
y1="369.2117"
x2="-299.45587"
y2="369.2117" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient4413"
id="linearGradient4427"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0,0.99999998,-0.99999991,0,-11.233536,-270.87635)"
x1="-235.30438"
y1="369.2117"
x2="-299.45587"
y2="369.2117" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient4387"
id="linearGradient4429"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(2.3925782e-6,-1.3232422e-5)"
x1="-383.39609"
y1="-561.92657"
x2="-383.71014"
y2="-510.8558" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient4387"
id="linearGradient4433"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(2.3925782e-6,-1.3232422e-5)"
x1="-383.39609"
y1="-561.92657"
x2="-383.71014"
y2="-510.8558" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient4439"
id="linearGradient4436"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0,0.99999998,-0.99999991,0,-11.233536,-270.87635)"
x1="-235.30438"
y1="369.2117"
x2="-299.45587"
y2="369.2117" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="3.1841238"
inkscape:cx="140.38399"
inkscape:cy="35.455778"
inkscape:document-units="px"
inkscape:current-layer="layer5"
showgrid="false"
inkscape:window-width="1366"
inkscape:window-height="706"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:object-paths="true"
showguides="true"
inkscape:guide-bbox="true"
inkscape:snap-to-guides="false"
inkscape:snap-grids="false"
inkscape:snap-global="false"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0" />
<metadata
id="metadata10073">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
<dc:creator>
<cc:Agent>
<dc:title>Edouard Lafargue</dc:title>
</cc:Agent>
</dc:creator>
</cc:Work>
</rdf:RDF>
</metadata>
<g
style="display:inline"
inkscape:label="Dark background"
id="g2932"
inkscape:groupmode="layer"
transform="translate(-368.2988,-507.08981)"
sodipodi:insensitive="true">
<g
id="background"
inkscape:label="#g4447">
<rect
inkscape:export-ydpi="88.809998"
inkscape:export-xdpi="88.809998"
inkscape:export-filename="H:\Documents\Hobbies\W433\g9905.png"
ry="4.5346842"
y="-577.68732"
x="-616.67365"
height="61.448738"
width="226.5451"
id="rect3145"
style="fill:none;stroke:none"
transform="scale(-1,-1)" />
<rect
transform="scale(-1,-1)"
style="fill:url(#linearGradient4436);fill-opacity:1;stroke:none"
id="rect2936"
width="280.76797"
height="53.465179"
x="-649.06677"
y="-560.55499"
ry="3.9455285"
inkscape:export-filename="H:\Documents\Hobbies\W433\g9905.png"
inkscape:export-xdpi="88.809998"
inkscape:export-ydpi="88.809998" />
<rect
transform="scale(-1,-1)"
inkscape:label="#rect4388"
inkscape:export-ydpi="88.809998"
inkscape:export-xdpi="88.809998"
inkscape:export-filename="H:\Documents\Hobbies\W433\g9905.png"
ry="2.9134333"
y="-554.10626"
x="-642.96082"
height="39.479435"
width="267.02957"
id="bargraph-outer"
style="fill:url(#linearGradient4433);fill-opacity:1;stroke:none" />
<rect
transform="scale(-1,-1)"
style="fill:#000000;fill-opacity:1;stroke:none"
id="bargraph"
width="262.18338"
height="32.956219"
x="-640.57104"
y="-550.64001"
ry="2.432044"
inkscape:export-filename="H:\Documents\Hobbies\W433\g9905.png"
inkscape:export-xdpi="88.809998"
inkscape:export-ydpi="88.809998"
inkscape:label="#rect4388" />
</g>
</g>
<g
inkscape:groupmode="layer"
id="layer5"
inkscape:label="Green Zone"
style="display:inline"
transform="translate(-140.85549,-141.35611)"
sodipodi:insensitive="true">
<rect
inkscape:label="#rect5741"
style="fill:url(#linearGradient5112);fill-opacity:1;stroke:none;display:inline"
id="green"
width="260.53882"
height="32.20755"
x="-411.77084"
y="-184.00433"
ry="2.3767958"
inkscape:export-filename="H:\Documents\Hobbies\W433\g9905.png"
inkscape:export-xdpi="88.809998"
inkscape:export-ydpi="88.809998"
transform="scale(-1,-1)" />
</g>
<g
inkscape:groupmode="layer"
id="layer4"
inkscape:label="Yellow Zone"
style="display:none"
transform="translate(-140.85549,-141.35611)"
sodipodi:insensitive="true">
<rect
inkscape:export-ydpi="88.809998"
inkscape:export-xdpi="88.809998"
inkscape:export-filename="H:\Documents\Hobbies\W433\g9905.png"
ry="2.4231479"
y="-184.63248"
x="-411.45679"
height="32.835663"
width="260.53882"
id="yellow"
style="fill:url(#linearGradient5122);fill-opacity:1;stroke:none;display:inline"
inkscape:label="#rect5741"
transform="scale(-1,-1)" />
</g>
<g
inkscape:groupmode="layer"
id="layer3"
inkscape:label="Red zone"
style="display:none"
transform="translate(-140.85549,-141.35611)"
sodipodi:insensitive="true">
<rect
inkscape:label="#rect5741"
style="fill:url(#linearGradient5102);fill-opacity:1;stroke:none;display:inline"
id="red"
width="260.23901"
height="32.519711"
x="-411.38739"
y="-184.35484"
ry="2.399832"
inkscape:export-filename="H:\Documents\Hobbies\W433\g9905.png"
inkscape:export-xdpi="88.809998"
inkscape:export-ydpi="88.809998"
transform="scale(-1,-1)" />
</g>
<g
inkscape:groupmode="layer"
id="layer6"
inkscape:label="Indicator"
style="display:inline"
transform="translate(-140.85549,-141.35611)"
sodipodi:insensitive="true">
<rect
style="fill:url(#linearGradient3899);fill-opacity:1;stroke:#000000;stroke-width:0.2964696;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
id="needle"
width="32.035065"
height="6.0045304"
x="152.63882"
y="-157.12926"
inkscape:label="#rect5246"
transform="matrix(0,1,-1,0,0,0)" />
</g>
<g
inkscape:groupmode="layer"
id="layer1"
inkscape:label="Text"
style="display:inline"
transform="translate(-140.85549,-141.35611)"
sodipodi:insensitive="true">
<rect
style="fill:#ffffff;fill-opacity:1;stroke:none"
id="field"
width="50.321022"
height="13.236827"
x="-201.80493"
y="-209.93616"
inkscape:label="#rect2878"
transform="scale(-1,-1)" />
<rect
inkscape:label="#rect2878"
y="-209.5061"
x="-405.05276"
height="13.236827"
width="51.71294"
id="value"
style="fill:#ffffff;fill-opacity:1;stroke:none"
transform="scale(-1,-1)" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 39 KiB

View File

@ -0,0 +1,929 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="47.012333"
height="322.58304"
id="svg10068"
version="1.1"
inkscape:version="0.48.1 "
sodipodi:docname="lineardial-vertical.svg"
inkscape:export-filename="H:\Documents\Hobbies\W433\My Gauges\vbat-001.png"
inkscape:export-xdpi="103.61"
inkscape:export-ydpi="103.61"
style="display:inline">
<defs
id="defs10070">
<linearGradient
id="linearGradient3903">
<stop
id="stop3905"
offset="0"
style="stop-color:#000000;stop-opacity:1" />
<stop
style="stop-color:#ffffff;stop-opacity:1"
offset="0.39386007"
id="stop3907" />
<stop
id="stop3909"
offset="1"
style="stop-color:#000000;stop-opacity:1" />
</linearGradient>
<linearGradient
id="linearGradient5375">
<stop
style="stop-color:#00000c;stop-opacity:1"
offset="0"
id="stop5377" />
<stop
id="stop5383"
offset="0.34210527"
style="stop-color:#0044d8;stop-opacity:1" />
<stop
style="stop-color:#00000c;stop-opacity:1"
offset="1"
id="stop5379" />
</linearGradient>
<linearGradient
id="linearGradient5367">
<stop
style="stop-color:#000020;stop-opacity:1"
offset="0"
id="stop5369" />
<stop
id="stop5371"
offset="1"
style="stop-color:#000018;stop-opacity:1" />
</linearGradient>
<linearGradient
id="linearGradient5359">
<stop
style="stop-color:#00002c;stop-opacity:1"
offset="0"
id="stop5361" />
<stop
id="stop5363"
offset="0.32456139"
style="stop-color:#00ffff;stop-opacity:1" />
<stop
style="stop-color:#00c8fc;stop-opacity:1"
offset="1"
id="stop5365" />
</linearGradient>
<linearGradient
id="linearGradient5346">
<stop
id="stop5348"
offset="0"
style="stop-color:#1a1a1a;stop-opacity:1" />
<stop
style="stop-color:#666666;stop-opacity:1"
offset="0.35277387"
id="stop5350" />
<stop
id="stop5352"
offset="1"
style="stop-color:#1a1a1a;stop-opacity:1" />
</linearGradient>
<linearGradient
id="linearGradient5326">
<stop
style="stop-color:#000000;stop-opacity:1"
offset="0"
id="stop5328" />
<stop
id="stop5330"
offset="0.35277387"
style="stop-color:#4d4d4d;stop-opacity:1" />
<stop
style="stop-color:#000000;stop-opacity:1"
offset="1"
id="stop5332" />
</linearGradient>
<linearGradient
id="linearGradient5306">
<stop
id="stop5308"
offset="0"
style="stop-color:#000000;stop-opacity:1" />
<stop
style="stop-color:#808080;stop-opacity:1"
offset="0.35277387"
id="stop5310" />
<stop
id="stop5312"
offset="1"
style="stop-color:#000000;stop-opacity:1" />
</linearGradient>
<linearGradient
id="linearGradient5271">
<stop
id="stop5273"
offset="0"
style="stop-color:#000080;stop-opacity:1" />
<stop
style="stop-color:#00ffff;stop-opacity:1"
offset="0.32456139"
id="stop5275" />
<stop
id="stop5277"
offset="1"
style="stop-color:#000080;stop-opacity:1" />
</linearGradient>
<linearGradient
id="linearGradient5248">
<stop
style="stop-color:#000080;stop-opacity:1"
offset="0"
id="stop5250" />
<stop
id="stop5256"
offset="0.32456139"
style="stop-color:#00ffff;stop-opacity:1" />
<stop
style="stop-color:#000080;stop-opacity:1"
offset="1"
id="stop5252" />
</linearGradient>
<linearGradient
id="linearGradient5236">
<stop
style="stop-color:#000000;stop-opacity:1;"
offset="0"
id="stop5238" />
<stop
id="stop5244"
offset="0.5"
style="stop-color:#000000;stop-opacity:0.49803922;" />
<stop
style="stop-color:#000000;stop-opacity:0;"
offset="1"
id="stop5240" />
</linearGradient>
<linearGradient
id="linearGradient5219">
<stop
style="stop-color:#000000;stop-opacity:1"
offset="0"
id="stop5221" />
<stop
id="stop5223"
offset="0.35277387"
style="stop-color:#b3b3b3;stop-opacity:1" />
<stop
style="stop-color:#1a1a1a;stop-opacity:1"
offset="1"
id="stop5225" />
</linearGradient>
<linearGradient
id="linearGradient5151">
<stop
id="stop5153"
offset="0"
style="stop-color:#000000;stop-opacity:1" />
<stop
style="stop-color:#b3b3b3;stop-opacity:1"
offset="0.38512576"
id="stop5155" />
<stop
id="stop5157"
offset="1"
style="stop-color:#000000;stop-opacity:1" />
</linearGradient>
<linearGradient
id="linearGradient5129">
<stop
style="stop-color:#1a1a1a;stop-opacity:1"
offset="0"
id="stop5131" />
<stop
id="stop5137"
offset="0.38512576"
style="stop-color:#cccccc;stop-opacity:1" />
<stop
style="stop-color:#4d4d4d;stop-opacity:1"
offset="1"
id="stop5133" />
</linearGradient>
<linearGradient
id="linearGradient5116">
<stop
style="stop-color:#000000;stop-opacity:1"
offset="0"
id="stop5118" />
<stop
id="stop5124"
offset="0.37640449"
style="stop-color:#dcaf28;stop-opacity:1" />
<stop
style="stop-color:#000000;stop-opacity:1"
offset="1"
id="stop5120" />
</linearGradient>
<linearGradient
id="linearGradient5106">
<stop
style="stop-color:#000000;stop-opacity:1"
offset="0"
id="stop5108" />
<stop
id="stop5114"
offset="0.38184431"
style="stop-color:#00a000;stop-opacity:1" />
<stop
style="stop-color:#000000;stop-opacity:1"
offset="1"
id="stop5110" />
</linearGradient>
<linearGradient
id="linearGradient5096">
<stop
style="stop-color:#100000;stop-opacity:1"
offset="0"
id="stop5098" />
<stop
id="stop5104"
offset="0.39717463"
style="stop-color:#aa0000;stop-opacity:1" />
<stop
style="stop-color:#0c0000;stop-opacity:1"
offset="1"
id="stop5100" />
</linearGradient>
<marker
inkscape:stockid="Arrow2Sstart"
orient="auto"
refY="0"
refX="0"
id="Arrow2Sstart"
style="overflow:visible">
<path
id="path4640"
style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
transform="matrix(0.3,0,0,0.3,-0.69,0)" />
</marker>
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 526.18109 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="744.09448 : 526.18109 : 1"
inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
id="perspective10076" />
<inkscape:perspective
id="perspective9987"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective10250"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective10279"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective10517"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective11202"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective3720"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective3735"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective3757"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective3828"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective3889"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective3925"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective3968"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective3982"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective4682"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective3347"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective5659"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective5719"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective5810"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective3546"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective4328"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient8928"
id="linearGradient5318"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(2.2532936,0,0,2.206809,446.89077,-285.33499)"
x1="-29.837337"
y1="285.0596"
x2="-29.837337"
y2="342.60553" />
<linearGradient
id="linearGradient8928">
<stop
style="stop-color:#ffffff;stop-opacity:0.89156628;"
offset="0"
id="stop8930" />
<stop
style="stop-color:#ffffff;stop-opacity:0;"
offset="1"
id="stop8932" />
</linearGradient>
<inkscape:perspective
id="perspective4367"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective4402"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective2940"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<inkscape:perspective
id="perspective2864"
inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
inkscape:vp_z="1 : 0.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5096"
id="linearGradient5102"
x1="-58.661255"
y1="132.84332"
x2="-58.661255"
y2="169.46072"
gradientUnits="userSpaceOnUse" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5106"
id="linearGradient5112"
x1="-38.946774"
y1="133.15433"
x2="-38.946774"
y2="168.58655"
gradientUnits="userSpaceOnUse" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5116"
id="linearGradient5122"
x1="-17.108463"
y1="133.16322"
x2="-17.108463"
y2="168.82289"
gradientUnits="userSpaceOnUse" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5129"
id="linearGradient5135"
x1="-246.82069"
y1="353.9455"
x2="-246.82069"
y2="408.26157"
gradientUnits="userSpaceOnUse" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5129"
id="linearGradient5144"
gradientUnits="userSpaceOnUse"
x1="-246.82069"
y1="353.9455"
x2="-246.82069"
y2="408.26157" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5151"
id="linearGradient5149"
gradientUnits="userSpaceOnUse"
x1="-246.82069"
y1="353.9455"
x2="-246.82069"
y2="408.26157" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5151"
id="linearGradient5164"
gradientUnits="userSpaceOnUse"
x1="-246.82069"
y1="353.9455"
x2="-246.82069"
y2="408.26157" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5151"
id="linearGradient5169"
gradientUnits="userSpaceOnUse"
x1="-246.82069"
y1="353.9455"
x2="-246.82069"
y2="408.26157" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5151"
id="linearGradient5176"
gradientUnits="userSpaceOnUse"
x1="-246.82069"
y1="353.9455"
x2="-246.82069"
y2="408.26157" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5151"
id="linearGradient5181"
gradientUnits="userSpaceOnUse"
x1="-246.82069"
y1="353.9455"
x2="-246.82069"
y2="408.26157" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5151"
id="linearGradient5188"
gradientUnits="userSpaceOnUse"
x1="-246.82069"
y1="353.9455"
x2="-246.82069"
y2="408.26157" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5151"
id="linearGradient5193"
gradientUnits="userSpaceOnUse"
x1="-246.82069"
y1="353.9455"
x2="-246.82069"
y2="408.26157" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5151"
id="linearGradient5200"
gradientUnits="userSpaceOnUse"
x1="-246.82069"
y1="353.9455"
x2="-246.82069"
y2="408.26157" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5151"
id="linearGradient5205"
gradientUnits="userSpaceOnUse"
x1="-246.82069"
y1="353.9455"
x2="-246.82069"
y2="408.26157" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5151"
id="linearGradient5212"
gradientUnits="userSpaceOnUse"
x1="-246.82069"
y1="353.9455"
x2="-246.82069"
y2="408.26157" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5219"
id="linearGradient5217"
gradientUnits="userSpaceOnUse"
x1="-246.82069"
y1="353.9455"
x2="-247.44464"
y2="412.00528" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5236"
id="linearGradient5242"
x1="3.7395172"
y1="59.899365"
x2="42.43291"
y2="59.899365"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(129.62194,-129.52019)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5248"
id="linearGradient5254"
x1="-172.83463"
y1="74.562234"
x2="-137.26938"
y2="74.562234"
gradientUnits="userSpaceOnUse" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5271"
id="linearGradient5285"
x1="-172.83463"
y1="74.562233"
x2="-137.26938"
y2="74.562233"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,0.58333333,-2.7039997e-8,32.705471)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5219"
id="linearGradient5287"
gradientUnits="userSpaceOnUse"
x1="-246.82069"
y1="353.9455"
x2="-247.44464"
y2="412.00528" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5219"
id="linearGradient5292"
gradientUnits="userSpaceOnUse"
x1="-246.82069"
y1="353.9455"
x2="-247.44464"
y2="412.00528" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5219"
id="linearGradient5299"
gradientUnits="userSpaceOnUse"
x1="-246.82069"
y1="353.9455"
x2="-247.44464"
y2="412.00528" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5306"
id="linearGradient5304"
gradientUnits="userSpaceOnUse"
x1="-246.82069"
y1="353.9455"
x2="-247.44464"
y2="412.00528" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5306"
id="linearGradient5319"
gradientUnits="userSpaceOnUse"
x1="-246.82069"
y1="353.9455"
x2="-247.44464"
y2="412.00528" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5326"
id="linearGradient5324"
gradientUnits="userSpaceOnUse"
x1="-246.82069"
y1="353.9455"
x2="-247.44464"
y2="412.00528" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5326"
id="linearGradient5339"
gradientUnits="userSpaceOnUse"
x1="-246.82069"
y1="353.9455"
x2="-247.44464"
y2="412.00528" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5346"
id="linearGradient5344"
gradientUnits="userSpaceOnUse"
x1="-246.82069"
y1="353.9455"
x2="-247.44464"
y2="412.00528" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient5375"
id="linearGradient5381"
x1="-172.83463"
y1="74.562234"
x2="-137.26938"
y2="74.562234"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(128.37404,-129.52019)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3903"
id="linearGradient3899"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.99999998,0,0,1.7142857,306.20028,-235.50286)"
x1="-172.33069"
y1="74.562233"
x2="-135.50557"
y2="74.562233" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="1.9843492"
inkscape:cx="13.888309"
inkscape:cy="302.67927"
inkscape:document-units="px"
inkscape:current-layer="layer6"
showgrid="false"
inkscape:window-width="1366"
inkscape:window-height="706"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:object-paths="true"
showguides="true"
inkscape:guide-bbox="true"
inkscape:snap-to-guides="false"
inkscape:snap-grids="false"
inkscape:snap-global="false" />
<metadata
id="metadata10073">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
<dc:creator>
<cc:Agent>
<dc:title>Edouard Lafargue</dc:title>
</cc:Agent>
</dc:creator>
</cc:Work>
</rdf:RDF>
</metadata>
<g
style="display:inline"
inkscape:label="Dark background"
id="g2932"
inkscape:groupmode="layer"
transform="translate(-357.06525,-236.21351)"
sodipodi:insensitive="true">
<g
id="background"
inkscape:label="#g5354">
<rect
transform="matrix(0,-1,1,0,0,0)"
style="fill:url(#linearGradient5344);fill-opacity:1;stroke:none"
id="rect2936"
width="318.58304"
height="46.756046"
x="-556.79657"
y="358.44128"
ry="3.4504199"
inkscape:export-filename="H:\Documents\Hobbies\W433\g9905.png"
inkscape:export-xdpi="88.809998"
inkscape:export-ydpi="88.809998" />
<rect
transform="matrix(0,-1,1,0,0,0)"
style="fill:#332d2d;fill-opacity:1;stroke:none"
id="bargraph"
width="260.53882"
height="34.835861"
x="-519.56018"
y="362.7359"
ry="2.5707548"
inkscape:export-filename="H:\Documents\Hobbies\W433\g9905.png"
inkscape:export-xdpi="88.809998"
inkscape:export-ydpi="88.809998"
inkscape:label="#rect4388" />
<rect
transform="matrix(0,-1,1,0,0,0)"
inkscape:label="#rect4388"
inkscape:export-ydpi="88.809998"
inkscape:export-xdpi="88.809998"
inkscape:export-filename="H:\Documents\Hobbies\W433\g9905.png"
ry="2.2944832"
y="365.23175"
x="-519.56018"
height="31.09215"
width="260.53882"
id="bargraph-outer"
style="fill:#332d2d;fill-opacity:1;stroke:none" />
</g>
</g>
<g
inkscape:groupmode="layer"
id="layer5"
inkscape:label="Green Zone"
style="display:inline"
transform="translate(-129.62194,129.52019)"
sodipodi:insensitive="true">
<rect
inkscape:label="#rect5741"
style="fill:url(#linearGradient5112);fill-opacity:1;stroke:none;display:inline"
id="green"
width="260.53882"
height="34.0919"
x="-153.97397"
y="134.02345"
ry="2.5158536"
inkscape:export-filename="H:\Documents\Hobbies\W433\g9905.png"
inkscape:export-xdpi="88.809998"
inkscape:export-ydpi="88.809998"
transform="matrix(0,-1,1,0,0,0)" />
</g>
<g
inkscape:groupmode="layer"
id="layer4"
inkscape:label="Yellow Zone"
style="display:none"
transform="translate(-129.62194,129.52019)"
sodipodi:insensitive="true">
<rect
inkscape:export-ydpi="88.809998"
inkscape:export-xdpi="88.809998"
inkscape:export-filename="H:\Documents\Hobbies\W433\g9905.png"
ry="2.5158532"
y="134.02345"
x="-153.97397"
height="34.091896"
width="260.53882"
id="yellow"
style="fill:url(#linearGradient5122);fill-opacity:1;stroke:none;display:inline"
inkscape:label="#rect5741"
transform="matrix(0,-1,1,0,0,0)" />
</g>
<g
inkscape:groupmode="layer"
id="layer3"
inkscape:label="Red zone"
style="display:none"
transform="translate(-129.62194,129.52019)"
sodipodi:insensitive="true">
<rect
inkscape:label="#rect5741"
style="fill:url(#linearGradient5102);fill-opacity:1;stroke:none;display:inline"
id="red"
width="260.53882"
height="34.589863"
x="-154.0755"
y="134.00487"
ry="2.5526016"
inkscape:export-filename="H:\Documents\Hobbies\W433\g9905.png"
inkscape:export-xdpi="88.809998"
inkscape:export-ydpi="88.809998"
transform="matrix(0,-1,1,0,0,0)" />
</g>
<g
inkscape:groupmode="layer"
id="layer6"
inkscape:label="Indicator"
style="display:inline"
transform="translate(-129.62194,129.52019)">
<rect
style="fill:url(#linearGradient3899);fill-opacity:1;stroke:#000000;stroke-width:0.30000000999999998;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
id="needle"
width="33.162418"
height="5.9393759"
x="135.64999"
y="-107.91632"
inkscape:label="#rect5246" />
</g>
<g
inkscape:groupmode="layer"
id="layer1"
inkscape:label="Text"
style="display:inline"
transform="translate(-129.62194,129.52019)"
sodipodi:insensitive="true">
<rect
style="fill:#ffffff;fill-opacity:1;stroke:none"
id="field"
width="33.853165"
height="12.626906"
x="128.30692"
y="157.31393"
inkscape:label="#rect2878" />
<rect
inkscape:label="#rect2878"
y="170.91206"
x="128.88902"
height="12.626906"
width="32.851257"
id="value"
style="fill:#ffffff;fill-opacity:1;stroke:none" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 28 KiB

View File

@ -16,5 +16,7 @@ Symbols:
Capital A = OpenPilot Logo
Capital B = CC-BY-SA
Capital B = CC-BY-NC-SA
Capital D = RoHS

Binary file not shown.

View File

@ -0,0 +1 @@
Those icons come from the Tango set and are used in the GCS.

View File

@ -0,0 +1,443 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Generator: Adobe Illustrator 9.0, SVG Export Plug-In -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
sodipodi:docbase="/home/jimmac/gfx/ximian/tango-icon-theme/scalable/mimetypes"
sodipodi:docname="application-certificate.svg"
inkscape:version="0.46"
sodipodi:version="0.32"
id="svg5105"
xml:space="preserve"
viewBox="0 0 48 48"
height="48.000000px"
width="48.000000px"
inkscape:output_extension="org.inkscape.output.svg.inkscape"><metadata
id="metadata5189">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title>Certificate</dc:title><dc:creator><cc:Agent><dc:title>Jakub Steiner</dc:title></cc:Agent></dc:creator><dc:subject><rdf:Bag><rdf:li>certificate</rdf:li></rdf:Bag></dc:subject><cc:license
rdf:resource="http://creativecommons.org/licenses/publicdomain/" /></cc:Work>
<cc:License
rdf:about="http://creativecommons.org/licenses/publicdomain/"><cc:permits
rdf:resource="http://creativecommons.org/ns#Reproduction" /><cc:permits
rdf:resource="http://creativecommons.org/ns#Distribution" /><cc:permits
rdf:resource="http://creativecommons.org/ns#DerivativeWorks" /></cc:License></rdf:RDF>
</metadata>
<defs
id="defs5187"><inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 24 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="48 : 24 : 1"
inkscape:persp3d-origin="24 : 16 : 1"
id="perspective54" /><linearGradient
id="linearGradient6684">
<stop
id="stop6686"
offset="0.0000000"
style="stop-color:#d5dbff;stop-opacity:1.0000000;" />
<stop
id="stop6688"
offset="1"
style="stop-color:#6579ff;stop-opacity:0;" />
</linearGradient>
<linearGradient
id="linearGradient6665">
<stop
style="stop-color:#000000;stop-opacity:1.0000000;"
offset="0.0000000"
id="stop6667" />
<stop
style="stop-color:#000000;stop-opacity:0.0000000;"
offset="1.0000000"
id="stop6669" />
</linearGradient>
<linearGradient
id="linearGradient6625">
<stop
id="stop6627"
offset="0.0000000"
style="stop-color:#1d2349;stop-opacity:1.0000000;" />
<stop
style="stop-color:#4c5279;stop-opacity:1.0000000;"
offset="0.35315102"
id="stop6637" />
<stop
style="stop-color:#b3bdff;stop-opacity:1.0000000;"
offset="0.46551725"
id="stop6633" />
<stop
id="stop6635"
offset="0.64982164"
style="stop-color:#727cbe;stop-opacity:1.0000000;" />
<stop
id="stop6629"
offset="1.0000000"
style="stop-color:#323c7e;stop-opacity:1.0000000;" />
</linearGradient>
<linearGradient
id="linearGradient6617">
<stop
id="stop6619"
offset="0.0000000"
style="stop-color:#ffffff;stop-opacity:0.24742268;" />
<stop
id="stop6621"
offset="1"
style="stop-color:#ffffff;stop-opacity:0;" />
</linearGradient>
<linearGradient
id="linearGradient6604">
<stop
id="stop6606"
offset="0.0000000"
style="stop-color:#ffa196;stop-opacity:1.0000000;" />
<stop
id="stop6608"
offset="1"
style="stop-color:#ff1f06;stop-opacity:0;" />
</linearGradient>
<radialGradient
r="13.2807"
fy="20.9712"
fx="28.7891"
cy="20.9712"
cx="28.7891"
gradientUnits="userSpaceOnUse"
id="radialGradient5199"
xlink:href="#aigrd1"
inkscape:collect="always" />
<radialGradient
r="14.6944"
fy="13.5444"
fx="19.292"
cy="13.5444"
cx="19.292"
gradientUnits="userSpaceOnUse"
id="radialGradient5201"
xlink:href="#aigrd2"
inkscape:collect="always" />
<linearGradient
y2="16.7231"
x2="23.412"
y1="11.5991"
x1="18.229"
gradientUnits="userSpaceOnUse"
id="linearGradient5203"
xlink:href="#aigrd3"
inkscape:collect="always" />
<radialGradient
gradientUnits="userSpaceOnUse"
fy="20.971201"
fx="28.789101"
r="13.280700"
cy="20.971201"
cx="28.789101"
id="aigrd1">
<stop
id="stop5115"
style="stop-color:#E41E08"
offset="0" />
<stop
id="stop5117"
style="stop-color:#901505"
offset="1" />
</radialGradient>
<radialGradient
gradientUnits="userSpaceOnUse"
fy="13.544400"
fx="19.292000"
r="14.694400"
cy="13.544400"
cx="19.292000"
id="aigrd2">
<stop
id="stop5122"
style="stop-color:#E41E08"
offset="0" />
<stop
id="stop5124"
style="stop-color:#901505"
offset="1" />
</radialGradient>
<linearGradient
y2="16.723101"
x2="23.412001"
y1="11.599100"
x1="18.229000"
gradientUnits="userSpaceOnUse"
id="aigrd3">
<stop
id="stop5137"
style="stop-color:#FFFFFF"
offset="0" />
<stop
id="stop5139"
style="stop-color:#901505"
offset="1" />
</linearGradient>
<linearGradient
gradientTransform="matrix(1.135551,0.000000,0.000000,1.135551,-3.259995,-3.266773)"
y2="16.7231"
x2="23.412"
y1="11.5991"
x1="18.229"
gradientUnits="userSpaceOnUse"
id="linearGradient5274"
xlink:href="#aigrd3"
inkscape:collect="always" />
<radialGradient
gradientTransform="matrix(1.135551,0.000000,0.000000,1.135551,-4.540325,-2.077433)"
r="14.6944"
fy="13.5444"
fx="19.292"
cy="13.5444"
cx="19.292"
gradientUnits="userSpaceOnUse"
id="radialGradient5281"
xlink:href="#aigrd2"
inkscape:collect="always" />
<radialGradient
gradientTransform="matrix(1.310386,0.000000,0.000000,1.310386,-8.642682,-4.375977)"
r="13.2807"
fy="20.9712"
fx="28.7891"
cy="20.9712"
cx="28.7891"
gradientUnits="userSpaceOnUse"
id="radialGradient5284"
xlink:href="#aigrd1"
inkscape:collect="always" />
<linearGradient
gradientUnits="userSpaceOnUse"
y2="49.895073"
x2="43.140980"
y1="5.9244628"
x1="15.338736"
gradientTransform="matrix(0.975728,0.000000,0.000000,0.931033,-0.132002,1.978392)"
id="linearGradient6610"
xlink:href="#linearGradient6604"
inkscape:collect="always" />
<linearGradient
gradientUnits="userSpaceOnUse"
y2="22.783224"
x2="29.957399"
y1="9.4436626"
x1="18.570419"
gradientTransform="matrix(1.028670,0.000000,0.000000,0.972129,-1.280330,1.189340)"
id="linearGradient6623"
xlink:href="#linearGradient6617"
inkscape:collect="always" />
<linearGradient
gradientUnits="userSpaceOnUse"
y2="35.017860"
x2="38.250904"
y1="22.886259"
x1="38.506161"
gradientTransform="matrix(0.843938,0.000000,0.000000,1.184922,-1.280330,1.689340)"
id="linearGradient6631"
xlink:href="#linearGradient6625"
inkscape:collect="always" />
<radialGradient
gradientUnits="userSpaceOnUse"
r="33.156136"
fy="19.818913"
fx="24.452202"
cy="19.818913"
cx="24.452202"
gradientTransform="matrix(1.024478,0.000000,0.000000,0.976107,0.939339,-0.530329)"
id="radialGradient6663"
xlink:href="#linearGradient6665"
inkscape:collect="always" />
<radialGradient
r="33.156136"
fy="19.818913"
fx="24.452202"
cy="19.818913"
cx="24.452202"
gradientTransform="matrix(1.024478,0.000000,0.000000,0.976107,1.646447,-0.353552)"
gradientUnits="userSpaceOnUse"
id="radialGradient6675"
xlink:href="#linearGradient6665"
inkscape:collect="always" />
<radialGradient
r="14.6944"
fy="20.479359"
fx="26.887432"
cy="20.479359"
cx="26.887432"
gradientTransform="matrix(1.135551,0.000000,0.000000,1.135551,-4.540325,-2.077433)"
gradientUnits="userSpaceOnUse"
id="radialGradient6678"
xlink:href="#aigrd2"
inkscape:collect="always" />
<linearGradient
gradientUnits="userSpaceOnUse"
y2="27.403761"
x2="36.499001"
y1="35.458244"
x1="37.502811"
gradientTransform="scale(0.843938,1.184922)"
id="linearGradient6690"
xlink:href="#linearGradient6684"
inkscape:collect="always" />
</defs>
<sodipodi:namedview
inkscape:current-layer="svg5105"
inkscape:window-y="30"
inkscape:window-x="203"
inkscape:cy="20.392013"
inkscape:cx="20.303269"
inkscape:zoom="5.6568542"
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="0.16470588"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:window-width="821"
inkscape:window-height="818"
inkscape:showpageshadow="false"
showgrid="false" />
<path
style="opacity:0.48044690;color:#000000;fill:url(#radialGradient6675);fill-opacity:1.0000000;fill-rule:nonzero;stroke:none;stroke-width:1.0000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;display:inline;overflow:visible"
d="M 25.389110,19.305038 C 25.389110,19.305038 19.484245,27.481005 19.484245,31.228324 C 19.484245,34.975642 26.297551,32.931650 29.022873,35.656973 C 31.748195,38.382295 22.663787,45.422711 22.663787,45.422711 L 31.748195,42.924499 L 35.381959,46.785372 C 35.381959,42.129613 40.719048,38.382295 37.993726,35.543418 C 35.154848,32.704540 27.092436,33.045205 26.638216,29.297887 C 26.183995,25.550569 25.502665,19.418593 25.502665,19.418593 L 25.389110,19.305038 z "
id="path6671" />
<path
style="opacity:0.48044690;fill:url(#radialGradient6663);fill-opacity:1.0000000;fill-rule:nonzero;stroke:none;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
d="M 36.916160,9.3946518 C 38.237688,12.452028 40.559293,12.296470 40.616709,16.377167 C 40.649454,18.652929 42.449165,19.847910 42.449165,22.172684 C 42.449165,24.497457 38.434150,25.646156 37.066636,27.013668 C 35.699121,28.381184 37.174521,31.888095 33.464606,32.918627 C 29.789944,33.939367 27.994548,32.508375 25.669774,32.508375 C 23.344998,32.508375 17.781956,36.991063 15.730683,34.939790 C 13.679411,32.888519 13.635647,28.405831 11.857879,26.628063 C 9.9433579,24.713542 6.9184435,22.038663 6.9184435,18.619877 C 6.9184435,15.201092 8.8926489,13.396291 11.721128,10.217892 C 14.639403,6.9385873 14.729659,2.0128046 18.148445,2.0128046 C 21.567230,2.0128046 22.877627,2.9506145 25.787409,2.8770766 C 30.425746,2.7598534 30.994149,0.55375463 34.405481,2.2835766 C 37.413183,3.8087260 35.881638,7.0012699 36.916160,9.3946518 z "
id="path6639"
sodipodi:nodetypes="csssssssssssss" />
<path
id="path5112"
d="M 23.621340,18.067599 C 23.621340,18.067599 17.716475,26.243566 17.716475,29.990885 C 17.716475,33.738203 24.529781,31.694211 27.255103,34.419534 C 29.980425,37.144856 20.896017,44.185272 20.896017,44.185272 L 29.980425,41.687060 L 33.614189,45.547933 C 33.614189,40.892174 38.951278,37.144856 36.225956,34.305979 C 33.387078,31.467101 25.324666,31.807766 24.870446,28.060448 C 24.416225,24.313130 23.734895,18.181154 23.734895,18.181154 L 23.621340,18.067599 z "
style="stroke-opacity:1.0000000;stroke-miterlimit:6.5999999;stroke-width:1.0000000;stroke:#1f254f;fill-rule:nonzero;fill-opacity:1.0000000;fill:url(#linearGradient6631)" />
<path
sodipodi:nodetypes="cscccsss"
style="fill:none;fill-opacity:1.0000000;fill-rule:nonzero;stroke:url(#linearGradient6690);stroke-width:0.72112519;stroke-miterlimit:6.5999999;stroke-opacity:1.0000000"
d="M 20.803213,31.602421 C 25.355213,32.050805 28.232227,32.837946 28.609835,35.591528 C 28.939949,37.998767 24.377692,42.324487 24.377692,42.324487 L 30.221580,40.699741 L 33.062950,43.660691 C 33.725862,39.949751 37.427758,37.438687 35.741856,35.156087 C 33.627168,32.292939 26.775807,32.912620 26.448257,30.210335 C 26.120707,27.508049 18.114196,31.334950 20.803213,31.602421 z "
id="path6680" />
<path
sodipodi:nodetypes="csssssssssssss"
id="path5119"
d="M 34.935485,9.2468088 C 36.201806,12.176463 38.426426,12.027404 38.481444,15.937630 C 38.512821,18.118322 40.237349,19.263383 40.237349,21.491039 C 40.237349,23.718695 36.390061,24.819407 35.079675,26.129792 C 33.769288,27.440180 35.183053,30.800590 31.628119,31.788071 C 28.106966,32.766170 26.386573,31.394957 24.158916,31.394957 C 21.931258,31.394957 16.600611,35.690381 14.635030,33.724800 C 12.669450,31.759221 12.627514,27.463797 10.924012,25.760295 C 9.0894699,23.925753 6.1909207,21.362617 6.1909207,18.086651 C 6.1909207,14.810685 8.0826538,13.081280 10.792974,10.035658 C 13.589338,6.8933472 13.675824,2.1733389 16.951790,2.1733389 C 20.227756,2.1733389 21.483411,3.0719718 24.271637,3.0015059 C 28.716208,2.8891797 29.260866,0.77524063 32.529689,2.4327994 C 35.411745,3.8942357 33.944180,6.9534113 34.935485,9.2468088 z "
style="stroke-opacity:1.0000000;stroke-miterlimit:4.0000000;stroke-linejoin:round;stroke-linecap:round;stroke:#4c0901;fill-rule:nonzero;fill:url(#radialGradient5284)" />
<path
id="path5126"
d="M 34.976850,17.567599 C 34.976850,23.813130 29.866870,28.923109 23.621340,28.923109 C 17.375809,28.923109 12.265830,23.813130 12.265830,17.567599 C 12.265830,11.322069 17.375809,6.2120891 23.621340,6.2120891 C 29.866870,6.2120891 34.976850,11.322069 34.976850,17.567599 z "
style="stroke-miterlimit:4.0000000;stroke:none;fill-rule:nonzero;fill:url(#radialGradient6678)" />
<path
style="fill:none;fill-rule:nonzero;stroke:url(#linearGradient6610);stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000"
d="M 33.888971,10.030124 C 35.042232,12.698211 37.068232,12.562460 37.118338,16.123571 C 37.146913,18.109565 38.717470,19.152392 38.717470,21.181157 C 38.717470,23.209922 35.213679,24.212359 34.020288,25.405749 C 32.826895,26.599143 34.114436,29.659526 30.876896,30.558842 C 27.670121,31.449613 26.103329,30.200827 24.074563,30.200827 C 22.045797,30.200827 17.191084,34.112744 15.400995,32.322655 C 13.610908,30.532568 13.572716,26.620651 12.021307,25.069242 C 10.350558,23.398493 7.7107989,21.064201 7.7107989,18.080722 C 7.7107989,15.097243 9.4336334,13.522243 11.901968,10.748543 C 14.448666,7.8867861 14.527430,3.5881928 17.510909,3.5881928 C 20.494388,3.5881928 21.637935,4.4065934 24.177221,4.3424188 C 28.224968,4.2401214 28.720998,2.3149204 31.697971,3.8244879 C 34.322710,5.1554433 32.986173,7.9414875 33.888971,10.030124 z "
id="path6600"
sodipodi:nodetypes="csssssssssssss" />
<path
id="path6612"
d="M 23.663250,7.0524597 C 17.795434,7.0524597 13.016988,11.794692 13.016988,17.662510 C 13.016988,21.333503 15.000693,24.443138 17.833154,26.353336 C 25.073625,22.456374 23.786958,15.548148 33.440430,13.606789 C 31.841424,9.7576868 28.088842,7.0524597 23.663250,7.0524597 z "
style="color:#000000;fill:url(#linearGradient6623);fill-opacity:1.0000000;fill-rule:nonzero;stroke:none;stroke-width:1.0000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;marker:none;marker-start:none;marker-mid:none;marker-end:none;visibility:visible;display:inline;overflow:visible;opacity:1.0000000" />
</svg>

After

Width:  |  Height:  |  Size: 15 KiB

View File

@ -0,0 +1,35 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg id="svg3247" xmlns="http://www.w3.org/2000/svg" height="48" width="48" version="1.0" xmlns:xlink="http://www.w3.org/1999/xlink">
<defs id="defs3249">
<linearGradient id="linearGradient2411" y2="5.4676" gradientUnits="userSpaceOnUse" x2="63.397" gradientTransform="matrix(2.1154 0 0 2.1153 -107.58 32.427)" y1="-12.489" x1="63.397">
<stop id="stop4875" style="stop-color:#fff" offset="0"/>
<stop id="stop4877" style="stop-color:#fff;stop-opacity:0" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient2416" y2="3.0816" gradientUnits="userSpaceOnUse" x2="18.379" gradientTransform="matrix(.95844 0 0 .95844 .99752 1.9975)" y1="44.98" x1="18.379">
<stop id="stop2492" style="stop-color:#791235" offset="0"/>
<stop id="stop2494" style="stop-color:#dd3b27" offset="1"/>
</linearGradient>
<radialGradient id="radialGradient2414" gradientUnits="userSpaceOnUse" cy="3.99" cx="23.896" gradientTransform="matrix(0 2.2875 -3.0194 0 36.047 -50.63)" r="20.397">
<stop id="stop3244" style="stop-color:#f8b17e" offset="0"/>
<stop id="stop3246" style="stop-color:#e35d4f" offset=".26238"/>
<stop id="stop3248" style="stop-color:#c6262e" offset=".66094"/>
<stop id="stop3250" style="stop-color:#690b54" offset="1"/>
</radialGradient>
<radialGradient id="radialGradient2419" gradientUnits="userSpaceOnUse" cy="4.625" cx="62.625" gradientTransform="matrix(2.1647 0 0 .75294 -111.56 36.518)" r="10.625">
<stop id="stop8840" offset="0"/>
<stop id="stop8842" style="stop-opacity:0" offset="1"/>
</radialGradient>
</defs>
<g id="layer1">
<g id="g3275">
<path id="path8836" style="opacity:.3;fill-rule:evenodd;fill:url(#radialGradient2419)" d="m47 40c0 4.418-10.297 8-23 8s-23-3.582-23-8 10.297-8 23-8 23 3.582 23 8z"/>
<path id="path2555" style="stroke-linejoin:round;stroke:url(#linearGradient2416);stroke-linecap:round;stroke-width:1.0037;fill:url(#radialGradient2414)" d="m24 5.5018c-10.758 0-19.498 8.7402-19.498 19.498-0.0002 10.758 8.74 19.498 19.498 19.498s19.498-8.74 19.498-19.498-8.74-19.498-19.498-19.498z"/>
<path id="path8655" style="opacity:.4;stroke:url(#linearGradient2411);fill:none" d="m42.5 24.999c0 10.218-8.283 18.501-18.5 18.501s-18.5-8.283-18.5-18.501c0-10.217 8.283-18.499 18.5-18.499s18.5 8.282 18.5 18.499z"/>
</g>
<g id="g3243" transform="translate(51.075 .56862)">
<path id="path3295" style="opacity:.2" d="m-29.451 12.554c0.563 5.5 1.208 10.961 1.687 16.482h1.53c0.397-5.302 1.038-10.571 1.501-15.867 0.236-1.254-0.408-2.742-1.732-3.047-1.308-0.3824-2.77 0.565-2.944 1.918-0.029 0.17-0.042 0.342-0.042 0.514zm-0.167 22.359c-0.059 1.637 1.742 2.92 3.28 2.401 1.489-0.38 2.274-2.252 1.51-3.583-0.683-1.375-2.687-1.829-3.84-0.776-0.582 0.479-0.968 1.194-0.95 1.958z"/>
<path id="text2315" style="fill:#fff" d="m-29.451 13.555c0.563 5.499 1.208 10.96 1.687 16.481h1.53c0.397-5.301 1.038-10.571 1.501-15.866 0.236-1.254-0.408-2.743-1.732-3.048-1.308-0.382-2.77 0.565-2.944 1.918-0.029 0.17-0.042 0.342-0.042 0.515zm-0.167 22.358c-0.059 1.637 1.742 2.921 3.28 2.402 1.489-0.381 2.274-2.253 1.51-3.584-0.683-1.375-2.687-1.828-3.84-0.776-0.582 0.479-0.968 1.194-0.95 1.958z"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.2 KiB

View File

@ -0,0 +1,34 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg id="svg2757" xmlns="http://www.w3.org/2000/svg" height="48" width="48" version="1.0" xmlns:xlink="http://www.w3.org/1999/xlink">
<defs id="defs2759">
<radialGradient id="radialGradient2436" gradientUnits="userSpaceOnUse" cy="4.625" cx="62.625" gradientTransform="matrix(2.1647 0 0 .75294 -111.56 36.518)" r="10.625">
<stop id="stop8840" offset="0"/>
<stop id="stop8842" style="stop-opacity:0" offset="1"/>
</radialGradient>
<linearGradient id="linearGradient2750" y2="3.0816" gradientUnits="userSpaceOnUse" x2="18.379" gradientTransform="matrix(.95844 0 0 .95844 .99752 1.9975)" y1="44.98" x1="18.379">
<stop id="stop2492" style="stop-color:#791235" offset="0"/>
<stop id="stop2494" style="stop-color:#dd3b27" offset="1"/>
</linearGradient>
<radialGradient id="radialGradient2748" gradientUnits="userSpaceOnUse" cy="3.99" cx="23.896" gradientTransform="matrix(0 2.2875 -3.0194 0 36.047 -50.63)" r="20.397">
<stop id="stop3244" style="stop-color:#f8b17e" offset="0"/>
<stop id="stop3246" style="stop-color:#e35d4f" offset=".26238"/>
<stop id="stop3248" style="stop-color:#c6262e" offset=".66094"/>
<stop id="stop3250" style="stop-color:#690b54" offset="1"/>
</radialGradient>
<linearGradient id="linearGradient2745" y2="5.4676" gradientUnits="userSpaceOnUse" x2="63.397" gradientTransform="matrix(2.1154 0 0 2.1153 -107.58 32.427)" y1="-12.489" x1="63.397">
<stop id="stop4875" style="stop-color:#fff" offset="0"/>
<stop id="stop4877" style="stop-color:#fff;stop-opacity:0" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient2742" y2="45.074" gradientUnits="userSpaceOnUse" x2="24.481" y1="5.0809" x1="24.481">
<stop id="stop3783" style="stop-color:#fff" offset="0"/>
<stop id="stop3785" style="stop-color:#fff;stop-opacity:0" offset="1"/>
</linearGradient>
</defs>
<g id="layer1">
<path id="path8836" style="opacity:.3;fill-rule:evenodd;fill:url(#radialGradient2436)" d="m47 40c0 4.418-10.297 8-23 8s-23-3.582-23-8 10.297-8 23-8 23 3.582 23 8z"/>
<path id="path2555" style="stroke-linejoin:round;stroke:url(#linearGradient2750);stroke-linecap:round;stroke-width:1.0037;fill:url(#radialGradient2748)" d="m24 5.5018c-10.758 0-19.498 8.7402-19.498 19.498-0.0002 10.758 8.74 19.498 19.498 19.498s19.498-8.74 19.498-19.498-8.74-19.498-19.498-19.498zm0 6.2602c7.314 0 13.238 5.924 13.238 13.238 0 3.07-1.063 5.872-2.815 8.117l-16.773-19.738c1.885-1.031 4.049-1.617 6.35-1.617zm-10.603 5.331l16.713 19.648c-1.828 0.952-3.905 1.497-6.11 1.497-7.314 0-13.238-5.924-13.238-13.238 0-2.971 0.984-5.699 2.635-7.907z"/>
<path id="path8655" style="opacity:.4;stroke:url(#linearGradient2745);fill:none" d="m42.5 24.999c0 10.218-8.283 18.501-18.5 18.501s-18.5-8.283-18.5-18.501c0-10.217 8.283-18.499 18.5-18.499s18.5 8.282 18.5 18.499z"/>
<path id="path3270" style="opacity:.4;stroke:url(#linearGradient2742);stroke-linecap:round;stroke-width:1px;fill:none" d="m17.05 14.239l16.702 19.687"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.0 KiB

View File

@ -0,0 +1,37 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg id="svg3675" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="48" width="48" version="1.0" xmlns:cc="http://creativecommons.org/ns#" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/">
<metadata id="metadata29">
<rdf:RDF>
<cc:Work rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
</cc:Work>
</rdf:RDF>
</metadata>
<defs id="defs3677">
<linearGradient id="linearGradient2407" y2="5.4676" gradientUnits="userSpaceOnUse" x2="63.397" gradientTransform="matrix(2.1154 0 0 2.1153 -107.58 32.427)" y1="-12.489" x1="63.397">
<stop id="stop4875" style="stop-color:#fff" offset="0"/>
<stop id="stop4877" style="stop-color:#fff;stop-opacity:0" offset="1"/>
</linearGradient>
<radialGradient id="radialGradient2410" gradientUnits="userSpaceOnUse" cy="3.99" cx="23.896" gradientTransform="matrix(0 2.2875 -3.0194 0 36.047 -50.63)" r="20.397">
<stop id="stop2778" style="stop-color:#8badea" offset="0"/>
<stop id="stop2780" style="stop-color:#6396cd" offset=".26238"/>
<stop id="stop2782" style="stop-color:#3b7caf" offset=".66094"/>
<stop id="stop2784" style="stop-color:#194c70" offset="1"/>
</radialGradient>
<linearGradient id="linearGradient2412" y2="3.0816" gradientUnits="userSpaceOnUse" x2="18.379" gradientTransform="matrix(.95844 0 0 .95844 .99752 1.9975)" y1="44.98" x1="18.379">
<stop id="stop2788" style="stop-color:#1f4b6a" offset="0"/>
<stop id="stop2790" style="stop-color:#4083c2" offset="1"/>
</linearGradient>
<radialGradient id="radialGradient2415" gradientUnits="userSpaceOnUse" cy="4.625" cx="62.625" gradientTransform="matrix(2.1647 0 0 .75294 -111.56 36.518)" r="10.625">
<stop id="stop8840" offset="0"/>
<stop id="stop8842" style="stop-opacity:0" offset="1"/>
</radialGradient>
</defs>
<path id="path8836" style="opacity:.3;fill-rule:evenodd;fill:url(#radialGradient2415)" d="m47 40c0 4.418-10.297 8-23 8s-23-3.582-23-8 10.297-8 23-8 23 3.582 23 8z"/>
<path id="path2555" style="stroke-linejoin:round;stroke:url(#linearGradient2412);stroke-linecap:round;stroke-width:1.0037;fill:url(#radialGradient2410)" d="m24 5.5018c-10.758 0-19.498 8.7402-19.498 19.498-0.0002 10.758 8.74 19.498 19.498 19.498s19.498-8.74 19.498-19.498-8.74-19.498-19.498-19.498z"/>
<path id="path8655" style="opacity:.4;stroke:url(#linearGradient2407);fill:none" d="m42.5 24.999c0 10.218-8.283 18.501-18.5 18.501s-18.5-8.283-18.5-18.501c0-10.217 8.283-18.499 18.5-18.499s18.5 8.282 18.5 18.499z"/>
<path id="path9053" style="opacity:.2" d="m24.91 30.164c-0.066-2.359 0.463-4.649 2.691-6.271 2.354-1.834 4.621-4.129 4.382-6.835-0.053-2.609-3.093-4.653-6.368-4.947-3.684-0.511-8.142 0.751-9.377 3.629-0.626 1.399-0.045 3.91 2.056 3.91 1.229 0 1.794-0.794 1.887-1.521 0.07-0.549-0.156-1.04-0.289-1.494-0.152-0.517 0.496-1.519 1.202-1.928 0.59-0.341 1.207-0.455 1.298-0.477 2.118-0.509 4.229 0.615 5.11 1.984 0.881 1.368-0.088 3.444-1.482 5.463-1.395 2.018-2.891 4.311-2.885 6.746 0 0.928-0.082 1.243-0.024 1.618 0.047 0.299 1.039 0.263 1.799 0.123zm-0.966 3.174c-2.025-0.11-3.427 2.186-2.211 3.649 1.087 1.615 4.133 1.217 4.656-0.612 0.542-1.423-0.764-3.06-2.445-3.037z"/>
<path id="path3298" style="fill:#fff" d="m24.91 31.164c-0.066-2.359 0.463-4.649 2.691-6.271 2.354-1.834 4.621-4.129 4.382-6.835-0.053-2.609-3.093-4.653-6.368-4.947-3.684-0.511-8.142 0.751-9.377 3.629-0.626 1.399-0.045 3.91 2.056 3.91 1.229 0 1.794-0.794 1.887-1.521 0.07-0.549-0.156-1.04-0.289-1.494-0.152-0.517 0.496-1.519 1.202-1.928 0.59-0.341 1.207-0.455 1.298-0.477 2.118-0.509 4.229 0.615 5.11 1.984 0.881 1.368-0.088 3.444-1.482 5.463-1.395 2.018-2.891 4.311-2.885 6.746 0 0.928-0.082 1.243-0.024 1.618 0.047 0.299 1.039 0.263 1.799 0.123zm-0.966 3.174c-2.025-0.11-3.427 2.186-2.211 3.649 1.087 1.615 4.133 1.217 4.656-0.612 0.542-1.423-0.764-3.06-2.445-3.037z"/>
</svg>

After

Width:  |  Height:  |  Size: 4.0 KiB

View File

@ -0,0 +1,33 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg id="svg2515" xmlns="http://www.w3.org/2000/svg" height="48" width="48" version="1.0" xmlns:xlink="http://www.w3.org/1999/xlink">
<defs id="defs2517">
<radialGradient id="radialGradient2415" gradientUnits="userSpaceOnUse" cy="4.625" cx="62.625" gradientTransform="matrix(2.1647 0 0 .75294 -111.56 36.518)" r="10.625">
<stop id="stop8840" offset="0"/>
<stop id="stop8842" style="stop-opacity:0" offset="1"/>
</radialGradient>
<linearGradient id="linearGradient2412" y2="3.0816" gradientUnits="userSpaceOnUse" x2="18.379" gradientTransform="matrix(.95844 0 0 .95844 .99752 1.9975)" y1="44.98" x1="18.379">
<stop id="stop2788" style="stop-color:#1f4b6a" offset="0"/>
<stop id="stop2790" style="stop-color:#4083c2" offset="1"/>
</linearGradient>
<radialGradient id="radialGradient2410" gradientUnits="userSpaceOnUse" cy="3.99" cx="23.896" gradientTransform="matrix(0 2.2875 -3.0194 0 36.047 -50.63)" r="20.397">
<stop id="stop2778" style="stop-color:#8badea" offset="0"/>
<stop id="stop2780" style="stop-color:#6396cd" offset=".26238"/>
<stop id="stop2782" style="stop-color:#3b7caf" offset=".66094"/>
<stop id="stop2784" style="stop-color:#194c70" offset="1"/>
</radialGradient>
<linearGradient id="linearGradient2407" y2="5.4676" gradientUnits="userSpaceOnUse" x2="63.397" gradientTransform="matrix(2.1154 0 0 2.1153 -107.58 32.427)" y1="-12.489" x1="63.397">
<stop id="stop4875" style="stop-color:#fff" offset="0"/>
<stop id="stop4877" style="stop-color:#fff;stop-opacity:0" offset="1"/>
</linearGradient>
</defs>
<g id="layer1">
<path id="path8836" style="opacity:.3;fill-rule:evenodd;fill:url(#radialGradient2415)" d="m47 40c0 4.418-10.297 8-23 8s-23-3.582-23-8 10.297-8 23-8 23 3.582 23 8z"/>
<path id="path2555" style="stroke-linejoin:round;stroke:url(#linearGradient2412);stroke-linecap:round;stroke-width:1.0037;fill:url(#radialGradient2410)" d="m24 5.5018c-10.758 0-19.498 8.7402-19.498 19.498-0.0002 10.758 8.74 19.498 19.498 19.498s19.498-8.74 19.498-19.498-8.74-19.498-19.498-19.498z"/>
<path id="path8655" style="opacity:.4;stroke:url(#linearGradient2407);fill:none" d="m42.5 24.999c0 10.218-8.283 18.501-18.5 18.501s-18.5-8.283-18.5-18.501c0-10.217 8.283-18.499 18.5-18.499s18.5 8.282 18.5 18.499z"/>
<g id="g3243" transform="translate(51.075 .56862)">
<path id="path3295" style="opacity:.2" d="m-29.451 12.554c0.563 5.5 1.208 10.961 1.687 16.482h1.53c0.397-5.302 1.038-10.571 1.501-15.867 0.236-1.254-0.408-2.742-1.732-3.047-1.308-0.3824-2.77 0.565-2.944 1.918-0.029 0.17-0.042 0.342-0.042 0.514zm-0.167 22.359c-0.059 1.637 1.742 2.92 3.28 2.401 1.489-0.38 2.274-2.252 1.51-3.583-0.683-1.375-2.687-1.829-3.84-0.776-0.582 0.479-0.968 1.194-0.95 1.958z"/>
<path id="text2315" style="fill:#fff" d="m-29.451 13.555c0.563 5.499 1.208 10.96 1.687 16.481h1.53c0.397-5.301 1.038-10.571 1.501-15.866 0.236-1.254-0.408-2.743-1.732-3.048-1.308-0.382-2.77 0.565-2.944 1.918-0.029 0.17-0.042 0.342-0.042 0.515zm-0.167 22.358c-0.059 1.637 1.742 2.921 3.28 2.402 1.489-0.381 2.274-2.253 1.51-3.584-0.683-1.375-2.687-1.828-3.84-0.776-0.582 0.479-0.968 1.194-0.95 1.958z"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.2 KiB

View File

@ -0,0 +1,91 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
version="1.1"
width="48"
height="48"
id="svg2448">
<defs
id="defs2450">
<linearGradient
id="linearGradient8662">
<stop
id="stop8664"
style="stop-color:black;stop-opacity:1"
offset="0" />
<stop
id="stop8666"
style="stop-color:black;stop-opacity:0"
offset="1" />
</linearGradient>
<radialGradient
cx="24.837126"
cy="36.421127"
r="15.644737"
fx="24.837126"
fy="36.421127"
id="radialGradient1444"
xlink:href="#linearGradient8662"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,0.536723,0,16.87306)" />
<linearGradient
id="linearGradient2264">
<stop
id="stop2266"
style="stop-color:#d7e866;stop-opacity:1"
offset="0" />
<stop
id="stop2268"
style="stop-color:#8cab2a;stop-opacity:1"
offset="1" />
</linearGradient>
<linearGradient
x1="-84.343536"
y1="-5.3878593"
x2="-91.513138"
y2="24.558243"
id="linearGradient2628"
xlink:href="#linearGradient2264"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.017301,-0.243559,0.243559,1.017301,110.52469,-7.9553513)" />
<linearGradient
id="linearGradient3400">
<stop
id="stop3402"
style="stop-color:white;stop-opacity:1"
offset="0" />
<stop
id="stop3404"
style="stop-color:white;stop-opacity:0"
offset="1" />
</linearGradient>
<linearGradient
x1="20.494444"
y1="6.0097799"
x2="20.494444"
y2="47.760197"
id="linearGradient3406"
xlink:href="#linearGradient3400"
gradientUnits="userSpaceOnUse" />
</defs>
<g
id="layer1">
<path
d="m 40.481863,36.421127 a 15.644737,8.3968938 0 1 1 -31.2894745,0 15.644737,8.3968938 0 1 1 31.2894745,0 z"
transform="matrix(1.214466,0,0,0.595458,-6.163846,20.31274)"
id="path8660"
style="opacity:0.20454544;color:black;fill:url(#radialGradient1444);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
<path
d="m 33.706448,5.4818293 c -0.559734,-0.056806 -1.116221,0.217337 -1.403811,0.7436469 L 20.049307,28.645074 12.17121,22.380993 c -0.701747,-0.383453 -1.577286,-0.136769 -1.960742,0.564978 l -3.5328714,4.535744 c -0.3834475,0.701741 -0.1254891,1.577017 0.5762529,1.960469 0,0 14.3844195,11.880283 14.4021675,11.889074 0.164469,0.08987 0.336465,0.135093 0.511297,0.157184 0.571121,0.07217 1.155595,-0.196162 1.449176,-0.733433 L 40.141725,10.519399 C 40.525176,9.8176549 40.267222,8.9423801 39.565474,8.558928 L 34.26311,5.6492257 C 34.087671,5.553362 33.893026,5.5007637 33.706448,5.4818293 z"
id="path1542"
style="fill:url(#linearGradient2628);fill-opacity:1;fill-rule:nonzero;stroke:#42770c;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible" />
<path
d="M 32.938536,7.2012775 26.730268,18.60791 21.197213,28.668822 c -0.178482,0.181096 -0.123845,0.754094 -0.902701,0.952966 -0.538869,0.137595 -0.636352,-0.06289 -1.204172,-0.427914 l -6.950556,-5.492153 c -0.7733,-0.621665 -0.749753,-0.589365 -1.297288,-0.03737 L 8.0515824,27.18582 c -0.7518117,0.804672 -0.6353589,1.290849 0.3017539,1.891047 0,0 13.0781537,10.780055 13.0949407,10.788373 0.155564,0.085 0.0892,0.114145 0.757862,0.57814 0.428927,0.297637 0.807539,-0.647982 1.083435,-1.15286 L 39.190779,10.274963 C 39.55113,9.6155282 39.523767,9.624421 38.860008,9.2617466 L 34.11801,6.7472827 C 33.434075,6.3758505 33.430508,6.3800895 32.938536,7.2012775 z"
id="path1544"
style="opacity:0.4;fill:none;stroke:url(#linearGradient3406);stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.3 KiB

View File

@ -0,0 +1,390 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
version="1.0"
width="48"
height="48"
id="svg2527">
<defs
id="defs2529">
<linearGradient
id="linearGradient8838">
<stop
id="stop8840"
style="stop-color:#000000;stop-opacity:1"
offset="0" />
<stop
id="stop8842"
style="stop-color:#000000;stop-opacity:0"
offset="1" />
</linearGradient>
<radialGradient
cx="62.625"
cy="4.625"
r="10.625"
fx="62.625"
fy="4.625"
id="radialGradient2436"
xlink:href="#linearGradient8838"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(2.1647059,0,0,0.7529402,-111.56471,36.517647)" />
<linearGradient
id="linearGradient3397">
<stop
id="stop3399"
style="stop-color:#aaaaaa;stop-opacity:1"
offset="0" />
<stop
id="stop3401"
style="stop-color:#8c8c8c;stop-opacity:1"
offset="1" />
</linearGradient>
<linearGradient
x1="37.201294"
y1="1"
x2="37.201294"
y2="45"
id="linearGradient2517"
xlink:href="#linearGradient3397"
gradientUnits="userSpaceOnUse" />
<linearGradient
x1="63.9995"
y1="3.1001"
x2="63.9995"
y2="122.8994"
id="linearGradient3309"
gradientUnits="userSpaceOnUse">
<stop
id="stop3311"
style="stop-color:#f6f6f6;stop-opacity:1"
offset="0" />
<stop
id="stop3313"
style="stop-color:#d2d2d2;stop-opacity:1"
offset="1" />
</linearGradient>
<linearGradient
x1="20.758585"
y1="1"
x2="20.758585"
y2="45.017357"
id="linearGradient2515"
xlink:href="#linearGradient3309"
gradientUnits="userSpaceOnUse" />
<linearGradient
id="linearGradient5128">
<stop
id="stop5130"
style="stop-color:#e5e5e5;stop-opacity:1"
offset="0" />
<stop
id="stop5132"
style="stop-color:#ababab;stop-opacity:1"
offset="1" />
</linearGradient>
<linearGradient
x1="86.132919"
y1="105.105"
x2="84.63858"
y2="20.895"
id="linearGradient2512"
xlink:href="#linearGradient5128"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.3244803,0,0,0.3244803,3.2332655,2.5577454)" />
<radialGradient
cx="6.702713"
cy="73.615715"
r="7.228416"
fx="6.702713"
fy="73.615715"
id="radialGradient2538"
xlink:href="#linearGradient10691"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(2.2134617,0,0,0.4842001,1.1638028,-7.1447362)" />
<linearGradient
id="linearGradient10691">
<stop
id="stop10693"
style="stop-color:#000000;stop-opacity:1"
offset="0" />
<stop
id="stop10695"
style="stop-color:#000000;stop-opacity:0"
offset="1" />
</linearGradient>
<linearGradient
x1="32.036148"
y1="19"
x2="32.036148"
y2="47.012184"
id="linearGradient3326"
xlink:href="#linearGradient3309-8"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.93928017,0.34315123,-0.34315123,0.93928017,-1.7936946,-25.633934)" />
<linearGradient
x1="63.9995"
y1="3.1001"
x2="63.9995"
y2="122.8994"
id="linearGradient3309-8"
gradientUnits="userSpaceOnUse">
<stop
id="stop3311-4"
style="stop-color:#f6f6f6;stop-opacity:1"
offset="0" />
<stop
id="stop3313-8"
style="stop-color:#d2d2d2;stop-opacity:1"
offset="1" />
</linearGradient>
<linearGradient
x1="25.922546"
y1="19"
x2="25.922546"
y2="47.044857"
id="linearGradient3328"
xlink:href="#linearGradient3397-1"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.93928017,0.34315123,-0.34315123,0.93928017,-1.7936946,-25.633934)" />
<linearGradient
id="linearGradient3397-1">
<stop
id="stop3399-0"
style="stop-color:#aaaaaa;stop-opacity:1"
offset="0" />
<stop
id="stop3401-3"
style="stop-color:#8c8c8c;stop-opacity:1"
offset="1" />
</linearGradient>
<linearGradient
id="linearGradient5128-0">
<stop
id="stop5130-4"
style="stop-color:#ffffff;stop-opacity:1"
offset="0" />
<stop
id="stop5132-4"
style="stop-color:#959595;stop-opacity:1"
offset="1" />
</linearGradient>
<linearGradient
x1="86.132919"
y1="105.105"
x2="84.63858"
y2="20.895"
id="linearGradient2868"
xlink:href="#linearGradient5128-0"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.2014014,0,0,0.2014015,3.1103045,3.311705)" />
<radialGradient
cx="6.702713"
cy="73.615715"
r="7.228416"
fx="6.702713"
fy="73.615715"
id="radialGradient2411"
xlink:href="#linearGradient10691-8"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.660115,0,0,0.3458573,0.8727276,-3.9605294)" />
<linearGradient
id="linearGradient10691-8">
<stop
id="stop10693-6"
style="stop-color:#000000;stop-opacity:1"
offset="0" />
<stop
id="stop10695-0"
style="stop-color:#000000;stop-opacity:0"
offset="1" />
</linearGradient>
<linearGradient
x1="34"
y1="1"
x2="34"
y2="23.00024"
id="linearGradient3218"
xlink:href="#linearGradient3309-4"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(-24.5,0)" />
<linearGradient
x1="63.9995"
y1="3.1001"
x2="63.9995"
y2="122.8994"
id="linearGradient3309-4"
gradientUnits="userSpaceOnUse">
<stop
id="stop3311-8"
style="stop-color:#f6f6f6;stop-opacity:1"
offset="0" />
<stop
id="stop3313-88"
style="stop-color:#d2d2d2;stop-opacity:1"
offset="1" />
</linearGradient>
<linearGradient
x1="40"
y1="1"
x2="40"
y2="23.019524"
id="linearGradient3228"
xlink:href="#linearGradient3397-9"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(-24.5,0)" />
<linearGradient
id="linearGradient3397-9">
<stop
id="stop3399-7"
style="stop-color:#aaaaaa;stop-opacity:1"
offset="0" />
<stop
id="stop3401-7"
style="stop-color:#8c8c8c;stop-opacity:1"
offset="1" />
</linearGradient>
<linearGradient
x1="86.132919"
y1="105.105"
x2="84.63858"
y2="20.895"
id="linearGradient3241"
xlink:href="#linearGradient5128-6"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.1562313,0,0,0.1562313,2.0012016,2.1574324)" />
<linearGradient
id="linearGradient5128-6">
<stop
id="stop5130-43"
style="stop-color:#eeeeee;stop-opacity:1"
offset="0" />
<stop
id="stop5132-0"
style="stop-color:#a2a2a2;stop-opacity:1"
offset="1" />
</linearGradient>
<linearGradient
x1="25"
y1="0"
x2="25"
y2="16.000105"
id="linearGradient3262"
xlink:href="#linearGradient3309-6"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(-17.058189,0)" />
<linearGradient
x1="63.9995"
y1="3.1001"
x2="63.9995"
y2="122.8994"
id="linearGradient3309-6"
gradientUnits="userSpaceOnUse">
<stop
id="stop3311-2"
style="stop-color:#f6f6f6;stop-opacity:1"
offset="0" />
<stop
id="stop3313-9"
style="stop-color:#cccccc;stop-opacity:1"
offset="1" />
</linearGradient>
<linearGradient
x1="21"
y1="0"
x2="21"
y2="16.004715"
id="linearGradient3264"
xlink:href="#linearGradient3397-90"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(-17.058189,0)" />
<linearGradient
id="linearGradient3397-90">
<stop
id="stop3399-8"
style="stop-color:#aaaaaa;stop-opacity:1"
offset="0" />
<stop
id="stop3401-1"
style="stop-color:#8c8c8c;stop-opacity:1"
offset="1" />
</linearGradient>
<linearGradient
x1="86.132919"
y1="105.105"
x2="84.63858"
y2="20.895"
id="linearGradient3260"
xlink:href="#linearGradient5128-3"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.09614231,0,0,0.09614231,1.8468935,1.9430362)" />
<linearGradient
id="linearGradient5128-3">
<stop
id="stop5130-1"
style="stop-color:#e5e5e5;stop-opacity:1"
offset="0" />
<stop
id="stop5132-1"
style="stop-color:#ababab;stop-opacity:1"
offset="1" />
</linearGradient>
</defs>
<g
transform="translate(15.999999,12)"
id="layer1">
<path
d="m 18.636572,2.5905216 c -0.703275,-0.2569307 -1.495689,0.08705 -1.752619,0.7903248 l -0.600515,1.6437399 c -0.499176,-0.013219 -0.993955,0.00248 -1.484533,0.056512 L 14.072373,3.5181351 C 13.756758,2.8391668 12.960838,2.5483897 12.28187,2.864003 L 8.3651471,4.6602954 C 7.6861782,4.9759083 7.3954033,5.7718319 7.7110151,6.4507982 l 0.726532,1.5629636 C 8.0724464,8.359396 7.744193,8.7441155 7.4266456,9.141602 L 5.8122578,8.5518108 C 5.1089821,8.2948801 4.3165666,8.6388602 4.0596381,9.3421356 L 2.5797984,13.392781 c -0.2569313,0.703275 0.1271272,1.477063 0.8304007,1.733991 l 1.6143878,0.589791 c -0.013469,0.508577 -0.010523,1.014295 0.045789,1.513885 l -1.5629633,0.726533 c -0.6789688,0.315613 -0.9697472,1.111534 -0.654132,1.790502 l 1.8363684,3.898094 c 0.3156123,0.678968 1.1115366,0.969744 1.7905029,0.654132 l 1.5629636,-0.726532 c 0.3402133,0.357549 0.7083491,0.688501 1.0984877,1.000178 l -0.6005147,1.64374 c -0.2569313,0.703275 0.1271291,1.477064 0.8304008,1.733991 l 4.0212927,1.469116 c 0.703276,0.256931 1.466338,-0.09777 1.723267,-0.801048 l 0.600515,-1.64374 c 0.508577,0.01347 1.014295,0.01052 1.513885,-0.04579 l 0.726532,1.562963 c 0.315614,0.678968 1.111534,0.969745 1.790502,0.654132 l 3.916723,-1.796292 c 0.678969,-0.315613 0.969742,-1.111538 0.654132,-1.790503 l -0.745161,-1.603039 c 0.357549,-0.340214 0.6885,-0.708349 1.000178,-1.098488 l 1.64374,0.600515 c 0.703276,0.25693 1.466338,-0.09778 1.723267,-0.801049 l 1.47984,-4.050645 c 0.256931,-0.703275 -0.09778,-1.466339 -0.801048,-1.723268 l -1.64374,-0.600514 c 0.01322,-0.499176 -0.0025,-0.993955 -0.05651,-1.484533 l 1.60304,-0.745162 C 29.20091,13.73813 29.491686,12.942208 29.176073,12.26324 L 27.339704,8.365146 C 27.024092,7.6861784 26.228168,7.3954 25.549202,7.711014 L 23.986239,8.4375465 C 23.640605,8.0724458 23.255886,7.7441924 22.858399,7.4266449 L 23.458914,5.782905 C 23.715845,5.0796306 23.361136,4.3165668 22.657865,4.0596378 L 18.636572,2.5905216 z M 17.20103,12.71252 c 1.81469,0.662968 2.74942,2.67382 2.086452,4.48851 -0.662969,1.814689 -2.673821,2.749419 -4.48851,2.086451 -1.814691,-0.662969 -2.74942,-2.673821 -2.086452,-4.48851 0.662968,-1.81469 2.673821,-2.74942 4.48851,-2.086451 z"
id="rect2576"
style="fill:url(#linearGradient3326);fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient3328);stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:block;overflow:visible;enable-background:accumulate" />
<path
d="m 16.000001,7.9999996 c -4.411273,0 -7.9999985,3.5887274 -7.9999985,8.0000004 0,4.411274 3.5887255,8 7.9999985,8 C 20.411274,24 24,20.411274 24,16 24,11.588727 20.411274,7.9999996 16.000001,7.9999996 z m 0,3.6923094 c 2.377844,0 4.307693,1.929846 4.307693,4.307691 0,2.377847 -1.929849,4.307693 -4.307693,4.307693 -2.377846,0 -4.307691,-1.929846 -4.307691,-4.307693 0,-2.377845 1.929845,-4.307691 4.307691,-4.307691 z"
id="path3315"
style="opacity:0.05;fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 16.000001,7.6206906 c -4.620353,0 -8.3793085,3.7589574 -8.3793085,8.3793084 0,4.620352 3.7589555,8.37931 8.3793085,8.37931 4.620353,0 8.379309,-3.758958 8.379309,-8.37931 0,-4.620351 -3.758956,-8.3793084 -8.379309,-8.3793084 z"
id="path28"
style="fill:none;stroke:url(#linearGradient2868);stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none" />
</g>
<g
transform="translate(2,-1)"
id="layer1-3">
<g
id="g2486">
<path
d="M 10.1875,1.5 C 9.799134,1.5 9.5,1.7991339 9.5,2.1875 l 0,1.6875 C 8.988333,4.0322247 8.496816,4.2537684 8.03125,4.5 L 6.84375,3.3125 c -0.274616,-0.2746162 -0.725384,-0.2746162 -1,0 L 3.3125,5.84375 c -0.274616,0.2746162 -0.274616,0.7253836 0,1 L 4.5,8.03125 C 4.253769,8.4968155 4.032225,8.9883329 3.875,9.5 l -1.6875,0 C 1.799134,9.5 1.5,9.7991344 1.5,10.1875 l 0,3.625 C 1.5,14.200866 1.799134,14.5 2.1875,14.5 l 1.6875,0 c 0.157225,0.511667 0.378769,1.003185 0.625,1.46875 l -1.1875,1.1875 c -0.274616,0.274616 -0.274616,0.725384 0,1 l 2.53125,2.53125 c 0.274616,0.274616 0.725384,0.274616 1,0 L 8.03125,19.5 C 8.496816,19.746232 8.988333,19.967775 9.5,20.125 l 0,1.6875 c 0,0.388366 0.299135,0.6875 0.6875,0.6875 l 3.625,0 c 0.388366,0 0.6875,-0.299134 0.6875,-0.6875 l 0,-1.6875 c 0.511667,-0.157225 1.003185,-0.378768 1.46875,-0.625 l 1.1875,1.1875 c 0.274616,0.274616 0.725384,0.274616 1,0 l 2.53125,-2.53125 c 0.274616,-0.274616 0.274616,-0.725384 0,-1 L 19.5,15.96875 C 19.746232,15.503185 19.967775,15.011667 20.125,14.5 l 1.6875,0 c 0.388366,0 0.6875,-0.299134 0.6875,-0.6875 l 0,-3.625 C 22.5,9.7991341 22.200866,9.5 21.8125,9.5 l -1.6875,0 C 19.967775,8.9883329 19.746232,8.4968155 19.5,8.03125 l 1.1875,-1.1875 c 0.274616,-0.2746162 0.274616,-0.7253837 0,-1 L 18.15625,3.3125 c -0.274616,-0.2746162 -0.725384,-0.2746162 -1,0 L 15.96875,4.5 C 15.503185,4.2537684 15.011667,4.0322247 14.5,3.875 l 0,-1.6875 C 14.5,1.7991341 14.200866,1.5 13.8125,1.5 l -3.625,0 z M 12,9 c 1.656,0 3,1.344 3,3 0,1.656 -1.344,3 -3,3 -1.656,0 -3,-1.344 -3,-3 0,-1.656 1.344,-3 3,-3 z"
id="rect2426"
style="fill:url(#linearGradient3218);fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient3228);stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:block;overflow:visible;enable-background:accumulate" />
<path
d="m 12,6 c -3.3084557,-2e-7 -5.9999999,2.6915446 -5.9999999,6 0,3.308455 2.6915442,6 5.9999999,6 3.308455,-1e-6 6,-2.691545 6,-6 0,-3.3084554 -2.691545,-6 -6,-6 z m 0,2.7692308 c 1.783385,0 3.230769,1.4473842 3.230769,3.2307692 0,1.783385 -1.447384,3.230769 -3.230769,3.230769 -1.783385,0 -3.2307692,-1.447384 -3.2307692,-3.230769 0,-1.783385 1.4473842,-3.2307692 3.2307692,-3.2307692 z"
id="path3315-9"
style="opacity:0.05;fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 11.999999,5.4999995 c -3.5840997,0 -6.4999994,2.9158997 -6.4999994,6.4999995 C 5.4999996,15.5841 8.4158993,18.5 11.999999,18.5 15.584101,18.5 18.5,15.5841 18.5,11.999999 18.5,8.4158992 15.584101,5.4999995 11.999999,5.4999995 z"
id="path28-2"
style="fill:none;stroke:url(#linearGradient3241);stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none" />
</g>
</g>
<g
transform="translate(3,29)"
id="layer1-0">
<g
id="g2479">
<path
d="M 6.9375,0.5 C 6.6890831,0.5 6.5,0.68908218 6.5,0.9375 l 0,1.25 C 5.9460971,2.3297005 5.448836,2.5593783 4.96875,2.84375 L 4.0625,1.9375 c -0.1756569,-0.1756579 -0.449342,-0.1756579 -0.625,0 l -1.5,1.5 c -0.175657,0.1756579 -0.175657,0.4493421 0,0.625 L 2.84375,4.96875 C 2.5593789,5.4488356 2.329701,5.9460968 2.1875,6.5 l -1.25,0 C 0.68908301,6.5 0.5,6.6890821 0.5,6.9375 l 0,2.125 c 1e-8,0.2484178 0.189083,0.4375 0.4375,0.4375 l 1.25,0 c 0.1422009,0.553903 0.371879,1.051164 0.65625,1.53125 L 1.9375,11.9375 c -0.175657,0.175658 -0.175657,0.449342 0,0.625 l 1.5,1.5 c 0.1756579,0.175658 0.449342,0.175658 0.625,0 L 4.96875,13.15625 C 5.4488361,13.440622 5.946097,13.6703 6.5,13.8125 l 0,1.25 c 1e-7,0.248418 0.189083,0.4375 0.4375,0.4375 l 2.125,0 C 9.3109176,15.5 9.5,15.310918 9.5,15.0625 l 0,-1.25 c 0.553903,-0.1422 1.051164,-0.371878 1.53125,-0.65625 l 0.90625,0.90625 c 0.175658,0.175658 0.449342,0.175658 0.625,0 l 1.5,-1.5 c 0.175658,-0.175658 0.175658,-0.449342 0,-0.625 L 13.15625,11.03125 C 13.440622,10.551164 13.6703,10.053903 13.8125,9.5 l 1.25,0 C 15.310918,9.5 15.5,9.3109174 15.5,9.0625 l 0,-2.125 C 15.5,6.6890822 15.310917,6.5 15.0625,6.5 l -1.25,0 C 13.6703,5.9460968 13.440622,5.4488356 13.15625,4.96875 L 14.0625,4.0625 c 0.175658,-0.1756579 0.175658,-0.449342 0,-0.625 l -1.5,-1.5 c -0.175658,-0.1756579 -0.449342,-0.1756579 -0.625,0 L 11.03125,2.84375 C 10.551164,2.5593783 10.053903,2.3297005 9.5,2.1875 l 0,-1.25 C 9.4999996,0.68908218 9.310918,0.5 9.0625,0.5 l -2.125,0 z M 8,6 c 1.104,0 2,0.896 2,2 0,1.104 -0.896,2 -2,2 C 6.896,10 6,9.104 6,8 6,6.896 6.896,6 8,6 z"
id="path2426"
style="fill:url(#linearGradient3262);fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient3264);stroke-width:0.99999994;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:block;overflow:visible;enable-background:accumulate" />
<path
d="M 8,3.465116 C 5.4994229,3.465116 3.4651163,5.499423 3.4651163,8 3.4651163,10.500577 5.4994229,12.534884 8,12.534884 10.500576,12.534883 12.534884,10.500577 12.534884,8 12.534884,5.499423 10.500576,3.465116 8,3.465116 z M 8,5.55814 c 1.347907,0 2.44186,1.093953 2.44186,2.44186 0,1.347907 -1.093953,2.44186 -2.44186,2.44186 C 6.652093,10.44186 5.5581395,9.347907 5.5581395,8 5.5581395,6.652093 6.652093,5.55814 8,5.55814 z"
id="path3315-3"
style="opacity:0.05;fill:#000000;fill-opacity:1;stroke:none" />
<path
d="M 8.0000001,4 C 5.7943997,4 3.9999999,5.7944001 3.9999999,8.0000008 3.9999999,10.2056 5.7943997,12 8.0000001,12 10.2056,12 12,10.2056 12,8.0000008 12,5.7944001 10.2056,4 8.0000001,4 z"
id="path28-4"
style="fill:none;stroke:url(#linearGradient3260);stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 18 KiB

View File

@ -0,0 +1,131 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
version="1.0"
width="48"
height="48"
id="svg3581">
<defs
id="defs3583">
<linearGradient
id="linearGradient8838">
<stop
id="stop8840"
style="stop-color:#000000;stop-opacity:1"
offset="0" />
<stop
id="stop8842"
style="stop-color:#000000;stop-opacity:0"
offset="1" />
</linearGradient>
<radialGradient
cx="62.625"
cy="4.625"
r="10.625"
fx="62.625"
fy="4.625"
id="radialGradient3534"
xlink:href="#linearGradient8838"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(2.1647059,0,0,0.7529402,-111.56471,36.517647)" />
<linearGradient
id="linearGradient2490-182-124">
<stop
id="stop2788"
style="stop-color:#1f4b6a;stop-opacity:1"
offset="0" />
<stop
id="stop2790"
style="stop-color:#4083c2;stop-opacity:1"
offset="1" />
</linearGradient>
<linearGradient
x1="18.379412"
y1="44.980297"
x2="18.379412"
y2="3.0816143"
id="linearGradient3531"
xlink:href="#linearGradient2490-182-124"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.9584364,0,0,0.9584366,0.9975246,1.9975253)" />
<linearGradient
id="linearGradient3242-187-536">
<stop
id="stop2778"
style="stop-color:#8badea;stop-opacity:1"
offset="0" />
<stop
id="stop2780"
style="stop-color:#6396cd;stop-opacity:1"
offset="0.26238" />
<stop
id="stop2782"
style="stop-color:#3b7caf;stop-opacity:1"
offset="0.66093999" />
<stop
id="stop2784"
style="stop-color:#194c70;stop-opacity:1"
offset="1" />
</linearGradient>
<radialGradient
cx="23.895569"
cy="3.9900031"
r="20.397499"
fx="23.895569"
fy="3.9900031"
id="radialGradient3529"
xlink:href="#linearGradient3242-187-536"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0,2.2874593,-3.0194057,0,36.047437,-50.630156)" />
<linearGradient
id="linearGradient4873">
<stop
id="stop4875"
style="stop-color:#ffffff;stop-opacity:1"
offset="0" />
<stop
id="stop4877"
style="stop-color:#ffffff;stop-opacity:0"
offset="1" />
</linearGradient>
<linearGradient
x1="63.397362"
y1="-12.489107"
x2="63.397362"
y2="5.4675598"
id="linearGradient3526"
xlink:href="#linearGradient4873"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(2.1153735,0,0,2.1153253,-107.57709,32.426559)" />
</defs>
<g
id="layer1">
<path
d="M 46.999997,40 C 46.999997,44.418278 36.702545,48 23.999997,48 C 11.297449,48 0.9999968,44.418278 0.9999968,40 C 0.9999968,35.581722 11.297449,32 23.999997,32 C 36.702545,32 46.999997,35.581722 46.999997,40 L 46.999997,40 z"
id="path8836"
style="opacity:0.3;fill:url(#radialGradient3534);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.99999988;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
<path
d="M 24.000002,5.5018088 C 13.241573,5.5018088 4.5018088,14.24157 4.5018088,25 C 4.5018088,35.75843 13.241573,44.498195 24.000002,44.498192 C 34.758427,44.498192 43.498201,35.75843 43.498191,25 C 43.498191,14.24157 34.758427,5.5018088 24.000002,5.5018088 z"
id="path2555"
style="fill:url(#radialGradient3529);fill-opacity:1;stroke:url(#linearGradient3531);stroke-width:1.003654;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<path
d="M 42.500002,24.999344 C 42.500002,35.216942 34.21666,43.5 24.000235,43.5 C 13.782875,43.5 5.5000003,35.216848 5.5000003,24.999344 C 5.5000003,14.782219 13.782875,6.5000001 24.000235,6.5000001 C 34.21666,6.5000001 42.500002,14.782219 42.500002,24.999344 L 42.500002,24.999344 z"
id="path8655"
style="opacity:0.4;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient3526);stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<g
transform="translate(-2.507855,0)"
id="g3538">
<path
d="M 20.507855,24.213243 C 20.766006,24.915016 21.056573,25.483856 21.675512,24.706045 C 22.442859,24.249493 25.013952,22.248288 24.756683,24.208513 C 23.93342,27.835795 22.931327,31.424931 22.165113,35.063385 C 21.363928,37.055603 23.183263,38.857649 25.082782,37.562099 C 27.101847,36.729758 28.839248,35.374018 30.614199,34.130331 C 30.372019,33.536398 30.210602,32.683218 29.541434,33.459946 C 28.662781,33.858755 26.743708,35.738993 26.387179,34.188218 C 27.125239,30.260529 28.492698,26.478234 29.366801,22.58186 C 30.171202,20.790317 28.857456,18.526637 26.890929,20.008625 C 24.534979,21.034718 22.564787,22.710882 20.507855,24.213243 z M 29.251545,11.003077 C 26.847779,10.875511 25.591007,14.750449 27.87529,15.810806 C 29.728512,16.57083 31.746339,14.670114 31.293604,12.770861 C 31.153105,11.781904 30.26521,10.96981 29.251546,11.003077 L 29.251545,11.003077 z"
id="text3482"
style="font-size:40px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;opacity:0.2;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:URW Palladio L;-inkscape-font-specification:URW Palladio L Bold" />
<path
d="M 20.507855,25.213243 C 20.766006,25.915016 21.056573,26.483856 21.675512,25.706045 C 22.442859,25.249493 25.013952,23.248288 24.756683,25.208513 C 23.93342,28.835795 22.931327,32.424931 22.165113,36.063385 C 21.363928,38.055603 23.183263,39.857649 25.082782,38.562099 C 27.101847,37.729758 28.839248,36.374018 30.614199,35.130331 C 30.372019,34.536398 30.210602,33.683218 29.541434,34.459946 C 28.662781,34.858755 26.743708,36.738993 26.387179,35.188218 C 27.125239,31.260529 28.492698,27.478234 29.366801,23.58186 C 30.171202,21.790317 28.857456,19.526637 26.890929,21.008625 C 24.534979,22.034718 22.564787,23.710882 20.507855,25.213243 z M 29.251545,12.003077 C 26.847779,11.875511 25.591007,15.750449 27.87529,16.810806 C 29.728512,17.57083 31.746339,15.670114 31.293604,13.770861 C 31.153105,12.781904 30.26521,11.96981 29.251546,12.003077 L 29.251545,12.003077 z"
id="path3536"
style="font-size:40px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:URW Palladio L;-inkscape-font-specification:URW Palladio L Bold" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 7.2 KiB

View File

@ -0,0 +1,230 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
version="1.1"
width="48"
height="48"
id="svg2474">
<metadata
id="metadata33">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs2476">
<linearGradient
id="linearGradient3533">
<stop
id="stop3535"
style="stop-color:#93b9dd;stop-opacity:1"
offset="0" />
<stop
id="stop3545"
style="stop-color:#6396cd;stop-opacity:1"
offset="1" />
</linearGradient>
<linearGradient
id="linearGradient3266">
<stop
id="stop3268"
style="stop-color:#387ab8;stop-opacity:1"
offset="0" />
<stop
id="stop3270"
style="stop-color:#387ab8;stop-opacity:0"
offset="1" />
</linearGradient>
<linearGradient
id="linearGradient3276">
<stop
id="stop3278"
style="stop-color:#6396cd;stop-opacity:1"
offset="0" />
<stop
id="stop3280"
style="stop-color:#83acd5;stop-opacity:0"
offset="1" />
</linearGradient>
<linearGradient
x1="108.5625"
y1="102.78125"
x2="108.5625"
y2="71.78125"
id="linearGradient5497"
xlink:href="#linearGradient5491"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(-95.99949,-49.00038)" />
<linearGradient
id="linearGradient5491">
<stop
id="stop5493"
style="stop-color:#ffffff;stop-opacity:1"
offset="0" />
<stop
id="stop5495"
style="stop-color:#ffffff;stop-opacity:0"
offset="1" />
</linearGradient>
<linearGradient
x1="102.5625"
y1="49.78125"
x2="103.5625"
y2="72.78125"
id="linearGradient5480"
xlink:href="#linearGradient5474"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(-95.99949,-49.00038)" />
<linearGradient
id="linearGradient5474">
<stop
id="stop5476"
style="stop-color:#ffffff;stop-opacity:1"
offset="0" />
<stop
id="stop5478"
style="stop-color:#ffffff;stop-opacity:0"
offset="1" />
</linearGradient>
<linearGradient
x1="118.47968"
y1="55.060318"
x2="118.47968"
y2="91.941895"
id="linearGradient4593-5-8-1-5-2"
xlink:href="#linearGradient3533"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(-100.99949,-49.00038)" />
<linearGradient
x1="34.980953"
y1="53.837799"
x2="35.996098"
y2="83.57618"
id="linearGradient4593-5-8-1-5-2-3"
xlink:href="#linearGradient3533"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(-5,0)" />
<radialGradient
cx="33.875"
cy="197.29688"
r="4.84375"
fx="33.875"
fy="197.29688"
id="radialGradient5147-5"
xlink:href="#linearGradient6462-6-8-548-9-2-7"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,0.33870968,0,130.47051)" />
<linearGradient
id="linearGradient6462-6-8-548-9-2-7">
<stop
id="stop6464-5-9-94-5-4-4"
style="stop-color:#000000;stop-opacity:1"
offset="0" />
<stop
id="stop6466-3-6-1-7-2-8"
style="stop-color:#000000;stop-opacity:0"
offset="1" />
</linearGradient>
<linearGradient
id="linearGradient6462-6-8-548-9-5">
<stop
id="stop6464-5-9-94-5-8"
style="stop-color:#000000;stop-opacity:1"
offset="0" />
<stop
id="stop6466-3-6-1-7-5"
style="stop-color:#000000;stop-opacity:0"
offset="1" />
</linearGradient>
<radialGradient
cx="33.875"
cy="197.29688"
r="4.84375"
fx="33.875"
fy="197.29688"
id="radialGradient6081"
xlink:href="#linearGradient6462-6-8-548-9-5"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,0.33870968,0,130.47051)" />
<linearGradient
x1="42.030777"
y1="84.719109"
x2="53.808601"
y2="73.263672"
id="linearGradient4008"
xlink:href="#linearGradient3276"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(-5,0)" />
<linearGradient
x1="39.843277"
y1="83.781609"
x2="50.683601"
y2="75.138672"
id="linearGradient4018"
xlink:href="#linearGradient3266"
gradientUnits="userSpaceOnUse" />
</defs>
<path
d="m 38.71875,197.29687 a 4.84375,1.640625 0 1 1 -9.6875,0 4.84375,1.640625 0 1 1 9.6875,0 z"
transform="matrix(3.3032251,0,0,1.6761866,-89.458749,-288.73764)"
id="path6460-6-4-4-3-3"
style="opacity:0.2;color:#000000;fill:url(#radialGradient5147-5);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" />
<path
d="M 46.405989,78.610714 A 13.125,13.125 0 0 1 33.62701,84.097034"
transform="matrix(1.0666665,0,0,1.0666665,-14.49949,-51.367037)"
id="path4010"
style="color:#000000;fill:none;stroke:url(#linearGradient4018);stroke-width:8.43750095;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" />
<path
d="m 38.71875,197.29687 a 4.84375,1.640625 0 1 1 -9.6875,0 4.84375,1.640625 0 1 1 9.6875,0 z"
transform="matrix(4.541935,0,0,1.9809503,-131.42005,-348.86656)"
id="path6460-6-4-4-4"
style="opacity:0.1;color:#000000;fill:url(#radialGradient6081);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" />
<path
d="M 35.542313,84.24974 A 13.125,13.125 0 1 1 47.171703,64.884866"
transform="matrix(1.0666665,0,0,1.0666665,-14.49949,-51.367037)"
id="path4788-6"
style="color:#000000;fill:none;stroke:#387ab8;stroke-width:8.43750095;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" />
<path
d="m 38.50051,9.4996196 0,11.0000004 -11,0"
id="path4847"
style="color:#000000;fill:none;stroke:#387ab8;stroke-width:7;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" />
<path
d="m 46.386659,78.638476 a 13.125,13.125 0 0 1 -13.412517,5.34104"
transform="matrix(1.0666665,0,0,1.0666665,-14.49949,-51.367037)"
id="path4006"
style="color:#000000;fill:none;stroke:url(#linearGradient4008);stroke-width:6.56250095;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" />
<path
d="m 37.320778,84.13999 a 13.125,13.125 0 1 1 9.33779,-20.123155"
transform="matrix(1.0666665,0,0,1.0666665,-14.49949,-51.367037)"
id="path4788"
style="color:#000000;fill:none;stroke:url(#linearGradient4593-5-8-1-5-2-3);stroke-width:6.56250095;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" />
<path
d="m 38.50051,9.4996196 0,11.0000004 -11,0"
id="path4847-1"
style="color:#000000;fill:none;stroke:url(#linearGradient4593-5-8-1-5-2);stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" />
<path
d="m 29.740794,33.593555 c -3.674085,2.533277 -8.663315,2.652831 -12.552784,-0.06269 -5.010358,-3.498088 -6.216831,-10.333397 -2.718751,-15.34375 3.498091,-5.010353 10.3334,-6.216833 15.343751,-2.71875 1.16116,0.810688 2.10377,1.843969 2.875,3.03125 l -5.1875,0 c -1.056625,-0.01494 -2.028484,0.943269 -2.028484,2 0,1.056731 0.971859,2.014943 2.028484,2 l 11,0 c 1.062499,0.28125 2.062499,-0.71875 2,-2 l 0,-11.0000004 c 0.01671,-1.0680358 -0.963214,-2.0479629 -2.03125,-2.0312505 -0.06245,-0.00293 -0.125046,-0.00293 -0.1875,0 -0.982752,0.107995 -1.802514,1.0428108 -1.78125,2.0312505 l 0,4.0625004 c -0.9534,-1.127853 -2.06667,-2.152011 -3.28125,-3 l -0.09375,-0.0625 c -2.85203,-1.9610889 -6.0733,-2.9220479 -9.312501,-2.9687509 -5.46224,-0.07875 -10.90353,2.4568065 -14.2500005,7.2500009 -5.354351,7.669111 -3.450361,18.3019 4.2187505,23.65625 6.255407,4.367344 14.482569,3.905673 20.208772,-0.574695"
id="path4788-2"
style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.23999999;color:#000000;fill:none;stroke:#ffffff;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans" />
<path
d="m 36.50052,13.562118 c -0.9534,-1.127853 -2.06667,-2.152011 -3.28125,-3 l -0.0937,-0.0625 c -2.85203,-1.9610889 -6.0733,-2.9220479 -9.312501,-2.9687509 -5.46224,-0.07875 -10.90354,2.4568065 -14.2500105,7.2500009 -5.354351,7.669111 -3.450361,18.3019 4.2187505,23.65625"
id="path4788-2-3"
style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.3;color:#000000;fill:none;stroke:url(#linearGradient5480);stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans" />
<path
d="M 32.53183,30.81212 C 29.03374,35.822473 22.198429,37.028952 17.18808,33.53087 12.177699,30.032787 10.971229,23.197473 14.469309,18.18712 17.96742,13.176767 24.802729,11.970287 29.81308,15.46837"
id="path4788-2-3-4"
style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;opacity:0.3;color:#000000;fill:none;stroke:url(#linearGradient5497);stroke-width:1;stroke-linecap:round;stroke-miterlimit:4;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans" />
</svg>

After

Width:  |  Height:  |  Size: 12 KiB

View File

@ -0,0 +1,130 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
version="1.0"
width="48"
height="48"
id="svg3258">
<defs
id="defs3260">
<linearGradient
id="linearGradient8838">
<stop
id="stop8840"
style="stop-color:black;stop-opacity:1"
offset="0" />
<stop
id="stop8842"
style="stop-color:black;stop-opacity:0"
offset="1" />
</linearGradient>
<radialGradient
cx="62.625"
cy="4.625"
r="10.625"
fx="62.625"
fy="4.625"
id="radialGradient3254"
xlink:href="#linearGradient8838"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(2.1647059,0,0,0.7529402,-111.56471,36.517647)" />
<linearGradient
id="linearGradient2490">
<stop
id="stop2492"
style="stop-color:#791235;stop-opacity:1"
offset="0" />
<stop
id="stop2494"
style="stop-color:#dd3b27;stop-opacity:1"
offset="1" />
</linearGradient>
<linearGradient
x1="18.379412"
y1="44.980297"
x2="18.379412"
y2="3.0816143"
id="linearGradient3251"
xlink:href="#linearGradient2490"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.9584364,0,0,0.9584366,0.9975246,1.9975253)" />
<linearGradient
id="linearGradient3242">
<stop
id="stop3244"
style="stop-color:#f8b17e;stop-opacity:1"
offset="0" />
<stop
id="stop3246"
style="stop-color:#e35d4f;stop-opacity:1"
offset="0.26238" />
<stop
id="stop3248"
style="stop-color:#c6262e;stop-opacity:1"
offset="0.66093999" />
<stop
id="stop3250"
style="stop-color:#690b54;stop-opacity:1"
offset="1" />
</linearGradient>
<radialGradient
cx="23.895569"
cy="3.9900031"
r="20.397499"
fx="23.895569"
fy="3.9900031"
id="radialGradient3249"
xlink:href="#linearGradient3242"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0,2.2874593,-3.0194057,0,36.047437,-50.630156)" />
<linearGradient
id="linearGradient4873">
<stop
id="stop4875"
style="stop-color:white;stop-opacity:1"
offset="0" />
<stop
id="stop4877"
style="stop-color:white;stop-opacity:0"
offset="1" />
</linearGradient>
<linearGradient
x1="63.397362"
y1="-12.489107"
x2="63.397362"
y2="5.4675598"
id="linearGradient3246"
xlink:href="#linearGradient4873"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(2.1153735,0,0,2.1153253,-107.57709,32.426559)" />
</defs>
<g
id="layer1">
<path
d="m 46.999997,40 c 0,4.418278 -10.297452,8 -23,8 -12.702548,0 -23.0000002,-3.581722 -23.0000002,-8 0,-4.418278 10.2974522,-8 23.0000002,-8 12.702548,0 23,3.581722 23,8 l 0,0 z"
id="path8836"
style="opacity:0.3;fill:url(#radialGradient3254);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.99999988;marker:none;visibility:visible;display:inline;overflow:visible" />
<path
d="M 24.000002,5.5018088 C 13.241573,5.5018088 4.5018088,14.24157 4.5018088,25 c 0,10.75843 8.7397642,19.498195 19.4981932,19.498192 10.758425,0 19.498199,-8.739762 19.498189,-19.498192 0,-10.75843 -8.739764,-19.4981912 -19.498189,-19.4981912 z"
id="path2555"
style="fill:url(#radialGradient3249);fill-opacity:1;stroke:url(#linearGradient3251);stroke-width:1.003654;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
<path
d="M 42.500002,24.999344 C 42.500002,35.216942 34.21666,43.5 24.000235,43.5 13.782875,43.5 5.5000003,35.216848 5.5000003,24.999344 c 0,-10.217125 8.2828747,-18.4993439 18.5002347,-18.4993439 10.216425,0 18.499767,8.2822189 18.499767,18.4993439 l 0,0 z"
id="path8655"
style="opacity:0.4;fill:none;stroke:url(#linearGradient3246);stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
d="m -33.28125,16.3125 -2.96875,2.96875 6.125,6.09375 c 0.188168,0.19054 0.188168,0.49696 0,0.6875 l -6.125,6.09375 2.96875,2.96875 6.09375,-6.09375 c 0.19054,-0.188168 0.49696,-0.188168 0.6875,0 l 6.09375,6.09375 2.96875,-2.96875 -6.09375,-6.09375 c -0.188168,-0.19054 -0.188168,-0.49696 0,-0.6875 L -17.4375,19.28125 -20.40625,16.3125 -26.5,22.40625 c -0.19054,0.188168 -0.49696,0.188168 -0.6875,0 l -6.09375,-6.09375 z"
transform="translate(50.84375,-2.1249996)"
id="path3243"
style="opacity:0.2;fill:black;fill-opacity:1;fill-rule:evenodd;stroke:none" />
<path
d="m -33.28125,16.3125 -2.96875,2.96875 6.125,6.09375 c 0.188168,0.19054 0.188168,0.49696 0,0.6875 l -6.125,6.09375 2.96875,2.96875 6.09375,-6.09375 c 0.19054,-0.188168 0.49696,-0.188168 0.6875,0 l 6.09375,6.09375 2.96875,-2.96875 -6.09375,-6.09375 c -0.188168,-0.19054 -0.188168,-0.49696 0,-0.6875 L -17.4375,19.28125 -20.40625,16.3125 -26.5,22.40625 c -0.19054,0.188168 -0.49696,0.188168 -0.6875,0 l -6.09375,-6.09375 z"
transform="translate(50.84375,-1.1249996)"
id="path3256"
style="fill:white;fill-opacity:1;fill-rule:evenodd;stroke:none" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 5.4 KiB

View File

@ -0,0 +1,23 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg id="svg2405" xmlns="http://www.w3.org/2000/svg" height="48" width="48" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink">
<defs id="defs2407">
<radialGradient id="radialGradient2177" gradientUnits="userSpaceOnUse" cy="35.127" cx="23.071" gradientTransform="matrix(.91481 .012650 -.0082150 .21356 2.2539 27.189)" r="10.319">
<stop id="stop2093" offset="0"/>
<stop id="stop2095" style="stop-opacity:0" offset="1"/>
</radialGradient>
<linearGradient id="linearGradient2181" y2="32.85" gradientUnits="userSpaceOnUse" x2="16.145" gradientTransform="matrix(1.0318 -1.0287 1.0318 1.0287 -26.553 23.964)" y1="17.13" x1="31.865">
<stop id="stop7918" style="stop-color:#fff" offset="0"/>
<stop id="stop7920" style="stop-color:#fff;stop-opacity:.34021" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient2179" y2="46.421" gradientUnits="userSpaceOnUse" x2="34.163" gradientTransform="matrix(1.0318 -1.0287 1.0318 1.0287 -59.146 28.538)" y1="30.701" x1="49.882">
<stop id="stop1324" style="stop-color:#b4b4b4" offset="0"/>
<stop id="stop1326" style="stop-color:#505050" offset="1"/>
</linearGradient>
</defs>
<g id="layer1">
<path id="path1361" style="opacity:.25571;fill:url(#radialGradient2177)" d="m33.278 34.941a10.319 2.3202 0 1 1 -20.639 0 10.319 2.3202 0 1 1 20.639 0z" transform="matrix(2.3012 0 0 1.919 -28.833 -24.805)"/>
<path id="text1314" style="stroke-linejoin:round;stroke:#4d4d4d;stroke-width:.98170;fill:#555753" d="m41.892 35.011-10.392-10.017 10-10.494-7.209-6.5-10.291 10-10.5-10-7.5 6.739 10.5 10.212-10.5 10.049 7.5 7 10.488-10.5 10.512 10.5 7.392-6.989z"/>
<path id="path7076" style="opacity:.40860;stroke-linejoin:round;stroke:url(#linearGradient2181);stroke-width:.98170;fill:url(#linearGradient2179)" d="m40.5 35-10.5-10 10-10.5-5.708-4.9586-10.292 9.9586-10.5-10-6 5.5 10.5 9.945-10.5 10.055 6 5.5 10.5-10.5 10.5 10.5 6-5.5z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.0 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 436 KiB

After

Width:  |  Height:  |  Size: 438 KiB

View File

@ -14,7 +14,7 @@
height="707.56323"
id="svg2"
version="1.1"
inkscape:version="0.47 r22583"
inkscape:version="0.48.1 "
sodipodi:docname="pfd.svg"
style="display:inline"
inkscape:export-filename="H:\Documents\Hobbies\OpenPilot\SVN\artwork\PFD-2.png"
@ -1561,6 +1561,52 @@
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
<linearGradient
inkscape:collect="always"
xlink:href="#SVGID_2_-8-6"
id="linearGradient9715"
gradientUnits="userSpaceOnUse"
x1="311.81049"
y1="255.11819"
x2="311.81049"
y2="5.6694002"
gradientTransform="matrix(2.3120787,0,0,4.0093283,-610.5687,-120.59521)" />
<linearGradient
id="SVGID_2_-8-6"
gradientUnits="userSpaceOnUse"
x1="311.81049"
y1="255.11819"
x2="311.81049"
y2="5.6694002">
<stop
offset="0"
style="stop-color:#27AAE1"
id="stop6282-4-5" />
<stop
offset="1"
style="stop-color:#2B3990"
id="stop6284-0-4" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3774"
id="linearGradient5597"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,2.0069652,1.0784651e-5,-517.448)"
x1="380.38251"
y1="512.13574"
x2="380.38251"
y2="775.37415" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3758"
id="linearGradient5599"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,1.6738023,1.0784651e-5,-514.72728)"
x1="376.34192"
y1="484.50259"
x2="376.34192"
y2="745.59497" />
</defs>
<sodipodi:namedview
id="base"
@ -1569,16 +1615,16 @@
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="1.4"
inkscape:cx="542.75891"
inkscape:cy="127.43692"
inkscape:zoom="0.73067675"
inkscape:cx="305.98471"
inkscape:cy="372.16908"
inkscape:document-units="px"
inkscape:current-layer="layer6"
inkscape:current-layer="layer3"
showgrid="false"
inkscape:window-width="1280"
inkscape:window-height="725"
inkscape:window-x="0"
inkscape:window-y="24"
inkscape:window-width="1366"
inkscape:window-height="706"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
showguides="true"
inkscape:guide-bbox="true"
@ -1651,7 +1697,7 @@
inkscape:groupmode="layer"
id="layer7"
inkscape:label="Background"
style="display:inline"
style="display:none"
transform="translate(230.4171,-2.5493479)"
sodipodi:insensitive="true">
<rect
@ -1672,185 +1718,286 @@
style="display:inline"
sodipodi:insensitive="true">
<g
transform="matrix(2.013443,0,0,1.5267412,-477.87461,-169.05952)"
style="display:inline"
id="world"
inkscape:label="#g3042">
<g
id="g2887"
transform="matrix(2.3026321,0,0,1,-495.46969,-2.6199594)">
<g
id="g4280"
transform="translate(0,2.6199594)">
transform="matrix(4.6362185,0,0,1.5267412,-1475.4746,-169.05952)"
id="g4280">
<rect
style="fill:url(#linearGradient4284);fill-opacity:1;stroke:none"
id="rect3724"
width="305.71429"
height="654.98987"
x="227.8495"
y="509.42014"
ry="0" />
<rect
rx="2.7755576e-17"
ry="0"
y="-145.56979"
y="509.42014"
x="227.8495"
height="654.98987"
width="305.71429"
id="rect3724"
style="fill:url(#linearGradient5597);fill-opacity:1;stroke:none" />
<rect
style="fill:url(#linearGradient5599);fill-opacity:1;stroke:none"
id="rect2942"
style="fill:url(#linearGradient4286);fill-opacity:1;stroke:none" />
width="305.71429"
height="654.98987"
x="227.8495"
y="-145.56979"
ry="0"
rx="2.7755576e-017" />
</g>
<path
style="fill:none;stroke:#ffffff;stroke-width:0.75173599;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 227.84948,512.09626 305,0"
id="path3808" />
</g>
<g
id="g3456"
transform="translate(0,-2.5232082)">
<path
style="fill:none;stroke:#fff5f5;stroke-width:1.2823472;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline"
d="m 369.18848,488.05969 21.97363,0"
id="path2897" />
<path
id="path2899"
d="m 369.51556,584.99713 21.31947,0"
style="fill:none;stroke:#fff5f5;stroke-width:1.2823472;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" />
<path
id="path5881"
d="m 369.18848,439.59096 21.97363,0"
style="fill:none;stroke:#fff5f5;stroke-width:1.2823472;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" />
<path
style="fill:none;stroke:#fff5f5;stroke-width:1.2823472;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline"
d="m 369.51556,536.52842 21.31947,0"
id="path5883" />
<g
id="g3426">
<path
id="path3867"
d="m 344.26359,415.3566 72.25318,0"
style="fill:none;stroke:#fff5f5;stroke-width:2.5646944;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" />
inkscape:connector-curvature="0"
id="path3808"
d="m -419.11463,608.77894 1414.04665,0"
style="fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<text
transform="scale(0.87078919,1.1483836)"
id="text5911"
y="364.95422"
x="482.14175"
style="font-size:22.81432533px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
style="font-size:9.12572956px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
y="364.95422"
x="482.14175"
id="tspan5913"
sodipodi:role="line">20</tspan></text>
y="537.23804"
x="201.93459"
style="font-size:13.30799103px;fill:#ffffff;font-family:CenturyGothic"
transform="scale(0.97685665,1.0236917)"
font-size="13"
id="text6388">10</text>
<text
xml:space="preserve"
style="font-size:22.81432533px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
x="379.47711"
y="364.95422"
id="text5915"
transform="scale(0.87078919,1.1483836)"><tspan
sodipodi:role="line"
id="tspan5917"
x="379.47711"
y="364.95422"
style="font-size:9.12572956px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black">20</tspan></text>
</g>
<g
transform="translate(0,-6.5505232)"
id="g3433">
<path
style="fill:none;stroke:#fff5f5;stroke-width:2.5646944;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline"
d="m 366.12884,470.37584 27.96785,0"
id="path3777" />
y="537.23804"
x="376.04211"
style="font-size:13.30799103px;fill:#ffffff;font-family:CenturyGothic"
transform="scale(0.97685665,1.0236917)"
font-size="13"
id="text6390">10</text>
<line
style="fill:none;stroke:#ffffff;stroke-width:2.04738331"
x1="258.02176"
y1="538.08423"
x2="221.47374"
y2="538.08423"
id="line6404" />
<line
style="fill:none;stroke:#ffffff;stroke-width:2.04738331"
x1="357.53674"
y1="538.08423"
x2="323.52075"
y2="538.08423"
id="line6406" />
<line
style="fill:none;stroke:#ffffff;stroke-width:2.04738331"
x1="221.47374"
y1="538.08423"
x2="221.47374"
y2="549.96582"
id="line6408" />
<line
style="fill:none;stroke:#ffffff;stroke-width:2.04738331"
x1="357.53674"
y1="538.08319"
x2="357.53674"
y2="549.96582"
id="line6410" />
<text
xml:space="preserve"
style="font-size:22.81432533px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
x="461.60883"
y="412.86438"
id="text5907"
transform="scale(0.87078921,1.1483836)"><tspan
sodipodi:role="line"
id="tspan5909"
x="461.60883"
y="412.86438"
style="font-size:9.12572956px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black">10</tspan></text>
y="461.79126"
x="201.93459"
style="font-size:13.30799103px;fill:#ffffff;font-family:CenturyGothic"
transform="scale(0.97685665,1.0236917)"
font-size="13"
id="text6412">20</text>
<text
transform="scale(0.87078921,1.1483836)"
id="text5919"
y="412.86438"
x="398.86932"
style="font-size:22.81432533px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
style="font-size:9.12572956px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
y="412.86438"
x="398.86932"
id="tspan5921"
sodipodi:role="line">10</tspan></text>
</g>
<g
transform="translate(0,7.8592037)"
id="g3440">
<path
id="path3869"
d="m 366.12883,553.51 27.96786,0"
style="fill:none;stroke:#fff5f5;stroke-width:2.5646944;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" />
y="461.79126"
x="376.04211"
style="font-size:13.30799103px;fill:#ffffff;font-family:CenturyGothic"
transform="scale(0.97685665,1.0236917)"
font-size="13"
id="text6414">20</text>
<line
style="fill:none;stroke:#ffffff;stroke-width:2.04738331"
x1="258.02176"
y1="460.84964"
x2="221.47374"
y2="460.84964"
id="line6416" />
<line
style="fill:none;stroke:#ffffff;stroke-width:2.04738331"
x1="357.53674"
y1="460.84964"
x2="323.52075"
y2="460.84964"
id="line6418" />
<line
style="fill:none;stroke:#ffffff;stroke-width:2.04738331"
x1="221.47374"
y1="460.84964"
x2="221.47374"
y2="472.7323"
id="line6420" />
<line
style="fill:none;stroke:#ffffff;stroke-width:2.04738331"
x1="357.53674"
y1="460.84964"
x2="357.53674"
y2="472.7323"
id="line6422" />
<text
xml:space="preserve"
style="font-size:22.81432533px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
x="398.86932"
y="484.72864"
id="text5923"
transform="scale(0.87078921,1.1483836)"><tspan
sodipodi:role="line"
id="tspan5925"
x="398.86932"
y="484.72864"
style="font-size:9.12572956px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black">10</tspan></text>
y="664.91711"
x="199.72525"
style="font-size:13.30799103px;fill:#ffffff;font-family:CenturyGothic"
transform="scale(0.97685665,1.0236917)"
font-size="13"
id="text6424">-10</text>
<text
transform="scale(0.87078921,1.1483836)"
id="text5927"
y="484.72864"
x="461.60883"
style="font-size:22.81432533px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
style="font-size:9.12572956px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
y="484.72864"
x="461.60883"
id="tspan5929"
sodipodi:role="line">10</tspan></text>
</g>
<g
id="g3447">
<path
style="fill:none;stroke:#fff5f5;stroke-width:2.5646944;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline"
d="m 344.26361,609.2315 72.25318,0"
id="path5895" />
y="664.91711"
x="373.83279"
style="font-size:13.30799103px;fill:#ffffff;font-family:CenturyGothic"
transform="scale(0.97685665,1.0236917)"
font-size="13"
id="text6426">-10</text>
<line
style="fill:none;stroke:#ffffff;stroke-width:2.04738331"
x1="227.14275"
y1="680.66962"
x2="221.47374"
y2="680.66962"
id="line6428" />
<line
style="fill:none;stroke:#ffffff;stroke-width:2.04738331"
x1="238.48073"
y1="680.66962"
x2="232.81174"
y2="680.66962"
id="line6430" />
<line
style="fill:none;stroke:#ffffff;stroke-width:2.04738331"
x1="249.81975"
y1="680.66962"
x2="244.15074"
y2="680.66962"
id="line6432" />
<line
style="fill:none;stroke:#ffffff;stroke-width:2.04738331"
x1="261.15875"
y1="680.66962"
x2="255.48973"
y2="680.66962"
id="line6434" />
<line
style="fill:none;stroke:#ffffff;stroke-width:2.04738331"
x1="323.52075"
y1="680.66962"
x2="317.85077"
y2="680.66962"
id="line6436" />
<line
style="fill:none;stroke:#ffffff;stroke-width:2.04738331"
x1="334.85876"
y1="680.66962"
x2="329.18976"
y2="680.66962"
id="line6438" />
<line
style="fill:none;stroke:#ffffff;stroke-width:2.04738331"
x1="346.19775"
y1="680.66962"
x2="340.52875"
y2="680.66962"
id="line6440" />
<line
style="fill:none;stroke:#ffffff;stroke-width:2.04738331"
x1="357.53674"
y1="680.66962"
x2="351.86777"
y2="680.66962"
id="line6442" />
<line
style="fill:none;stroke:#ffffff;stroke-width:2.04738331"
x1="323.52075"
y1="757.90527"
x2="317.85077"
y2="757.90527"
id="line6444" />
<line
style="fill:none;stroke:#ffffff;stroke-width:2.04738331"
x1="334.85876"
y1="757.90527"
x2="329.18976"
y2="757.90527"
id="line6446" />
<line
style="fill:none;stroke:#ffffff;stroke-width:2.04738331"
x1="346.19775"
y1="757.90527"
x2="340.52875"
y2="757.90527"
id="line6448" />
<line
style="fill:none;stroke:#ffffff;stroke-width:2.04738331"
x1="357.53674"
y1="757.90527"
x2="351.86777"
y2="757.90527"
id="line6450" />
<line
style="fill:none;stroke:#ffffff;stroke-width:2.04738331"
x1="227.14275"
y1="757.90527"
x2="221.47275"
y2="757.90527"
id="line6452" />
<line
style="fill:none;stroke:#ffffff;stroke-width:2.04738331"
x1="238.48073"
y1="757.90527"
x2="232.81174"
y2="757.90527"
id="line6454" />
<line
style="fill:none;stroke:#ffffff;stroke-width:2.04738331"
x1="249.81975"
y1="757.90527"
x2="244.15074"
y2="757.90527"
id="line6456" />
<line
style="fill:none;stroke:#ffffff;stroke-width:2.04738331"
x1="261.15875"
y1="757.90527"
x2="255.48973"
y2="757.90527"
id="line6458" />
<line
style="fill:none;stroke:#ffffff;stroke-width:2.04738331"
x1="221.47374"
y1="680.66962"
x2="221.47374"
y2="668.78809"
id="line6460" />
<line
style="fill:none;stroke:#ffffff;stroke-width:2.04738331"
x1="357.53674"
y1="680.67072"
x2="357.53674"
y2="668.78809"
id="line6462" />
<text
xml:space="preserve"
style="font-size:22.81432533px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
x="482.14175"
y="533.77838"
id="text5931"
transform="scale(0.87078921,1.1483836)"><tspan
sodipodi:role="line"
id="tspan5933"
x="482.14175"
y="533.77838"
style="font-size:9.12572956px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black">20</tspan></text>
y="740.36438"
x="199.72525"
style="font-size:13.30799103px;fill:#ffffff;font-family:CenturyGothic"
transform="scale(0.97685665,1.0236917)"
font-size="13"
id="text6464">-20</text>
<text
transform="scale(0.87078921,1.1483836)"
id="text5935"
y="533.77838"
x="379.47711"
style="font-size:22.81432533px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
style="font-size:9.12572956px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
y="533.77838"
x="379.47711"
id="tspan5937"
sodipodi:role="line">20</tspan></text>
</g>
</g>
y="740.36438"
x="373.83279"
style="font-size:13.30799103px;fill:#ffffff;font-family:CenturyGothic"
transform="scale(0.97685665,1.0236917)"
font-size="13"
id="text6466">-20</text>
<line
style="fill:none;stroke:#ffffff;stroke-width:2.04738331"
x1="221.47374"
y1="757.90424"
x2="221.47374"
y2="746.02264"
id="line6468" />
<line
style="fill:none;stroke:#ffffff;stroke-width:2.04738331"
x1="357.53674"
y1="757.90527"
x2="357.53674"
y2="746.02264"
id="line6470" />
</g>
</g>
<g
@ -1859,172 +2006,6 @@
inkscape:label="Foreground"
style="display:inline"
transform="translate(230.4171,-2.5493479)">
<g
id="foreground"
inkscape:label="#g3392">
<g
transform="translate(4.1134971,-1.5931792)"
id="g6859"
style="display:inline">
<path
id="path6311"
style="fill:#f17f07;fill-opacity:1;stroke:#f17f07;stroke-width:5.35583735;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 385.70404,414.78075 -32.91384,0 -68.78149,-55.27579 101.69533,55.27579 z m -201.57618,0 32.91384,0 68.78149,-55.27579 -101.69533,55.27579 z" />
<path
id="path6846"
style="fill:#f17f07;fill-opacity:1;stroke:#f17f07;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 3.3266852,357.04811 0,6.42857 58.7499998,0 6.428574,-6.42857 m -65.1785738,0.42857 0,-6.42857 58.7499998,0 6.428574,6.42857" />
<path
d="m 566.50525,357.04811 0,6.42857 -58.75,0 -6.42858,-6.42857 m 65.17857,0.42857 0,-6.42857 -58.74999,0 -6.42858,6.42857"
style="fill:#f17f07;fill-opacity:1;stroke:#f17f07;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
id="path6853" />
</g>
<rect
style="fill:none;stroke:#ffffff;stroke-width:5.05291367;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline"
id="rect6866"
width="1033.8402"
height="702.51031"
x="-227.89064"
y="5.0758047"
inkscape:label="#rect6231" />
<path
style="fill:#ff251b;fill-opacity:1;stroke:#ff251b;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline"
d="m 279.13165,125.4054 20.29336,-0.0329 -10.36931,-19.46879 -9.92405,19.50168 z"
id="path3779" />
<g
transform="translate(16.458613,-9.5367432e-7)"
style="display:inline"
id="speed-bg"
inkscape:label="#g3820">
<rect
y="131.33096"
x="-163.69627"
height="450"
width="110.05586"
id="rect6300"
style="fill:#ffffff;fill-opacity:0.14285715;stroke:#ffffff;stroke-opacity:1;display:inline" />
<path
sodipodi:nodetypes="cccccccc"
id="speed-window"
d="m -162.85715,337.78541 78.912165,0 0,9.3094 10.606602,9.3094 -10.606602,9.3094 0.08512,9.3094 -78.997285,0 0,-37.2376 z"
style="fill:#000000;fill-opacity:1;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline"
inkscape:label="#rect6927" />
</g>
<g
inkscape:label="#g3820"
id="altitude-bg"
style="display:inline"
transform="matrix(-1,0,0,1,562.96105,-9.5367432e-7)">
<rect
style="fill:#ffffff;fill-opacity:0.14117647;stroke:#ffffff;stroke-opacity:1;display:inline"
id="rect5640"
width="110.05586"
height="450"
x="-163.69627"
y="131.33096" />
</g>
<rect
style="opacity:0.5;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:2.42740273;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline"
id="vario-bg"
width="41.465546"
height="339.4606"
x="727.99298"
y="186.60066"
inkscape:label="#rect5038" />
<path
style="fill:#000000;fill-opacity:0.49350652;stroke:#000000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline"
d="m -15.423661,592.19188 0,96.40626 88.90625,0 0.50508,0.007 430.628851,0 0.17857,0 88.6875,0 0,-96.41369 -65.125,0 -23.78125,23.78125 0.23331,-0.70982 -432.045811,0 0,0 -23.0625,-23.071 -65.125,0 z"
id="path6922"
sodipodi:nodetypes="ccccccccccccccc" />
<g
style="display:inline"
id="g2928"
transform="matrix(0.53532208,0,0,0.53532208,250.40617,503.97463)">
<path
transform="translate(0.08444214,0)"
d="m 589.99999,195.93361 c 0,11.44018 -9.2741,20.71428 -20.71428,20.71428 -11.44019,0 -20.71429,-9.2741 -20.71429,-20.71428 0,-11.44018 9.2741,-20.71429 20.71429,-20.71429 11.44018,0 20.71428,9.27411 20.71428,20.71429 z"
sodipodi:ry="20.714285"
sodipodi:rx="20.714285"
sodipodi:cy="195.93361"
sodipodi:cx="569.28571"
id="path2930"
style="fill:#f1b907;fill-opacity:1;stroke:#6f5404;stroke-width:2;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
sodipodi:type="arc" />
<rect
ry="2.2728431"
y="173.52946"
x="590.45447"
height="45.456863"
width="4.5456862"
id="rect2932"
style="fill:#f1b907;fill-opacity:1;stroke:#6f5404;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
<rect
style="fill:#f1b907;fill-opacity:1;stroke:#6f5404;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
id="rect2934"
width="4.5456862"
height="45.456863"
x="543.74017"
y="173.52946"
ry="2.2728431" />
</g>
<path
inkscape:export-ydpi="103.61"
inkscape:export-xdpi="103.61"
inkscape:export-filename="H:\Documents\Hobbies\W433\g9905.png"
sodipodi:nodetypes="cccccccccccccccccccc"
d="m 223.25403,625.21586 c 2.8525,4.69928 3.65097,9.98089 3.78605,15.72533 l 17.43165,16.61392 0.51269,6.31009 -18.25985,-9.82008 -0.63103,15.7358 6.90167,6.70448 -0.11829,5.36359 -7.72987,-4.41707 -1.73701,2.29337 -0.32549,3.2e-4 -1.73529,-2.2874 -7.72987,4.41706 -0.11829,-5.36359 6.90167,-6.70447 -0.63102,-15.73581 -18.25985,9.82009 0.51269,-6.3101 17.43165,-16.61392 c 0.13507,-5.74443 0.93354,-11.02605 3.78604,-15.72532"
style="fill:none;stroke:#f1b907;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline"
id="path34138-1-7" />
<g
id="g12081"
transform="matrix(-0.37832244,0,0,0.37832244,560.4425,481.00671)">
<path
sodipodi:nodetypes="ccc"
id="path10497"
d="m 503.05597,382.63105 79.22184,137.21626 C 508.75434,514.35363 449.16817,496.95519 503.05597,382.63105 z"
style="fill:none;stroke:#f1b907;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
id="path11011"
d="m 488.92858,483.79075 -48.57143,48.57143 76.42857,0 -27.48454,-47.60462"
style="fill:none;stroke:#f1b907;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
sodipodi:nodetypes="ccc"
id="path11013"
d="m 502.8774,380.31224 81.19998,46.06174 0.35972,94.77314"
style="fill:none;stroke:#f1b907;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
sodipodi:nodetypes="cc"
id="path11015"
d="M 584.05445,426.5424 542.4818,450.47261"
style="fill:none;stroke:#f1b907;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
transform="translate(-2.6785714,0.71428572)"
d="m 591.60716,426.20148 c 0,3.20522 -2.59835,5.80357 -5.80357,5.80357 -3.20523,0 -5.80357,-2.59835 -5.80357,-5.80357 0,-3.20523 2.59834,-5.80357 5.80357,-5.80357 3.20522,0 5.80357,2.59834 5.80357,5.80357 z"
sodipodi:ry="5.8035712"
sodipodi:rx="5.8035712"
sodipodi:cy="426.20148"
sodipodi:cx="585.80359"
id="path12062"
style="fill:#f1b907;fill-opacity:1;stroke:#f1b907;stroke-width:2;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
sodipodi:type="arc" />
</g>
<path
style="fill:none;stroke:#f1b907;stroke-width:2.79651642;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 0.92772957,600.0101 0,6.18925 -2.88853597,0 0,0.72973 0,5.43249 0,0.75676 2.88853597,0 0,6.16222 40.53369843,0 0,-6.91898 0,-5.43249 0,-6.91898 -40.53369843,0 z"
id="path12125" />
<path
sodipodi:nodetypes="cccccccccc"
id="path5384"
d="m 304.06475,677.71861 0,2.67964 -9.06747,0 0,1.41651 0,0.0271 0,1.41651 9.06747,0 0,2.67964 4.11419,-4.11419 -4.11419,-4.10518 z"
style="fill:#525652;fill-opacity:1;stroke:#262020;stroke-width:0.28871548px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline"
inkscape:label="#path7548" />
<path
inkscape:label="#path7548"
style="fill:#525652;fill-opacity:1;stroke:#262020;stroke-width:0.28871548px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline"
d="m 272.8475,677.71861 0,2.67964 9.06747,0 0,1.41651 0,0.0271 0,1.41651 -9.06747,0 0,2.67964 -4.11419,-4.11419 4.11419,-4.10518 z"
id="path5386"
sodipodi:nodetypes="cccccccccc" />
</g>
<g
id="g4306"
transform="translate(101.68019,0)">
@ -2094,141 +2075,585 @@
id="tspan4328"
sodipodi:role="line">GPS</tspan></text>
</g>
<g
id="foreground"
inkscape:label="#g4670">
<rect
style="fill:none;stroke:#4c4141;stroke-width:5.05291367;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline"
id="rect6866"
width="1033.8402"
height="702.51031"
x="-227.89064"
y="5.0758047"
inkscape:label="#rect6231" />
<path
style="fill:#00ff00;fill-opacity:1;stroke:#00ff00;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline"
d="m 279.13165,125.4054 20.29336,-0.0329 -10.36931,-19.46879 -9.92405,19.50168 z"
id="path3779"
inkscape:connector-curvature="0" />
<rect
inkscape:label="#rect6300"
style="fill:#000000;fill-opacity:0.15686275;stroke:#ffffff;stroke-opacity:1;display:inline"
id="speed-bg"
width="110.05586"
height="450"
x="-147.23766"
y="131.33096" />
<path
inkscape:connector-curvature="0"
inkscape:label="#rect6927"
style="fill:#000000;fill-opacity:1;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline"
d="m 725.81867,337.78498 -78.91217,0 0,9.3094 -10.6066,9.3094 10.6066,9.3094 -0.0851,9.3094 78.99729,0 0,-37.2376 z"
id="altitude-window"
style="fill:#000000;fill-opacity:0.78431373;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline"
d="m -146.39854,337.78541 78.912168,0 0,9.3094 10.606602,9.3094 -10.606602,9.3094 0.08512,9.3094 -78.997288,0 0,-37.2376 z"
id="speed-window"
sodipodi:nodetypes="cccccccc" />
<g
inkscape:label="#g3820"
id="altitude-bg"
style="fill:#000000;fill-opacity:0.15686275;stroke:#ffffff;stroke-opacity:1;display:inline"
transform="matrix(-1,0,0,1,562.96105,-9.5367432e-7)">
<rect
style="fill:#000000;fill-opacity:0.15686275;stroke:#ffffff;stroke-opacity:1;display:inline"
id="rect5640"
width="110.05586"
height="450"
x="-163.69627"
y="131.33096" />
</g>
<path
style="fill:#000000;fill-opacity:0.15686275;stroke:#ffffff;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline"
d="m -15.423661,592.19188 0,96.40626 88.90625,0 0.50508,0.007 430.628851,0 0.17857,0 88.6875,0 0,-96.41369 -65.125,0 -23.78125,23.78125 0.23331,-0.70982 -432.045811,0 0,0 -23.0625,-23.071 -65.125,0 z"
id="path6922"
sodipodi:nodetypes="ccccccccccccccc"
inkscape:connector-curvature="0" />
<g
style="display:inline"
id="g2928"
transform="matrix(0.53532208,0,0,0.53532208,250.40617,503.97463)">
<path
transform="translate(0.08444214,0)"
d="m 589.99999,195.93361 c 0,11.44018 -9.2741,20.71428 -20.71428,20.71428 -11.44019,0 -20.71429,-9.2741 -20.71429,-20.71428 0,-11.44018 9.2741,-20.71429 20.71429,-20.71429 11.44018,0 20.71428,9.27411 20.71428,20.71429 z"
sodipodi:ry="20.714285"
sodipodi:rx="20.714285"
sodipodi:cy="195.93361"
sodipodi:cx="569.28571"
id="path2930"
style="fill:#f1b907;fill-opacity:1;stroke:#6f5404;stroke-width:2;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
sodipodi:type="arc" />
<rect
ry="2.2728431"
y="173.52946"
x="590.45447"
height="45.456863"
width="4.5456862"
id="rect2932"
style="fill:#f1b907;fill-opacity:1;stroke:#6f5404;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
<rect
style="fill:#f1b907;fill-opacity:1;stroke:#6f5404;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
id="rect2934"
width="4.5456862"
height="45.456863"
x="543.74017"
y="173.52946"
ry="2.2728431" />
</g>
<path
inkscape:export-ydpi="103.61"
inkscape:export-xdpi="103.61"
inkscape:export-filename="H:\Documents\Hobbies\W433\g9905.png"
sodipodi:nodetypes="cccccccccccccccccccc"
d="m 223.25403,625.21586 c 2.8525,4.69928 3.65097,9.98089 3.78605,15.72533 l 17.43165,16.61392 0.51269,6.31009 -18.25985,-9.82008 -0.63103,15.7358 6.90167,6.70448 -0.11829,5.36359 -7.72987,-4.41707 -1.73701,2.29337 -0.32549,3.2e-4 -1.73529,-2.2874 -7.72987,4.41706 -0.11829,-5.36359 6.90167,-6.70447 -0.63102,-15.73581 -18.25985,9.82009 0.51269,-6.3101 17.43165,-16.61392 c 0.13507,-5.74443 0.93354,-11.02605 3.78604,-15.72532"
style="fill:none;stroke:#f1b907;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline"
id="path34138-1-7"
inkscape:connector-curvature="0" />
<g
id="g12081"
transform="matrix(-0.37832244,0,0,0.37832244,560.4425,481.00671)">
<path
sodipodi:nodetypes="ccc"
id="path10497"
d="m 503.05597,382.63105 79.22184,137.21626 C 508.75434,514.35363 449.16817,496.95519 503.05597,382.63105 z"
style="fill:none;stroke:#f1b907;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
inkscape:connector-curvature="0" />
<path
id="path11011"
d="m 488.92858,483.79075 -48.57143,48.57143 76.42857,0 -27.48454,-47.60462"
style="fill:none;stroke:#f1b907;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
inkscape:connector-curvature="0" />
<path
sodipodi:nodetypes="ccc"
id="path11013"
d="m 502.8774,380.31224 81.19998,46.06174 0.35972,94.77314"
style="fill:none;stroke:#f1b907;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
inkscape:connector-curvature="0" />
<path
sodipodi:nodetypes="cc"
id="path11015"
d="M 584.05445,426.5424 542.4818,450.47261"
style="fill:none;stroke:#f1b907;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
inkscape:connector-curvature="0" />
<path
transform="translate(-2.6785714,0.71428572)"
d="m 591.60716,426.20148 c 0,3.20522 -2.59835,5.80357 -5.80357,5.80357 -3.20523,0 -5.80357,-2.59835 -5.80357,-5.80357 0,-3.20523 2.59834,-5.80357 5.80357,-5.80357 3.20522,0 5.80357,2.59834 5.80357,5.80357 z"
sodipodi:ry="5.8035712"
sodipodi:rx="5.8035712"
sodipodi:cy="426.20148"
sodipodi:cx="585.80359"
id="path12062"
style="fill:#f1b907;fill-opacity:1;stroke:#f1b907;stroke-width:2;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
sodipodi:type="arc" />
</g>
<path
style="fill:none;stroke:#f1b907;stroke-width:2.79651642;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 0.92772957,600.0101 0,6.18925 -2.88853597,0 0,0.72973 0,5.43249 0,0.75676 2.88853597,0 0,6.16222 40.53369843,0 0,-6.91898 0,-5.43249 0,-6.91898 -40.53369843,0 z"
id="path12125"
inkscape:connector-curvature="0" />
<path
sodipodi:nodetypes="cccccccccc"
id="path5384"
d="m 304.06475,677.71861 0,2.67964 -9.06747,0 0,1.41651 0,0.0271 0,1.41651 9.06747,0 0,2.67964 4.11419,-4.11419 -4.11419,-4.10518 z"
style="fill:#525652;fill-opacity:1;stroke:#262020;stroke-width:0.28871548px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline"
inkscape:label="#path7548"
inkscape:connector-curvature="0" />
<path
inkscape:label="#path7548"
style="fill:#525652;fill-opacity:1;stroke:#262020;stroke-width:0.28871548px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline"
d="m 272.8475,677.71861 0,2.67964 9.06747,0 0,1.41651 0,0.0271 0,1.41651 -9.06747,0 0,2.67964 -4.11419,-4.11419 4.11419,-4.10518 z"
id="path5386"
sodipodi:nodetypes="cccccccccc"
inkscape:connector-curvature="0" />
<path
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccccc"
id="altitude-window"
d="m 725.81867,337.78498 -78.91217,0 0,9.3094 -10.6066,9.3094 10.6066,9.3094 -0.0851,9.3094 78.99729,0 0,-37.2376 z"
style="fill:#000000;fill-opacity:0.78431373;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline"
inkscape:label="#rect6927" />
<g
id="g5266">
<circle
id="circle6392"
r="5.6680002"
cy="255.12"
cx="311.81"
d="m 317.478,255.12 c 0,3.13035 -2.53765,5.668 -5.668,5.668 -3.13035,0 -5.668,-2.53765 -5.668,-5.668 0,-3.13035 2.53765,-5.66801 5.668,-5.66801 3.13035,0 5.668,2.53766 5.668,5.66801 z"
sodipodi:cx="311.81"
sodipodi:cy="255.12"
sodipodi:rx="5.6680002"
sodipodi:ry="5.6680002"
style="fill:#39b54a;stroke:#ffffff;stroke-width:2;display:inline"
transform="matrix(1.2807481,0,0,1.3392766,-110.2996,14.543853)" />
<line
id="line6394"
y2="356.21884"
x2="310.83472"
y1="356.21884"
x1="296.31235"
style="fill:#39b54a;stroke:#ffffff;stroke-width:2.61937094;display:inline" />
<line
id="line6396"
y2="356.21884"
x2="267.27008"
y1="356.21884"
x1="281.79123"
style="fill:#39b54a;stroke:#ffffff;stroke-width:2.61937094;display:inline" />
<line
id="line6398"
y2="333.44037"
x2="289.05307"
y1="348.6265"
x1="289.05307"
style="fill:#39b54a;stroke:#ffffff;stroke-width:2.61937094;display:inline" />
<line
id="line6400"
y2="356.21884"
x2="118.25632"
y1="356.21884"
x1="248.72997"
style="fill:none;stroke:#ffffff;stroke-width:2.61937094;display:inline" />
<line
id="line6402"
y2="356.21884"
x2="330.2829"
y1="356.21884"
x1="460.75775"
style="fill:none;stroke:#ffffff;stroke-width:2.61937094;display:inline" />
</g>
</g>
</g>
<g
inkscape:groupmode="layer"
id="layer4"
inkscape:label="red needle"
style="display:inline"
style="display:none"
transform="translate(230.4171,-2.5493479)"
sodipodi:insensitive="true">
<rect
inkscape:label="#rect6231"
y="5.0807486"
x="-227.85889"
height="702.50043"
width="1033.8469"
id="rect6290"
style="fill:none;stroke:#ffffff;stroke-width:5.05289459;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:0;stroke-dasharray:none;stroke-dashoffset:0;display:inline" />
<g
transform="matrix(1.0078864,0,0,1,-0.06058227,-278.08002)"
style="display:inline"
id="angle"
inkscape:label="#g6257" />
<rect
style="fill:none;stroke:none"
id="rect8572"
width="1044.2374"
height="708.93182"
x="-232.47"
y="18.972483" />
<g
id="rollscale"
inkscape:label="#g4355"
transform="matrix(0.99612266,0,0,1,1.1557355,2.0091557e-7)">
<rect
style="fill:none;stroke:#ffffff;stroke-width:5.06271887;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:0;stroke-dasharray:none;stroke-dashoffset:0;display:inline"
id="rect6290"
width="1037.8711"
height="702.50043"
x="-229.90605"
y="5.0807486"
inkscape:label="#rect6231" />
inkscape:label="#g5089">
<g
transform="matrix(1.0800826,0,0,1.0794632,-23.934953,-31.741915)"
inkscape:label="#g6257"
id="angle"
style="display:inline"
transform="matrix(1.0118095,0,0,1,-1.2210522,-278.08002)">
id="angle-3">
<line
style="fill:none;stroke:#ffffff;stroke-width:2.50891328"
id="line6291"
y2="190.85513"
x2="120.73093"
y1="170.57494"
x1="100.77813" />
<line
style="fill:none;stroke:#ffffff;stroke-width:2.50891328"
id="line6293"
y2="152.11588"
x2="170.40582"
y1="127.27781"
x1="156.29759" />
<line
style="fill:none;stroke:#ffffff;stroke-width:2.50891328"
id="line6295"
y2="127.76344"
x2="228.25465"
y1="100.05842"
x1="220.95166" />
<line
style="fill:none;stroke:#ffffff;stroke-width:2.50891328"
id="line6297"
y2="119.45585"
x2="290.33307"
y1="90.775726"
x1="290.33307" />
<line
style="fill:none;stroke:#ffffff;stroke-width:2.50891328"
id="line6299"
y2="127.76344"
x2="352.41013"
y1="100.05842"
x1="359.71555" />
<line
style="fill:none;stroke:#ffffff;stroke-width:2.50891328"
id="line6301"
y2="152.11588"
x2="410.25769"
y1="127.27781"
x1="424.36963" />
<line
style="fill:none;stroke:#ffffff;stroke-width:2.50891328"
id="line6303"
y2="190.85513"
x2="459.93256"
y1="170.5762"
x1="479.8891" />
<line
style="opacity:0.2;fill:none;stroke:#ffffff;stroke-width:1.25445664"
id="line6305"
y2="226.55669"
x2="83.257965"
y1="218.74611"
x1="71.425682" />
<line
style="opacity:0.4;fill:none;stroke:#ffffff;stroke-width:1.25445664"
id="line6307"
y2="215.72861"
x2="90.579643"
y1="207.29958"
x1="79.164169" />
<line
style="opacity:0.6;fill:none;stroke:#ffffff;stroke-width:1.25445664"
id="line6309"
y2="205.30521"
x2="98.447525"
y1="196.28056"
x1="87.482475" />
<line
style="opacity:0.8;fill:none;stroke:#ffffff;stroke-width:1.25445664"
id="line6311"
y2="195.31563"
x2="106.84303"
y1="185.71931"
x1="96.357063" />
<line
style="fill:none;stroke:#ffffff;stroke-width:1.25445664"
id="line6313"
y2="185.78508"
x2="115.73994"
y1="175.64375"
x1="105.76289" />
<line
style="fill:none;stroke:#ffffff;stroke-width:1.25445664"
id="line6315"
y2="176.74019"
x2="125.11599"
y1="166.08287"
x1="115.67522" />
<line
style="fill:none;stroke:#ffffff;stroke-width:1.25445664"
id="line6317"
y2="168.2075"
x2="134.94495"
y1="157.06325"
x1="126.06542" />
<line
style="fill:none;stroke:#ffffff;stroke-width:1.25445664"
id="line6319"
y2="160.20975"
x2="145.19942"
y1="148.60768"
x1="136.9072" />
<line
style="fill:none;stroke:#ffffff;stroke-width:1.25445664"
id="line6321"
y2="152.76717"
x2="155.85214"
y1="140.7402"
x1="148.16843" />
<line
style="fill:none;stroke:#ffffff;stroke-width:1.25445664"
id="line6323"
y2="145.90256"
x2="166.87439"
y1="133.48355"
x1="159.81906" />
<line
style="fill:none;stroke:#ffffff;stroke-width:1.25445664"
id="line6325"
y2="139.63362"
x2="178.2339"
y1="126.85543"
x1="171.82808" />
<line
style="fill:none;stroke:#ffffff;stroke-width:1.25445664"
id="line6327"
y2="133.97801"
x2="189.90071"
y1="120.87482"
x1="184.16185" />
<line
style="fill:none;stroke:#ffffff;stroke-width:1.25445664"
id="line6329"
y2="128.94846"
x2="201.84259"
y1="115.55942"
x1="196.7868" />
<line
style="fill:none;stroke:#ffffff;stroke-width:1.25445664"
id="line6331"
y2="124.56133"
x2="214.02826"
y1="110.92317"
x1="209.66689" />
<line
style="fill:none;stroke:none"
id="line6333"
y2="120.82927"
x2="226.42181"
y1="106.97737"
x1="222.7697" />
<line
style="fill:none;stroke:#ffffff;stroke-width:1.25445664"
id="line6335"
y2="117.7612"
x2="238.992"
y1="103.73477"
x1="236.05664" />
<line
style="fill:none;stroke:#ffffff;stroke-width:1.25445664"
id="line6337"
y2="115.36717"
x2="251.70279"
y1="101.20294"
x1="249.49286" />
<line
style="fill:none;stroke:#ffffff;stroke-width:1.25445664"
id="line6339"
y2="113.65104"
x2="264.51694"
y1="99.389381"
x1="263.04242" />
<line
style="fill:none;stroke:#ffffff;stroke-width:1.25445664"
id="line6341"
y2="112.62032"
x2="277.40442"
y1="98.299232"
x1="276.66403" />
<line
style="fill:none;stroke:#ffffff;stroke-width:1.25445664"
id="line6343"
y2="112.27632"
x2="290.32684"
y1="97.93502"
x1="290.32553" />
<line
style="fill:none;stroke:#ffffff;stroke-width:1.25445664"
id="line6345"
y2="112.61906"
x2="303.24908"
y1="98.297997"
x1="303.98581" />
<g
style="display:inline"
id="slider1"
transform="translate(-10.552094,234.36218)"
inkscape:label="#g6169">
<path
sodipodi:open="true"
sodipodi:end="5.8049311"
sodipodi:start="3.6237905"
transform="matrix(1.04245,0,0,1.04245,-39.343346,-14.403881)"
d="m 116.63233,278.11506 c 59.81989,-114.28932 200.9633,-158.44551 315.25261,-98.62561 42.43119,22.2088 77.00986,56.9241 99.05115,99.44254"
sodipodi:ry="233.57143"
sodipodi:rx="233.57143"
sodipodi:cy="386.42856"
sodipodi:cx="323.57144"
id="path5939"
style="fill:none;stroke:#ffffff;stroke-width:2.87783599;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
sodipodi:type="arc" />
<path
inkscape:transform-center-x="1.9963604"
sodipodi:nodetypes="cc"
inkscape:transform-center-y="-264.10817"
id="path6139"
d="m 298.57144,144.4675 0,-20.65945"
style="fill:none;stroke:#ffffff;stroke-width:4.49700022;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
sodipodi:nodetypes="cc"
inkscape:transform-center-x="69.19694"
style="fill:none;stroke:#ffffff;stroke-width:4.49700022;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="M 172.25161,179.81073 161.17392,160.6236"
id="path6141"
inkscape:transform-center-y="-119.85262" />
<path
sodipodi:nodetypes="cc"
inkscape:transform-center-y="-69.19694"
id="path6143"
d="M 83.717038,274.55684 60.591955,261.20557"
style="fill:none;stroke:#ffffff;stroke-width:4.49700022;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
inkscape:transform-center-x="119.85262" />
<path
sodipodi:nodetypes="cc"
inkscape:transform-center-x="-69.19694"
style="fill:none;stroke:#ffffff;stroke-width:4.49700022;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 424.28893,180.854 11.68003,-20.2304"
id="path6145"
inkscape:transform-center-y="-119.85262" />
<path
sodipodi:nodetypes="cc"
inkscape:transform-center-y="-69.19694"
id="path6147"
d="m 512.54237,275.06692 24.00856,-13.86135"
style="fill:none;stroke:#ffffff;stroke-width:4.49700022;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
inkscape:transform-center-x="-119.85262" />
<path
sodipodi:nodetypes="cc"
inkscape:transform-center-x="-24.031845"
style="fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 342.82539,147.62649 2.73081,-11.19792"
id="path6149"
inkscape:transform-center-y="-136.29137" />
<path
sodipodi:nodetypes="cc"
inkscape:transform-center-y="-130.04771"
id="path6151"
d="m 384.74896,161.83228 5.26158,-14.68942"
style="fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
inkscape:transform-center-x="-47.333495" />
<path
sodipodi:nodetypes="cc"
inkscape:transform-center-x="24.031845"
style="fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 254.46088,148.43969 -2.3856,-12.01112"
id="path6157"
inkscape:transform-center-y="-136.29137" />
<path
sodipodi:nodetypes="cc"
inkscape:transform-center-y="-130.04771"
id="path6159"
d="m 211.939,160.5824 -5.80849,-13.43954"
style="fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
inkscape:transform-center-x="47.333495" />
<path
style="fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="M 120.46531,220.96674 105.09926,205.60069"
id="path6165"
inkscape:transform-center-y="-185.34103"
sodipodi:nodetypes="cc"
inkscape:transform-center-x="188.16432" />
<path
style="fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 475.74748,220.24299 14.96558,-14.96558"
id="path6167"
inkscape:transform-center-y="-188.16431"
sodipodi:nodetypes="cc"
inkscape:transform-center-x="-185.34104" />
id="g7953">
<line
x1="317.60739"
y1="99.385597"
x2="316.13669"
y2="113.64977"
id="line6347"
style="fill:none;stroke:#ffffff;stroke-width:1.25445664" />
</g>
<line
style="fill:none;stroke:#ffffff;stroke-width:1.25445664"
id="line6349"
y2="115.36339"
x2="328.95325"
y1="101.19788"
x1="331.15695" />
<line
style="fill:none;stroke:#ffffff;stroke-width:1.25445664"
id="line6351"
y2="117.75741"
x2="341.66284"
y1="103.72845"
x1="344.59451" />
<line
style="fill:none;stroke:#ffffff;stroke-width:1.25445664"
id="line6353"
y2="120.82294"
x2="354.23303"
y1="106.96854"
x1="357.88144" />
<line
style="fill:none;stroke:#ffffff;stroke-width:1.25445664"
id="line6355"
y2="124.55501"
x2="366.62778"
y1="110.91179"
x1="370.98422" />
<line
style="fill:none;stroke:#ffffff;stroke-width:1.25445664"
id="line6357"
y2="128.93834"
x2="378.81357"
y1="115.54676"
x1="383.86551" />
<line
style="fill:none;stroke:#ffffff;stroke-width:1.25445664"
id="line6359"
y2="133.96536"
x2="390.75656"
y1="120.86217"
x1="396.4917" />
<line
style="fill:none;stroke:#ffffff;stroke-width:1.25445664"
id="line6361"
y2="139.62096"
x2="402.42346"
y1="126.84023"
x1="408.82547" />
<line
style="fill:none;stroke:#ffffff;stroke-width:1.25445664"
id="line6363"
y2="145.88991"
x2="413.78287"
y1="133.46582"
x1="420.83447" />
<line
style="fill:none;stroke:#ffffff;stroke-width:1.25445664"
id="line6365"
y2="152.75328"
x2="424.80521"
y1="140.7225"
x1="432.48764" />
<line
style="fill:none;stroke:#ffffff;stroke-width:1.25445664"
id="line6367"
y2="160.19456"
x2="435.45786"
y1="148.58746"
x1="443.74878" />
<line
style="fill:none;stroke:#ffffff;stroke-width:1.25445664"
id="line6369"
y2="168.19107"
x2="445.71484"
y1="157.04175"
x1="454.59061" />
<line
style="fill:none;stroke:#ffffff;stroke-width:1.25445664"
id="line6371"
y2="176.72374"
x2="455.54376"
y1="166.06134"
x1="464.98325" />
<line
style="fill:none;stroke:#ffffff;stroke-width:1.25445664"
id="line6373"
y2="185.76614"
x2="464.91986"
y1="175.61971"
x1="474.89688" />
<line
style="opacity:0.8;fill:none;stroke:#ffffff;stroke-width:1.25445664"
id="line6375"
y2="195.29539"
x2="473.81931"
y1="185.69405"
x1="484.30408" />
<line
style="opacity:0.6;fill:none;stroke:#ffffff;stroke-width:1.25445664"
id="line6377"
y2="205.28499"
x2="482.21475"
y1="196.25528"
x1="493.17978" />
<line
style="opacity:0.4;fill:none;stroke:#ffffff;stroke-width:1.25445664"
id="line6379"
y2="215.70833"
x2="490.08386"
y1="207.27303"
x1="501.49942" />
<line
style="opacity:0.2;fill:none;stroke:#ffffff;stroke-width:1.25445664"
id="line6381"
y2="226.53519"
x2="497.40677"
y1="218.71956"
x1="509.24033" />
</g>
<rect
y="3.9179461"
x="-229.04851"
height="703.45746"
width="1034.6571"
id="rect4313"
style="fill:none;stroke:none" />
</g>
</g>
<g
inkscape:groupmode="layer"
id="layer8"
inkscape:label="Heading"
style="display:inline"
style="display:none"
transform="translate(230.4171,-2.5493479)"
sodipodi:insensitive="true">
<text
@ -2245,31 +2670,30 @@
style="fill:#1c870b;fill-opacity:1;stroke:#1c870b;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline"
d="m 182.79245,22.132226 20.29336,0.0329 -10.36931,19.468794 -9.92405,-19.501684 z"
id="homewaypoint-bearing"
inkscape:label="#path3779-1" />
inkscape:label="#path3779-1"
inkscape:connector-curvature="0" />
<path
style="fill:#ff251b;fill-opacity:1;stroke:#ff251b;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline"
d="m 347.56915,22.472311 20.29336,0.0329 -10.36931,19.46879 -9.92405,-19.50168 z"
id="nextwaypoint-bearing"
inkscape:label="#path3779-7" />
inkscape:label="#path3779-7"
inkscape:connector-curvature="0" />
<g
id="compass"
inkscape:label="#g6260"
transform="translate(2.6512146,0)">
<g
id="g6264">
inkscape:label="#g4577">
<rect
style="fill:#000000;fill-opacity:0.49411765;stroke:#000000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline"
id="rect6951"
width="431.33514"
height="38.57143"
x="70.710678"
inkscape:label="#rect6951"
y="20.906822"
inkscape:label="#rect6951" />
x="73.361893"
height="38.57143"
width="431.33514"
id="rect6951"
style="fill:#000000;fill-opacity:0.19607843;stroke:#ffffff;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline" />
<path
style="fill:none;stroke:#ff251b;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 286.37825,57.692538 0,-34.999999"
id="path4216" />
</g>
inkscape:connector-curvature="0"
id="path4216"
d="m 289.02946,57.692538 0,-34.999999"
style="fill:#000000;fill-opacity:0.2745098;stroke:#e60000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
</g>
<rect
y="-77.806404"
@ -2286,7 +2710,8 @@
inkscape:label="#path6953"
id="compass-scale"
d="m -456.82877,-24.24489 1493.98137,0"
style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:3.06858087;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" />
style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:3.06858087;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline"
inkscape:connector-curvature="0" />
<g
transform="translate(0.0719,-83.494924)"
id="g4993"
@ -2298,12 +2723,14 @@
<path
id="path3636"
style="font-size:28px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
d="m 280.28409,30.123177 5.7832,0 7.54688,11.08789 0,-11.08789 5.83789,0 0,20.042968 -5.83789,0 -7.50586,-11.005859 0,11.005859 -5.82422,0 z" />
d="m 280.28409,30.123177 5.7832,0 7.54688,11.08789 0,-11.08789 5.83789,0 0,20.042968 -5.83789,0 -7.50586,-11.005859 0,11.005859 -5.82422,0 z"
inkscape:connector-curvature="0" />
</g>
<path
style="fill:#ffffff;fill-opacity:1;stroke:#fff8f8;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 289.86807,59.285714 0,-8.571429"
id="path6986" />
id="path6986"
inkscape:connector-curvature="0" />
</g>
<g
transform="translate(0.11242867,-84)"
@ -2316,13 +2743,15 @@
<path
id="path3642"
style="font-size:28px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
d="m -217.0715,43.535286 5.89258,-0.369141 c 0.12759,0.957038 0.38736,1.686204 0.77929,2.1875 0.63801,0.811202 1.54947,1.216801 2.73438,1.216797 0.8841,4e-6 1.56542,-0.207353 2.04394,-0.62207 0.47851,-0.414709 0.71776,-0.895503 0.71778,-1.442383 -2e-5,-0.519525 -0.22788,-0.984368 -0.6836,-1.394531 -0.45574,-0.410149 -1.51303,-0.797518 -3.17187,-1.16211 -2.71616,-0.610668 -4.653,-1.421865 -5.81055,-2.433593 -1.16667,-1.011707 -1.75,-2.30142 -1.75,-3.869141 0,-1.029932 0.2985,-2.002913 0.89551,-2.918945 0.597,-0.915998 1.49479,-1.636049 2.69336,-2.160156 1.19856,-0.524069 2.84146,-0.786113 4.92871,-0.786133 2.56118,2e-5 4.51398,0.476257 5.8584,1.428711 1.34438,0.952492 2.14418,2.46779 2.39941,4.545898 l -5.83789,0.341797 c -0.15496,-0.902329 -0.48081,-1.558578 -0.97754,-1.96875 -0.49675,-0.41014 -1.18263,-0.615218 -2.05762,-0.615234 -0.72006,1.6e-5 -1.26237,0.152685 -1.62695,0.458007 -0.36459,0.305355 -0.54688,0.676774 -0.54687,1.114258 -1e-5,0.319025 0.15038,0.606134 0.45117,0.861328 0.29166,0.264337 0.98436,0.510431 2.07812,0.738282 2.70702,0.583346 4.64615,1.173514 5.81739,1.770507 1.1712,0.597017 2.02342,1.337576 2.55664,2.22168 0.53318,0.884123 0.79978,1.873055 0.7998,2.966797 -2e-5,1.285161 -0.35549,2.470056 -1.06641,3.554687 -0.71095,1.084638 -1.70444,1.907228 -2.98046,2.467774 -1.27606,0.560547 -2.88478,0.84082 -4.82618,0.84082 -3.40886,0 -5.76953,-0.656249 -7.08203,-1.96875 -1.3125,-1.312497 -2.05534,-2.980464 -2.22851,-5.003906 z" />
d="m -217.0715,43.535286 5.89258,-0.369141 c 0.12759,0.957038 0.38736,1.686204 0.77929,2.1875 0.63801,0.811202 1.54947,1.216801 2.73438,1.216797 0.8841,4e-6 1.56542,-0.207353 2.04394,-0.62207 0.47851,-0.414709 0.71776,-0.895503 0.71778,-1.442383 -2e-5,-0.519525 -0.22788,-0.984368 -0.6836,-1.394531 -0.45574,-0.410149 -1.51303,-0.797518 -3.17187,-1.16211 -2.71616,-0.610668 -4.653,-1.421865 -5.81055,-2.433593 -1.16667,-1.011707 -1.75,-2.30142 -1.75,-3.869141 0,-1.029932 0.2985,-2.002913 0.89551,-2.918945 0.597,-0.915998 1.49479,-1.636049 2.69336,-2.160156 1.19856,-0.524069 2.84146,-0.786113 4.92871,-0.786133 2.56118,2e-5 4.51398,0.476257 5.8584,1.428711 1.34438,0.952492 2.14418,2.46779 2.39941,4.545898 l -5.83789,0.341797 c -0.15496,-0.902329 -0.48081,-1.558578 -0.97754,-1.96875 -0.49675,-0.41014 -1.18263,-0.615218 -2.05762,-0.615234 -0.72006,1.6e-5 -1.26237,0.152685 -1.62695,0.458007 -0.36459,0.305355 -0.54688,0.676774 -0.54687,1.114258 -1e-5,0.319025 0.15038,0.606134 0.45117,0.861328 0.29166,0.264337 0.98436,0.510431 2.07812,0.738282 2.70702,0.583346 4.64615,1.173514 5.81739,1.770507 1.1712,0.597017 2.02342,1.337576 2.55664,2.22168 0.53318,0.884123 0.79978,1.873055 0.7998,2.966797 -2e-5,1.285161 -0.35549,2.470056 -1.06641,3.554687 -0.71095,1.084638 -1.70444,1.907228 -2.98046,2.467774 -1.27606,0.560547 -2.88478,0.84082 -4.82618,0.84082 -3.40886,0 -5.76953,-0.656249 -7.08203,-1.96875 -1.3125,-1.312497 -2.05534,-2.980464 -2.22851,-5.003906 z"
inkscape:connector-curvature="0" />
</g>
<path
id="path6988"
d="m -207.97971,59.79079 0,-9.076505"
style="fill:#ffffff;fill-opacity:1;stroke:#fff8f8;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
sodipodi:nodetypes="cc" />
sodipodi:nodetypes="cc"
inkscape:connector-curvature="0" />
</g>
<g
transform="translate(0.05301285,-83.494924)"
@ -2335,12 +2764,14 @@
<path
id="path3639"
style="font-size:28px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
d="m 778.62402,43.535286 5.89258,-0.369141 c 0.1276,0.957038 0.38736,1.686204 0.7793,2.1875 0.63801,0.811202 1.54947,1.216801 2.73437,1.216797 0.88411,4e-6 1.56542,-0.207353 2.04395,-0.62207 0.4785,-0.414709 0.71776,-0.895503 0.71777,-1.442383 -1e-5,-0.519525 -0.22788,-0.984368 -0.68359,-1.394531 -0.45574,-0.410149 -1.51303,-0.797518 -3.17188,-1.16211 -2.71615,-0.610668 -4.653,-1.421865 -5.81054,-2.433593 -1.16667,-1.011707 -1.75001,-2.30142 -1.75,-3.869141 -10e-6,-1.029932 0.2985,-2.002913 0.8955,-2.918945 0.59701,-0.915998 1.49479,-1.636049 2.69336,-2.160156 1.19856,-0.524069 2.84147,-0.786113 4.92871,-0.786133 2.56119,2e-5 4.51399,0.476257 5.8584,1.428711 1.34439,0.952492 2.14419,2.46779 2.39942,4.545898 l -5.83789,0.341797 c -0.15496,-0.902329 -0.48081,-1.558578 -0.97754,-1.96875 -0.49676,-0.41014 -1.18263,-0.615218 -2.05762,-0.615234 -0.72006,1.6e-5 -1.26238,0.152685 -1.62695,0.458007 -0.36459,0.305355 -0.54689,0.676774 -0.54688,1.114258 -1e-5,0.319025 0.15039,0.606134 0.45117,0.861328 0.29166,0.264337 0.98437,0.510431 2.07813,0.738282 2.70702,0.583346 4.64614,1.173514 5.81738,1.770507 1.17121,0.597017 2.02342,1.337576 2.55664,2.22168 0.53319,0.884123 0.79979,1.873055 0.79981,2.966797 -2e-5,1.285161 -0.35549,2.470056 -1.06641,3.554687 -0.71095,1.084638 -1.70444,1.907228 -2.98047,2.467774 -1.27605,0.560547 -2.88478,0.84082 -4.82617,0.84082 -3.40886,0 -5.76954,-0.656249 -7.08203,-1.96875 -1.3125,-1.312497 -2.05534,-2.980464 -2.22852,-5.003906 z" />
d="m 778.62402,43.535286 5.89258,-0.369141 c 0.1276,0.957038 0.38736,1.686204 0.7793,2.1875 0.63801,0.811202 1.54947,1.216801 2.73437,1.216797 0.88411,4e-6 1.56542,-0.207353 2.04395,-0.62207 0.4785,-0.414709 0.71776,-0.895503 0.71777,-1.442383 -1e-5,-0.519525 -0.22788,-0.984368 -0.68359,-1.394531 -0.45574,-0.410149 -1.51303,-0.797518 -3.17188,-1.16211 -2.71615,-0.610668 -4.653,-1.421865 -5.81054,-2.433593 -1.16667,-1.011707 -1.75001,-2.30142 -1.75,-3.869141 -10e-6,-1.029932 0.2985,-2.002913 0.8955,-2.918945 0.59701,-0.915998 1.49479,-1.636049 2.69336,-2.160156 1.19856,-0.524069 2.84147,-0.786113 4.92871,-0.786133 2.56119,2e-5 4.51399,0.476257 5.8584,1.428711 1.34439,0.952492 2.14419,2.46779 2.39942,4.545898 l -5.83789,0.341797 c -0.15496,-0.902329 -0.48081,-1.558578 -0.97754,-1.96875 -0.49676,-0.41014 -1.18263,-0.615218 -2.05762,-0.615234 -0.72006,1.6e-5 -1.26238,0.152685 -1.62695,0.458007 -0.36459,0.305355 -0.54689,0.676774 -0.54688,1.114258 -1e-5,0.319025 0.15039,0.606134 0.45117,0.861328 0.29166,0.264337 0.98437,0.510431 2.07813,0.738282 2.70702,0.583346 4.64614,1.173514 5.81738,1.770507 1.17121,0.597017 2.02342,1.337576 2.55664,2.22168 0.53319,0.884123 0.79979,1.873055 0.79981,2.966797 -2e-5,1.285161 -0.35549,2.470056 -1.06641,3.554687 -0.71095,1.084638 -1.70444,1.907228 -2.98047,2.467774 -1.27605,0.560547 -2.88478,0.84082 -4.82617,0.84082 -3.40886,0 -5.76954,-0.656249 -7.08203,-1.96875 -1.3125,-1.312497 -2.05534,-2.980464 -2.22852,-5.003906 z"
inkscape:connector-curvature="0" />
</g>
<path
id="path6990"
d="m 787.71582,59.285714 0,-8.571429"
style="fill:#ffffff;fill-opacity:1;stroke:#fff8f8;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
style="fill:#ffffff;fill-opacity:1;stroke:#fff8f8;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
inkscape:connector-curvature="0" />
</g>
<g
transform="translate(0.09755707,-83.494924)"
@ -2353,12 +2784,14 @@
<path
id="path3645"
style="font-size:28px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
d="m 26.930511,30.123177 5.878907,0 2.11914,11.197265 3.089844,-11.197265 5.865234,0 3.103516,11.197265 2.119141,-11.197265 5.851562,0 -4.416015,20.042968 -6.070313,0 -3.513672,-12.61914 -3.5,12.61914 -6.070312,0 z" />
d="m 26.930511,30.123177 5.878907,0 2.11914,11.197265 3.089844,-11.197265 5.865234,0 3.103516,11.197265 2.119141,-11.197265 5.851562,0 -4.416015,20.042968 -6.070313,0 -3.513672,-12.61914 -3.5,12.61914 -6.070312,0 z"
inkscape:connector-curvature="0" />
</g>
<path
id="path6992"
d="m 40.944183,59.285714 0,-8.571429"
style="fill:#ffffff;fill-opacity:1;stroke:#fff8f8;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
style="fill:#ffffff;fill-opacity:1;stroke:#fff8f8;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
inkscape:connector-curvature="0" />
</g>
<g
transform="translate(0.06781006,-83.494924)"
@ -2371,12 +2804,14 @@
<path
id="path3648"
style="font-size:28px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
d="m 530.34277,30.123177 16.59766,0 0,4.279296 -10.39063,0 0,3.185547 9.63868,0 0,4.087891 -9.63868,0 0,3.951172 10.69141,0 0,4.539062 -16.89844,0 z" />
d="m 530.34277,30.123177 16.59766,0 0,4.279296 -10.39063,0 0,3.185547 9.63868,0 0,4.087891 -9.63868,0 0,3.951172 10.69141,0 0,4.539062 -16.89844,0 z"
inkscape:connector-curvature="0" />
</g>
<path
id="path6994"
d="m 538.79199,59.285714 0,-8.571429"
style="fill:#ffffff;fill-opacity:1;stroke:#fff8f8;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
style="fill:#ffffff;fill-opacity:1;stroke:#fff8f8;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
inkscape:connector-curvature="0" />
</g>
<g
transform="translate(-0.76619339,-83.494924)"
@ -2385,18 +2820,21 @@
<path
style="fill:#ffffff;fill-opacity:1;stroke:#fff8f8;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 346.03012,59.285714 0,-8.571429"
id="path3048" />
id="path3048"
inkscape:connector-curvature="0" />
<g
style="font-size:40px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;display:inline;font-family:Bitstream Vera Sans"
id="text3062">
<path
d="m 345.65903,49.571434 -5.9668,0 c 0.0684,-0.589192 0.27588,-1.143391 0.62256,-1.662598 0.34668,-0.519203 0.9969,-1.131996 1.95068,-1.838379 0.58268,-0.432938 0.9554,-0.761714 1.11817,-0.986328 0.16275,-0.224604 0.24413,-0.43782 0.24414,-0.639648 -10e-6,-0.218094 -0.0806,-0.404454 -0.2417,-0.559082 -0.16114,-0.154617 -0.36378,-0.231928 -0.60791,-0.231934 -0.25391,6e-6 -0.46143,0.07976 -0.62256,0.239258 -0.16114,0.159511 -0.26937,0.441086 -0.32471,0.844727 l -1.99219,-0.161133 c 0.0781,-0.55989 0.22136,-0.996902 0.42969,-1.311035 0.20833,-0.314121 0.50212,-0.555006 0.88135,-0.722657 0.37923,-0.167636 0.90413,-0.251457 1.57471,-0.251464 0.69986,7e-6 1.2443,0.07976 1.6333,0.239257 0.38899,0.159512 0.69498,0.404467 0.91797,0.734864 0.22297,0.330409 0.33446,0.700689 0.33447,1.11084 -1e-5,0.436202 -0.12777,0.852868 -0.3833,1.25 -0.25554,0.397138 -0.72022,0.833336 -1.39404,1.308593 -0.4004,0.276695 -0.66814,0.47038 -0.80323,0.581055 -0.13509,0.110679 -0.29378,0.255536 -0.47607,0.43457 l 3.10547,0 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3651" />
id="path3651"
inkscape:connector-curvature="0" />
<path
d="m 346.5184,45.963036 c 0,-1.360673 0.24496,-2.31282 0.73487,-2.856446 0.4899,-0.543613 1.23616,-0.815422 2.23876,-0.815429 0.48177,7e-6 0.87728,0.05941 1.18653,0.178222 0.30924,0.118822 0.56152,0.273445 0.75683,0.463867 0.19531,0.190437 0.34912,0.390632 0.46143,0.600586 0.1123,0.209967 0.20263,0.454921 0.271,0.734864 0.13345,0.533859 0.20019,1.090499 0.20019,1.669922 0,1.29883 -0.21973,2.24935 -0.65918,2.851562 -0.43946,0.602214 -1.19629,0.90332 -2.27051,0.90332 -0.60221,0 -1.08887,-0.09603 -1.45996,-0.288086 -0.37109,-0.192057 -0.67545,-0.473632 -0.91308,-0.844726 -0.17253,-0.263671 -0.30681,-0.624185 -0.40283,-1.081543 -0.096,-0.457354 -0.14405,-0.962725 -0.14405,-1.516113 z m 1.97266,0.0049 c 0,0.911461 0.0806,1.534019 0.2417,1.867676 0.16113,0.33366 0.39469,0.50049 0.70068,0.500488 0.20182,2e-6 0.37679,-0.0708 0.5249,-0.212402 0.14811,-0.1416 0.25716,-0.365395 0.32715,-0.671387 0.07,-0.305987 0.10498,-0.782874 0.10498,-1.430664 0,-0.950516 -0.0806,-1.58935 -0.2417,-1.916504 -0.16113,-0.327142 -0.40283,-0.490716 -0.72509,-0.490722 -0.32878,6e-6 -0.56641,0.166835 -0.7129,0.500488 -0.14648,0.333664 -0.21972,0.951339 -0.21972,1.853027 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3653" />
id="path3653"
inkscape:connector-curvature="0" />
</g>
</g>
<g
@ -2406,18 +2844,21 @@
<path
id="path3046"
d="m 316.306,59.285714 0,-8.571429"
style="fill:#ffffff;fill-opacity:1;stroke:#fff8f8;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
style="fill:#ffffff;fill-opacity:1;stroke:#fff8f8;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
inkscape:connector-curvature="0" />
<g
style="font-size:40px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;display:inline;font-family:Bitstream Vera Sans"
id="text3860">
<path
d="m 314.34555,42.291161 0,7.280273 -2.01172,0 0,-4.770508 c -0.32552,0.247401 -0.64046,0.447596 -0.94482,0.600586 -0.30437,0.152999 -0.68604,0.299483 -1.14502,0.439453 l 0,-1.630859 c 0.67708,-0.218093 1.2028,-0.480137 1.57715,-0.786133 0.37434,-0.305983 0.66731,-0.683587 0.8789,-1.132812 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3656" />
id="path3656"
inkscape:connector-curvature="0" />
<path
d="m 316.5184,45.963036 c 0,-1.360673 0.24496,-2.31282 0.73487,-2.856446 0.4899,-0.543613 1.23616,-0.815422 2.23876,-0.815429 0.48177,7e-6 0.87728,0.05941 1.18653,0.178222 0.30924,0.118822 0.56152,0.273445 0.75683,0.463867 0.19531,0.190437 0.34912,0.390632 0.46143,0.600586 0.1123,0.209967 0.20263,0.454921 0.271,0.734864 0.13345,0.533859 0.20019,1.090499 0.20019,1.669922 0,1.29883 -0.21973,2.24935 -0.65918,2.851562 -0.43946,0.602214 -1.19629,0.90332 -2.27051,0.90332 -0.60221,0 -1.08887,-0.09603 -1.45996,-0.288086 -0.37109,-0.192057 -0.67545,-0.473632 -0.91308,-0.844726 -0.17253,-0.263671 -0.30681,-0.624185 -0.40283,-1.081543 -0.096,-0.457354 -0.14405,-0.962725 -0.14405,-1.516113 z m 1.97266,0.0049 c 0,0.911461 0.0806,1.534019 0.2417,1.867676 0.16113,0.33366 0.39469,0.50049 0.70068,0.500488 0.20182,2e-6 0.37679,-0.0708 0.5249,-0.212402 0.14811,-0.1416 0.25716,-0.365395 0.32715,-0.671387 0.07,-0.305987 0.10498,-0.782874 0.10498,-1.430664 0,-0.950516 -0.0806,-1.58935 -0.2417,-1.916504 -0.16113,-0.327142 -0.40283,-0.490716 -0.72509,-0.490722 -0.32878,6e-6 -0.56641,0.166835 -0.7129,0.500488 -0.14648,0.333664 -0.21972,0.951339 -0.21972,1.853027 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3658" />
id="path3658"
inkscape:connector-curvature="0" />
</g>
</g>
<g
@ -2427,18 +2868,21 @@
<path
id="path3050"
d="m 372.07407,59.285714 0,-8.571429"
style="fill:#ffffff;fill-opacity:1;stroke:#fff8f8;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
style="fill:#ffffff;fill-opacity:1;stroke:#fff8f8;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
inkscape:connector-curvature="0" />
<g
style="font-size:40px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;display:inline;font-family:Bitstream Vera Sans"
id="text3864">
<path
d="m 367.76743,44.483543 -1.87989,-0.336914 c 0.15625,-0.598952 0.45654,-1.057936 0.90088,-1.376953 0.44434,-0.319003 1.0734,-0.478508 1.88721,-0.478515 0.93424,7e-6 1.60969,0.17416 2.02637,0.522461 0.41666,0.348313 0.62499,0.786138 0.625,1.313476 -10e-6,0.30925 -0.0847,0.589198 -0.25391,0.839844 -0.16928,0.250655 -0.42481,0.470382 -0.7666,0.65918 0.27669,0.06836 0.48827,0.148115 0.63476,0.239257 0.23763,0.146488 0.42236,0.339359 0.5542,0.578614 0.13183,0.23926 0.19775,0.524905 0.19776,0.856933 -1e-5,0.416669 -0.10906,0.816245 -0.32715,1.198731 -0.21811,0.382487 -0.53223,0.677083 -0.94238,0.883789 -0.41017,0.206705 -0.9489,0.310058 -1.61622,0.310058 -0.65104,0 -1.16455,-0.0765 -1.54052,-0.229492 -0.37598,-0.152994 -0.68523,-0.37679 -0.92774,-0.671387 -0.24251,-0.294595 -0.42887,-0.664874 -0.55908,-1.110839 l 1.98731,-0.263672 c 0.0781,0.400392 0.19937,0.677898 0.36377,0.832519 0.16438,0.154624 0.37353,0.231935 0.62744,0.231934 0.26692,10e-7 0.48909,-0.09766 0.6665,-0.292969 0.17741,-0.195311 0.26611,-0.455727 0.26611,-0.78125 0,-0.332029 -0.0855,-0.58919 -0.25634,-0.771484 -0.17091,-0.182289 -0.40284,-0.273435 -0.6958,-0.273438 -0.15626,3e-6 -0.3711,0.03907 -0.64454,0.117188 l 0.10254,-1.420899 c 0.11068,0.01628 0.19694,0.02442 0.25879,0.02441 0.26042,5e-6 0.4777,-0.083 0.65186,-0.249023 0.17415,-0.166011 0.26122,-0.362951 0.26123,-0.59082 -10e-6,-0.218094 -0.0651,-0.392247 -0.19531,-0.522461 -0.13022,-0.130203 -0.30925,-0.195307 -0.53711,-0.195313 -0.23438,6e-6 -0.42481,0.07081 -0.57129,0.212402 -0.14649,0.141608 -0.24577,0.389817 -0.29785,0.744629 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3661" />
id="path3661"
inkscape:connector-curvature="0" />
<path
d="m 372.5184,45.963036 c 0,-1.360673 0.24496,-2.31282 0.73487,-2.856446 0.4899,-0.543613 1.23616,-0.815422 2.23876,-0.815429 0.48177,7e-6 0.87728,0.05941 1.18653,0.178222 0.30924,0.118822 0.56152,0.273445 0.75683,0.463867 0.19531,0.190437 0.34912,0.390632 0.46143,0.600586 0.1123,0.209967 0.20263,0.454921 0.271,0.734864 0.13345,0.533859 0.20019,1.090499 0.20019,1.669922 0,1.29883 -0.21973,2.24935 -0.65918,2.851562 -0.43946,0.602214 -1.19629,0.90332 -2.27051,0.90332 -0.60221,0 -1.08887,-0.09603 -1.45996,-0.288086 -0.37109,-0.192057 -0.67545,-0.473632 -0.91308,-0.844726 -0.17253,-0.263671 -0.30681,-0.624185 -0.40283,-1.081543 -0.096,-0.457354 -0.14405,-0.962725 -0.14405,-1.516113 z m 1.97266,0.0049 c 0,0.911461 0.0806,1.534019 0.2417,1.867676 0.16113,0.33366 0.39469,0.50049 0.70068,0.500488 0.20182,2e-6 0.37679,-0.0708 0.5249,-0.212402 0.14811,-0.1416 0.25716,-0.365395 0.32715,-0.671387 0.07,-0.305987 0.10498,-0.782874 0.10498,-1.430664 0,-0.950516 -0.0806,-1.58935 -0.2417,-1.916504 -0.16113,-0.327142 -0.40283,-0.490716 -0.72509,-0.490722 -0.32878,6e-6 -0.56641,0.166835 -0.7129,0.500488 -0.14648,0.333664 -0.21972,0.951339 -0.21972,1.853027 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3663" />
id="path3663"
inkscape:connector-curvature="0" />
</g>
</g>
<g
@ -2448,18 +2892,21 @@
<path
style="fill:#ffffff;fill-opacity:1;stroke:#fff8f8;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 454.10825,59.285714 0,-8.571429"
id="path3056" />
id="path3056"
inkscape:connector-curvature="0" />
<g
style="font-size:40px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;display:inline;font-family:Bitstream Vera Sans"
id="text3872">
<path
d="m 453.59555,44.024559 -1.97754,0.244141 c -0.0521,-0.276687 -0.13916,-0.472 -0.26123,-0.585938 -0.12207,-0.113926 -0.27263,-0.170892 -0.45166,-0.170898 -0.32227,6e-6 -0.57292,0.162766 -0.75195,0.488281 -0.13021,0.23438 -0.22624,0.735682 -0.28809,1.503906 0.23763,-0.240881 0.48177,-0.419103 0.73242,-0.534668 0.25065,-0.115555 0.54036,-0.173335 0.86914,-0.17334 0.63802,5e-6 1.17757,0.22787 1.61866,0.683594 0.44107,0.455733 0.66161,1.033532 0.66162,1.733399 -10e-6,0.472007 -0.1115,0.903321 -0.33447,1.293945 -0.22299,0.390626 -0.53224,0.686035 -0.92774,0.88623 -0.39551,0.200196 -0.89112,0.300293 -1.48682,0.300293 -0.71614,0 -1.29069,-0.12207 -1.72363,-0.366211 -0.43294,-0.24414 -0.77881,-0.633951 -1.0376,-1.169433 -0.25879,-0.53548 -0.38818,-1.244301 -0.38818,-2.126465 0,-1.292313 0.27181,-2.238764 0.81543,-2.839356 0.54362,-0.600578 1.2972,-0.900871 2.26074,-0.900878 0.56966,7e-6 1.01969,0.06593 1.3501,0.197753 0.3304,0.131843 0.60465,0.324714 0.82275,0.578614 0.2181,0.253912 0.38411,0.572922 0.49805,0.957031 z m -3.66211,3.188477 c 0,0.387371 0.0976,0.690919 0.29297,0.910644 0.19531,0.219728 0.43457,0.329591 0.71777,0.32959 0.26042,10e-7 0.47851,-0.09928 0.6543,-0.297852 0.17578,-0.198566 0.26367,-0.494789 0.26367,-0.888671 0,-0.403644 -0.0911,-0.71126 -0.27344,-0.922852 -0.18229,-0.211585 -0.40853,-0.317379 -0.67871,-0.317383 -0.27669,4e-6 -0.50863,0.102543 -0.6958,0.307617 -0.18717,0.205081 -0.28076,0.49805 -0.28076,0.878907 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3666" />
id="path3666"
inkscape:connector-curvature="0" />
<path
d="m 454.5184,45.963036 c 0,-1.360673 0.24496,-2.31282 0.73487,-2.856446 0.4899,-0.543613 1.23616,-0.815422 2.23876,-0.815429 0.48177,7e-6 0.87728,0.05941 1.18653,0.178222 0.30924,0.118822 0.56152,0.273445 0.75683,0.463867 0.19531,0.190437 0.34912,0.390632 0.46143,0.600586 0.1123,0.209967 0.20263,0.454921 0.271,0.734864 0.13345,0.533859 0.20019,1.090499 0.20019,1.669922 0,1.29883 -0.21973,2.24935 -0.65918,2.851562 -0.43946,0.602214 -1.19629,0.90332 -2.27051,0.90332 -0.60221,0 -1.08887,-0.09603 -1.45996,-0.288086 -0.37109,-0.192057 -0.67545,-0.473632 -0.91308,-0.844726 -0.17253,-0.263671 -0.30681,-0.624185 -0.40283,-1.081543 -0.096,-0.457354 -0.14405,-0.962725 -0.14405,-1.516113 z m 1.97266,0.0049 c 0,0.911461 0.0806,1.534019 0.2417,1.867676 0.16113,0.33366 0.39469,0.50049 0.70068,0.500488 0.20182,2e-6 0.37679,-0.0708 0.5249,-0.212402 0.14811,-0.1416 0.25716,-0.365395 0.32715,-0.671387 0.07,-0.305987 0.10498,-0.782874 0.10498,-1.430664 0,-0.950516 -0.0806,-1.58935 -0.2417,-1.916504 -0.16113,-0.327142 -0.40283,-0.490716 -0.72509,-0.490722 -0.32878,6e-6 -0.56641,0.166835 -0.7129,0.500488 -0.14648,0.333664 -0.21972,0.951339 -0.21972,1.853027 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3668" />
id="path3668"
inkscape:connector-curvature="0" />
</g>
</g>
<g
@ -2469,18 +2916,21 @@
<path
id="path3058"
d="m 484.12045,59.285714 0,-8.571429"
style="fill:#ffffff;fill-opacity:1;stroke:#fff8f8;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
style="fill:#ffffff;fill-opacity:1;stroke:#fff8f8;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
inkscape:connector-curvature="0" />
<g
style="font-size:40px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;display:inline;font-family:Bitstream Vera Sans"
id="text3876">
<path
d="m 477.87289,42.413231 5.80567,0 0,1.342773 c -0.50456,0.455735 -0.92611,0.948898 -1.26465,1.479493 -0.41016,0.644534 -0.73405,1.362307 -0.97168,2.15332 -0.18881,0.615236 -0.31576,1.342774 -0.38086,2.182617 l -1.98242,0 c 0.15625,-1.168619 0.40202,-2.148435 0.7373,-2.939453 0.33529,-0.791012 0.86589,-1.637365 1.5918,-2.539063 l -3.53516,0 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3671" />
id="path3671"
inkscape:connector-curvature="0" />
<path
d="m 484.5184,45.963036 c 0,-1.360673 0.24496,-2.31282 0.73487,-2.856446 0.4899,-0.543613 1.23616,-0.815422 2.23876,-0.815429 0.48177,7e-6 0.87728,0.05941 1.18653,0.178222 0.30924,0.118822 0.56152,0.273445 0.75683,0.463867 0.19531,0.190437 0.34912,0.390632 0.46143,0.600586 0.1123,0.209967 0.20263,0.454921 0.271,0.734864 0.13345,0.533859 0.20019,1.090499 0.20019,1.669922 0,1.29883 -0.21973,2.24935 -0.65918,2.851562 -0.43946,0.602214 -1.19629,0.90332 -2.27051,0.90332 -0.60221,0 -1.08887,-0.09603 -1.45996,-0.288086 -0.37109,-0.192057 -0.67545,-0.473632 -0.91308,-0.844726 -0.17253,-0.263671 -0.30681,-0.624185 -0.40283,-1.081543 -0.096,-0.457354 -0.14405,-0.962725 -0.14405,-1.516113 z m 1.97266,0.0049 c 0,0.911461 0.0806,1.534019 0.2417,1.867676 0.16113,0.33366 0.39469,0.50049 0.70068,0.500488 0.20182,2e-6 0.37679,-0.0708 0.5249,-0.212402 0.14811,-0.1416 0.25716,-0.365395 0.32715,-0.671387 0.07,-0.305987 0.10498,-0.782874 0.10498,-1.430664 0,-0.950516 -0.0806,-1.58935 -0.2417,-1.916504 -0.16113,-0.327142 -0.40283,-0.490716 -0.72509,-0.490722 -0.32878,6e-6 -0.56641,0.166835 -0.7129,0.500488 -0.14648,0.333664 -0.21972,0.951339 -0.21972,1.853027 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3673" />
id="path3673"
inkscape:connector-curvature="0" />
</g>
</g>
<g
@ -2490,18 +2940,21 @@
<path
style="fill:#ffffff;fill-opacity:1;stroke:#fff8f8;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 512.10336,59.285714 0,-8.571429"
id="path3060" />
id="path3060"
inkscape:connector-curvature="0" />
<g
style="font-size:40px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;display:inline;font-family:Bitstream Vera Sans"
id="text3880">
<path
d="m 507.035,45.723778 c -0.3125,-0.166012 -0.54036,-0.351559 -0.68359,-0.556641 -0.19531,-0.279943 -0.29297,-0.602208 -0.29297,-0.966797 0,-0.598952 0.28158,-1.08886 0.84473,-1.469726 0.43945,-0.292962 1.0205,-0.439446 1.74316,-0.439453 0.95703,7e-6 1.66422,0.182298 2.12158,0.546875 0.45735,0.364589 0.68603,0.823573 0.68604,1.376953 -1e-5,0.32227 -0.0912,0.623377 -0.27344,0.90332 -0.13672,0.208338 -0.35157,0.41016 -0.64453,0.605469 0.38736,0.18555 0.67626,0.431318 0.8667,0.737304 0.19042,0.305993 0.28564,0.644534 0.28564,1.015625 0,0.358075 -0.0822,0.692547 -0.24658,1.003418 -0.16439,0.310874 -0.36621,0.550945 -0.60547,0.720215 -0.23926,0.169271 -0.53711,0.293783 -0.89355,0.373535 -0.35645,0.07975 -0.7365,0.119629 -1.14014,0.119629 -0.75846,0 -1.33789,-0.08952 -1.73828,-0.268554 -0.40039,-0.179036 -0.70475,-0.442708 -0.91309,-0.791016 -0.20833,-0.348306 -0.3125,-0.737303 -0.3125,-1.166992 0,-0.41992 0.0977,-0.775551 0.29297,-1.066895 0.19531,-0.291337 0.49642,-0.51676 0.90332,-0.676269 z m 0.89356,-1.40625 c 0,0.247401 0.0773,0.446782 0.23193,0.598144 0.15462,0.151372 0.36051,0.227056 0.61768,0.227051 0.22786,5e-6 0.41503,-0.07486 0.56152,-0.224609 0.14648,-0.149735 0.21972,-0.34342 0.21973,-0.581055 -10e-6,-0.24739 -0.0765,-0.448399 -0.22949,-0.603027 -0.153,-0.154617 -0.34832,-0.231928 -0.58594,-0.231934 -0.24089,6e-6 -0.43702,0.07569 -0.58838,0.227051 -0.15137,0.151373 -0.22705,0.347499 -0.22705,0.588379 z m -0.10742,3.081054 c -1e-5,0.315758 0.096,0.573733 0.28808,0.773926 0.19206,0.200197 0.41178,0.300294 0.65918,0.300293 0.23763,1e-6 0.45084,-0.101724 0.63965,-0.305176 0.1888,-0.203448 0.2832,-0.461423 0.2832,-0.773925 0,-0.315753 -0.0952,-0.574542 -0.28564,-0.776368 -0.19043,-0.201819 -0.41097,-0.302731 -0.66162,-0.302734 -0.2474,3e-6 -0.46306,0.09766 -0.64697,0.292969 -0.18393,0.195315 -0.27589,0.458987 -0.27588,0.791015 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3676" />
id="path3676"
inkscape:connector-curvature="0" />
<path
d="m 512.5184,45.963036 c 0,-1.360673 0.24496,-2.31282 0.73487,-2.856446 0.4899,-0.543613 1.23616,-0.815422 2.23876,-0.815429 0.48177,7e-6 0.87728,0.05941 1.18653,0.178222 0.30924,0.118822 0.56152,0.273445 0.75683,0.463867 0.19531,0.190437 0.34912,0.390632 0.46143,0.600586 0.1123,0.209967 0.20263,0.454921 0.271,0.734864 0.13345,0.533859 0.20019,1.090499 0.20019,1.669922 0,1.29883 -0.21973,2.24935 -0.65918,2.851562 -0.43946,0.602214 -1.19629,0.90332 -2.27051,0.90332 -0.60221,0 -1.08887,-0.09603 -1.45996,-0.288086 -0.37109,-0.192057 -0.67545,-0.473632 -0.91308,-0.844726 -0.17253,-0.263671 -0.30681,-0.624185 -0.40283,-1.081543 -0.096,-0.457354 -0.14405,-0.962725 -0.14405,-1.516113 z m 1.97266,0.0049 c 0,0.911461 0.0806,1.534019 0.2417,1.867676 0.16113,0.33366 0.39469,0.50049 0.70068,0.500488 0.20182,2e-6 0.37679,-0.0708 0.5249,-0.212402 0.14811,-0.1416 0.25716,-0.365395 0.32715,-0.671387 0.07,-0.305987 0.10498,-0.782874 0.10498,-1.430664 0,-0.950516 -0.0806,-1.58935 -0.2417,-1.916504 -0.16113,-0.327142 -0.40283,-0.490716 -0.72509,-0.490722 -0.32878,6e-6 -0.56641,0.166835 -0.7129,0.500488 -0.14648,0.333664 -0.21972,0.951339 -0.21972,1.853027 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3678" />
id="path3678"
inkscape:connector-curvature="0" />
</g>
</g>
<g
@ -2511,22 +2964,26 @@
<path
id="path3916"
d="m 568.45258,59.285714 0,-8.571429"
style="fill:#ffffff;fill-opacity:1;stroke:#fff8f8;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
style="fill:#ffffff;fill-opacity:1;stroke:#fff8f8;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
inkscape:connector-curvature="0" />
<g
style="font-size:40px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;display:inline;font-family:Bitstream Vera Sans"
id="text3918">
<path
d="m 563.15228,42.291161 0,7.280273 -2.01172,0 0,-4.770508 c -0.32552,0.247401 -0.64046,0.447596 -0.94482,0.600586 -0.30436,0.152999 -0.68604,0.299483 -1.14502,0.439453 l 0,-1.630859 c 0.67708,-0.218093 1.2028,-0.480137 1.57715,-0.786133 0.37434,-0.305983 0.66731,-0.683587 0.8789,-1.132812 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3681" />
id="path3681"
inkscape:connector-curvature="0" />
<path
d="m 565.32513,45.963036 c 0,-1.360673 0.24496,-2.31282 0.73487,-2.856446 0.4899,-0.543613 1.23616,-0.815422 2.23877,-0.815429 0.48176,7e-6 0.87727,0.05941 1.18652,0.178222 0.30924,0.118822 0.56152,0.273445 0.75684,0.463867 0.1953,0.190437 0.34911,0.390632 0.46142,0.600586 0.1123,0.209967 0.20263,0.454921 0.271,0.734864 0.13346,0.533859 0.20019,1.090499 0.20019,1.669922 0,1.29883 -0.21973,2.24935 -0.65918,2.851562 -0.43945,0.602214 -1.19629,0.90332 -2.2705,0.90332 -0.60222,0 -1.08887,-0.09603 -1.45996,-0.288086 -0.3711,-0.192057 -0.67546,-0.473632 -0.91309,-0.844726 -0.17253,-0.263671 -0.3068,-0.624185 -0.40283,-1.081543 -0.096,-0.457354 -0.14405,-0.962725 -0.14405,-1.516113 z m 1.97266,0.0049 c 0,0.911461 0.0806,1.534019 0.2417,1.867676 0.16113,0.33366 0.39469,0.50049 0.70068,0.500488 0.20182,2e-6 0.37679,-0.0708 0.52491,-0.212402 0.1481,-0.1416 0.25715,-0.365395 0.32714,-0.671387 0.07,-0.305987 0.10498,-0.782874 0.10498,-1.430664 0,-0.950516 -0.0806,-1.58935 -0.24169,-1.916504 -0.16114,-0.327142 -0.40284,-0.490716 -0.7251,-0.490722 -0.32878,6e-6 -0.56641,0.166835 -0.71289,0.500488 -0.14649,0.333664 -0.21973,0.951339 -0.21973,1.853027 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3683" />
id="path3683"
inkscape:connector-curvature="0" />
<path
d="m 572.00482,45.963036 c 0,-1.360673 0.24496,-2.31282 0.73487,-2.856446 0.4899,-0.543613 1.23616,-0.815422 2.23876,-0.815429 0.48177,7e-6 0.87728,0.05941 1.18653,0.178222 0.30924,0.118822 0.56152,0.273445 0.75683,0.463867 0.19531,0.190437 0.34912,0.390632 0.46143,0.600586 0.1123,0.209967 0.20263,0.454921 0.271,0.734864 0.13345,0.533859 0.20018,1.090499 0.20019,1.669922 -10e-6,1.29883 -0.21973,2.24935 -0.65918,2.851562 -0.43946,0.602214 -1.19629,0.90332 -2.27051,0.90332 -0.60221,0 -1.08887,-0.09603 -1.45996,-0.288086 -0.37109,-0.192057 -0.67545,-0.473632 -0.91308,-0.844726 -0.17253,-0.263671 -0.30681,-0.624185 -0.40284,-1.081543 -0.096,-0.457354 -0.14404,-0.962725 -0.14404,-1.516113 z m 1.97266,0.0049 c 0,0.911461 0.0806,1.534019 0.2417,1.867676 0.16113,0.33366 0.39469,0.50049 0.70068,0.500488 0.20182,2e-6 0.37679,-0.0708 0.5249,-0.212402 0.14811,-0.1416 0.25716,-0.365395 0.32715,-0.671387 0.07,-0.305987 0.10498,-0.782874 0.10498,-1.430664 0,-0.950516 -0.0806,-1.58935 -0.2417,-1.916504 -0.16113,-0.327142 -0.40283,-0.490716 -0.72509,-0.490722 -0.32878,6e-6 -0.56641,0.166835 -0.7129,0.500488 -0.14648,0.333664 -0.21972,0.951339 -0.21972,1.853027 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3685" />
id="path3685"
inkscape:connector-curvature="0" />
</g>
</g>
<g
@ -2536,22 +2993,26 @@
<path
style="fill:#ffffff;fill-opacity:1;stroke:#fff8f8;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 600.45258,59.285714 0,-8.571429"
id="path3924" />
id="path3924"
inkscape:connector-curvature="0" />
<g
style="font-size:40px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;display:inline;font-family:Bitstream Vera Sans"
id="text3926">
<path
d="m 595.15228,42.291161 0,7.280273 -2.01172,0 0,-4.770508 c -0.32552,0.247401 -0.64046,0.447596 -0.94482,0.600586 -0.30436,0.152999 -0.68604,0.299483 -1.14502,0.439453 l 0,-1.630859 c 0.67708,-0.218093 1.2028,-0.480137 1.57715,-0.786133 0.37434,-0.305983 0.66731,-0.683587 0.8789,-1.132812 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3688" />
id="path3688"
inkscape:connector-curvature="0" />
<path
d="m 601.83197,42.291161 0,7.280273 -2.01172,0 0,-4.770508 c -0.32552,0.247401 -0.64046,0.447596 -0.94482,0.600586 -0.30437,0.152999 -0.68604,0.299483 -1.14502,0.439453 l 0,-1.630859 c 0.67708,-0.218093 1.2028,-0.480137 1.57715,-0.786133 0.37434,-0.305983 0.66731,-0.683587 0.8789,-1.132812 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3690" />
id="path3690"
inkscape:connector-curvature="0" />
<path
d="m 604.00482,45.963036 c 0,-1.360673 0.24496,-2.31282 0.73487,-2.856446 0.4899,-0.543613 1.23616,-0.815422 2.23876,-0.815429 0.48177,7e-6 0.87728,0.05941 1.18653,0.178222 0.30924,0.118822 0.56152,0.273445 0.75683,0.463867 0.19531,0.190437 0.34912,0.390632 0.46143,0.600586 0.1123,0.209967 0.20263,0.454921 0.271,0.734864 0.13345,0.533859 0.20018,1.090499 0.20019,1.669922 -10e-6,1.29883 -0.21973,2.24935 -0.65918,2.851562 -0.43946,0.602214 -1.19629,0.90332 -2.27051,0.90332 -0.60221,0 -1.08887,-0.09603 -1.45996,-0.288086 -0.37109,-0.192057 -0.67545,-0.473632 -0.91308,-0.844726 -0.17253,-0.263671 -0.30681,-0.624185 -0.40284,-1.081543 -0.096,-0.457354 -0.14404,-0.962725 -0.14404,-1.516113 z m 1.97266,0.0049 c 0,0.911461 0.0806,1.534019 0.2417,1.867676 0.16113,0.33366 0.39469,0.50049 0.70068,0.500488 0.20182,2e-6 0.37679,-0.0708 0.5249,-0.212402 0.14811,-0.1416 0.25716,-0.365395 0.32715,-0.671387 0.07,-0.305987 0.10498,-0.782874 0.10498,-1.430664 0,-0.950516 -0.0806,-1.58935 -0.2417,-1.916504 -0.16113,-0.327142 -0.40283,-0.490716 -0.72509,-0.490722 -0.32878,6e-6 -0.56641,0.166835 -0.7129,0.500488 -0.14648,0.333664 -0.21972,0.951339 -0.21972,1.853027 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3692" />
id="path3692"
inkscape:connector-curvature="0" />
</g>
</g>
<g
@ -2561,22 +3022,26 @@
<path
id="path3932"
d="m 632.45258,59.285714 0,-8.571429"
style="fill:#ffffff;fill-opacity:1;stroke:#fff8f8;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
style="fill:#ffffff;fill-opacity:1;stroke:#fff8f8;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
inkscape:connector-curvature="0" />
<g
style="font-size:40px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;display:inline;font-family:Bitstream Vera Sans"
id="text3934">
<path
d="m 627.15228,42.291161 0,7.280273 -2.01172,0 0,-4.770508 c -0.32552,0.247401 -0.64046,0.447596 -0.94482,0.600586 -0.30436,0.152999 -0.68604,0.299483 -1.14502,0.439453 l 0,-1.630859 c 0.67708,-0.218093 1.2028,-0.480137 1.57715,-0.786133 0.37434,-0.305983 0.66731,-0.683587 0.8789,-1.132812 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3695" />
id="path3695"
inkscape:connector-curvature="0" />
<path
d="m 635.14545,49.571434 -5.9668,0 c 0.0684,-0.589192 0.27588,-1.143391 0.62256,-1.662598 0.34668,-0.519203 0.9969,-1.131996 1.95068,-1.838379 0.58268,-0.432938 0.9554,-0.761714 1.11817,-0.986328 0.16275,-0.224604 0.24413,-0.43782 0.24414,-0.639648 -10e-6,-0.218094 -0.0806,-0.404454 -0.2417,-0.559082 -0.16114,-0.154617 -0.36378,-0.231928 -0.60791,-0.231934 -0.25391,6e-6 -0.46143,0.07976 -0.62256,0.239258 -0.16114,0.159511 -0.26937,0.441086 -0.32471,0.844727 l -1.99219,-0.161133 c 0.0781,-0.55989 0.22136,-0.996902 0.42969,-1.311035 0.20833,-0.314121 0.50212,-0.555006 0.88135,-0.722657 0.37923,-0.167636 0.90413,-0.251457 1.57471,-0.251464 0.69986,7e-6 1.2443,0.07976 1.6333,0.239257 0.38899,0.159512 0.69498,0.404467 0.91797,0.734864 0.22297,0.330409 0.33446,0.700689 0.33447,1.11084 -10e-6,0.436202 -0.12777,0.852868 -0.3833,1.25 -0.25554,0.397138 -0.72022,0.833336 -1.39405,1.308593 -0.40039,0.276695 -0.66813,0.47038 -0.80322,0.581055 -0.13509,0.110679 -0.29378,0.255536 -0.47607,0.43457 l 3.10547,0 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3697" />
id="path3697"
inkscape:connector-curvature="0" />
<path
d="m 636.00482,45.963036 c 0,-1.360673 0.24496,-2.31282 0.73487,-2.856446 0.4899,-0.543613 1.23616,-0.815422 2.23876,-0.815429 0.48177,7e-6 0.87728,0.05941 1.18653,0.178222 0.30924,0.118822 0.56152,0.273445 0.75683,0.463867 0.19531,0.190437 0.34912,0.390632 0.46143,0.600586 0.1123,0.209967 0.20263,0.454921 0.271,0.734864 0.13345,0.533859 0.20018,1.090499 0.20019,1.669922 -10e-6,1.29883 -0.21973,2.24935 -0.65918,2.851562 -0.43946,0.602214 -1.19629,0.90332 -2.27051,0.90332 -0.60221,0 -1.08887,-0.09603 -1.45996,-0.288086 -0.37109,-0.192057 -0.67545,-0.473632 -0.91308,-0.844726 -0.17253,-0.263671 -0.30681,-0.624185 -0.40284,-1.081543 -0.096,-0.457354 -0.14404,-0.962725 -0.14404,-1.516113 z m 1.97266,0.0049 c 0,0.911461 0.0806,1.534019 0.2417,1.867676 0.16113,0.33366 0.39469,0.50049 0.70068,0.500488 0.20182,2e-6 0.37679,-0.0708 0.5249,-0.212402 0.14811,-0.1416 0.25716,-0.365395 0.32715,-0.671387 0.07,-0.305987 0.10498,-0.782874 0.10498,-1.430664 0,-0.950516 -0.0806,-1.58935 -0.2417,-1.916504 -0.16113,-0.327142 -0.40283,-0.490716 -0.72509,-0.490722 -0.32878,6e-6 -0.56641,0.166835 -0.7129,0.500488 -0.14648,0.333664 -0.21972,0.951339 -0.21972,1.853027 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3699" />
id="path3699"
inkscape:connector-curvature="0" />
</g>
</g>
<g
@ -2586,22 +3051,26 @@
<path
style="fill:#ffffff;fill-opacity:1;stroke:#fff8f8;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 664.45258,59.285714 0,-8.571429"
id="path3940" />
id="path3940"
inkscape:connector-curvature="0" />
<g
style="font-size:40px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;display:inline;font-family:Bitstream Vera Sans"
id="text3942">
<path
d="m 659.15228,42.291161 0,7.280273 -2.01172,0 0,-4.770508 c -0.32552,0.247401 -0.64046,0.447596 -0.94482,0.600586 -0.30436,0.152999 -0.68604,0.299483 -1.14502,0.439453 l 0,-1.630859 c 0.67708,-0.218093 1.2028,-0.480137 1.57715,-0.786133 0.37434,-0.305983 0.66731,-0.683587 0.8789,-1.132812 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3702" />
id="path3702"
inkscape:connector-curvature="0" />
<path
d="m 663.25385,44.483543 -1.87989,-0.336914 c 0.15625,-0.598952 0.45654,-1.057936 0.90088,-1.376953 0.44434,-0.319003 1.0734,-0.478508 1.88721,-0.478515 0.93424,7e-6 1.60969,0.17416 2.02637,0.522461 0.41666,0.348313 0.62499,0.786138 0.625,1.313476 -10e-6,0.30925 -0.0846,0.589198 -0.25391,0.839844 -0.16928,0.250655 -0.42481,0.470382 -0.7666,0.65918 0.27669,0.06836 0.48827,0.148115 0.63476,0.239257 0.23763,0.146488 0.42236,0.339359 0.5542,0.578614 0.13183,0.23926 0.19775,0.524905 0.19776,0.856933 -10e-6,0.416669 -0.10906,0.816245 -0.32715,1.198731 -0.21811,0.382487 -0.53223,0.677083 -0.94238,0.883789 -0.41017,0.206705 -0.9489,0.310058 -1.61622,0.310058 -0.65104,0 -1.16455,-0.0765 -1.54052,-0.229492 -0.37598,-0.152994 -0.68523,-0.37679 -0.92774,-0.671387 -0.24251,-0.294595 -0.42887,-0.664874 -0.55908,-1.110839 l 1.98731,-0.263672 c 0.0781,0.400392 0.19937,0.677898 0.36376,0.832519 0.16439,0.154624 0.37354,0.231935 0.62745,0.231934 0.26692,10e-7 0.48909,-0.09766 0.6665,-0.292969 0.1774,-0.195311 0.26611,-0.455727 0.26611,-0.78125 0,-0.332029 -0.0855,-0.58919 -0.25634,-0.771484 -0.17091,-0.182289 -0.40284,-0.273435 -0.69581,-0.273438 -0.15625,3e-6 -0.37109,0.03907 -0.64453,0.117188 l 0.10254,-1.420899 c 0.11068,0.01628 0.19694,0.02442 0.25879,0.02441 0.26042,5e-6 0.4777,-0.083 0.65186,-0.249023 0.17415,-0.166011 0.26122,-0.362951 0.26123,-0.59082 -10e-6,-0.218094 -0.0651,-0.392247 -0.19531,-0.522461 -0.13022,-0.130203 -0.30925,-0.195307 -0.53711,-0.195313 -0.23438,6e-6 -0.42481,0.07081 -0.57129,0.212402 -0.14649,0.141608 -0.24577,0.389817 -0.29785,0.744629 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3704" />
id="path3704"
inkscape:connector-curvature="0" />
<path
d="m 668.00482,45.963036 c 0,-1.360673 0.24496,-2.31282 0.73487,-2.856446 0.4899,-0.543613 1.23616,-0.815422 2.23876,-0.815429 0.48177,7e-6 0.87728,0.05941 1.18653,0.178222 0.30924,0.118822 0.56152,0.273445 0.75683,0.463867 0.19531,0.190437 0.34912,0.390632 0.46143,0.600586 0.1123,0.209967 0.20263,0.454921 0.271,0.734864 0.13345,0.533859 0.20018,1.090499 0.20019,1.669922 -10e-6,1.29883 -0.21973,2.24935 -0.65918,2.851562 -0.43946,0.602214 -1.19629,0.90332 -2.27051,0.90332 -0.60221,0 -1.08887,-0.09603 -1.45996,-0.288086 -0.37109,-0.192057 -0.67545,-0.473632 -0.91308,-0.844726 -0.17253,-0.263671 -0.30681,-0.624185 -0.40284,-1.081543 -0.096,-0.457354 -0.14404,-0.962725 -0.14404,-1.516113 z m 1.97266,0.0049 c 0,0.911461 0.0806,1.534019 0.2417,1.867676 0.16113,0.33366 0.39469,0.50049 0.70068,0.500488 0.20182,2e-6 0.37679,-0.0708 0.5249,-0.212402 0.14811,-0.1416 0.25716,-0.365395 0.32715,-0.671387 0.07,-0.305987 0.10498,-0.782874 0.10498,-1.430664 0,-0.950516 -0.0806,-1.58935 -0.2417,-1.916504 -0.16113,-0.327142 -0.40283,-0.490716 -0.72509,-0.490722 -0.32878,6e-6 -0.56641,0.166835 -0.7129,0.500488 -0.14648,0.333664 -0.21972,0.951339 -0.21972,1.853027 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3706" />
id="path3706"
inkscape:connector-curvature="0" />
</g>
</g>
<g
@ -2611,22 +3080,26 @@
<path
id="path3948"
d="m 696.45258,59.285714 0,-8.571429"
style="fill:#ffffff;fill-opacity:1;stroke:#fff8f8;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
style="fill:#ffffff;fill-opacity:1;stroke:#fff8f8;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
inkscape:connector-curvature="0" />
<g
style="font-size:40px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;display:inline;font-family:Bitstream Vera Sans"
id="text3950">
<path
d="m 691.15228,42.291161 0,7.280273 -2.01172,0 0,-4.770508 c -0.32552,0.247401 -0.64046,0.447596 -0.94482,0.600586 -0.30436,0.152999 -0.68604,0.299483 -1.14502,0.439453 l 0,-1.630859 c 0.67708,-0.218093 1.2028,-0.480137 1.57715,-0.786133 0.37434,-0.305983 0.66731,-0.683587 0.8789,-1.132812 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3709" />
id="path3709"
inkscape:connector-curvature="0" />
<path
d="m 696.7431,48.233543 -3.62304,0 0,-1.635742 3.62304,-4.30664 1.7334,0 0,4.399414 0.89844,0 0,1.542968 -0.89844,0 0,1.337891 -1.7334,0 z m 0,-1.542968 0,-2.250977 -1.91406,2.250977 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3711" />
id="path3711"
inkscape:connector-curvature="0" />
<path
d="m 700.00482,45.963036 c 0,-1.360673 0.24496,-2.31282 0.73487,-2.856446 0.4899,-0.543613 1.23616,-0.815422 2.23876,-0.815429 0.48177,7e-6 0.87728,0.05941 1.18653,0.178222 0.30924,0.118822 0.56152,0.273445 0.75683,0.463867 0.19531,0.190437 0.34912,0.390632 0.46143,0.600586 0.1123,0.209967 0.20263,0.454921 0.271,0.734864 0.13345,0.533859 0.20018,1.090499 0.20019,1.669922 -10e-6,1.29883 -0.21973,2.24935 -0.65918,2.851562 -0.43946,0.602214 -1.19629,0.90332 -2.27051,0.90332 -0.60221,0 -1.08887,-0.09603 -1.45996,-0.288086 -0.37109,-0.192057 -0.67545,-0.473632 -0.91308,-0.844726 -0.17253,-0.263671 -0.30681,-0.624185 -0.40284,-1.081543 -0.096,-0.457354 -0.14404,-0.962725 -0.14404,-1.516113 z m 1.97266,0.0049 c 0,0.911461 0.0806,1.534019 0.2417,1.867676 0.16113,0.33366 0.39469,0.50049 0.70068,0.500488 0.20182,2e-6 0.37679,-0.0708 0.5249,-0.212402 0.14811,-0.1416 0.25716,-0.365395 0.32715,-0.671387 0.07,-0.305987 0.10498,-0.782874 0.10498,-1.430664 0,-0.950516 -0.0806,-1.58935 -0.2417,-1.916504 -0.16113,-0.327142 -0.40283,-0.490716 -0.72509,-0.490722 -0.32878,6e-6 -0.56641,0.166835 -0.7129,0.500488 -0.14648,0.333664 -0.21972,0.951339 -0.21972,1.853027 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3713" />
id="path3713"
inkscape:connector-curvature="0" />
</g>
</g>
<g
@ -2636,22 +3109,26 @@
<path
style="fill:#ffffff;fill-opacity:1;stroke:#fff8f8;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 722.45258,59.285714 0,-8.571429"
id="path3956" />
id="path3956"
inkscape:connector-curvature="0" />
<g
style="font-size:40px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;display:inline;font-family:Bitstream Vera Sans"
id="text3958">
<path
d="m 717.15228,42.291161 0,7.280273 -2.01172,0 0,-4.770508 c -0.32552,0.247401 -0.64046,0.447596 -0.94482,0.600586 -0.30436,0.152999 -0.68604,0.299483 -1.14502,0.439453 l 0,-1.630859 c 0.67708,-0.218093 1.2028,-0.480137 1.57715,-0.786133 0.37434,-0.305983 0.66731,-0.683587 0.8789,-1.132812 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3716" />
id="path3716"
inkscape:connector-curvature="0" />
<path
d="m 720.1308,42.413231 4.72168,0 0,1.586914 -3.19824,0 -0.1709,1.074219 c 0.22135,-0.104162 0.44026,-0.182287 0.65674,-0.234375 0.21646,-0.05208 0.43049,-0.07812 0.64209,-0.07813 0.71614,5e-6 1.29719,0.216476 1.74316,0.649414 0.44596,0.432946 0.66894,0.978193 0.66894,1.635742 0,0.462242 -0.11475,0.906577 -0.34423,1.333008 -0.2295,0.426433 -0.55502,0.751953 -0.97657,0.976562 -0.42155,0.22461 -0.9611,0.336914 -1.61865,0.336914 -0.47201,0 -0.87647,-0.04476 -1.21338,-0.134277 -0.33691,-0.08952 -0.62337,-0.222982 -0.85937,-0.400391 -0.23601,-0.177408 -0.42725,-0.378417 -0.57373,-0.603027 -0.14649,-0.224608 -0.26856,-0.504556 -0.36621,-0.839844 l 2.01172,-0.219726 c 0.0488,0.322267 0.16275,0.567221 0.34179,0.734863 0.17904,0.167644 0.39225,0.251466 0.63965,0.251465 0.27669,10e-7 0.50537,-0.104979 0.68604,-0.314942 0.18066,-0.209959 0.27099,-0.523272 0.27099,-0.939941 0,-0.42643 -0.0911,-0.738929 -0.27344,-0.9375 -0.18229,-0.198564 -0.4248,-0.297848 -0.72753,-0.297852 -0.19207,4e-6 -0.37761,0.04721 -0.55665,0.141602 -0.13346,0.06836 -0.27995,0.192061 -0.43945,0.371094 l -1.69433,-0.244141 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3718" />
id="path3718"
inkscape:connector-curvature="0" />
<path
d="m 726.00482,45.963036 c 0,-1.360673 0.24496,-2.31282 0.73487,-2.856446 0.4899,-0.543613 1.23616,-0.815422 2.23876,-0.815429 0.48177,7e-6 0.87728,0.05941 1.18653,0.178222 0.30924,0.118822 0.56152,0.273445 0.75683,0.463867 0.19531,0.190437 0.34912,0.390632 0.46143,0.600586 0.1123,0.209967 0.20263,0.454921 0.271,0.734864 0.13345,0.533859 0.20018,1.090499 0.20019,1.669922 -10e-6,1.29883 -0.21973,2.24935 -0.65918,2.851562 -0.43946,0.602214 -1.19629,0.90332 -2.27051,0.90332 -0.60221,0 -1.08887,-0.09603 -1.45996,-0.288086 -0.37109,-0.192057 -0.67545,-0.473632 -0.91308,-0.844726 -0.17253,-0.263671 -0.30681,-0.624185 -0.40284,-1.081543 -0.096,-0.457354 -0.14404,-0.962725 -0.14404,-1.516113 z m 1.97266,0.0049 c 0,0.911461 0.0806,1.534019 0.2417,1.867676 0.16113,0.33366 0.39469,0.50049 0.70068,0.500488 0.20182,2e-6 0.37679,-0.0708 0.5249,-0.212402 0.14811,-0.1416 0.25716,-0.365395 0.32715,-0.671387 0.07,-0.305987 0.10498,-0.782874 0.10498,-1.430664 0,-0.950516 -0.0806,-1.58935 -0.2417,-1.916504 -0.16113,-0.327142 -0.40283,-0.490716 -0.72509,-0.490722 -0.32878,6e-6 -0.56641,0.166835 -0.7129,0.500488 -0.14648,0.333664 -0.21972,0.951339 -0.21972,1.853027 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3720" />
id="path3720"
inkscape:connector-curvature="0" />
</g>
</g>
<g
@ -2661,22 +3138,26 @@
<path
id="path3964"
d="m 750.45258,59.285714 0,-8.571429"
style="fill:#ffffff;fill-opacity:1;stroke:#fff8f8;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
style="fill:#ffffff;fill-opacity:1;stroke:#fff8f8;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
inkscape:connector-curvature="0" />
<g
style="font-size:40px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;display:inline;font-family:Bitstream Vera Sans"
id="text3966">
<path
d="m 745.15228,42.291161 0,7.280273 -2.01172,0 0,-4.770508 c -0.32552,0.247401 -0.64046,0.447596 -0.94482,0.600586 -0.30436,0.152999 -0.68604,0.299483 -1.14502,0.439453 l 0,-1.630859 c 0.67708,-0.218093 1.2028,-0.480137 1.57715,-0.786133 0.37434,-0.305983 0.66731,-0.683587 0.8789,-1.132812 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3723" />
id="path3723"
inkscape:connector-curvature="0" />
<path
d="m 753.08197,44.024559 -1.97754,0.244141 c -0.0521,-0.276687 -0.13916,-0.472 -0.26123,-0.585938 -0.12207,-0.113926 -0.27263,-0.170892 -0.45166,-0.170898 -0.32227,6e-6 -0.57292,0.162766 -0.75195,0.488281 -0.13021,0.23438 -0.22624,0.735682 -0.28809,1.503906 0.23763,-0.240881 0.48177,-0.419103 0.73242,-0.534668 0.25065,-0.115555 0.54036,-0.173335 0.86914,-0.17334 0.63802,5e-6 1.17757,0.22787 1.61866,0.683594 0.44107,0.455733 0.66161,1.033532 0.66162,1.733399 -10e-6,0.472007 -0.1115,0.903321 -0.33448,1.293945 -0.22298,0.390626 -0.53223,0.686035 -0.92773,0.88623 -0.39551,0.200196 -0.89112,0.300293 -1.48682,0.300293 -0.71614,0 -1.29069,-0.12207 -1.72363,-0.366211 -0.43294,-0.24414 -0.77881,-0.633951 -1.0376,-1.169433 -0.25879,-0.53548 -0.38818,-1.244301 -0.38818,-2.126465 0,-1.292313 0.27181,-2.238764 0.81543,-2.839356 0.54362,-0.600578 1.2972,-0.900871 2.26074,-0.900878 0.56966,7e-6 1.01969,0.06593 1.3501,0.197753 0.3304,0.131843 0.60465,0.324714 0.82275,0.578614 0.2181,0.253912 0.38411,0.572922 0.49805,0.957031 z m -3.66211,3.188477 c 0,0.387371 0.0977,0.690919 0.29297,0.910644 0.19531,0.219728 0.43457,0.329591 0.71777,0.32959 0.26042,10e-7 0.47851,-0.09928 0.6543,-0.297852 0.17578,-0.198566 0.26367,-0.494789 0.26367,-0.888671 0,-0.403644 -0.0911,-0.71126 -0.27344,-0.922852 -0.18229,-0.211585 -0.40853,-0.317379 -0.67871,-0.317383 -0.27669,4e-6 -0.50863,0.102543 -0.6958,0.307617 -0.18717,0.205081 -0.28076,0.49805 -0.28076,0.878907 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3725" />
id="path3725"
inkscape:connector-curvature="0" />
<path
d="m 754.00482,45.963036 c 0,-1.360673 0.24496,-2.31282 0.73487,-2.856446 0.4899,-0.543613 1.23616,-0.815422 2.23876,-0.815429 0.48177,7e-6 0.87728,0.05941 1.18653,0.178222 0.30924,0.118822 0.56152,0.273445 0.75683,0.463867 0.19531,0.190437 0.34912,0.390632 0.46143,0.600586 0.1123,0.209967 0.20263,0.454921 0.271,0.734864 0.13345,0.533859 0.20018,1.090499 0.20019,1.669922 -10e-6,1.29883 -0.21973,2.24935 -0.65918,2.851562 -0.43946,0.602214 -1.19629,0.90332 -2.27051,0.90332 -0.60221,0 -1.08887,-0.09603 -1.45996,-0.288086 -0.37109,-0.192057 -0.67545,-0.473632 -0.91308,-0.844726 -0.17253,-0.263671 -0.30681,-0.624185 -0.40284,-1.081543 -0.096,-0.457354 -0.14404,-0.962725 -0.14404,-1.516113 z m 1.97266,0.0049 c 0,0.911461 0.0806,1.534019 0.2417,1.867676 0.16113,0.33366 0.39469,0.50049 0.70068,0.500488 0.20182,2e-6 0.37679,-0.0708 0.5249,-0.212402 0.14811,-0.1416 0.25716,-0.365395 0.32715,-0.671387 0.07,-0.305987 0.10498,-0.782874 0.10498,-1.430664 0,-0.950516 -0.0806,-1.58935 -0.2417,-1.916504 -0.16113,-0.327142 -0.40283,-0.490716 -0.72509,-0.490722 -0.32878,6e-6 -0.56641,0.166835 -0.7129,0.500488 -0.14648,0.333664 -0.21972,0.951339 -0.21972,1.853027 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3727" />
id="path3727"
inkscape:connector-curvature="0" />
</g>
</g>
<g
@ -2686,22 +3167,26 @@
<path
style="fill:#ffffff;fill-opacity:1;stroke:#fff8f8;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 774.45258,59.285714 0,-8.571429"
id="path3972" />
id="path3972"
inkscape:connector-curvature="0" />
<g
style="font-size:40px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;display:inline;font-family:Bitstream Vera Sans"
id="text3974">
<path
d="m 769.15228,42.291161 0,7.280273 -2.01172,0 0,-4.770508 c -0.32552,0.247401 -0.64046,0.447596 -0.94482,0.600586 -0.30436,0.152999 -0.68604,0.299483 -1.14502,0.439453 l 0,-1.630859 c 0.67708,-0.218093 1.2028,-0.480137 1.57715,-0.786133 0.37434,-0.305983 0.66731,-0.683587 0.8789,-1.132812 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3730" />
id="path3730"
inkscape:connector-curvature="0" />
<path
d="m 771.35931,42.413231 5.80567,0 0,1.342773 c -0.50457,0.455735 -0.92611,0.948898 -1.26465,1.479493 -0.41016,0.644534 -0.73405,1.362307 -0.97168,2.15332 -0.18881,0.615236 -0.31576,1.342774 -0.38086,2.182617 l -1.98242,0 c 0.15625,-1.168619 0.40201,-2.148435 0.7373,-2.939453 0.33529,-0.791012 0.86589,-1.637365 1.5918,-2.539063 l -3.53516,0 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3732" />
id="path3732"
inkscape:connector-curvature="0" />
<path
d="m 778.00482,45.963036 c 0,-1.360673 0.24496,-2.31282 0.73487,-2.856446 0.4899,-0.543613 1.23616,-0.815422 2.23876,-0.815429 0.48177,7e-6 0.87728,0.05941 1.18653,0.178222 0.30924,0.118822 0.56152,0.273445 0.75683,0.463867 0.19531,0.190437 0.34912,0.390632 0.46143,0.600586 0.1123,0.209967 0.20263,0.454921 0.271,0.734864 0.13345,0.533859 0.20018,1.090499 0.20019,1.669922 -10e-6,1.29883 -0.21973,2.24935 -0.65918,2.851562 -0.43946,0.602214 -1.19629,0.90332 -2.27051,0.90332 -0.60221,0 -1.08887,-0.09603 -1.45996,-0.288086 -0.37109,-0.192057 -0.67545,-0.473632 -0.91308,-0.844726 -0.17253,-0.263671 -0.30681,-0.624185 -0.40284,-1.081543 -0.096,-0.457354 -0.14404,-0.962725 -0.14404,-1.516113 z m 1.97266,0.0049 c 0,0.911461 0.0806,1.534019 0.2417,1.867676 0.16113,0.33366 0.39469,0.50049 0.70068,0.500488 0.20182,2e-6 0.37679,-0.0708 0.5249,-0.212402 0.14811,-0.1416 0.25716,-0.365395 0.32715,-0.671387 0.07,-0.305987 0.10498,-0.782874 0.10498,-1.430664 0,-0.950516 -0.0806,-1.58935 -0.2417,-1.916504 -0.16113,-0.327142 -0.40283,-0.490716 -0.72509,-0.490722 -0.32878,6e-6 -0.56641,0.166835 -0.7129,0.500488 -0.14648,0.333664 -0.21972,0.951339 -0.21972,1.853027 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3734" />
id="path3734"
inkscape:connector-curvature="0" />
</g>
</g>
<g
@ -2711,22 +3196,26 @@
<path
style="fill:#ffffff;fill-opacity:1;stroke:#fff8f8;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 72.562294,59.285714 0,-8.571429"
id="path4052" />
id="path4052"
inkscape:connector-curvature="0" />
<g
style="font-size:40px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;display:inline;font-family:Bitstream Vera Sans"
id="text4054">
<path
d="m 68.851357,49.571434 -5.966797,0 c 0.06836,-0.589192 0.275878,-1.143391 0.622558,-1.662598 0.346679,-0.519203 0.996906,-1.131996 1.950684,-1.838379 0.582679,-0.432938 0.9554,-0.761714 1.118164,-0.986328 0.162756,-0.224604 0.244136,-0.43782 0.244141,-0.639648 -5e-6,-0.218094 -0.08057,-0.404454 -0.2417,-0.559082 -0.161136,-0.154617 -0.363773,-0.231928 -0.60791,-0.231934 -0.253909,6e-6 -0.461429,0.07976 -0.622558,0.239258 -0.161136,0.159511 -0.269371,0.441086 -0.324707,0.844727 l -1.992188,-0.161133 c 0.07813,-0.55989 0.221354,-0.996902 0.429688,-1.311035 0.208332,-0.314121 0.502114,-0.555006 0.881347,-0.722657 0.37923,-0.167636 0.904132,-0.251457 1.574707,-0.251464 0.699866,7e-6 1.244299,0.07976 1.633301,0.239257 0.388992,0.159512 0.694981,0.404467 0.917969,0.734864 0.222975,0.330409 0.334466,0.700689 0.334472,1.11084 -6e-6,0.436202 -0.127773,0.852868 -0.3833,1.25 -0.25554,0.397138 -0.72022,0.833336 -1.394043,1.308593 -0.400395,0.276695 -0.668136,0.47038 -0.803223,0.581055 -0.135095,0.110679 -0.293786,0.255536 -0.476074,0.43457 l 3.105469,0 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3737" />
id="path3737"
inkscape:connector-curvature="0" />
<path
d="m 70.907021,45.723778 c -0.312502,-0.166012 -0.540366,-0.351559 -0.683594,-0.556641 -0.195313,-0.279943 -0.29297,-0.602208 -0.292969,-0.966797 -10e-7,-0.598952 0.281575,-1.08886 0.844727,-1.469726 0.439451,-0.292962 1.020505,-0.439446 1.743164,-0.439453 0.957027,7e-6 1.66422,0.182298 2.121582,0.546875 0.457351,0.364589 0.686029,0.823573 0.686035,1.376953 -6e-6,0.32227 -0.09115,0.623377 -0.273438,0.90332 -0.136724,0.208338 -0.351568,0.41016 -0.644531,0.605469 0.387364,0.18555 0.676264,0.431318 0.866699,0.737304 0.190424,0.305993 0.285639,0.644534 0.285645,1.015625 -6e-6,0.358075 -0.0822,0.692547 -0.246582,1.003418 -0.164394,0.310874 -0.366217,0.550945 -0.605469,0.720215 -0.239263,0.169271 -0.537114,0.293783 -0.893555,0.373535 -0.356449,0.07975 -0.736494,0.119629 -1.140136,0.119629 -0.758466,0 -1.337893,-0.08952 -1.738282,-0.268554 -0.400391,-0.179036 -0.704753,-0.442708 -0.913085,-0.791016 -0.208334,-0.348306 -0.312501,-0.737303 -0.3125,-1.166992 -10e-7,-0.41992 0.09766,-0.775551 0.292968,-1.066895 0.195312,-0.291337 0.496418,-0.51676 0.903321,-0.676269 z m 0.893554,-1.40625 c -2e-6,0.247401 0.07731,0.446782 0.231934,0.598144 0.154619,0.151372 0.360511,0.227056 0.617676,0.227051 0.227861,5e-6 0.415035,-0.07486 0.561523,-0.224609 0.14648,-0.149735 0.219723,-0.34342 0.219727,-0.581055 -4e-6,-0.24739 -0.0765,-0.448399 -0.229493,-0.603027 -0.152998,-0.154617 -0.34831,-0.231928 -0.585937,-0.231934 -0.240889,6e-6 -0.437015,0.07569 -0.588379,0.227051 -0.15137,0.151373 -0.227053,0.347499 -0.227051,0.588379 z m -0.107422,3.081054 c -2e-6,0.315758 0.09603,0.573733 0.288086,0.773926 0.192055,0.200197 0.411781,0.300294 0.65918,0.300293 0.237627,1e-6 0.450843,-0.101724 0.639648,-0.305176 0.188798,-0.203448 0.283199,-0.461423 0.283204,-0.773925 -5e-6,-0.315753 -0.09522,-0.574542 -0.285645,-0.776368 -0.190433,-0.201819 -0.410974,-0.302731 -0.661621,-0.302734 -0.247399,3e-6 -0.463056,0.09766 -0.646973,0.292969 -0.183921,0.195315 -0.275881,0.458987 -0.275879,0.791015 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3739" />
id="path3739"
inkscape:connector-curvature="0" />
<path
d="m 76.390419,45.963036 c 0,-1.360673 0.244954,-2.31282 0.734863,-2.856446 0.489908,-0.543613 1.236163,-0.815422 2.23877,-0.815429 0.481767,7e-6 0.877274,0.05941 1.186523,0.178222 0.30924,0.118822 0.561519,0.273445 0.756836,0.463867 0.195307,0.190437 0.349116,0.390632 0.461426,0.600586 0.112299,0.209967 0.202631,0.454921 0.270996,0.734864 0.133457,0.533859 0.200189,1.090499 0.200195,1.669922 -6e-6,1.29883 -0.219732,2.24935 -0.659179,2.851562 -0.439459,0.602214 -1.196294,0.90332 -2.270508,0.90332 -0.602216,0 -1.08887,-0.09603 -1.459961,-0.288086 -0.371095,-0.192057 -0.675457,-0.473632 -0.913086,-0.844726 -0.172527,-0.263671 -0.306804,-0.624185 -0.402832,-1.081543 -0.09603,-0.457354 -0.144043,-0.962725 -0.144043,-1.516113 z m 1.972656,0.0049 c -2e-6,0.911461 0.08056,1.534019 0.241699,1.867676 0.161131,0.33366 0.394691,0.50049 0.700684,0.500488 0.201819,2e-6 0.376787,-0.0708 0.524902,-0.212402 0.148108,-0.1416 0.257158,-0.365395 0.327149,-0.671387 0.06998,-0.305987 0.104976,-0.782874 0.10498,-1.430664 -4e-6,-0.950516 -0.08057,-1.58935 -0.241699,-1.916504 -0.161137,-0.327142 -0.402836,-0.490716 -0.725098,-0.490722 -0.328779,6e-6 -0.566409,0.166835 -0.71289,0.500488 -0.146487,0.333664 -0.219729,0.951339 -0.219727,1.853027 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3741" />
id="path3741"
inkscape:connector-curvature="0" />
</g>
</g>
<g
@ -2736,22 +3225,26 @@
<path
id="path4060"
d="m 96.562294,59.285714 0,-8.571429"
style="fill:#ffffff;fill-opacity:1;stroke:#fff8f8;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
style="fill:#ffffff;fill-opacity:1;stroke:#fff8f8;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
inkscape:connector-curvature="0" />
<g
style="font-size:40px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;display:inline;font-family:Bitstream Vera Sans"
id="text4062">
<path
d="m 92.851357,49.571434 -5.966797,0 c 0.06836,-0.589192 0.275878,-1.143391 0.622558,-1.662598 0.346679,-0.519203 0.996906,-1.131996 1.950684,-1.838379 0.582679,-0.432938 0.9554,-0.761714 1.118164,-0.986328 0.162756,-0.224604 0.244136,-0.43782 0.244141,-0.639648 -5e-6,-0.218094 -0.08057,-0.404454 -0.2417,-0.559082 -0.161136,-0.154617 -0.363773,-0.231928 -0.60791,-0.231934 -0.253909,6e-6 -0.461429,0.07976 -0.622558,0.239258 -0.161136,0.159511 -0.269371,0.441086 -0.324707,0.844727 l -1.992188,-0.161133 c 0.07813,-0.55989 0.221354,-0.996902 0.429688,-1.311035 0.208332,-0.314121 0.502114,-0.555006 0.881347,-0.722657 0.37923,-0.167636 0.904132,-0.251457 1.574707,-0.251464 0.699866,7e-6 1.244299,0.07976 1.633301,0.239257 0.388992,0.159512 0.694981,0.404467 0.917969,0.734864 0.222975,0.330409 0.334466,0.700689 0.334472,1.11084 -6e-6,0.436202 -0.127773,0.852868 -0.3833,1.25 -0.25554,0.397138 -0.72022,0.833336 -1.394043,1.308593 -0.400395,0.276695 -0.668136,0.47038 -0.803223,0.581055 -0.135095,0.110679 -0.293786,0.255536 -0.476074,0.43457 l 3.105469,0 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3744" />
id="path3744"
inkscape:connector-curvature="0" />
<path
d="m 93.798622,47.964989 1.977539,-0.249024 c 0.05208,0.276695 0.139972,0.472007 0.263672,0.585938 0.123695,0.113933 0.275062,0.170899 0.454102,0.170898 0.319007,1e-6 0.56803,-0.161131 0.74707,-0.483398 0.130204,-0.237629 0.22786,-0.740558 0.292969,-1.508789 -0.237635,0.244143 -0.481775,0.423179 -0.732422,0.537109 -0.250654,0.113935 -0.540368,0.170901 -0.869141,0.170899 -0.641278,2e-6 -1.182456,-0.227862 -1.623535,-0.683594 -0.441081,-0.455726 -0.661621,-1.031897 -0.661621,-1.728516 0,-0.475255 0.112304,-0.908197 0.336914,-1.298828 0.224608,-0.390618 0.533853,-0.686028 0.927734,-0.88623 0.393879,-0.200189 0.88867,-0.300286 1.484375,-0.300293 0.716142,7e-6 1.290686,0.122891 1.723633,0.368652 0.432938,0.245775 0.778803,0.636399 1.037598,1.171875 0.258783,0.535487 0.388177,1.24268 0.388183,2.121582 -6e-6,1.29232 -0.271815,2.238771 -0.815429,2.839355 -0.543625,0.600587 -1.297205,0.900879 -2.260742,0.900879 -0.569664,0 -1.018883,-0.06592 -1.347657,-0.197754 -0.328777,-0.131835 -0.602214,-0.324706 -0.820312,-0.578613 -0.2181,-0.253905 -0.385743,-0.571288 -0.50293,-0.952148 z m 3.66211,-3.19336 c -5e-6,-0.387364 -0.09766,-0.690912 -0.292969,-0.910644 -0.195316,-0.219721 -0.432946,-0.329584 -0.712891,-0.32959 -0.263675,6e-6 -0.482587,0.09929 -0.656738,0.297852 -0.174156,0.198573 -0.261233,0.496424 -0.261231,0.893554 -2e-6,0.400395 0.09033,0.706385 0.270996,0.917969 0.180662,0.211592 0.406085,0.317386 0.67627,0.317383 0.279944,3e-6 0.512692,-0.102536 0.698242,-0.307617 0.185543,-0.205074 0.278316,-0.498043 0.278321,-0.878907 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3746" />
id="path3746"
inkscape:connector-curvature="0" />
<path
d="m 100.39042,45.963036 c 0,-1.360673 0.24495,-2.31282 0.73486,-2.856446 0.48991,-0.543613 1.23617,-0.815422 2.23877,-0.815429 0.48177,7e-6 0.87728,0.05941 1.18653,0.178222 0.30924,0.118822 0.56151,0.273445 0.75683,0.463867 0.19531,0.190437 0.34912,0.390632 0.46143,0.600586 0.1123,0.209967 0.20263,0.454921 0.27099,0.734864 0.13346,0.533859 0.20019,1.090499 0.2002,1.669922 -1e-5,1.29883 -0.21973,2.24935 -0.65918,2.851562 -0.43946,0.602214 -1.19629,0.90332 -2.27051,0.90332 -0.60222,0 -1.08887,-0.09603 -1.45996,-0.288086 -0.3711,-0.192057 -0.67546,-0.473632 -0.91309,-0.844726 -0.17252,-0.263671 -0.3068,-0.624185 -0.40283,-1.081543 -0.096,-0.457354 -0.14404,-0.962725 -0.14404,-1.516113 z m 1.97266,0.0049 c -1e-5,0.911461 0.0806,1.534019 0.24169,1.867676 0.16113,0.33366 0.3947,0.50049 0.70069,0.500488 0.20182,2e-6 0.37678,-0.0708 0.5249,-0.212402 0.14811,-0.1416 0.25716,-0.365395 0.32715,-0.671387 0.07,-0.305987 0.10498,-0.782874 0.10498,-1.430664 0,-0.950516 -0.0806,-1.58935 -0.2417,-1.916504 -0.16114,-0.327142 -0.40284,-0.490716 -0.7251,-0.490722 -0.32878,6e-6 -0.56641,0.166835 -0.71289,0.500488 -0.14649,0.333664 -0.21973,0.951339 -0.21972,1.853027 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3748" />
id="path3748"
inkscape:connector-curvature="0" />
</g>
</g>
<g
@ -2761,22 +3254,26 @@
<path
style="fill:#ffffff;fill-opacity:1;stroke:#fff8f8;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 122.60624,59.285714 0,-8.571429"
id="path4068" />
id="path4068"
inkscape:connector-curvature="0" />
<g
style="font-size:40px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;display:inline;font-family:Bitstream Vera Sans"
id="text4070">
<path
d="m 114.95975,44.483543 -1.87988,-0.336914 c 0.15625,-0.598952 0.45654,-1.057936 0.90088,-1.376953 0.44434,-0.319003 1.0734,-0.478508 1.88721,-0.478515 0.93424,7e-6 1.60969,0.17416 2.02637,0.522461 0.41666,0.348313 0.62499,0.786138 0.625,1.313476 -1e-5,0.30925 -0.0846,0.589198 -0.25391,0.839844 -0.16928,0.250655 -0.42481,0.470382 -0.7666,0.65918 0.27668,0.06836 0.48827,0.148115 0.63476,0.239257 0.23763,0.146488 0.42236,0.339359 0.5542,0.578614 0.13183,0.23926 0.19775,0.524905 0.19776,0.856933 -1e-5,0.416669 -0.10906,0.816245 -0.32715,1.198731 -0.21811,0.382487 -0.53223,0.677083 -0.94239,0.883789 -0.41016,0.206705 -0.94889,0.310058 -1.61621,0.310058 -0.65104,0 -1.16455,-0.0765 -1.54052,-0.229492 -0.37598,-0.152994 -0.68523,-0.37679 -0.92774,-0.671387 -0.24251,-0.294595 -0.42887,-0.664874 -0.55908,-1.110839 l 1.9873,-0.263672 c 0.0781,0.400392 0.19938,0.677898 0.36377,0.832519 0.16439,0.154624 0.37354,0.231935 0.62745,0.231934 0.26692,10e-7 0.48909,-0.09766 0.6665,-0.292969 0.1774,-0.195311 0.26611,-0.455727 0.26611,-0.78125 0,-0.332029 -0.0854,-0.58919 -0.25634,-0.771484 -0.17091,-0.182289 -0.40284,-0.273435 -0.69581,-0.273438 -0.15625,3e-6 -0.37109,0.03907 -0.64453,0.117188 l 0.10254,-1.420899 c 0.11068,0.01628 0.19694,0.02442 0.25879,0.02441 0.26041,5e-6 0.4777,-0.083 0.65186,-0.249023 0.17415,-0.166011 0.26122,-0.362951 0.26123,-0.59082 -10e-6,-0.218094 -0.0651,-0.392247 -0.19532,-0.522461 -0.13021,-0.130203 -0.30924,-0.195307 -0.5371,-0.195313 -0.23438,6e-6 -0.42481,0.07081 -0.57129,0.212402 -0.14649,0.141608 -0.24577,0.389817 -0.29786,0.744629 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3751" />
id="path3751"
inkscape:connector-curvature="0" />
<path
d="m 119.71073,45.963036 c 0,-1.360673 0.24496,-2.31282 0.73486,-2.856446 0.48991,-0.543613 1.23617,-0.815422 2.23877,-0.815429 0.48177,7e-6 0.87728,0.05941 1.18653,0.178222 0.30924,0.118822 0.56152,0.273445 0.75683,0.463867 0.19531,0.190437 0.34912,0.390632 0.46143,0.600586 0.1123,0.209967 0.20263,0.454921 0.271,0.734864 0.13345,0.533859 0.20018,1.090499 0.20019,1.669922 -1e-5,1.29883 -0.21973,2.24935 -0.65918,2.851562 -0.43946,0.602214 -1.19629,0.90332 -2.27051,0.90332 -0.60221,0 -1.08887,-0.09603 -1.45996,-0.288086 -0.37109,-0.192057 -0.67545,-0.473632 -0.91308,-0.844726 -0.17253,-0.263671 -0.30681,-0.624185 -0.40284,-1.081543 -0.096,-0.457354 -0.14404,-0.962725 -0.14404,-1.516113 z m 1.97266,0.0049 c 0,0.911461 0.0806,1.534019 0.2417,1.867676 0.16113,0.33366 0.39469,0.50049 0.70068,0.500488 0.20182,2e-6 0.37679,-0.0708 0.5249,-0.212402 0.14811,-0.1416 0.25716,-0.365395 0.32715,-0.671387 0.07,-0.305987 0.10498,-0.782874 0.10498,-1.430664 0,-0.950516 -0.0806,-1.58935 -0.2417,-1.916504 -0.16113,-0.327142 -0.40283,-0.490716 -0.7251,-0.490722 -0.32877,6e-6 -0.5664,0.166835 -0.71289,0.500488 -0.14648,0.333664 -0.21972,0.951339 -0.21972,1.853027 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3753" />
id="path3753"
inkscape:connector-curvature="0" />
<path
d="m 126.39042,45.963036 c 0,-1.360673 0.24495,-2.31282 0.73486,-2.856446 0.48991,-0.543613 1.23617,-0.815422 2.23877,-0.815429 0.48177,7e-6 0.87728,0.05941 1.18653,0.178222 0.30924,0.118822 0.56151,0.273445 0.75683,0.463867 0.19531,0.190437 0.34912,0.390632 0.46143,0.600586 0.1123,0.209967 0.20263,0.454921 0.27099,0.734864 0.13346,0.533859 0.20019,1.090499 0.2002,1.669922 -1e-5,1.29883 -0.21973,2.24935 -0.65918,2.851562 -0.43946,0.602214 -1.19629,0.90332 -2.27051,0.90332 -0.60222,0 -1.08887,-0.09603 -1.45996,-0.288086 -0.3711,-0.192057 -0.67546,-0.473632 -0.91309,-0.844726 -0.17252,-0.263671 -0.3068,-0.624185 -0.40283,-1.081543 -0.096,-0.457354 -0.14404,-0.962725 -0.14404,-1.516113 z m 1.97266,0.0049 c -1e-5,0.911461 0.0806,1.534019 0.24169,1.867676 0.16113,0.33366 0.3947,0.50049 0.70069,0.500488 0.20182,2e-6 0.37678,-0.0708 0.5249,-0.212402 0.14811,-0.1416 0.25716,-0.365395 0.32715,-0.671387 0.07,-0.305987 0.10498,-0.782874 0.10498,-1.430664 0,-0.950516 -0.0806,-1.58935 -0.2417,-1.916504 -0.16114,-0.327142 -0.40284,-0.490716 -0.7251,-0.490722 -0.32878,6e-6 -0.56641,0.166835 -0.71289,0.500488 -0.14649,0.333664 -0.21973,0.951339 -0.21972,1.853027 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3755" />
id="path3755"
inkscape:connector-curvature="0" />
</g>
</g>
<g
@ -2786,22 +3283,26 @@
<path
id="path4076"
d="m 146.60625,59.285714 0,-8.571429"
style="fill:#ffffff;fill-opacity:1;stroke:#fff8f8;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
style="fill:#ffffff;fill-opacity:1;stroke:#fff8f8;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
inkscape:connector-curvature="0" />
<g
style="font-size:40px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;display:inline;font-family:Bitstream Vera Sans"
id="text4078">
<path
d="m 138.95976,44.483543 -1.87988,-0.336914 c 0.15625,-0.598952 0.45654,-1.057936 0.90088,-1.376953 0.44433,-0.319003 1.0734,-0.478508 1.88721,-0.478515 0.93424,7e-6 1.60969,0.17416 2.02636,0.522461 0.41666,0.348313 0.625,0.786138 0.625,1.313476 0,0.30925 -0.0846,0.589198 -0.2539,0.839844 -0.16928,0.250655 -0.42481,0.470382 -0.7666,0.65918 0.27668,0.06836 0.48827,0.148115 0.63476,0.239257 0.23763,0.146488 0.42236,0.339359 0.5542,0.578614 0.13183,0.23926 0.19775,0.524905 0.19775,0.856933 0,0.416669 -0.10905,0.816245 -0.32714,1.198731 -0.21811,0.382487 -0.53224,0.677083 -0.94239,0.883789 -0.41016,0.206705 -0.94889,0.310058 -1.61621,0.310058 -0.65104,0 -1.16455,-0.0765 -1.54053,-0.229492 -0.37597,-0.152994 -0.68522,-0.37679 -0.92773,-0.671387 -0.24251,-0.294595 -0.42887,-0.664874 -0.55908,-1.110839 l 1.9873,-0.263672 c 0.0781,0.400392 0.19938,0.677898 0.36377,0.832519 0.16439,0.154624 0.37353,0.231935 0.62744,0.231934 0.26693,10e-7 0.48909,-0.09766 0.66651,-0.292969 0.1774,-0.195311 0.26611,-0.455727 0.26611,-0.78125 0,-0.332029 -0.0855,-0.58919 -0.25635,-0.771484 -0.1709,-0.182289 -0.40283,-0.273435 -0.6958,-0.273438 -0.15625,3e-6 -0.37109,0.03907 -0.64453,0.117188 l 0.10254,-1.420899 c 0.11067,0.01628 0.19694,0.02442 0.25879,0.02441 0.26041,5e-6 0.4777,-0.083 0.65185,-0.249023 0.17415,-0.166011 0.26123,-0.362951 0.26124,-0.59082 -1e-5,-0.218094 -0.0651,-0.392247 -0.19532,-0.522461 -0.13021,-0.130203 -0.30925,-0.195307 -0.53711,-0.195313 -0.23437,6e-6 -0.4248,0.07081 -0.57129,0.212402 -0.14648,0.141608 -0.24577,0.389817 -0.29785,0.744629 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3758" />
id="path3758"
inkscape:connector-curvature="0" />
<path
d="m 148.21758,42.291161 0,7.280273 -2.01172,0 0,-4.770508 c -0.32553,0.247401 -0.64047,0.447596 -0.94483,0.600586 -0.30436,0.152999 -0.68603,0.299483 -1.14502,0.439453 l 0,-1.630859 c 0.67708,-0.218093 1.2028,-0.480137 1.57715,-0.786133 0.37435,-0.305983 0.66732,-0.683587 0.87891,-1.132812 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3760" />
id="path3760"
inkscape:connector-curvature="0" />
<path
d="m 150.39043,45.963036 c 0,-1.360673 0.24495,-2.31282 0.73486,-2.856446 0.48991,-0.543613 1.23616,-0.815422 2.23877,-0.815429 0.48177,7e-6 0.87727,0.05941 1.18652,0.178222 0.30924,0.118822 0.56152,0.273445 0.75684,0.463867 0.19531,0.190437 0.34911,0.390632 0.46142,0.600586 0.1123,0.209967 0.20264,0.454921 0.271,0.734864 0.13346,0.533859 0.20019,1.090499 0.2002,1.669922 -1e-5,1.29883 -0.21974,2.24935 -0.65918,2.851562 -0.43946,0.602214 -1.1963,0.90332 -2.27051,0.90332 -0.60222,0 -1.08887,-0.09603 -1.45996,-0.288086 -0.3711,-0.192057 -0.67546,-0.473632 -0.91309,-0.844726 -0.17253,-0.263671 -0.3068,-0.624185 -0.40283,-1.081543 -0.096,-0.457354 -0.14404,-0.962725 -0.14404,-1.516113 z m 1.97265,0.0049 c 0,0.911461 0.0806,1.534019 0.2417,1.867676 0.16113,0.33366 0.39469,0.50049 0.70069,0.500488 0.20182,2e-6 0.37678,-0.0708 0.5249,-0.212402 0.14811,-0.1416 0.25716,-0.365395 0.32715,-0.671387 0.07,-0.305987 0.10497,-0.782874 0.10498,-1.430664 -10e-6,-0.950516 -0.0806,-1.58935 -0.2417,-1.916504 -0.16114,-0.327142 -0.40284,-0.490716 -0.7251,-0.490722 -0.32878,6e-6 -0.56641,0.166835 -0.71289,0.500488 -0.14649,0.333664 -0.21973,0.951339 -0.21973,1.853027 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3762" />
id="path3762"
inkscape:connector-curvature="0" />
</g>
</g>
<g
@ -2811,22 +3312,26 @@
<path
style="fill:#ffffff;fill-opacity:1;stroke:#fff8f8;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 174.60625,59.285714 0,-8.571429"
id="path4084" />
id="path4084"
inkscape:connector-curvature="0" />
<g
style="font-size:40px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;display:inline;font-family:Bitstream Vera Sans"
id="text4086">
<path
d="m 166.95976,44.483543 -1.87988,-0.336914 c 0.15625,-0.598952 0.45654,-1.057936 0.90088,-1.376953 0.44433,-0.319003 1.0734,-0.478508 1.88721,-0.478515 0.93424,7e-6 1.60969,0.17416 2.02636,0.522461 0.41666,0.348313 0.625,0.786138 0.625,1.313476 0,0.30925 -0.0846,0.589198 -0.2539,0.839844 -0.16928,0.250655 -0.42481,0.470382 -0.7666,0.65918 0.27668,0.06836 0.48827,0.148115 0.63476,0.239257 0.23763,0.146488 0.42236,0.339359 0.5542,0.578614 0.13183,0.23926 0.19775,0.524905 0.19775,0.856933 0,0.416669 -0.10905,0.816245 -0.32714,1.198731 -0.21811,0.382487 -0.53224,0.677083 -0.94239,0.883789 -0.41016,0.206705 -0.94889,0.310058 -1.61621,0.310058 -0.65104,0 -1.16455,-0.0765 -1.54053,-0.229492 -0.37597,-0.152994 -0.68522,-0.37679 -0.92773,-0.671387 -0.24251,-0.294595 -0.42887,-0.664874 -0.55908,-1.110839 l 1.9873,-0.263672 c 0.0781,0.400392 0.19938,0.677898 0.36377,0.832519 0.16439,0.154624 0.37353,0.231935 0.62744,0.231934 0.26693,10e-7 0.48909,-0.09766 0.66651,-0.292969 0.1774,-0.195311 0.26611,-0.455727 0.26611,-0.78125 0,-0.332029 -0.0855,-0.58919 -0.25635,-0.771484 -0.1709,-0.182289 -0.40283,-0.273435 -0.6958,-0.273438 -0.15625,3e-6 -0.37109,0.03907 -0.64453,0.117188 l 0.10254,-1.420899 c 0.11067,0.01628 0.19694,0.02442 0.25879,0.02441 0.26041,5e-6 0.4777,-0.083 0.65185,-0.249023 0.17415,-0.166011 0.26123,-0.362951 0.26124,-0.59082 -1e-5,-0.218094 -0.0651,-0.392247 -0.19532,-0.522461 -0.13021,-0.130203 -0.30925,-0.195307 -0.53711,-0.195313 -0.23437,6e-6 -0.4248,0.07081 -0.57129,0.212402 -0.14648,0.141608 -0.24577,0.389817 -0.29785,0.744629 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3765" />
id="path3765"
inkscape:connector-curvature="0" />
<path
d="m 177.53105,49.571434 -5.9668,0 c 0.0684,-0.589192 0.27588,-1.143391 0.62256,-1.662598 0.34668,-0.519203 0.99691,-1.131996 1.95069,-1.838379 0.58268,-0.432938 0.9554,-0.761714 1.11816,-0.986328 0.16276,-0.224604 0.24414,-0.43782 0.24414,-0.639648 0,-0.218094 -0.0806,-0.404454 -0.2417,-0.559082 -0.16113,-0.154617 -0.36377,-0.231928 -0.60791,-0.231934 -0.25391,6e-6 -0.46143,0.07976 -0.62256,0.239258 -0.16113,0.159511 -0.26937,0.441086 -0.3247,0.844727 l -1.99219,-0.161133 c 0.0781,-0.55989 0.22135,-0.996902 0.42969,-1.311035 0.20833,-0.314121 0.50211,-0.555006 0.88134,-0.722657 0.37923,-0.167636 0.90414,-0.251457 1.57471,-0.251464 0.69987,7e-6 1.2443,0.07976 1.6333,0.239257 0.38899,0.159512 0.69498,0.404467 0.91797,0.734864 0.22298,0.330409 0.33447,0.700689 0.33447,1.11084 0,0.436202 -0.12777,0.852868 -0.3833,1.25 -0.25554,0.397138 -0.72022,0.833336 -1.39404,1.308593 -0.40039,0.276695 -0.66814,0.47038 -0.80322,0.581055 -0.1351,0.110679 -0.29379,0.255536 -0.47608,0.43457 l 3.10547,0 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3767" />
id="path3767"
inkscape:connector-curvature="0" />
<path
d="m 178.39043,45.963036 c 0,-1.360673 0.24495,-2.31282 0.73486,-2.856446 0.48991,-0.543613 1.23616,-0.815422 2.23877,-0.815429 0.48177,7e-6 0.87727,0.05941 1.18652,0.178222 0.30924,0.118822 0.56152,0.273445 0.75684,0.463867 0.19531,0.190437 0.34911,0.390632 0.46142,0.600586 0.1123,0.209967 0.20264,0.454921 0.271,0.734864 0.13346,0.533859 0.20019,1.090499 0.2002,1.669922 -1e-5,1.29883 -0.21974,2.24935 -0.65918,2.851562 -0.43946,0.602214 -1.1963,0.90332 -2.27051,0.90332 -0.60222,0 -1.08887,-0.09603 -1.45996,-0.288086 -0.3711,-0.192057 -0.67546,-0.473632 -0.91309,-0.844726 -0.17253,-0.263671 -0.3068,-0.624185 -0.40283,-1.081543 -0.096,-0.457354 -0.14404,-0.962725 -0.14404,-1.516113 z m 1.97265,0.0049 c 0,0.911461 0.0806,1.534019 0.2417,1.867676 0.16113,0.33366 0.39469,0.50049 0.70069,0.500488 0.20182,2e-6 0.37678,-0.0708 0.5249,-0.212402 0.14811,-0.1416 0.25716,-0.365395 0.32715,-0.671387 0.07,-0.305987 0.10497,-0.782874 0.10498,-1.430664 -10e-6,-0.950516 -0.0806,-1.58935 -0.2417,-1.916504 -0.16114,-0.327142 -0.40284,-0.490716 -0.7251,-0.490722 -0.32878,6e-6 -0.56641,0.166835 -0.71289,0.500488 -0.14649,0.333664 -0.21973,0.951339 -0.21973,1.853027 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3769" />
id="path3769"
inkscape:connector-curvature="0" />
</g>
</g>
<g
@ -2836,22 +3341,26 @@
<path
id="path4092"
d="m 200.60625,59.285714 0,-8.571429"
style="fill:#ffffff;fill-opacity:1;stroke:#fff8f8;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
style="fill:#ffffff;fill-opacity:1;stroke:#fff8f8;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
inkscape:connector-curvature="0" />
<g
style="font-size:40px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;display:inline;font-family:Bitstream Vera Sans"
id="text4094">
<path
d="m 192.95976,44.483543 -1.87988,-0.336914 c 0.15625,-0.598952 0.45654,-1.057936 0.90088,-1.376953 0.44433,-0.319003 1.0734,-0.478508 1.88721,-0.478515 0.93424,7e-6 1.60969,0.17416 2.02636,0.522461 0.41666,0.348313 0.625,0.786138 0.625,1.313476 0,0.30925 -0.0846,0.589198 -0.2539,0.839844 -0.16928,0.250655 -0.42481,0.470382 -0.7666,0.65918 0.27668,0.06836 0.48827,0.148115 0.63476,0.239257 0.23763,0.146488 0.42236,0.339359 0.5542,0.578614 0.13183,0.23926 0.19775,0.524905 0.19775,0.856933 0,0.416669 -0.10905,0.816245 -0.32714,1.198731 -0.21811,0.382487 -0.53224,0.677083 -0.94239,0.883789 -0.41016,0.206705 -0.94889,0.310058 -1.61621,0.310058 -0.65104,0 -1.16455,-0.0765 -1.54053,-0.229492 -0.37597,-0.152994 -0.68522,-0.37679 -0.92773,-0.671387 -0.24251,-0.294595 -0.42887,-0.664874 -0.55908,-1.110839 l 1.9873,-0.263672 c 0.0781,0.400392 0.19938,0.677898 0.36377,0.832519 0.16439,0.154624 0.37353,0.231935 0.62744,0.231934 0.26693,10e-7 0.48909,-0.09766 0.66651,-0.292969 0.1774,-0.195311 0.26611,-0.455727 0.26611,-0.78125 0,-0.332029 -0.0855,-0.58919 -0.25635,-0.771484 -0.1709,-0.182289 -0.40283,-0.273435 -0.6958,-0.273438 -0.15625,3e-6 -0.37109,0.03907 -0.64453,0.117188 l 0.10254,-1.420899 c 0.11067,0.01628 0.19694,0.02442 0.25879,0.02441 0.26041,5e-6 0.4777,-0.083 0.65185,-0.249023 0.17415,-0.166011 0.26123,-0.362951 0.26124,-0.59082 -1e-5,-0.218094 -0.0651,-0.392247 -0.19532,-0.522461 -0.13021,-0.130203 -0.30925,-0.195307 -0.53711,-0.195313 -0.23437,6e-6 -0.4248,0.07081 -0.57129,0.212402 -0.14648,0.141608 -0.24577,0.389817 -0.29785,0.744629 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3772" />
id="path3772"
inkscape:connector-curvature="0" />
<path
d="m 199.63945,44.483543 -1.87988,-0.336914 c 0.15625,-0.598952 0.45654,-1.057936 0.90088,-1.376953 0.44433,-0.319003 1.0734,-0.478508 1.8872,-0.478515 0.93424,7e-6 1.6097,0.17416 2.02637,0.522461 0.41666,0.348313 0.62499,0.786138 0.625,1.313476 -1e-5,0.30925 -0.0846,0.589198 -0.25391,0.839844 -0.16927,0.250655 -0.42481,0.470382 -0.7666,0.65918 0.27669,0.06836 0.48828,0.148115 0.63477,0.239257 0.23762,0.146488 0.42236,0.339359 0.5542,0.578614 0.13183,0.23926 0.19775,0.524905 0.19775,0.856933 0,0.416669 -0.10905,0.816245 -0.32715,1.198731 -0.2181,0.382487 -0.53223,0.677083 -0.94238,0.883789 -0.41016,0.206705 -0.9489,0.310058 -1.61621,0.310058 -0.65105,0 -1.16455,-0.0765 -1.54053,-0.229492 -0.37598,-0.152994 -0.68522,-0.37679 -0.92773,-0.671387 -0.24252,-0.294595 -0.42888,-0.664874 -0.55908,-1.110839 l 1.9873,-0.263672 c 0.0781,0.400392 0.19938,0.677898 0.36377,0.832519 0.16438,0.154624 0.37353,0.231935 0.62744,0.231934 0.26692,10e-7 0.48909,-0.09766 0.6665,-0.292969 0.17741,-0.195311 0.26611,-0.455727 0.26612,-0.78125 -1e-5,-0.332029 -0.0855,-0.58919 -0.25635,-0.771484 -0.1709,-0.182289 -0.40284,-0.273435 -0.6958,-0.273438 -0.15625,3e-6 -0.3711,0.03907 -0.64453,0.117188 l 0.10254,-1.420899 c 0.11067,0.01628 0.19693,0.02442 0.25879,0.02441 0.26041,5e-6 0.47769,-0.083 0.65185,-0.249023 0.17415,-0.166011 0.26123,-0.362951 0.26123,-0.59082 0,-0.218094 -0.0651,-0.392247 -0.19531,-0.522461 -0.13021,-0.130203 -0.30925,-0.195307 -0.53711,-0.195313 -0.23438,6e-6 -0.42481,0.07081 -0.57129,0.212402 -0.14649,0.141608 -0.24577,0.389817 -0.29785,0.744629 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3774" />
id="path3774"
inkscape:connector-curvature="0" />
<path
d="m 204.39043,45.963036 c 0,-1.360673 0.24495,-2.31282 0.73486,-2.856446 0.48991,-0.543613 1.23616,-0.815422 2.23877,-0.815429 0.48177,7e-6 0.87727,0.05941 1.18652,0.178222 0.30924,0.118822 0.56152,0.273445 0.75684,0.463867 0.19531,0.190437 0.34911,0.390632 0.46142,0.600586 0.1123,0.209967 0.20264,0.454921 0.271,0.734864 0.13346,0.533859 0.20019,1.090499 0.2002,1.669922 -1e-5,1.29883 -0.21974,2.24935 -0.65918,2.851562 -0.43946,0.602214 -1.1963,0.90332 -2.27051,0.90332 -0.60222,0 -1.08887,-0.09603 -1.45996,-0.288086 -0.3711,-0.192057 -0.67546,-0.473632 -0.91309,-0.844726 -0.17253,-0.263671 -0.3068,-0.624185 -0.40283,-1.081543 -0.096,-0.457354 -0.14404,-0.962725 -0.14404,-1.516113 z m 1.97265,0.0049 c 0,0.911461 0.0806,1.534019 0.2417,1.867676 0.16113,0.33366 0.39469,0.50049 0.70069,0.500488 0.20182,2e-6 0.37678,-0.0708 0.5249,-0.212402 0.14811,-0.1416 0.25716,-0.365395 0.32715,-0.671387 0.07,-0.305987 0.10497,-0.782874 0.10498,-1.430664 -10e-6,-0.950516 -0.0806,-1.58935 -0.2417,-1.916504 -0.16114,-0.327142 -0.40284,-0.490716 -0.7251,-0.490722 -0.32878,6e-6 -0.56641,0.166835 -0.71289,0.500488 -0.14649,0.333664 -0.21973,0.951339 -0.21973,1.853027 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3776" />
id="path3776"
inkscape:connector-curvature="0" />
</g>
</g>
<g
@ -2861,22 +3370,26 @@
<path
style="fill:#ffffff;fill-opacity:1;stroke:#fff8f8;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 226.60625,59.285714 0,-8.571429"
id="path4100" />
id="path4100"
inkscape:connector-curvature="0" />
<g
style="font-size:40px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;display:inline;font-family:Bitstream Vera Sans"
id="text4102">
<path
d="m 218.95976,44.483543 -1.87988,-0.336914 c 0.15625,-0.598952 0.45654,-1.057936 0.90088,-1.376953 0.44433,-0.319003 1.0734,-0.478508 1.88721,-0.478515 0.93424,7e-6 1.60969,0.17416 2.02636,0.522461 0.41666,0.348313 0.625,0.786138 0.625,1.313476 0,0.30925 -0.0846,0.589198 -0.2539,0.839844 -0.16928,0.250655 -0.42481,0.470382 -0.7666,0.65918 0.27668,0.06836 0.48827,0.148115 0.63476,0.239257 0.23763,0.146488 0.42236,0.339359 0.5542,0.578614 0.13183,0.23926 0.19775,0.524905 0.19775,0.856933 0,0.416669 -0.10905,0.816245 -0.32714,1.198731 -0.21811,0.382487 -0.53224,0.677083 -0.94239,0.883789 -0.41016,0.206705 -0.94889,0.310058 -1.61621,0.310058 -0.65104,0 -1.16455,-0.0765 -1.54053,-0.229492 -0.37597,-0.152994 -0.68522,-0.37679 -0.92773,-0.671387 -0.24251,-0.294595 -0.42887,-0.664874 -0.55908,-1.110839 l 1.9873,-0.263672 c 0.0781,0.400392 0.19938,0.677898 0.36377,0.832519 0.16439,0.154624 0.37353,0.231935 0.62744,0.231934 0.26693,10e-7 0.48909,-0.09766 0.66651,-0.292969 0.1774,-0.195311 0.26611,-0.455727 0.26611,-0.78125 0,-0.332029 -0.0855,-0.58919 -0.25635,-0.771484 -0.1709,-0.182289 -0.40283,-0.273435 -0.6958,-0.273438 -0.15625,3e-6 -0.37109,0.03907 -0.64453,0.117188 l 0.10254,-1.420899 c 0.11067,0.01628 0.19694,0.02442 0.25879,0.02441 0.26041,5e-6 0.4777,-0.083 0.65185,-0.249023 0.17415,-0.166011 0.26123,-0.362951 0.26124,-0.59082 -1e-5,-0.218094 -0.0651,-0.392247 -0.19532,-0.522461 -0.13021,-0.130203 -0.30925,-0.195307 -0.53711,-0.195313 -0.23437,6e-6 -0.4248,0.07081 -0.57129,0.212402 -0.14648,0.141608 -0.24577,0.389817 -0.29785,0.744629 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3780" />
id="path3780"
inkscape:connector-curvature="0" />
<path
d="m 227.12871,48.233543 -3.62305,0 0,-1.635742 3.62305,-4.30664 1.7334,0 0,4.399414 0.89843,0 0,1.542968 -0.89843,0 0,1.337891 -1.7334,0 z m 0,-1.542968 0,-2.250977 -1.91406,2.250977 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3782" />
id="path3782"
inkscape:connector-curvature="0" />
<path
d="m 230.39043,45.963036 c 0,-1.360673 0.24495,-2.31282 0.73486,-2.856446 0.48991,-0.543613 1.23616,-0.815422 2.23877,-0.815429 0.48177,7e-6 0.87727,0.05941 1.18652,0.178222 0.30924,0.118822 0.56152,0.273445 0.75684,0.463867 0.19531,0.190437 0.34911,0.390632 0.46142,0.600586 0.1123,0.209967 0.20264,0.454921 0.271,0.734864 0.13346,0.533859 0.20019,1.090499 0.2002,1.669922 -1e-5,1.29883 -0.21974,2.24935 -0.65918,2.851562 -0.43946,0.602214 -1.1963,0.90332 -2.27051,0.90332 -0.60222,0 -1.08887,-0.09603 -1.45996,-0.288086 -0.3711,-0.192057 -0.67546,-0.473632 -0.91309,-0.844726 -0.17253,-0.263671 -0.3068,-0.624185 -0.40283,-1.081543 -0.096,-0.457354 -0.14404,-0.962725 -0.14404,-1.516113 z m 1.97265,0.0049 c 0,0.911461 0.0806,1.534019 0.2417,1.867676 0.16113,0.33366 0.39469,0.50049 0.70069,0.500488 0.20182,2e-6 0.37678,-0.0708 0.5249,-0.212402 0.14811,-0.1416 0.25716,-0.365395 0.32715,-0.671387 0.07,-0.305987 0.10497,-0.782874 0.10498,-1.430664 -10e-6,-0.950516 -0.0806,-1.58935 -0.2417,-1.916504 -0.16114,-0.327142 -0.40284,-0.490716 -0.7251,-0.490722 -0.32878,6e-6 -0.56641,0.166835 -0.71289,0.500488 -0.14649,0.333664 -0.21973,0.951339 -0.21973,1.853027 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3784" />
id="path3784"
inkscape:connector-curvature="0" />
</g>
</g>
<g
@ -2886,22 +3399,26 @@
<path
id="path4108"
d="m 250.60625,59.285714 0,-8.571429"
style="fill:#ffffff;fill-opacity:1;stroke:#fff8f8;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
style="fill:#ffffff;fill-opacity:1;stroke:#fff8f8;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
inkscape:connector-curvature="0" />
<g
style="font-size:40px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;display:inline;font-family:Bitstream Vera Sans"
id="text4110">
<path
d="m 242.95976,44.483543 -1.87988,-0.336914 c 0.15625,-0.598952 0.45654,-1.057936 0.90088,-1.376953 0.44433,-0.319003 1.0734,-0.478508 1.88721,-0.478515 0.93424,7e-6 1.60969,0.17416 2.02636,0.522461 0.41666,0.348313 0.625,0.786138 0.625,1.313476 0,0.30925 -0.0846,0.589198 -0.2539,0.839844 -0.16928,0.250655 -0.42481,0.470382 -0.7666,0.65918 0.27668,0.06836 0.48827,0.148115 0.63476,0.239257 0.23763,0.146488 0.42236,0.339359 0.5542,0.578614 0.13183,0.23926 0.19775,0.524905 0.19775,0.856933 0,0.416669 -0.10905,0.816245 -0.32714,1.198731 -0.21811,0.382487 -0.53224,0.677083 -0.94239,0.883789 -0.41016,0.206705 -0.94889,0.310058 -1.61621,0.310058 -0.65104,0 -1.16455,-0.0765 -1.54053,-0.229492 -0.37597,-0.152994 -0.68522,-0.37679 -0.92773,-0.671387 -0.24251,-0.294595 -0.42887,-0.664874 -0.55908,-1.110839 l 1.9873,-0.263672 c 0.0781,0.400392 0.19938,0.677898 0.36377,0.832519 0.16439,0.154624 0.37353,0.231935 0.62744,0.231934 0.26693,10e-7 0.48909,-0.09766 0.66651,-0.292969 0.1774,-0.195311 0.26611,-0.455727 0.26611,-0.78125 0,-0.332029 -0.0855,-0.58919 -0.25635,-0.771484 -0.1709,-0.182289 -0.40283,-0.273435 -0.6958,-0.273438 -0.15625,3e-6 -0.37109,0.03907 -0.64453,0.117188 l 0.10254,-1.420899 c 0.11067,0.01628 0.19694,0.02442 0.25879,0.02441 0.26041,5e-6 0.4777,-0.083 0.65185,-0.249023 0.17415,-0.166011 0.26123,-0.362951 0.26124,-0.59082 -1e-5,-0.218094 -0.0651,-0.392247 -0.19532,-0.522461 -0.13021,-0.130203 -0.30925,-0.195307 -0.53711,-0.195313 -0.23437,6e-6 -0.4248,0.07081 -0.57129,0.212402 -0.14648,0.141608 -0.24577,0.389817 -0.29785,0.744629 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3787" />
id="path3787"
inkscape:connector-curvature="0" />
<path
d="m 248.5164,42.413231 4.72168,0 0,1.586914 -3.19824,0 -0.1709,1.074219 c 0.22135,-0.104162 0.44027,-0.182287 0.65674,-0.234375 0.21647,-0.05208 0.4305,-0.07812 0.64209,-0.07813 0.71614,5e-6 1.2972,0.216476 1.74316,0.649414 0.44596,0.432946 0.66894,0.978193 0.66895,1.635742 -1e-5,0.462242 -0.11475,0.906577 -0.34424,1.333008 -0.2295,0.426433 -0.55502,0.751953 -0.97656,0.976562 -0.42156,0.22461 -0.96111,0.336914 -1.61865,0.336914 -0.47201,0 -0.87647,-0.04476 -1.21338,-0.134277 -0.33692,-0.08952 -0.62338,-0.222982 -0.85938,-0.400391 -0.236,-0.177408 -0.42724,-0.378417 -0.57373,-0.603027 -0.14648,-0.224608 -0.26855,-0.504556 -0.36621,-0.839844 l 2.01172,-0.219726 c 0.0488,0.322267 0.16276,0.567221 0.3418,0.734863 0.17903,0.167644 0.39225,0.251466 0.63965,0.251465 0.27668,10e-7 0.50536,-0.104979 0.68603,-0.314942 0.18066,-0.209959 0.27099,-0.523272 0.271,-0.939941 -1e-5,-0.42643 -0.0911,-0.738929 -0.27344,-0.9375 -0.1823,-0.198564 -0.42481,-0.297848 -0.72754,-0.297852 -0.19206,4e-6 -0.37761,0.04721 -0.55664,0.141602 -0.13347,0.06836 -0.27995,0.192061 -0.43945,0.371094 l -1.69434,-0.244141 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3789" />
id="path3789"
inkscape:connector-curvature="0" />
<path
d="m 254.39043,45.963036 c 0,-1.360673 0.24495,-2.31282 0.73486,-2.856446 0.48991,-0.543613 1.23616,-0.815422 2.23877,-0.815429 0.48177,7e-6 0.87727,0.05941 1.18652,0.178222 0.30924,0.118822 0.56152,0.273445 0.75684,0.463867 0.19531,0.190437 0.34911,0.390632 0.46142,0.600586 0.1123,0.209967 0.20264,0.454921 0.271,0.734864 0.13346,0.533859 0.20019,1.090499 0.2002,1.669922 -1e-5,1.29883 -0.21974,2.24935 -0.65918,2.851562 -0.43946,0.602214 -1.1963,0.90332 -2.27051,0.90332 -0.60222,0 -1.08887,-0.09603 -1.45996,-0.288086 -0.3711,-0.192057 -0.67546,-0.473632 -0.91309,-0.844726 -0.17253,-0.263671 -0.3068,-0.624185 -0.40283,-1.081543 -0.096,-0.457354 -0.14404,-0.962725 -0.14404,-1.516113 z m 1.97265,0.0049 c 0,0.911461 0.0806,1.534019 0.2417,1.867676 0.16113,0.33366 0.39469,0.50049 0.70069,0.500488 0.20182,2e-6 0.37678,-0.0708 0.5249,-0.212402 0.14811,-0.1416 0.25716,-0.365395 0.32715,-0.671387 0.07,-0.305987 0.10497,-0.782874 0.10498,-1.430664 -10e-6,-0.950516 -0.0806,-1.58935 -0.2417,-1.916504 -0.16114,-0.327142 -0.40284,-0.490716 -0.7251,-0.490722 -0.32878,6e-6 -0.56641,0.166835 -0.71289,0.500488 -0.14649,0.333664 -0.21973,0.951339 -0.21973,1.853027 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3791" />
id="path3791"
inkscape:connector-curvature="0" />
</g>
</g>
<g
@ -2911,22 +3428,26 @@
<path
style="fill:#ffffff;fill-opacity:1;stroke:#fff8f8;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 6.5622945,59.285714 0,-8.571429"
id="path4116" />
id="path4116"
inkscape:connector-curvature="0" />
<g
style="font-size:40px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;display:inline;font-family:Bitstream Vera Sans"
id="text4118">
<path
d="m 2.851357,49.571434 -5.9667969,0 c 0.068359,-0.589192 0.2758784,-1.143391 0.6225586,-1.662598 0.3466785,-0.519203 0.9969057,-1.131996 1.9506836,-1.838379 0.58267887,-0.432938 0.95539985,-0.761714 1.11816406,-0.986328 0.1627563,-0.224604 0.24413642,-0.43782 0.24414062,-0.639648 -4.2e-6,-0.218094 -0.0805705,-0.404454 -0.24169922,-0.559082 -0.1611366,-0.154617 -0.36377312,-0.231928 -0.60791015,-0.231934 -0.25390935,6e-6 -0.46142867,0.07976 -0.6225586,0.239258 -0.16113537,0.159511 -0.26937094,0.441086 -0.32470703,0.844727 L -2.9689555,44.576317 c 0.078124,-0.55989 0.2213535,-0.996902 0.4296875,-1.311035 0.2083323,-0.314121 0.5021145,-0.555006 0.8813476,-0.722657 0.3792297,-0.167636 0.90413153,-0.251457 1.57470707,-0.251464 0.6998658,7e-6 1.24429883,0.07976 1.63330083,0.239257 0.388992,0.159512 0.6949813,0.404467 0.9179687,0.734864 0.2229757,0.330409 0.3344665,0.700689 0.3344727,1.11084 -6.2e-6,0.436202 -0.127773,0.852868 -0.3833008,1.25 -0.2555394,0.397138 -0.7202199,0.833336 -1.394043,1.308593 -0.40039462,0.276695 -0.66813524,0.47038 -0.80322265,0.581055 -0.13509461,0.110679 -0.29378586,0.255536 -0.47607422,0.43457 l 3.10546877,0 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3794" />
id="path3794"
inkscape:connector-curvature="0" />
<path
d="M 9.4675679,44.024559 7.4900289,44.2687 C 7.4379414,43.992013 7.3508647,43.7967 7.2287984,43.682762 7.1067243,43.568836 6.956171,43.51187 6.7771382,43.511864 c -0.3222687,6e-6 -0.5729195,0.162766 -0.7519531,0.488281 -0.1302109,0.23438 -0.2262395,0.735682 -0.2880859,1.503906 0.2376275,-0.240881 0.4817679,-0.419103 0.7324218,-0.534668 0.2506477,-0.115555 0.5403609,-0.173335 0.8691407,-0.17334 0.6380161,5e-6 1.1775664,0.22787 1.6186523,0.683594 0.4410746,0.455733 0.6616148,1.033532 0.6616211,1.733399 -6.3e-6,0.472007 -0.1114971,0.903321 -0.3344726,1.293945 -0.2229876,0.390626 -0.5322321,0.686035 -0.9277344,0.88623 -0.3955125,0.200196 -0.8911175,0.300293 -1.4868164,0.300293 -0.7161487,0 -1.2906924,-0.12207 -1.7236328,-0.366211 C 4.7133347,49.083153 4.3674692,48.693342 4.1086812,48.15786 3.8498916,47.62238 3.7204972,46.913559 3.7204976,46.031395 c -4e-7,-1.292313 0.2718092,-2.238764 0.8154297,-2.839356 0.543618,-0.600578 1.297198,-0.900871 2.2607422,-0.900878 0.5696574,7e-6 1.0196895,0.06593 1.3500976,0.197753 0.3303985,0.131843 0.6046495,0.324714 0.8227539,0.578614 0.2180931,0.253912 0.3841086,0.572922 0.4980469,0.957031 z m -3.6621094,3.188477 c -2.5e-6,0.387371 0.097654,0.690919 0.2929688,0.910644 0.1953095,0.219728 0.4345671,0.329591 0.7177734,0.32959 0.2604129,10e-7 0.4785117,-0.09928 0.6542969,-0.297852 0.1757769,-0.198566 0.2636674,-0.494789 0.2636719,-0.888671 -4.5e-6,-0.403644 -0.09115,-0.71126 -0.2734375,-0.922852 -0.1822957,-0.211585 -0.4085324,-0.317379 -0.678711,-0.317383 -0.2766959,4e-6 -0.5086292,0.102543 -0.6958007,0.307617 -0.1871771,0.205081 -0.2807643,0.49805 -0.2807618,0.878907 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3796" />
id="path3796"
inkscape:connector-curvature="0" />
<path
d="m 10.390419,45.963036 c 0,-1.360673 0.244954,-2.31282 0.734864,-2.856446 0.489907,-0.543613 1.236163,-0.815422 2.238769,-0.815429 0.481767,7e-6 0.877275,0.05941 1.186524,0.178222 0.30924,0.118822 0.561518,0.273445 0.756836,0.463867 0.195307,0.190437 0.349115,0.390632 0.461425,0.600586 0.112299,0.209967 0.202631,0.454921 0.270997,0.734864 0.133457,0.533859 0.200189,1.090499 0.200195,1.669922 -6e-6,1.29883 -0.219733,2.24935 -0.65918,2.851562 -0.439458,0.602214 -1.196293,0.90332 -2.270508,0.90332 -0.602216,0 -1.088869,-0.09603 -1.459961,-0.288086 -0.371095,-0.192057 -0.675457,-0.473632 -0.913086,-0.844726 -0.172526,-0.263671 -0.306804,-0.624185 -0.402832,-1.081543 -0.09603,-0.457354 -0.144043,-0.962725 -0.144043,-1.516113 z m 1.972657,0.0049 c -3e-6,0.911461 0.08056,1.534019 0.241699,1.867676 0.16113,0.33366 0.394691,0.50049 0.700684,0.500488 0.201819,2e-6 0.376786,-0.0708 0.524902,-0.212402 0.148108,-0.1416 0.257157,-0.365395 0.327148,-0.671387 0.06998,-0.305987 0.104977,-0.782874 0.104981,-1.430664 -4e-6,-0.950516 -0.08057,-1.58935 -0.241699,-1.916504 -0.161137,-0.327142 -0.402836,-0.490716 -0.725098,-0.490722 -0.328779,6e-6 -0.566409,0.166835 -0.712891,0.500488 -0.146487,0.333664 -0.219729,0.951339 -0.219726,1.853027 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3798" />
id="path3798"
inkscape:connector-curvature="0" />
</g>
</g>
<g
@ -2936,22 +3457,26 @@
<path
id="path4220"
d="m -27.437706,59.285714 0,-8.571429"
style="fill:#ffffff;fill-opacity:1;stroke:#fff8f8;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
style="fill:#ffffff;fill-opacity:1;stroke:#fff8f8;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
inkscape:connector-curvature="0" />
<g
style="font-size:40px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;display:inline;font-family:Bitstream Vera Sans"
id="text4222">
<path
d="m -31.148643,49.571434 -5.966797,0 c 0.06836,-0.589192 0.275878,-1.143391 0.622558,-1.662598 0.346679,-0.519203 0.996906,-1.131996 1.950684,-1.838379 0.582679,-0.432938 0.9554,-0.761714 1.118164,-0.986328 0.162756,-0.224604 0.244136,-0.43782 0.244141,-0.639648 -5e-6,-0.218094 -0.08057,-0.404454 -0.2417,-0.559082 -0.161136,-0.154617 -0.363773,-0.231928 -0.60791,-0.231934 -0.253909,6e-6 -0.461429,0.07976 -0.622558,0.239258 -0.161136,0.159511 -0.269371,0.441086 -0.324707,0.844727 l -1.992188,-0.161133 c 0.07813,-0.55989 0.221354,-0.996902 0.429688,-1.311035 0.208332,-0.314121 0.502114,-0.555006 0.881347,-0.722657 0.37923,-0.167636 0.904132,-0.251457 1.574707,-0.251464 0.699866,7e-6 1.244299,0.07976 1.633301,0.239257 0.388992,0.159512 0.694981,0.404467 0.917969,0.734864 0.222975,0.330409 0.334466,0.700689 0.334472,1.11084 -6e-6,0.436202 -0.127773,0.852868 -0.3833,1.25 -0.25554,0.397138 -0.72022,0.833336 -1.394043,1.308593 -0.400395,0.276695 -0.668136,0.47038 -0.803223,0.581055 -0.135095,0.110679 -0.293786,0.255536 -0.476074,0.43457 l 3.105469,0 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3801" />
id="path3801"
inkscape:connector-curvature="0" />
<path
d="m -29.483604,42.413231 4.721679,0 0,1.586914 -3.198242,0 -0.170898,1.074219 c 0.221351,-0.104162 0.440264,-0.182287 0.656738,-0.234375 0.216468,-0.05208 0.430498,-0.07812 0.64209,-0.07813 0.716141,5e-6 1.297195,0.216476 1.743164,0.649414 0.445957,0.432946 0.668939,0.978193 0.668945,1.635742 -6e-6,0.462242 -0.114752,0.906577 -0.344238,1.333008 -0.229498,0.426433 -0.555019,0.751953 -0.976563,0.976562 -0.421554,0.22461 -0.961104,0.336914 -1.618652,0.336914 -0.472008,0 -0.876467,-0.04476 -1.213379,-0.134277 -0.336916,-0.08952 -0.623374,-0.222982 -0.859375,-0.400391 -0.236004,-0.177408 -0.427247,-0.378417 -0.57373,-0.603027 -0.146485,-0.224608 -0.268555,-0.504556 -0.366211,-0.839844 l 2.011718,-0.219726 c 0.04883,0.322267 0.162758,0.567221 0.341797,0.734863 0.179034,0.167644 0.39225,0.251466 0.639649,0.251465 0.276689,10e-7 0.505367,-0.104979 0.686035,-0.314942 0.18066,-0.209959 0.270992,-0.523272 0.270996,-0.939941 -4e-6,-0.42643 -0.09115,-0.738929 -0.273437,-0.9375 -0.182296,-0.198564 -0.424809,-0.297848 -0.72754,-0.297852 -0.19206,4e-6 -0.377607,0.04721 -0.55664,0.141602 -0.133466,0.06836 -0.279951,0.192061 -0.439453,0.371094 l -1.694336,-0.244141 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3803" />
id="path3803"
inkscape:connector-curvature="0" />
<path
d="m -23.609581,45.963036 c 0,-1.360673 0.244954,-2.31282 0.734863,-2.856446 0.489908,-0.543613 1.236163,-0.815422 2.23877,-0.815429 0.481767,7e-6 0.877274,0.05941 1.186523,0.178222 0.30924,0.118822 0.561519,0.273445 0.756836,0.463867 0.195307,0.190437 0.349116,0.390632 0.461426,0.600586 0.112299,0.209967 0.202631,0.454921 0.270996,0.734864 0.133457,0.533859 0.200189,1.090499 0.200195,1.669922 -6e-6,1.29883 -0.219732,2.24935 -0.659179,2.851562 -0.439459,0.602214 -1.196294,0.90332 -2.270508,0.90332 -0.602216,0 -1.08887,-0.09603 -1.459961,-0.288086 -0.371095,-0.192057 -0.675457,-0.473632 -0.913086,-0.844726 -0.172527,-0.263671 -0.306804,-0.624185 -0.402832,-1.081543 -0.09603,-0.457354 -0.144043,-0.962725 -0.144043,-1.516113 z m 1.972656,0.0049 c -2e-6,0.911461 0.08056,1.534019 0.241699,1.867676 0.161131,0.33366 0.394691,0.50049 0.700684,0.500488 0.201819,2e-6 0.376787,-0.0708 0.524902,-0.212402 0.148108,-0.1416 0.257158,-0.365395 0.327149,-0.671387 0.06998,-0.305987 0.104976,-0.782874 0.10498,-1.430664 -4e-6,-0.950516 -0.08057,-1.58935 -0.241699,-1.916504 -0.161137,-0.327142 -0.402836,-0.490716 -0.725098,-0.490722 -0.328779,6e-6 -0.566409,0.166835 -0.71289,0.500488 -0.146487,0.333664 -0.219729,0.951339 -0.219727,1.853027 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3805" />
id="path3805"
inkscape:connector-curvature="0" />
</g>
</g>
<g
@ -2961,22 +3486,26 @@
<path
style="fill:#ffffff;fill-opacity:1;stroke:#fff8f8;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m -61.437706,59.285714 0,-8.571429"
id="path4228" />
id="path4228"
inkscape:connector-curvature="0" />
<g
style="font-size:40px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;display:inline;font-family:Bitstream Vera Sans"
id="text4230">
<path
d="m -65.148643,49.571434 -5.966797,0 c 0.06836,-0.589192 0.275878,-1.143391 0.622558,-1.662598 0.346679,-0.519203 0.996906,-1.131996 1.950684,-1.838379 0.582679,-0.432938 0.9554,-0.761714 1.118164,-0.986328 0.162756,-0.224604 0.244136,-0.43782 0.244141,-0.639648 -5e-6,-0.218094 -0.08057,-0.404454 -0.2417,-0.559082 -0.161136,-0.154617 -0.363773,-0.231928 -0.60791,-0.231934 -0.253909,6e-6 -0.461429,0.07976 -0.622558,0.239258 -0.161136,0.159511 -0.269371,0.441086 -0.324707,0.844727 l -1.992188,-0.161133 c 0.07813,-0.55989 0.221354,-0.996902 0.429688,-1.311035 0.208332,-0.314121 0.502114,-0.555006 0.881347,-0.722657 0.37923,-0.167636 0.904132,-0.251457 1.574707,-0.251464 0.699866,7e-6 1.244299,0.07976 1.633301,0.239257 0.388992,0.159512 0.694981,0.404467 0.917969,0.734864 0.222975,0.330409 0.334466,0.700689 0.334472,1.11084 -6e-6,0.436202 -0.127773,0.852868 -0.3833,1.25 -0.25554,0.397138 -0.72022,0.833336 -1.394043,1.308593 -0.400395,0.276695 -0.668136,0.47038 -0.803223,0.581055 -0.135095,0.110679 -0.293786,0.255536 -0.476074,0.43457 l 3.105469,0 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3809" />
id="path3809"
inkscape:connector-curvature="0" />
<path
d="m -60.8713,48.233543 -3.623047,0 0,-1.635742 3.623047,-4.30664 1.733399,0 0,4.399414 0.898437,0 0,1.542968 -0.898437,0 0,1.337891 -1.733399,0 z m 0,-1.542968 0,-2.250977 -1.914062,2.250977 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3811" />
id="path3811"
inkscape:connector-curvature="0" />
<path
d="m -57.609581,45.963036 c 0,-1.360673 0.244954,-2.31282 0.734863,-2.856446 0.489908,-0.543613 1.236163,-0.815422 2.23877,-0.815429 0.481767,7e-6 0.877274,0.05941 1.186523,0.178222 0.30924,0.118822 0.561519,0.273445 0.756836,0.463867 0.195307,0.190437 0.349116,0.390632 0.461426,0.600586 0.112299,0.209967 0.202631,0.454921 0.270996,0.734864 0.133457,0.533859 0.200189,1.090499 0.200195,1.669922 -6e-6,1.29883 -0.219732,2.24935 -0.659179,2.851562 -0.439459,0.602214 -1.196294,0.90332 -2.270508,0.90332 -0.602216,0 -1.08887,-0.09603 -1.459961,-0.288086 -0.371095,-0.192057 -0.675457,-0.473632 -0.913086,-0.844726 -0.172527,-0.263671 -0.306804,-0.624185 -0.402832,-1.081543 -0.09603,-0.457354 -0.144043,-0.962725 -0.144043,-1.516113 z m 1.972656,0.0049 c -2e-6,0.911461 0.08056,1.534019 0.241699,1.867676 0.161131,0.33366 0.394691,0.50049 0.700684,0.500488 0.201819,2e-6 0.376787,-0.0708 0.524902,-0.212402 0.148108,-0.1416 0.257158,-0.365395 0.327149,-0.671387 0.06998,-0.305987 0.104976,-0.782874 0.10498,-1.430664 -4e-6,-0.950516 -0.08057,-1.58935 -0.241699,-1.916504 -0.161137,-0.327142 -0.402836,-0.490716 -0.725098,-0.490722 -0.328779,6e-6 -0.566409,0.166835 -0.71289,0.500488 -0.146487,0.333664 -0.219729,0.951339 -0.219727,1.853027 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3813" />
id="path3813"
inkscape:connector-curvature="0" />
</g>
</g>
<g
@ -2986,22 +3515,26 @@
<path
id="path4236"
d="m -85.437706,59.285714 0,-8.571429"
style="fill:#ffffff;fill-opacity:1;stroke:#fff8f8;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
style="fill:#ffffff;fill-opacity:1;stroke:#fff8f8;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
inkscape:connector-curvature="0" />
<g
style="font-size:40px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;display:inline;font-family:Bitstream Vera Sans"
id="text4238">
<path
d="m -89.148643,49.571434 -5.966797,0 c 0.06836,-0.589192 0.275878,-1.143391 0.622558,-1.662598 0.346679,-0.519203 0.996906,-1.131996 1.950684,-1.838379 0.582679,-0.432938 0.9554,-0.761714 1.118164,-0.986328 0.162756,-0.224604 0.244136,-0.43782 0.244141,-0.639648 -5e-6,-0.218094 -0.08057,-0.404454 -0.2417,-0.559082 -0.161136,-0.154617 -0.363773,-0.231928 -0.60791,-0.231934 -0.253909,6e-6 -0.461429,0.07976 -0.622558,0.239258 -0.161136,0.159511 -0.269371,0.441086 -0.324707,0.844727 l -1.992188,-0.161133 c 0.07813,-0.55989 0.221354,-0.996902 0.429688,-1.311035 0.208332,-0.314121 0.502114,-0.555006 0.881347,-0.722657 0.37923,-0.167636 0.904132,-0.251457 1.574707,-0.251464 0.699866,7e-6 1.244299,0.07976 1.633301,0.239257 0.388992,0.159512 0.694981,0.404467 0.917969,0.734864 0.222975,0.330409 0.334466,0.700689 0.334472,1.11084 -6e-6,0.436202 -0.127773,0.852868 -0.3833,1.25 -0.25554,0.397138 -0.72022,0.833336 -1.394043,1.308593 -0.400395,0.276695 -0.668136,0.47038 -0.803223,0.581055 -0.135095,0.110679 -0.293786,0.255536 -0.476074,0.43457 l 3.105469,0 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3816" />
id="path3816"
inkscape:connector-curvature="0" />
<path
d="m -86.360558,44.483543 -1.879882,-0.336914 c 0.156249,-0.598952 0.456542,-1.057936 0.900879,-1.376953 0.444334,-0.319003 1.073402,-0.478508 1.887207,-0.478515 0.93424,7e-6 1.609695,0.17416 2.026367,0.522461 0.416661,0.348313 0.624994,0.786138 0.625,1.313476 -6e-6,0.30925 -0.08464,0.589198 -0.253906,0.839844 -0.169277,0.250655 -0.42481,0.470382 -0.766602,0.65918 0.276687,0.06836 0.488276,0.148115 0.634766,0.239257 0.237624,0.146488 0.422357,0.339359 0.554199,0.578614 0.13183,0.23926 0.197747,0.524905 0.197754,0.856933 -7e-6,0.416669 -0.109056,0.816245 -0.327149,1.198731 -0.218104,0.382487 -0.532232,0.677083 -0.942383,0.883789 -0.41016,0.206705 -0.948897,0.310058 -1.61621,0.310058 -0.651045,0 -1.164553,-0.0765 -1.540528,-0.229492 -0.375978,-0.152994 -0.685222,-0.37679 -0.927734,-0.671387 -0.242514,-0.294595 -0.428874,-0.664874 -0.559082,-1.110839 l 1.987304,-0.263672 c 0.07812,0.400392 0.199379,0.677898 0.36377,0.832519 0.164385,0.154624 0.373532,0.231935 0.627441,0.231934 0.266924,10e-7 0.489092,-0.09766 0.666504,-0.292969 0.177405,-0.195311 0.266109,-0.455727 0.266114,-0.78125 -5e-6,-0.332029 -0.08545,-0.58919 -0.256348,-0.771484 -0.170902,-0.182289 -0.402836,-0.273435 -0.695801,-0.273438 -0.156253,3e-6 -0.371097,0.03907 -0.644531,0.117188 l 0.102539,-1.420899 c 0.110674,0.01628 0.196937,0.02442 0.258789,0.02441 0.260413,5e-6 0.477698,-0.083 0.651855,-0.249023 0.17415,-0.166011 0.261227,-0.362951 0.261231,-0.59082 -4e-6,-0.218094 -0.06511,-0.392247 -0.195313,-0.522461 -0.130212,-0.130203 -0.309248,-0.195307 -0.537109,-0.195313 -0.234378,6e-6 -0.424807,0.07081 -0.571289,0.212402 -0.146487,0.141608 -0.245771,0.389817 -0.297852,0.744629 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3818" />
id="path3818"
inkscape:connector-curvature="0" />
<path
d="m -81.609581,45.963036 c 0,-1.360673 0.244954,-2.31282 0.734863,-2.856446 0.489908,-0.543613 1.236163,-0.815422 2.23877,-0.815429 0.481767,7e-6 0.877274,0.05941 1.186523,0.178222 0.30924,0.118822 0.561519,0.273445 0.756836,0.463867 0.195307,0.190437 0.349116,0.390632 0.461426,0.600586 0.112299,0.209967 0.202631,0.454921 0.270996,0.734864 0.133457,0.533859 0.200189,1.090499 0.200195,1.669922 -6e-6,1.29883 -0.219732,2.24935 -0.659179,2.851562 -0.439459,0.602214 -1.196294,0.90332 -2.270508,0.90332 -0.602216,0 -1.08887,-0.09603 -1.459961,-0.288086 -0.371095,-0.192057 -0.675457,-0.473632 -0.913086,-0.844726 -0.172527,-0.263671 -0.306804,-0.624185 -0.402832,-1.081543 -0.09603,-0.457354 -0.144043,-0.962725 -0.144043,-1.516113 z m 1.972656,0.0049 c -2e-6,0.911461 0.08056,1.534019 0.241699,1.867676 0.161131,0.33366 0.394691,0.50049 0.700684,0.500488 0.201819,2e-6 0.376787,-0.0708 0.524902,-0.212402 0.148108,-0.1416 0.257158,-0.365395 0.327149,-0.671387 0.06998,-0.305987 0.104976,-0.782874 0.10498,-1.430664 -4e-6,-0.950516 -0.08057,-1.58935 -0.241699,-1.916504 -0.161137,-0.327142 -0.402836,-0.490716 -0.725098,-0.490722 -0.328779,6e-6 -0.566409,0.166835 -0.71289,0.500488 -0.146487,0.333664 -0.219729,0.951339 -0.219727,1.853027 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3820" />
id="path3820"
inkscape:connector-curvature="0" />
</g>
</g>
<g
@ -3011,22 +3544,26 @@
<path
style="fill:#ffffff;fill-opacity:1;stroke:#fff8f8;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m -111.43771,59.285714 0,-8.571429"
id="path4244" />
id="path4244"
inkscape:connector-curvature="0" />
<g
style="font-size:40px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;display:inline;font-family:Bitstream Vera Sans"
id="text4246">
<path
d="m -115.14864,49.571434 -5.9668,0 c 0.0684,-0.589192 0.27588,-1.143391 0.62256,-1.662598 0.34668,-0.519203 0.9969,-1.131996 1.95068,-1.838379 0.58268,-0.432938 0.9554,-0.761714 1.11817,-0.986328 0.16275,-0.224604 0.24413,-0.43782 0.24414,-0.639648 -1e-5,-0.218094 -0.0806,-0.404454 -0.2417,-0.559082 -0.16114,-0.154617 -0.36378,-0.231928 -0.60791,-0.231934 -0.25391,6e-6 -0.46143,0.07976 -0.62256,0.239258 -0.16114,0.159511 -0.26937,0.441086 -0.32471,0.844727 l -1.99219,-0.161133 c 0.0781,-0.55989 0.22136,-0.996902 0.42969,-1.311035 0.20833,-0.314121 0.50212,-0.555006 0.88135,-0.722657 0.37923,-0.167636 0.90413,-0.251457 1.57471,-0.251464 0.69986,7e-6 1.2443,0.07976 1.6333,0.239257 0.38899,0.159512 0.69498,0.404467 0.91797,0.734864 0.22297,0.330409 0.33446,0.700689 0.33447,1.11084 -1e-5,0.436202 -0.12777,0.852868 -0.3833,1.25 -0.25554,0.397138 -0.72022,0.833336 -1.39405,1.308593 -0.40039,0.276695 -0.66813,0.47038 -0.80322,0.581055 -0.13509,0.110679 -0.29378,0.255536 -0.47607,0.43457 l 3.10547,0 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3823" />
id="path3823"
inkscape:connector-curvature="0" />
<path
d="m -108.46896,49.571434 -5.96679,0 c 0.0684,-0.589192 0.27588,-1.143391 0.62256,-1.662598 0.34667,-0.519203 0.9969,-1.131996 1.95068,-1.838379 0.58268,-0.432938 0.9554,-0.761714 1.11816,-0.986328 0.16276,-0.224604 0.24414,-0.43782 0.24414,-0.639648 0,-0.218094 -0.0806,-0.404454 -0.2417,-0.559082 -0.16113,-0.154617 -0.36377,-0.231928 -0.60791,-0.231934 -0.2539,6e-6 -0.46142,0.07976 -0.62255,0.239258 -0.16114,0.159511 -0.26937,0.441086 -0.32471,0.844727 l -1.99219,-0.161133 c 0.0781,-0.55989 0.22136,-0.996902 0.42969,-1.311035 0.20833,-0.314121 0.50211,-0.555006 0.88135,-0.722657 0.37923,-0.167636 0.90413,-0.251457 1.5747,-0.251464 0.69987,7e-6 1.2443,0.07976 1.6333,0.239257 0.389,0.159512 0.69499,0.404467 0.91797,0.734864 0.22298,0.330409 0.33447,0.700689 0.33448,1.11084 -1e-5,0.436202 -0.12778,0.852868 -0.3833,1.25 -0.25554,0.397138 -0.72022,0.833336 -1.39405,1.308593 -0.40039,0.276695 -0.66813,0.47038 -0.80322,0.581055 -0.1351,0.110679 -0.29379,0.255536 -0.47607,0.43457 l 3.10546,0 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3825" />
id="path3825"
inkscape:connector-curvature="0" />
<path
d="m -107.60958,45.963036 c 0,-1.360673 0.24495,-2.31282 0.73486,-2.856446 0.48991,-0.543613 1.23617,-0.815422 2.23877,-0.815429 0.48177,7e-6 0.87728,0.05941 1.18653,0.178222 0.30924,0.118822 0.56151,0.273445 0.75683,0.463867 0.19531,0.190437 0.34912,0.390632 0.46143,0.600586 0.1123,0.209967 0.20263,0.454921 0.27099,0.734864 0.13346,0.533859 0.20019,1.090499 0.2002,1.669922 -1e-5,1.29883 -0.21973,2.24935 -0.65918,2.851562 -0.43946,0.602214 -1.19629,0.90332 -2.27051,0.90332 -0.60222,0 -1.08887,-0.09603 -1.45996,-0.288086 -0.3711,-0.192057 -0.67546,-0.473632 -0.91309,-0.844726 -0.17252,-0.263671 -0.3068,-0.624185 -0.40283,-1.081543 -0.096,-0.457354 -0.14404,-0.962725 -0.14404,-1.516113 z m 1.97266,0.0049 c -1e-5,0.911461 0.0806,1.534019 0.24169,1.867676 0.16113,0.33366 0.3947,0.50049 0.70069,0.500488 0.20182,2e-6 0.37678,-0.0708 0.5249,-0.212402 0.14811,-0.1416 0.25716,-0.365395 0.32715,-0.671387 0.07,-0.305987 0.10498,-0.782874 0.10498,-1.430664 0,-0.950516 -0.0806,-1.58935 -0.2417,-1.916504 -0.16114,-0.327142 -0.40284,-0.490716 -0.7251,-0.490722 -0.32878,6e-6 -0.56641,0.166835 -0.71289,0.500488 -0.14649,0.333664 -0.21973,0.951339 -0.21972,1.853027 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3827" />
id="path3827"
inkscape:connector-curvature="0" />
</g>
</g>
<g
@ -3036,22 +3573,26 @@
<path
id="path4252"
d="m -135.4377,59.285714 0,-8.571429"
style="fill:#ffffff;fill-opacity:1;stroke:#fff8f8;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
style="fill:#ffffff;fill-opacity:1;stroke:#fff8f8;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
inkscape:connector-curvature="0" />
<g
style="font-size:40px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;display:inline;font-family:Bitstream Vera Sans"
id="text4254">
<path
d="m -139.14864,49.571434 -5.96679,0 c 0.0684,-0.589192 0.27588,-1.143391 0.62256,-1.662598 0.34667,-0.519203 0.9969,-1.131996 1.95068,-1.838379 0.58268,-0.432938 0.9554,-0.761714 1.11816,-0.986328 0.16276,-0.224604 0.24414,-0.43782 0.24414,-0.639648 0,-0.218094 -0.0806,-0.404454 -0.2417,-0.559082 -0.16113,-0.154617 -0.36377,-0.231928 -0.60791,-0.231934 -0.2539,6e-6 -0.46142,0.07976 -0.62255,0.239258 -0.16114,0.159511 -0.26937,0.441086 -0.32471,0.844727 l -1.99219,-0.161133 c 0.0781,-0.55989 0.22136,-0.996902 0.42969,-1.311035 0.20833,-0.314121 0.50211,-0.555006 0.88135,-0.722657 0.37923,-0.167636 0.90413,-0.251457 1.5747,-0.251464 0.69987,7e-6 1.2443,0.07976 1.6333,0.239257 0.389,0.159512 0.69499,0.404467 0.91797,0.734864 0.22298,0.330409 0.33447,0.700689 0.33448,1.11084 -1e-5,0.436202 -0.12778,0.852868 -0.3833,1.25 -0.25554,0.397138 -0.72022,0.833336 -1.39405,1.308593 -0.40039,0.276695 -0.66813,0.47038 -0.80322,0.581055 -0.1351,0.110679 -0.29379,0.255536 -0.47607,0.43457 l 3.10546,0 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3830" />
id="path3830"
inkscape:connector-curvature="0" />
<path
d="m -133.78242,42.291161 0,7.280273 -2.01172,0 0,-4.770508 c -0.32553,0.247401 -0.64047,0.447596 -0.94483,0.600586 -0.30436,0.152999 -0.68603,0.299483 -1.14502,0.439453 l 0,-1.630859 c 0.67708,-0.218093 1.2028,-0.480137 1.57715,-0.786133 0.37435,-0.305983 0.66732,-0.683587 0.87891,-1.132812 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3832" />
id="path3832"
inkscape:connector-curvature="0" />
<path
d="m -131.60957,45.963036 c 0,-1.360673 0.24495,-2.31282 0.73486,-2.856446 0.48991,-0.543613 1.23616,-0.815422 2.23877,-0.815429 0.48177,7e-6 0.87727,0.05941 1.18652,0.178222 0.30924,0.118822 0.56152,0.273445 0.75684,0.463867 0.19531,0.190437 0.34911,0.390632 0.46142,0.600586 0.1123,0.209967 0.20264,0.454921 0.271,0.734864 0.13346,0.533859 0.20019,1.090499 0.2002,1.669922 -10e-6,1.29883 -0.21974,2.24935 -0.65918,2.851562 -0.43946,0.602214 -1.1963,0.90332 -2.27051,0.90332 -0.60222,0 -1.08887,-0.09603 -1.45996,-0.288086 -0.3711,-0.192057 -0.67546,-0.473632 -0.91309,-0.844726 -0.17253,-0.263671 -0.3068,-0.624185 -0.40283,-1.081543 -0.096,-0.457354 -0.14404,-0.962725 -0.14404,-1.516113 z m 1.97265,0.0049 c 0,0.911461 0.0806,1.534019 0.2417,1.867676 0.16113,0.33366 0.39469,0.50049 0.70069,0.500488 0.20182,2e-6 0.37678,-0.0708 0.5249,-0.212402 0.14811,-0.1416 0.25716,-0.365395 0.32715,-0.671387 0.07,-0.305987 0.10497,-0.782874 0.10498,-1.430664 -1e-5,-0.950516 -0.0806,-1.58935 -0.2417,-1.916504 -0.16114,-0.327142 -0.40284,-0.490716 -0.7251,-0.490722 -0.32878,6e-6 -0.56641,0.166835 -0.71289,0.500488 -0.14649,0.333664 -0.21973,0.951339 -0.21973,1.853027 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3834" />
id="path3834"
inkscape:connector-curvature="0" />
</g>
</g>
<g
@ -3061,22 +3602,26 @@
<path
style="fill:#ffffff;fill-opacity:1;stroke:#fff8f8;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m -159.4377,59.285714 0,-8.571429"
id="path4260" />
id="path4260"
inkscape:connector-curvature="0" />
<g
style="font-size:40px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;display:inline;font-family:Bitstream Vera Sans"
id="text4262">
<path
d="m -163.14864,49.571434 -5.96679,0 c 0.0684,-0.589192 0.27588,-1.143391 0.62256,-1.662598 0.34667,-0.519203 0.9969,-1.131996 1.95068,-1.838379 0.58268,-0.432938 0.9554,-0.761714 1.11816,-0.986328 0.16276,-0.224604 0.24414,-0.43782 0.24414,-0.639648 0,-0.218094 -0.0806,-0.404454 -0.2417,-0.559082 -0.16113,-0.154617 -0.36377,-0.231928 -0.60791,-0.231934 -0.2539,6e-6 -0.46142,0.07976 -0.62255,0.239258 -0.16114,0.159511 -0.26937,0.441086 -0.32471,0.844727 l -1.99219,-0.161133 c 0.0781,-0.55989 0.22136,-0.996902 0.42969,-1.311035 0.20833,-0.314121 0.50211,-0.555006 0.88135,-0.722657 0.37923,-0.167636 0.90413,-0.251457 1.5747,-0.251464 0.69987,7e-6 1.2443,0.07976 1.6333,0.239257 0.389,0.159512 0.69499,0.404467 0.91797,0.734864 0.22298,0.330409 0.33447,0.700689 0.33448,1.11084 -1e-5,0.436202 -0.12778,0.852868 -0.3833,1.25 -0.25554,0.397138 -0.72022,0.833336 -1.39405,1.308593 -0.40039,0.276695 -0.66813,0.47038 -0.80322,0.581055 -0.1351,0.110679 -0.29379,0.255536 -0.47607,0.43457 l 3.10546,0 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3837" />
id="path3837"
inkscape:connector-curvature="0" />
<path
d="m -162.28926,45.963036 c 0,-1.360673 0.24495,-2.31282 0.73486,-2.856446 0.48991,-0.543613 1.23617,-0.815422 2.23877,-0.815429 0.48177,7e-6 0.87728,0.05941 1.18653,0.178222 0.30924,0.118822 0.56151,0.273445 0.75683,0.463867 0.19531,0.190437 0.34912,0.390632 0.46143,0.600586 0.1123,0.209967 0.20263,0.454921 0.27099,0.734864 0.13346,0.533859 0.20019,1.090499 0.2002,1.669922 -1e-5,1.29883 -0.21973,2.24935 -0.65918,2.851562 -0.43946,0.602214 -1.19629,0.90332 -2.27051,0.90332 -0.60222,0 -1.08887,-0.09603 -1.45996,-0.288086 -0.3711,-0.192057 -0.67546,-0.473632 -0.91309,-0.844726 -0.17252,-0.263671 -0.3068,-0.624185 -0.40283,-1.081543 -0.096,-0.457354 -0.14404,-0.962725 -0.14404,-1.516113 z m 1.97266,0.0049 c -1e-5,0.911461 0.0806,1.534019 0.24169,1.867676 0.16113,0.33366 0.3947,0.50049 0.70069,0.500488 0.20182,2e-6 0.37678,-0.0708 0.5249,-0.212402 0.14811,-0.1416 0.25716,-0.365395 0.32715,-0.671387 0.07,-0.305987 0.10498,-0.782874 0.10498,-1.430664 0,-0.950516 -0.0806,-1.58935 -0.2417,-1.916504 -0.16114,-0.327142 -0.40284,-0.490716 -0.7251,-0.490722 -0.32878,6e-6 -0.56641,0.166835 -0.71289,0.500488 -0.14648,0.333664 -0.21973,0.951339 -0.21972,1.853027 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3839" />
id="path3839"
inkscape:connector-curvature="0" />
<path
d="m -155.60957,45.963036 c 0,-1.360673 0.24495,-2.31282 0.73486,-2.856446 0.48991,-0.543613 1.23616,-0.815422 2.23877,-0.815429 0.48177,7e-6 0.87727,0.05941 1.18652,0.178222 0.30924,0.118822 0.56152,0.273445 0.75684,0.463867 0.19531,0.190437 0.34911,0.390632 0.46142,0.600586 0.1123,0.209967 0.20264,0.454921 0.271,0.734864 0.13346,0.533859 0.20019,1.090499 0.2002,1.669922 -1e-5,1.29883 -0.21974,2.24935 -0.65918,2.851562 -0.43946,0.602214 -1.1963,0.90332 -2.27051,0.90332 -0.60222,0 -1.08887,-0.09603 -1.45996,-0.288086 -0.3711,-0.192057 -0.67546,-0.473632 -0.91309,-0.844726 -0.17253,-0.263671 -0.3068,-0.624185 -0.40283,-1.081543 -0.096,-0.457354 -0.14404,-0.962725 -0.14404,-1.516113 z m 1.97265,0.0049 c 0,0.911461 0.0806,1.534019 0.2417,1.867676 0.16113,0.33366 0.39469,0.50049 0.70069,0.500488 0.20182,2e-6 0.37678,-0.0708 0.5249,-0.212402 0.14811,-0.1416 0.25716,-0.365395 0.32715,-0.671387 0.07,-0.305987 0.10497,-0.782874 0.10498,-1.430664 -10e-6,-0.950516 -0.0806,-1.58935 -0.2417,-1.916504 -0.16114,-0.327142 -0.40284,-0.490716 -0.7251,-0.490722 -0.32878,6e-6 -0.56641,0.166835 -0.71289,0.500488 -0.14649,0.333664 -0.21973,0.951339 -0.21973,1.853027 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3841" />
id="path3841"
inkscape:connector-curvature="0" />
</g>
</g>
<g
@ -3086,22 +3631,26 @@
<path
id="path4268"
d="m -181.16182,59.285714 0,-8.571429"
style="fill:#ffffff;fill-opacity:1;stroke:#fff8f8;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
style="fill:#ffffff;fill-opacity:1;stroke:#fff8f8;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
inkscape:connector-curvature="0" />
<g
style="font-size:40px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;display:inline;font-family:Bitstream Vera Sans"
id="text4270">
<path
d="m -186.46211,42.291161 0,7.280273 -2.01172,0 0,-4.770508 c -0.32552,0.247401 -0.64047,0.447596 -0.94483,0.600586 -0.30436,0.152999 -0.68603,0.299483 -1.14501,0.439453 l 0,-1.630859 c 0.67708,-0.218093 1.20279,-0.480137 1.57714,-0.786133 0.37435,-0.305983 0.66732,-0.683587 0.87891,-1.132812 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3844" />
id="path3844"
inkscape:connector-curvature="0" />
<path
d="m -184.20137,47.964989 1.97754,-0.249024 c 0.0521,0.276695 0.13997,0.472007 0.26367,0.585938 0.1237,0.113933 0.27506,0.170899 0.4541,0.170898 0.31901,1e-6 0.56803,-0.161131 0.74707,-0.483398 0.13021,-0.237629 0.22786,-0.740558 0.29297,-1.508789 -0.23763,0.244143 -0.48177,0.423179 -0.73242,0.537109 -0.25065,0.113935 -0.54037,0.170901 -0.86914,0.170899 -0.64128,2e-6 -1.18246,-0.227862 -1.62354,-0.683594 -0.44108,-0.455726 -0.66162,-1.031897 -0.66162,-1.728516 0,-0.475255 0.11231,-0.908197 0.33692,-1.298828 0.22461,-0.390618 0.53385,-0.686028 0.92773,-0.88623 0.39388,-0.200189 0.88867,-0.300286 1.48438,-0.300293 0.71614,7e-6 1.29068,0.122891 1.72363,0.368652 0.43294,0.245775 0.7788,0.636399 1.0376,1.171875 0.25878,0.535487 0.38817,1.24268 0.38818,2.121582 -1e-5,1.29232 -0.27182,2.238771 -0.81543,2.839355 -0.54362,0.600587 -1.2972,0.900879 -2.26074,0.900879 -0.56967,0 -1.01888,-0.06592 -1.34766,-0.197754 -0.32878,-0.131835 -0.60221,-0.324706 -0.82031,-0.578613 -0.2181,-0.253905 -0.38574,-0.571288 -0.50293,-0.952148 z m 3.66211,-3.19336 c -10e-6,-0.387364 -0.0977,-0.690912 -0.29297,-0.910644 -0.19532,-0.219721 -0.43295,-0.329584 -0.71289,-0.32959 -0.26368,6e-6 -0.48259,0.09929 -0.65674,0.297852 -0.17415,0.198573 -0.26123,0.496424 -0.26123,0.893554 0,0.400395 0.0903,0.706385 0.271,0.917969 0.18066,0.211592 0.40608,0.317386 0.67627,0.317383 0.27994,3e-6 0.51269,-0.102536 0.69824,-0.307617 0.18554,-0.205074 0.27831,-0.498043 0.27832,-0.878907 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3846" />
id="path3846"
inkscape:connector-curvature="0" />
<path
d="m -177.60957,45.963036 c 0,-1.360673 0.24495,-2.31282 0.73486,-2.856446 0.48991,-0.543613 1.23616,-0.815422 2.23877,-0.815429 0.48177,7e-6 0.87727,0.05941 1.18652,0.178222 0.30924,0.118822 0.56152,0.273445 0.75684,0.463867 0.19531,0.190437 0.34911,0.390632 0.46142,0.600586 0.1123,0.209967 0.20264,0.454921 0.271,0.734864 0.13346,0.533859 0.20019,1.090499 0.2002,1.669922 -1e-5,1.29883 -0.21974,2.24935 -0.65918,2.851562 -0.43946,0.602214 -1.1963,0.90332 -2.27051,0.90332 -0.60222,0 -1.08887,-0.09603 -1.45996,-0.288086 -0.3711,-0.192057 -0.67546,-0.473632 -0.91309,-0.844726 -0.17253,-0.263671 -0.3068,-0.624185 -0.40283,-1.081543 -0.096,-0.457354 -0.14404,-0.962725 -0.14404,-1.516113 z m 1.97265,0.0049 c 0,0.911461 0.0806,1.534019 0.2417,1.867676 0.16113,0.33366 0.39469,0.50049 0.70069,0.500488 0.20182,2e-6 0.37678,-0.0708 0.5249,-0.212402 0.14811,-0.1416 0.25716,-0.365395 0.32715,-0.671387 0.07,-0.305987 0.10497,-0.782874 0.10498,-1.430664 -10e-6,-0.950516 -0.0806,-1.58935 -0.2417,-1.916504 -0.16114,-0.327142 -0.40284,-0.490716 -0.7251,-0.490722 -0.32878,6e-6 -0.56641,0.166835 -0.71289,0.500488 -0.14649,0.333664 -0.21973,0.951339 -0.21973,1.853027 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3848" />
id="path3848"
inkscape:connector-curvature="0" />
</g>
</g>
<g
@ -3111,18 +3660,21 @@
<path
style="fill:#ffffff;fill-opacity:1;stroke:#fff8f8;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 372.07407,59.285714 0,-8.571429"
id="path3306" />
id="path3306"
inkscape:connector-curvature="0" />
<g
style="font-size:40px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;display:inline;font-family:Bitstream Vera Sans"
id="text3308">
<path
d="m 369.25668,48.233543 -3.62304,0 0,-1.635742 3.62304,-4.30664 1.7334,0 0,4.399414 0.89844,0 0,1.542968 -0.89844,0 0,1.337891 -1.7334,0 z m 0,-1.542968 0,-2.250977 -1.91406,2.250977 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3851" />
id="path3851"
inkscape:connector-curvature="0" />
<path
d="m 372.5184,45.963036 c 0,-1.360673 0.24496,-2.31282 0.73487,-2.856446 0.4899,-0.543613 1.23616,-0.815422 2.23876,-0.815429 0.48177,7e-6 0.87728,0.05941 1.18653,0.178222 0.30924,0.118822 0.56152,0.273445 0.75683,0.463867 0.19531,0.190437 0.34912,0.390632 0.46143,0.600586 0.1123,0.209967 0.20263,0.454921 0.271,0.734864 0.13345,0.533859 0.20019,1.090499 0.20019,1.669922 0,1.29883 -0.21973,2.24935 -0.65918,2.851562 -0.43946,0.602214 -1.19629,0.90332 -2.27051,0.90332 -0.60221,0 -1.08887,-0.09603 -1.45996,-0.288086 -0.37109,-0.192057 -0.67545,-0.473632 -0.91308,-0.844726 -0.17253,-0.263671 -0.30681,-0.624185 -0.40283,-1.081543 -0.096,-0.457354 -0.14405,-0.962725 -0.14405,-1.516113 z m 1.97266,0.0049 c 0,0.911461 0.0806,1.534019 0.2417,1.867676 0.16113,0.33366 0.39469,0.50049 0.70068,0.500488 0.20182,2e-6 0.37679,-0.0708 0.5249,-0.212402 0.14811,-0.1416 0.25716,-0.365395 0.32715,-0.671387 0.07,-0.305987 0.10498,-0.782874 0.10498,-1.430664 0,-0.950516 -0.0806,-1.58935 -0.2417,-1.916504 -0.16113,-0.327142 -0.40283,-0.490716 -0.72509,-0.490722 -0.32878,6e-6 -0.56641,0.166835 -0.7129,0.500488 -0.14648,0.333664 -0.21972,0.951339 -0.21972,1.853027 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3853" />
id="path3853"
inkscape:connector-curvature="0" />
</g>
</g>
<g
@ -3132,18 +3684,21 @@
<path
id="path3314"
d="m 372.07407,59.285714 0,-8.571429"
style="fill:#ffffff;fill-opacity:1;stroke:#fff8f8;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
style="fill:#ffffff;fill-opacity:1;stroke:#fff8f8;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
inkscape:connector-curvature="0" />
<g
style="font-size:40px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;display:inline;font-family:Bitstream Vera Sans"
id="text3316">
<path
d="m 366.64438,42.413231 4.72168,0 0,1.586914 -3.19824,0 -0.1709,1.074219 c 0.22135,-0.104162 0.44026,-0.182287 0.65674,-0.234375 0.21646,-0.05208 0.43049,-0.07812 0.64209,-0.07813 0.71614,5e-6 1.29719,0.216476 1.74316,0.649414 0.44596,0.432946 0.66894,0.978193 0.66895,1.635742 -10e-6,0.462242 -0.11476,0.906577 -0.34424,1.333008 -0.2295,0.426433 -0.55502,0.751953 -0.97657,0.976562 -0.42155,0.22461 -0.9611,0.336914 -1.61865,0.336914 -0.47201,0 -0.87647,-0.04476 -1.21338,-0.134277 -0.33691,-0.08952 -0.62337,-0.222982 -0.85937,-0.400391 -0.23601,-0.177408 -0.42725,-0.378417 -0.57373,-0.603027 -0.14649,-0.224608 -0.26856,-0.504556 -0.36621,-0.839844 l 2.01172,-0.219726 c 0.0488,0.322267 0.16275,0.567221 0.34179,0.734863 0.17904,0.167644 0.39225,0.251466 0.63965,0.251465 0.27669,10e-7 0.50537,-0.104979 0.68604,-0.314942 0.18066,-0.209959 0.27099,-0.523272 0.27099,-0.939941 0,-0.42643 -0.0911,-0.738929 -0.27344,-0.9375 -0.18229,-0.198564 -0.4248,-0.297848 -0.72753,-0.297852 -0.19206,4e-6 -0.37761,0.04721 -0.55665,0.141602 -0.13346,0.06836 -0.27995,0.192061 -0.43945,0.371094 l -1.69433,-0.244141 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3856" />
id="path3856"
inkscape:connector-curvature="0" />
<path
d="m 372.5184,45.963036 c 0,-1.360673 0.24496,-2.31282 0.73487,-2.856446 0.4899,-0.543613 1.23616,-0.815422 2.23876,-0.815429 0.48177,7e-6 0.87728,0.05941 1.18653,0.178222 0.30924,0.118822 0.56152,0.273445 0.75683,0.463867 0.19531,0.190437 0.34912,0.390632 0.46143,0.600586 0.1123,0.209967 0.20263,0.454921 0.271,0.734864 0.13345,0.533859 0.20019,1.090499 0.20019,1.669922 0,1.29883 -0.21973,2.24935 -0.65918,2.851562 -0.43946,0.602214 -1.19629,0.90332 -2.27051,0.90332 -0.60221,0 -1.08887,-0.09603 -1.45996,-0.288086 -0.37109,-0.192057 -0.67545,-0.473632 -0.91308,-0.844726 -0.17253,-0.263671 -0.30681,-0.624185 -0.40283,-1.081543 -0.096,-0.457354 -0.14405,-0.962725 -0.14405,-1.516113 z m 1.97266,0.0049 c 0,0.911461 0.0806,1.534019 0.2417,1.867676 0.16113,0.33366 0.39469,0.50049 0.70068,0.500488 0.20182,2e-6 0.37679,-0.0708 0.5249,-0.212402 0.14811,-0.1416 0.25716,-0.365395 0.32715,-0.671387 0.07,-0.305987 0.10498,-0.782874 0.10498,-1.430664 0,-0.950516 -0.0806,-1.58935 -0.2417,-1.916504 -0.16113,-0.327142 -0.40283,-0.490716 -0.72509,-0.490722 -0.32878,6e-6 -0.56641,0.166835 -0.7129,0.500488 -0.14648,0.333664 -0.21972,0.951339 -0.21972,1.853027 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3858" />
id="path3858"
inkscape:connector-curvature="0" />
</g>
</g>
<g
@ -3153,7 +3708,8 @@
<path
id="path6992-4"
d="m 1036.6779,58.30913 0,-8.57142"
style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" />
style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline"
inkscape:connector-curvature="0" />
</g>
<g
transform="translate(1002.459,-83.494924)"
@ -3162,22 +3718,26 @@
<path
style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 6.5622945,59.285714 0,-8.571429"
id="path4116-9" />
id="path4116-9"
inkscape:connector-curvature="0" />
<g
style="font-size:40px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;display:inline;font-family:Bitstream Vera Sans"
id="text4118-4">
<path
d="m 2.851357,49.571434 -5.9667969,0 c 0.068359,-0.589192 0.2758784,-1.143391 0.6225586,-1.662598 0.3466785,-0.519203 0.9969057,-1.131996 1.9506836,-1.838379 0.58267887,-0.432938 0.95539985,-0.761714 1.11816406,-0.986328 0.1627563,-0.224604 0.24413642,-0.43782 0.24414062,-0.639648 -4.2e-6,-0.218094 -0.0805705,-0.404454 -0.24169922,-0.559082 -0.1611366,-0.154617 -0.36377312,-0.231928 -0.60791015,-0.231934 -0.25390935,6e-6 -0.46142867,0.07976 -0.6225586,0.239258 -0.16113537,0.159511 -0.26937094,0.441086 -0.32470703,0.844727 L -2.9689555,44.576317 c 0.078124,-0.55989 0.2213535,-0.996902 0.4296875,-1.311035 0.2083323,-0.314121 0.5021145,-0.555006 0.8813476,-0.722657 0.3792297,-0.167636 0.90413153,-0.251457 1.57470707,-0.251464 0.6998658,7e-6 1.24429883,0.07976 1.63330083,0.239257 0.388992,0.159512 0.6949813,0.404467 0.9179687,0.734864 0.2229757,0.330409 0.3344665,0.700689 0.3344727,1.11084 -6.2e-6,0.436202 -0.127773,0.852868 -0.3833008,1.25 -0.2555394,0.397138 -0.7202199,0.833336 -1.394043,1.308593 -0.40039462,0.276695 -0.66813524,0.47038 -0.80322265,0.581055 -0.13509461,0.110679 -0.29378586,0.255536 -0.47607422,0.43457 l 3.10546877,0 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3794-8" />
id="path3794-8"
inkscape:connector-curvature="0" />
<path
d="M 9.4675679,44.024559 7.4900289,44.2687 C 7.4379414,43.992013 7.3508647,43.7967 7.2287984,43.682762 7.1067243,43.568836 6.956171,43.51187 6.7771382,43.511864 c -0.3222687,6e-6 -0.5729195,0.162766 -0.7519531,0.488281 -0.1302109,0.23438 -0.2262395,0.735682 -0.2880859,1.503906 0.2376275,-0.240881 0.4817679,-0.419103 0.7324218,-0.534668 0.2506477,-0.115555 0.5403609,-0.173335 0.8691407,-0.17334 0.6380161,5e-6 1.1775664,0.22787 1.6186523,0.683594 0.4410746,0.455733 0.6616148,1.033532 0.6616211,1.733399 -6.3e-6,0.472007 -0.1114971,0.903321 -0.3344726,1.293945 -0.2229876,0.390626 -0.5322321,0.686035 -0.9277344,0.88623 -0.3955125,0.200196 -0.8911175,0.300293 -1.4868164,0.300293 -0.7161487,0 -1.2906924,-0.12207 -1.7236328,-0.366211 C 4.7133347,49.083153 4.3674692,48.693342 4.1086812,48.15786 3.8498916,47.62238 3.7204972,46.913559 3.7204976,46.031395 c -4e-7,-1.292313 0.2718092,-2.238764 0.8154297,-2.839356 0.543618,-0.600578 1.297198,-0.900871 2.2607422,-0.900878 0.5696574,7e-6 1.0196895,0.06593 1.3500976,0.197753 0.3303985,0.131843 0.6046495,0.324714 0.8227539,0.578614 0.2180931,0.253912 0.3841086,0.572922 0.4980469,0.957031 z m -3.6621094,3.188477 c -2.5e-6,0.387371 0.097654,0.690919 0.2929688,0.910644 0.1953095,0.219728 0.4345671,0.329591 0.7177734,0.32959 0.2604129,10e-7 0.4785117,-0.09928 0.6542969,-0.297852 0.1757769,-0.198566 0.2636674,-0.494789 0.2636719,-0.888671 -4.5e-6,-0.403644 -0.09115,-0.71126 -0.2734375,-0.922852 -0.1822957,-0.211585 -0.4085324,-0.317379 -0.678711,-0.317383 -0.2766959,4e-6 -0.5086292,0.102543 -0.6958007,0.307617 -0.1871771,0.205081 -0.2807643,0.49805 -0.2807618,0.878907 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3796-8" />
id="path3796-8"
inkscape:connector-curvature="0" />
<path
d="m 10.390419,45.963036 c 0,-1.360673 0.244954,-2.31282 0.734864,-2.856446 0.489907,-0.543613 1.236163,-0.815422 2.238769,-0.815429 0.481767,7e-6 0.877275,0.05941 1.186524,0.178222 0.30924,0.118822 0.561518,0.273445 0.756836,0.463867 0.195307,0.190437 0.349115,0.390632 0.461425,0.600586 0.112299,0.209967 0.202631,0.454921 0.270997,0.734864 0.133457,0.533859 0.200189,1.090499 0.200195,1.669922 -6e-6,1.29883 -0.219733,2.24935 -0.65918,2.851562 -0.439458,0.602214 -1.196293,0.90332 -2.270508,0.90332 -0.602216,0 -1.088869,-0.09603 -1.459961,-0.288086 -0.371095,-0.192057 -0.675457,-0.473632 -0.913086,-0.844726 -0.172526,-0.263671 -0.306804,-0.624185 -0.402832,-1.081543 -0.09603,-0.457354 -0.144043,-0.962725 -0.144043,-1.516113 z m 1.972657,0.0049 c -3e-6,0.911461 0.08056,1.534019 0.241699,1.867676 0.16113,0.33366 0.394691,0.50049 0.700684,0.500488 0.201819,2e-6 0.376786,-0.0708 0.524902,-0.212402 0.148108,-0.1416 0.257157,-0.365395 0.327148,-0.671387 0.06998,-0.305987 0.104977,-0.782874 0.104981,-1.430664 -4e-6,-0.950516 -0.08057,-1.58935 -0.241699,-1.916504 -0.161137,-0.327142 -0.402836,-0.490716 -0.725098,-0.490722 -0.328779,6e-6 -0.566409,0.166835 -0.712891,0.500488 -0.146487,0.333664 -0.219729,0.951339 -0.219726,1.853027 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3798-2" />
id="path3798-2"
inkscape:connector-curvature="0" />
</g>
</g>
<g
@ -3187,22 +3747,26 @@
<path
id="path4220-5"
d="m -27.437706,59.285714 0,-8.571429"
style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
inkscape:connector-curvature="0" />
<g
style="font-size:40px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;display:inline;font-family:Bitstream Vera Sans"
id="text4222-5">
<path
d="m -31.148643,49.571434 -5.966797,0 c 0.06836,-0.589192 0.275878,-1.143391 0.622558,-1.662598 0.346679,-0.519203 0.996906,-1.131996 1.950684,-1.838379 0.582679,-0.432938 0.9554,-0.761714 1.118164,-0.986328 0.162756,-0.224604 0.244136,-0.43782 0.244141,-0.639648 -5e-6,-0.218094 -0.08057,-0.404454 -0.2417,-0.559082 -0.161136,-0.154617 -0.363773,-0.231928 -0.60791,-0.231934 -0.253909,6e-6 -0.461429,0.07976 -0.622558,0.239258 -0.161136,0.159511 -0.269371,0.441086 -0.324707,0.844727 l -1.992188,-0.161133 c 0.07813,-0.55989 0.221354,-0.996902 0.429688,-1.311035 0.208332,-0.314121 0.502114,-0.555006 0.881347,-0.722657 0.37923,-0.167636 0.904132,-0.251457 1.574707,-0.251464 0.699866,7e-6 1.244299,0.07976 1.633301,0.239257 0.388992,0.159512 0.694981,0.404467 0.917969,0.734864 0.222975,0.330409 0.334466,0.700689 0.334472,1.11084 -6e-6,0.436202 -0.127773,0.852868 -0.3833,1.25 -0.25554,0.397138 -0.72022,0.833336 -1.394043,1.308593 -0.400395,0.276695 -0.668136,0.47038 -0.803223,0.581055 -0.135095,0.110679 -0.293786,0.255536 -0.476074,0.43457 l 3.105469,0 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3801-1" />
id="path3801-1"
inkscape:connector-curvature="0" />
<path
d="m -29.483604,42.413231 4.721679,0 0,1.586914 -3.198242,0 -0.170898,1.074219 c 0.221351,-0.104162 0.440264,-0.182287 0.656738,-0.234375 0.216468,-0.05208 0.430498,-0.07812 0.64209,-0.07813 0.716141,5e-6 1.297195,0.216476 1.743164,0.649414 0.445957,0.432946 0.668939,0.978193 0.668945,1.635742 -6e-6,0.462242 -0.114752,0.906577 -0.344238,1.333008 -0.229498,0.426433 -0.555019,0.751953 -0.976563,0.976562 -0.421554,0.22461 -0.961104,0.336914 -1.618652,0.336914 -0.472008,0 -0.876467,-0.04476 -1.213379,-0.134277 -0.336916,-0.08952 -0.623374,-0.222982 -0.859375,-0.400391 -0.236004,-0.177408 -0.427247,-0.378417 -0.57373,-0.603027 -0.146485,-0.224608 -0.268555,-0.504556 -0.366211,-0.839844 l 2.011718,-0.219726 c 0.04883,0.322267 0.162758,0.567221 0.341797,0.734863 0.179034,0.167644 0.39225,0.251466 0.639649,0.251465 0.276689,10e-7 0.505367,-0.104979 0.686035,-0.314942 0.18066,-0.209959 0.270992,-0.523272 0.270996,-0.939941 -4e-6,-0.42643 -0.09115,-0.738929 -0.273437,-0.9375 -0.182296,-0.198564 -0.424809,-0.297848 -0.72754,-0.297852 -0.19206,4e-6 -0.377607,0.04721 -0.55664,0.141602 -0.133466,0.06836 -0.279951,0.192061 -0.439453,0.371094 l -1.694336,-0.244141 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3803-7" />
id="path3803-7"
inkscape:connector-curvature="0" />
<path
d="m -23.609581,45.963036 c 0,-1.360673 0.244954,-2.31282 0.734863,-2.856446 0.489908,-0.543613 1.236163,-0.815422 2.23877,-0.815429 0.481767,7e-6 0.877274,0.05941 1.186523,0.178222 0.30924,0.118822 0.561519,0.273445 0.756836,0.463867 0.195307,0.190437 0.349116,0.390632 0.461426,0.600586 0.112299,0.209967 0.202631,0.454921 0.270996,0.734864 0.133457,0.533859 0.200189,1.090499 0.200195,1.669922 -6e-6,1.29883 -0.219732,2.24935 -0.659179,2.851562 -0.439459,0.602214 -1.196294,0.90332 -2.270508,0.90332 -0.602216,0 -1.08887,-0.09603 -1.459961,-0.288086 -0.371095,-0.192057 -0.675457,-0.473632 -0.913086,-0.844726 -0.172527,-0.263671 -0.306804,-0.624185 -0.402832,-1.081543 -0.09603,-0.457354 -0.144043,-0.962725 -0.144043,-1.516113 z m 1.972656,0.0049 c -2e-6,0.911461 0.08056,1.534019 0.241699,1.867676 0.161131,0.33366 0.394691,0.50049 0.700684,0.500488 0.201819,2e-6 0.376787,-0.0708 0.524902,-0.212402 0.148108,-0.1416 0.257158,-0.365395 0.327149,-0.671387 0.06998,-0.305987 0.104976,-0.782874 0.10498,-1.430664 -4e-6,-0.950516 -0.08057,-1.58935 -0.241699,-1.916504 -0.161137,-0.327142 -0.402836,-0.490716 -0.725098,-0.490722 -0.328779,6e-6 -0.566409,0.166835 -0.71289,0.500488 -0.146487,0.333664 -0.219729,0.951339 -0.219727,1.853027 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3805-1" />
id="path3805-1"
inkscape:connector-curvature="0" />
</g>
</g>
<g
@ -3212,22 +3776,26 @@
<path
style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m -61.437706,59.285714 0,-8.571429"
id="path4228-5" />
id="path4228-5"
inkscape:connector-curvature="0" />
<g
style="font-size:40px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;display:inline;font-family:Bitstream Vera Sans"
id="text4230-2">
<path
d="m -65.148643,49.571434 -5.966797,0 c 0.06836,-0.589192 0.275878,-1.143391 0.622558,-1.662598 0.346679,-0.519203 0.996906,-1.131996 1.950684,-1.838379 0.582679,-0.432938 0.9554,-0.761714 1.118164,-0.986328 0.162756,-0.224604 0.244136,-0.43782 0.244141,-0.639648 -5e-6,-0.218094 -0.08057,-0.404454 -0.2417,-0.559082 -0.161136,-0.154617 -0.363773,-0.231928 -0.60791,-0.231934 -0.253909,6e-6 -0.461429,0.07976 -0.622558,0.239258 -0.161136,0.159511 -0.269371,0.441086 -0.324707,0.844727 l -1.992188,-0.161133 c 0.07813,-0.55989 0.221354,-0.996902 0.429688,-1.311035 0.208332,-0.314121 0.502114,-0.555006 0.881347,-0.722657 0.37923,-0.167636 0.904132,-0.251457 1.574707,-0.251464 0.699866,7e-6 1.244299,0.07976 1.633301,0.239257 0.388992,0.159512 0.694981,0.404467 0.917969,0.734864 0.222975,0.330409 0.334466,0.700689 0.334472,1.11084 -6e-6,0.436202 -0.127773,0.852868 -0.3833,1.25 -0.25554,0.397138 -0.72022,0.833336 -1.394043,1.308593 -0.400395,0.276695 -0.668136,0.47038 -0.803223,0.581055 -0.135095,0.110679 -0.293786,0.255536 -0.476074,0.43457 l 3.105469,0 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3809-7" />
id="path3809-7"
inkscape:connector-curvature="0" />
<path
d="m -60.8713,48.233543 -3.623047,0 0,-1.635742 3.623047,-4.30664 1.733399,0 0,4.399414 0.898437,0 0,1.542968 -0.898437,0 0,1.337891 -1.733399,0 z m 0,-1.542968 0,-2.250977 -1.914062,2.250977 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3811-6" />
id="path3811-6"
inkscape:connector-curvature="0" />
<path
d="m -57.609581,45.963036 c 0,-1.360673 0.244954,-2.31282 0.734863,-2.856446 0.489908,-0.543613 1.236163,-0.815422 2.23877,-0.815429 0.481767,7e-6 0.877274,0.05941 1.186523,0.178222 0.30924,0.118822 0.561519,0.273445 0.756836,0.463867 0.195307,0.190437 0.349116,0.390632 0.461426,0.600586 0.112299,0.209967 0.202631,0.454921 0.270996,0.734864 0.133457,0.533859 0.200189,1.090499 0.200195,1.669922 -6e-6,1.29883 -0.219732,2.24935 -0.659179,2.851562 -0.439459,0.602214 -1.196294,0.90332 -2.270508,0.90332 -0.602216,0 -1.08887,-0.09603 -1.459961,-0.288086 -0.371095,-0.192057 -0.675457,-0.473632 -0.913086,-0.844726 -0.172527,-0.263671 -0.306804,-0.624185 -0.402832,-1.081543 -0.09603,-0.457354 -0.144043,-0.962725 -0.144043,-1.516113 z m 1.972656,0.0049 c -2e-6,0.911461 0.08056,1.534019 0.241699,1.867676 0.161131,0.33366 0.394691,0.50049 0.700684,0.500488 0.201819,2e-6 0.376787,-0.0708 0.524902,-0.212402 0.148108,-0.1416 0.257158,-0.365395 0.327149,-0.671387 0.06998,-0.305987 0.104976,-0.782874 0.10498,-1.430664 -4e-6,-0.950516 -0.08057,-1.58935 -0.241699,-1.916504 -0.161137,-0.327142 -0.402836,-0.490716 -0.725098,-0.490722 -0.328779,6e-6 -0.566409,0.166835 -0.71289,0.500488 -0.146487,0.333664 -0.219729,0.951339 -0.219727,1.853027 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3813-1" />
id="path3813-1"
inkscape:connector-curvature="0" />
</g>
</g>
<g
@ -3237,22 +3805,26 @@
<path
id="path4236-2"
d="m -85.437706,59.285714 0,-8.571429"
style="fill:#ffffff;fill-opacity:1;stroke:#fff8f8;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
style="fill:#ffffff;fill-opacity:1;stroke:#fff8f8;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
inkscape:connector-curvature="0" />
<g
style="font-size:40px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;display:inline;font-family:Bitstream Vera Sans"
id="text4238-3">
<path
d="m -89.148643,49.571434 -5.966797,0 c 0.06836,-0.589192 0.275878,-1.143391 0.622558,-1.662598 0.346679,-0.519203 0.996906,-1.131996 1.950684,-1.838379 0.582679,-0.432938 0.9554,-0.761714 1.118164,-0.986328 0.162756,-0.224604 0.244136,-0.43782 0.244141,-0.639648 -5e-6,-0.218094 -0.08057,-0.404454 -0.2417,-0.559082 -0.161136,-0.154617 -0.363773,-0.231928 -0.60791,-0.231934 -0.253909,6e-6 -0.461429,0.07976 -0.622558,0.239258 -0.161136,0.159511 -0.269371,0.441086 -0.324707,0.844727 l -1.992188,-0.161133 c 0.07813,-0.55989 0.221354,-0.996902 0.429688,-1.311035 0.208332,-0.314121 0.502114,-0.555006 0.881347,-0.722657 0.37923,-0.167636 0.904132,-0.251457 1.574707,-0.251464 0.699866,7e-6 1.244299,0.07976 1.633301,0.239257 0.388992,0.159512 0.694981,0.404467 0.917969,0.734864 0.222975,0.330409 0.334466,0.700689 0.334472,1.11084 -6e-6,0.436202 -0.127773,0.852868 -0.3833,1.25 -0.25554,0.397138 -0.72022,0.833336 -1.394043,1.308593 -0.400395,0.276695 -0.668136,0.47038 -0.803223,0.581055 -0.135095,0.110679 -0.293786,0.255536 -0.476074,0.43457 l 3.105469,0 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3816-2" />
id="path3816-2"
inkscape:connector-curvature="0" />
<path
d="m -86.360558,44.483543 -1.879882,-0.336914 c 0.156249,-0.598952 0.456542,-1.057936 0.900879,-1.376953 0.444334,-0.319003 1.073402,-0.478508 1.887207,-0.478515 0.93424,7e-6 1.609695,0.17416 2.026367,0.522461 0.416661,0.348313 0.624994,0.786138 0.625,1.313476 -6e-6,0.30925 -0.08464,0.589198 -0.253906,0.839844 -0.169277,0.250655 -0.42481,0.470382 -0.766602,0.65918 0.276687,0.06836 0.488276,0.148115 0.634766,0.239257 0.237624,0.146488 0.422357,0.339359 0.554199,0.578614 0.13183,0.23926 0.197747,0.524905 0.197754,0.856933 -7e-6,0.416669 -0.109056,0.816245 -0.327149,1.198731 -0.218104,0.382487 -0.532232,0.677083 -0.942383,0.883789 -0.41016,0.206705 -0.948897,0.310058 -1.61621,0.310058 -0.651045,0 -1.164553,-0.0765 -1.540528,-0.229492 -0.375978,-0.152994 -0.685222,-0.37679 -0.927734,-0.671387 -0.242514,-0.294595 -0.428874,-0.664874 -0.559082,-1.110839 l 1.987304,-0.263672 c 0.07812,0.400392 0.199379,0.677898 0.36377,0.832519 0.164385,0.154624 0.373532,0.231935 0.627441,0.231934 0.266924,10e-7 0.489092,-0.09766 0.666504,-0.292969 0.177405,-0.195311 0.266109,-0.455727 0.266114,-0.78125 -5e-6,-0.332029 -0.08545,-0.58919 -0.256348,-0.771484 -0.170902,-0.182289 -0.402836,-0.273435 -0.695801,-0.273438 -0.156253,3e-6 -0.371097,0.03907 -0.644531,0.117188 l 0.102539,-1.420899 c 0.110674,0.01628 0.196937,0.02442 0.258789,0.02441 0.260413,5e-6 0.477698,-0.083 0.651855,-0.249023 0.17415,-0.166011 0.261227,-0.362951 0.261231,-0.59082 -4e-6,-0.218094 -0.06511,-0.392247 -0.195313,-0.522461 -0.130212,-0.130203 -0.309248,-0.195307 -0.537109,-0.195313 -0.234378,6e-6 -0.424807,0.07081 -0.571289,0.212402 -0.146487,0.141608 -0.245771,0.389817 -0.297852,0.744629 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3818-2" />
id="path3818-2"
inkscape:connector-curvature="0" />
<path
d="m -81.609581,45.963036 c 0,-1.360673 0.244954,-2.31282 0.734863,-2.856446 0.489908,-0.543613 1.236163,-0.815422 2.23877,-0.815429 0.481767,7e-6 0.877274,0.05941 1.186523,0.178222 0.30924,0.118822 0.561519,0.273445 0.756836,0.463867 0.195307,0.190437 0.349116,0.390632 0.461426,0.600586 0.112299,0.209967 0.202631,0.454921 0.270996,0.734864 0.133457,0.533859 0.200189,1.090499 0.200195,1.669922 -6e-6,1.29883 -0.219732,2.24935 -0.659179,2.851562 -0.439459,0.602214 -1.196294,0.90332 -2.270508,0.90332 -0.602216,0 -1.08887,-0.09603 -1.459961,-0.288086 -0.371095,-0.192057 -0.675457,-0.473632 -0.913086,-0.844726 -0.172527,-0.263671 -0.306804,-0.624185 -0.402832,-1.081543 -0.09603,-0.457354 -0.144043,-0.962725 -0.144043,-1.516113 z m 1.972656,0.0049 c -2e-6,0.911461 0.08056,1.534019 0.241699,1.867676 0.161131,0.33366 0.394691,0.50049 0.700684,0.500488 0.201819,2e-6 0.376787,-0.0708 0.524902,-0.212402 0.148108,-0.1416 0.257158,-0.365395 0.327149,-0.671387 0.06998,-0.305987 0.104976,-0.782874 0.10498,-1.430664 -4e-6,-0.950516 -0.08057,-1.58935 -0.241699,-1.916504 -0.161137,-0.327142 -0.402836,-0.490716 -0.725098,-0.490722 -0.328779,6e-6 -0.566409,0.166835 -0.71289,0.500488 -0.146487,0.333664 -0.219729,0.951339 -0.219727,1.853027 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3820-1" />
id="path3820-1"
inkscape:connector-curvature="0" />
</g>
</g>
<g
@ -3262,22 +3834,26 @@
<path
style="fill:#ffffff;fill-opacity:1;stroke:#fff8f8;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m -111.43771,59.285714 0,-8.571429"
id="path4244-8" />
id="path4244-8"
inkscape:connector-curvature="0" />
<g
style="font-size:40px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;display:inline;font-family:Bitstream Vera Sans"
id="text4246-5">
<path
d="m -115.14864,49.571434 -5.9668,0 c 0.0684,-0.589192 0.27588,-1.143391 0.62256,-1.662598 0.34668,-0.519203 0.9969,-1.131996 1.95068,-1.838379 0.58268,-0.432938 0.9554,-0.761714 1.11817,-0.986328 0.16275,-0.224604 0.24413,-0.43782 0.24414,-0.639648 -1e-5,-0.218094 -0.0806,-0.404454 -0.2417,-0.559082 -0.16114,-0.154617 -0.36378,-0.231928 -0.60791,-0.231934 -0.25391,6e-6 -0.46143,0.07976 -0.62256,0.239258 -0.16114,0.159511 -0.26937,0.441086 -0.32471,0.844727 l -1.99219,-0.161133 c 0.0781,-0.55989 0.22136,-0.996902 0.42969,-1.311035 0.20833,-0.314121 0.50212,-0.555006 0.88135,-0.722657 0.37923,-0.167636 0.90413,-0.251457 1.57471,-0.251464 0.69986,7e-6 1.2443,0.07976 1.6333,0.239257 0.38899,0.159512 0.69498,0.404467 0.91797,0.734864 0.22297,0.330409 0.33446,0.700689 0.33447,1.11084 -1e-5,0.436202 -0.12777,0.852868 -0.3833,1.25 -0.25554,0.397138 -0.72022,0.833336 -1.39405,1.308593 -0.40039,0.276695 -0.66813,0.47038 -0.80322,0.581055 -0.13509,0.110679 -0.29378,0.255536 -0.47607,0.43457 l 3.10547,0 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3823-7" />
id="path3823-7"
inkscape:connector-curvature="0" />
<path
d="m -108.46896,49.571434 -5.96679,0 c 0.0684,-0.589192 0.27588,-1.143391 0.62256,-1.662598 0.34667,-0.519203 0.9969,-1.131996 1.95068,-1.838379 0.58268,-0.432938 0.9554,-0.761714 1.11816,-0.986328 0.16276,-0.224604 0.24414,-0.43782 0.24414,-0.639648 0,-0.218094 -0.0806,-0.404454 -0.2417,-0.559082 -0.16113,-0.154617 -0.36377,-0.231928 -0.60791,-0.231934 -0.2539,6e-6 -0.46142,0.07976 -0.62255,0.239258 -0.16114,0.159511 -0.26937,0.441086 -0.32471,0.844727 l -1.99219,-0.161133 c 0.0781,-0.55989 0.22136,-0.996902 0.42969,-1.311035 0.20833,-0.314121 0.50211,-0.555006 0.88135,-0.722657 0.37923,-0.167636 0.90413,-0.251457 1.5747,-0.251464 0.69987,7e-6 1.2443,0.07976 1.6333,0.239257 0.389,0.159512 0.69499,0.404467 0.91797,0.734864 0.22298,0.330409 0.33447,0.700689 0.33448,1.11084 -1e-5,0.436202 -0.12778,0.852868 -0.3833,1.25 -0.25554,0.397138 -0.72022,0.833336 -1.39405,1.308593 -0.40039,0.276695 -0.66813,0.47038 -0.80322,0.581055 -0.1351,0.110679 -0.29379,0.255536 -0.47607,0.43457 l 3.10546,0 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3825-6" />
id="path3825-6"
inkscape:connector-curvature="0" />
<path
d="m -107.60958,45.963036 c 0,-1.360673 0.24495,-2.31282 0.73486,-2.856446 0.48991,-0.543613 1.23617,-0.815422 2.23877,-0.815429 0.48177,7e-6 0.87728,0.05941 1.18653,0.178222 0.30924,0.118822 0.56151,0.273445 0.75683,0.463867 0.19531,0.190437 0.34912,0.390632 0.46143,0.600586 0.1123,0.209967 0.20263,0.454921 0.27099,0.734864 0.13346,0.533859 0.20019,1.090499 0.2002,1.669922 -1e-5,1.29883 -0.21973,2.24935 -0.65918,2.851562 -0.43946,0.602214 -1.19629,0.90332 -2.27051,0.90332 -0.60222,0 -1.08887,-0.09603 -1.45996,-0.288086 -0.3711,-0.192057 -0.67546,-0.473632 -0.91309,-0.844726 -0.17252,-0.263671 -0.3068,-0.624185 -0.40283,-1.081543 -0.096,-0.457354 -0.14404,-0.962725 -0.14404,-1.516113 z m 1.97266,0.0049 c -1e-5,0.911461 0.0806,1.534019 0.24169,1.867676 0.16113,0.33366 0.3947,0.50049 0.70069,0.500488 0.20182,2e-6 0.37678,-0.0708 0.5249,-0.212402 0.14811,-0.1416 0.25716,-0.365395 0.32715,-0.671387 0.07,-0.305987 0.10498,-0.782874 0.10498,-1.430664 0,-0.950516 -0.0806,-1.58935 -0.2417,-1.916504 -0.16114,-0.327142 -0.40284,-0.490716 -0.7251,-0.490722 -0.32878,6e-6 -0.56641,0.166835 -0.71289,0.500488 -0.14649,0.333664 -0.21973,0.951339 -0.21972,1.853027 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3827-1" />
id="path3827-1"
inkscape:connector-curvature="0" />
</g>
</g>
<g
@ -3287,22 +3863,26 @@
<path
id="path4252-9"
d="m -135.4377,59.285714 0,-8.571429"
style="fill:#ffffff;fill-opacity:1;stroke:#fff8f8;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
style="fill:#ffffff;fill-opacity:1;stroke:#fff8f8;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
inkscape:connector-curvature="0" />
<g
style="font-size:40px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;display:inline;font-family:Bitstream Vera Sans"
id="text4254-2">
<path
d="m -139.14864,49.571434 -5.96679,0 c 0.0684,-0.589192 0.27588,-1.143391 0.62256,-1.662598 0.34667,-0.519203 0.9969,-1.131996 1.95068,-1.838379 0.58268,-0.432938 0.9554,-0.761714 1.11816,-0.986328 0.16276,-0.224604 0.24414,-0.43782 0.24414,-0.639648 0,-0.218094 -0.0806,-0.404454 -0.2417,-0.559082 -0.16113,-0.154617 -0.36377,-0.231928 -0.60791,-0.231934 -0.2539,6e-6 -0.46142,0.07976 -0.62255,0.239258 -0.16114,0.159511 -0.26937,0.441086 -0.32471,0.844727 l -1.99219,-0.161133 c 0.0781,-0.55989 0.22136,-0.996902 0.42969,-1.311035 0.20833,-0.314121 0.50211,-0.555006 0.88135,-0.722657 0.37923,-0.167636 0.90413,-0.251457 1.5747,-0.251464 0.69987,7e-6 1.2443,0.07976 1.6333,0.239257 0.389,0.159512 0.69499,0.404467 0.91797,0.734864 0.22298,0.330409 0.33447,0.700689 0.33448,1.11084 -1e-5,0.436202 -0.12778,0.852868 -0.3833,1.25 -0.25554,0.397138 -0.72022,0.833336 -1.39405,1.308593 -0.40039,0.276695 -0.66813,0.47038 -0.80322,0.581055 -0.1351,0.110679 -0.29379,0.255536 -0.47607,0.43457 l 3.10546,0 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3830-7" />
id="path3830-7"
inkscape:connector-curvature="0" />
<path
d="m -133.78242,42.291161 0,7.280273 -2.01172,0 0,-4.770508 c -0.32553,0.247401 -0.64047,0.447596 -0.94483,0.600586 -0.30436,0.152999 -0.68603,0.299483 -1.14502,0.439453 l 0,-1.630859 c 0.67708,-0.218093 1.2028,-0.480137 1.57715,-0.786133 0.37435,-0.305983 0.66732,-0.683587 0.87891,-1.132812 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3832-9" />
id="path3832-9"
inkscape:connector-curvature="0" />
<path
d="m -131.60957,45.963036 c 0,-1.360673 0.24495,-2.31282 0.73486,-2.856446 0.48991,-0.543613 1.23616,-0.815422 2.23877,-0.815429 0.48177,7e-6 0.87727,0.05941 1.18652,0.178222 0.30924,0.118822 0.56152,0.273445 0.75684,0.463867 0.19531,0.190437 0.34911,0.390632 0.46142,0.600586 0.1123,0.209967 0.20264,0.454921 0.271,0.734864 0.13346,0.533859 0.20019,1.090499 0.2002,1.669922 -10e-6,1.29883 -0.21974,2.24935 -0.65918,2.851562 -0.43946,0.602214 -1.1963,0.90332 -2.27051,0.90332 -0.60222,0 -1.08887,-0.09603 -1.45996,-0.288086 -0.3711,-0.192057 -0.67546,-0.473632 -0.91309,-0.844726 -0.17253,-0.263671 -0.3068,-0.624185 -0.40283,-1.081543 -0.096,-0.457354 -0.14404,-0.962725 -0.14404,-1.516113 z m 1.97265,0.0049 c 0,0.911461 0.0806,1.534019 0.2417,1.867676 0.16113,0.33366 0.39469,0.50049 0.70069,0.500488 0.20182,2e-6 0.37678,-0.0708 0.5249,-0.212402 0.14811,-0.1416 0.25716,-0.365395 0.32715,-0.671387 0.07,-0.305987 0.10497,-0.782874 0.10498,-1.430664 -1e-5,-0.950516 -0.0806,-1.58935 -0.2417,-1.916504 -0.16114,-0.327142 -0.40284,-0.490716 -0.7251,-0.490722 -0.32878,6e-6 -0.56641,0.166835 -0.71289,0.500488 -0.14649,0.333664 -0.21973,0.951339 -0.21973,1.853027 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3834-5" />
id="path3834-5"
inkscape:connector-curvature="0" />
</g>
</g>
<g
@ -3312,22 +3892,26 @@
<path
style="fill:#ffffff;fill-opacity:1;stroke:#fff8f8;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m -159.4377,59.285714 0,-8.571429"
id="path4260-3" />
id="path4260-3"
inkscape:connector-curvature="0" />
<g
style="font-size:40px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;display:inline;font-family:Bitstream Vera Sans"
id="text4262-1">
<path
d="m -163.14864,49.571434 -5.96679,0 c 0.0684,-0.589192 0.27588,-1.143391 0.62256,-1.662598 0.34667,-0.519203 0.9969,-1.131996 1.95068,-1.838379 0.58268,-0.432938 0.9554,-0.761714 1.11816,-0.986328 0.16276,-0.224604 0.24414,-0.43782 0.24414,-0.639648 0,-0.218094 -0.0806,-0.404454 -0.2417,-0.559082 -0.16113,-0.154617 -0.36377,-0.231928 -0.60791,-0.231934 -0.2539,6e-6 -0.46142,0.07976 -0.62255,0.239258 -0.16114,0.159511 -0.26937,0.441086 -0.32471,0.844727 l -1.99219,-0.161133 c 0.0781,-0.55989 0.22136,-0.996902 0.42969,-1.311035 0.20833,-0.314121 0.50211,-0.555006 0.88135,-0.722657 0.37923,-0.167636 0.90413,-0.251457 1.5747,-0.251464 0.69987,7e-6 1.2443,0.07976 1.6333,0.239257 0.389,0.159512 0.69499,0.404467 0.91797,0.734864 0.22298,0.330409 0.33447,0.700689 0.33448,1.11084 -1e-5,0.436202 -0.12778,0.852868 -0.3833,1.25 -0.25554,0.397138 -0.72022,0.833336 -1.39405,1.308593 -0.40039,0.276695 -0.66813,0.47038 -0.80322,0.581055 -0.1351,0.110679 -0.29379,0.255536 -0.47607,0.43457 l 3.10546,0 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3837-2" />
id="path3837-2"
inkscape:connector-curvature="0" />
<path
d="m -162.28926,45.963036 c 0,-1.360673 0.24495,-2.31282 0.73486,-2.856446 0.48991,-0.543613 1.23617,-0.815422 2.23877,-0.815429 0.48177,7e-6 0.87728,0.05941 1.18653,0.178222 0.30924,0.118822 0.56151,0.273445 0.75683,0.463867 0.19531,0.190437 0.34912,0.390632 0.46143,0.600586 0.1123,0.209967 0.20263,0.454921 0.27099,0.734864 0.13346,0.533859 0.20019,1.090499 0.2002,1.669922 -1e-5,1.29883 -0.21973,2.24935 -0.65918,2.851562 -0.43946,0.602214 -1.19629,0.90332 -2.27051,0.90332 -0.60222,0 -1.08887,-0.09603 -1.45996,-0.288086 -0.3711,-0.192057 -0.67546,-0.473632 -0.91309,-0.844726 -0.17252,-0.263671 -0.3068,-0.624185 -0.40283,-1.081543 -0.096,-0.457354 -0.14404,-0.962725 -0.14404,-1.516113 z m 1.97266,0.0049 c -1e-5,0.911461 0.0806,1.534019 0.24169,1.867676 0.16113,0.33366 0.3947,0.50049 0.70069,0.500488 0.20182,2e-6 0.37678,-0.0708 0.5249,-0.212402 0.14811,-0.1416 0.25716,-0.365395 0.32715,-0.671387 0.07,-0.305987 0.10498,-0.782874 0.10498,-1.430664 0,-0.950516 -0.0806,-1.58935 -0.2417,-1.916504 -0.16114,-0.327142 -0.40284,-0.490716 -0.7251,-0.490722 -0.32878,6e-6 -0.56641,0.166835 -0.71289,0.500488 -0.14648,0.333664 -0.21973,0.951339 -0.21972,1.853027 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3839-3" />
id="path3839-3"
inkscape:connector-curvature="0" />
<path
d="m -155.60957,45.963036 c 0,-1.360673 0.24495,-2.31282 0.73486,-2.856446 0.48991,-0.543613 1.23616,-0.815422 2.23877,-0.815429 0.48177,7e-6 0.87727,0.05941 1.18652,0.178222 0.30924,0.118822 0.56152,0.273445 0.75684,0.463867 0.19531,0.190437 0.34911,0.390632 0.46142,0.600586 0.1123,0.209967 0.20264,0.454921 0.271,0.734864 0.13346,0.533859 0.20019,1.090499 0.2002,1.669922 -1e-5,1.29883 -0.21974,2.24935 -0.65918,2.851562 -0.43946,0.602214 -1.1963,0.90332 -2.27051,0.90332 -0.60222,0 -1.08887,-0.09603 -1.45996,-0.288086 -0.3711,-0.192057 -0.67546,-0.473632 -0.91309,-0.844726 -0.17253,-0.263671 -0.3068,-0.624185 -0.40283,-1.081543 -0.096,-0.457354 -0.14404,-0.962725 -0.14404,-1.516113 z m 1.97265,0.0049 c 0,0.911461 0.0806,1.534019 0.2417,1.867676 0.16113,0.33366 0.39469,0.50049 0.70069,0.500488 0.20182,2e-6 0.37678,-0.0708 0.5249,-0.212402 0.14811,-0.1416 0.25716,-0.365395 0.32715,-0.671387 0.07,-0.305987 0.10497,-0.782874 0.10498,-1.430664 -10e-6,-0.950516 -0.0806,-1.58935 -0.2417,-1.916504 -0.16114,-0.327142 -0.40284,-0.490716 -0.7251,-0.490722 -0.32878,6e-6 -0.56641,0.166835 -0.71289,0.500488 -0.14649,0.333664 -0.21973,0.951339 -0.21973,1.853027 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3841-3" />
id="path3841-3"
inkscape:connector-curvature="0" />
</g>
</g>
<g
@ -3337,22 +3921,26 @@
<path
id="path4268-1"
d="m -181.16182,59.285714 0,-8.571429"
style="fill:#ffffff;fill-opacity:1;stroke:#fff8f8;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
style="fill:#ffffff;fill-opacity:1;stroke:#fff8f8;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
inkscape:connector-curvature="0" />
<g
style="font-size:40px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;display:inline;font-family:Bitstream Vera Sans"
id="text4270-1">
<path
d="m -186.46211,42.291161 0,7.280273 -2.01172,0 0,-4.770508 c -0.32552,0.247401 -0.64047,0.447596 -0.94483,0.600586 -0.30436,0.152999 -0.68603,0.299483 -1.14501,0.439453 l 0,-1.630859 c 0.67708,-0.218093 1.20279,-0.480137 1.57714,-0.786133 0.37435,-0.305983 0.66732,-0.683587 0.87891,-1.132812 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3844-3" />
id="path3844-3"
inkscape:connector-curvature="0" />
<path
d="m -184.20137,47.964989 1.97754,-0.249024 c 0.0521,0.276695 0.13997,0.472007 0.26367,0.585938 0.1237,0.113933 0.27506,0.170899 0.4541,0.170898 0.31901,1e-6 0.56803,-0.161131 0.74707,-0.483398 0.13021,-0.237629 0.22786,-0.740558 0.29297,-1.508789 -0.23763,0.244143 -0.48177,0.423179 -0.73242,0.537109 -0.25065,0.113935 -0.54037,0.170901 -0.86914,0.170899 -0.64128,2e-6 -1.18246,-0.227862 -1.62354,-0.683594 -0.44108,-0.455726 -0.66162,-1.031897 -0.66162,-1.728516 0,-0.475255 0.11231,-0.908197 0.33692,-1.298828 0.22461,-0.390618 0.53385,-0.686028 0.92773,-0.88623 0.39388,-0.200189 0.88867,-0.300286 1.48438,-0.300293 0.71614,7e-6 1.29068,0.122891 1.72363,0.368652 0.43294,0.245775 0.7788,0.636399 1.0376,1.171875 0.25878,0.535487 0.38817,1.24268 0.38818,2.121582 -1e-5,1.29232 -0.27182,2.238771 -0.81543,2.839355 -0.54362,0.600587 -1.2972,0.900879 -2.26074,0.900879 -0.56967,0 -1.01888,-0.06592 -1.34766,-0.197754 -0.32878,-0.131835 -0.60221,-0.324706 -0.82031,-0.578613 -0.2181,-0.253905 -0.38574,-0.571288 -0.50293,-0.952148 z m 3.66211,-3.19336 c -10e-6,-0.387364 -0.0977,-0.690912 -0.29297,-0.910644 -0.19532,-0.219721 -0.43295,-0.329584 -0.71289,-0.32959 -0.26368,6e-6 -0.48259,0.09929 -0.65674,0.297852 -0.17415,0.198573 -0.26123,0.496424 -0.26123,0.893554 0,0.400395 0.0903,0.706385 0.271,0.917969 0.18066,0.211592 0.40608,0.317386 0.67627,0.317383 0.27994,3e-6 0.51269,-0.102536 0.69824,-0.307617 0.18554,-0.205074 0.27831,-0.498043 0.27832,-0.878907 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3846-8" />
id="path3846-8"
inkscape:connector-curvature="0" />
<path
d="m -177.60957,45.963036 c 0,-1.360673 0.24495,-2.31282 0.73486,-2.856446 0.48991,-0.543613 1.23616,-0.815422 2.23877,-0.815429 0.48177,7e-6 0.87727,0.05941 1.18652,0.178222 0.30924,0.118822 0.56152,0.273445 0.75684,0.463867 0.19531,0.190437 0.34911,0.390632 0.46142,0.600586 0.1123,0.209967 0.20264,0.454921 0.271,0.734864 0.13346,0.533859 0.20019,1.090499 0.2002,1.669922 -1e-5,1.29883 -0.21974,2.24935 -0.65918,2.851562 -0.43946,0.602214 -1.1963,0.90332 -2.27051,0.90332 -0.60222,0 -1.08887,-0.09603 -1.45996,-0.288086 -0.3711,-0.192057 -0.67546,-0.473632 -0.91309,-0.844726 -0.17253,-0.263671 -0.3068,-0.624185 -0.40283,-1.081543 -0.096,-0.457354 -0.14404,-0.962725 -0.14404,-1.516113 z m 1.97265,0.0049 c 0,0.911461 0.0806,1.534019 0.2417,1.867676 0.16113,0.33366 0.39469,0.50049 0.70069,0.500488 0.20182,2e-6 0.37678,-0.0708 0.5249,-0.212402 0.14811,-0.1416 0.25716,-0.365395 0.32715,-0.671387 0.07,-0.305987 0.10497,-0.782874 0.10498,-1.430664 -10e-6,-0.950516 -0.0806,-1.58935 -0.2417,-1.916504 -0.16114,-0.327142 -0.40284,-0.490716 -0.7251,-0.490722 -0.32878,6e-6 -0.56641,0.166835 -0.71289,0.500488 -0.14649,0.333664 -0.21973,0.951339 -0.21973,1.853027 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3848-7" />
id="path3848-7"
inkscape:connector-curvature="0" />
</g>
</g>
<g
@ -3362,7 +3950,8 @@
<path
id="path6994-7"
d="m -456.77631,58.288825 0,-8.57142"
style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" />
style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline"
inkscape:connector-curvature="0" />
</g>
<g
transform="translate(-997.57233,-83.494924)"
@ -3371,22 +3960,26 @@
<path
id="path3916-9"
d="m 568.45258,59.285714 0,-8.571429"
style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
inkscape:connector-curvature="0" />
<g
style="font-size:40px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;display:inline;font-family:Bitstream Vera Sans"
id="text3918-3">
<path
d="m 563.15228,42.291161 0,7.280273 -2.01172,0 0,-4.770508 c -0.32552,0.247401 -0.64046,0.447596 -0.94482,0.600586 -0.30436,0.152999 -0.68604,0.299483 -1.14502,0.439453 l 0,-1.630859 c 0.67708,-0.218093 1.2028,-0.480137 1.57715,-0.786133 0.37434,-0.305983 0.66731,-0.683587 0.8789,-1.132812 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3681-1" />
id="path3681-1"
inkscape:connector-curvature="0" />
<path
d="m 565.32513,45.963036 c 0,-1.360673 0.24496,-2.31282 0.73487,-2.856446 0.4899,-0.543613 1.23616,-0.815422 2.23877,-0.815429 0.48176,7e-6 0.87727,0.05941 1.18652,0.178222 0.30924,0.118822 0.56152,0.273445 0.75684,0.463867 0.1953,0.190437 0.34911,0.390632 0.46142,0.600586 0.1123,0.209967 0.20263,0.454921 0.271,0.734864 0.13346,0.533859 0.20019,1.090499 0.20019,1.669922 0,1.29883 -0.21973,2.24935 -0.65918,2.851562 -0.43945,0.602214 -1.19629,0.90332 -2.2705,0.90332 -0.60222,0 -1.08887,-0.09603 -1.45996,-0.288086 -0.3711,-0.192057 -0.67546,-0.473632 -0.91309,-0.844726 -0.17253,-0.263671 -0.3068,-0.624185 -0.40283,-1.081543 -0.096,-0.457354 -0.14405,-0.962725 -0.14405,-1.516113 z m 1.97266,0.0049 c 0,0.911461 0.0806,1.534019 0.2417,1.867676 0.16113,0.33366 0.39469,0.50049 0.70068,0.500488 0.20182,2e-6 0.37679,-0.0708 0.52491,-0.212402 0.1481,-0.1416 0.25715,-0.365395 0.32714,-0.671387 0.07,-0.305987 0.10498,-0.782874 0.10498,-1.430664 0,-0.950516 -0.0806,-1.58935 -0.24169,-1.916504 -0.16114,-0.327142 -0.40284,-0.490716 -0.7251,-0.490722 -0.32878,6e-6 -0.56641,0.166835 -0.71289,0.500488 -0.14649,0.333664 -0.21973,0.951339 -0.21973,1.853027 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3683-9" />
id="path3683-9"
inkscape:connector-curvature="0" />
<path
d="m 572.00482,45.963036 c 0,-1.360673 0.24496,-2.31282 0.73487,-2.856446 0.4899,-0.543613 1.23616,-0.815422 2.23876,-0.815429 0.48177,7e-6 0.87728,0.05941 1.18653,0.178222 0.30924,0.118822 0.56152,0.273445 0.75683,0.463867 0.19531,0.190437 0.34912,0.390632 0.46143,0.600586 0.1123,0.209967 0.20263,0.454921 0.271,0.734864 0.13345,0.533859 0.20018,1.090499 0.20019,1.669922 -10e-6,1.29883 -0.21973,2.24935 -0.65918,2.851562 -0.43946,0.602214 -1.19629,0.90332 -2.27051,0.90332 -0.60221,0 -1.08887,-0.09603 -1.45996,-0.288086 -0.37109,-0.192057 -0.67545,-0.473632 -0.91308,-0.844726 -0.17253,-0.263671 -0.30681,-0.624185 -0.40284,-1.081543 -0.096,-0.457354 -0.14404,-0.962725 -0.14404,-1.516113 z m 1.97266,0.0049 c 0,0.911461 0.0806,1.534019 0.2417,1.867676 0.16113,0.33366 0.39469,0.50049 0.70068,0.500488 0.20182,2e-6 0.37679,-0.0708 0.5249,-0.212402 0.14811,-0.1416 0.25716,-0.365395 0.32715,-0.671387 0.07,-0.305987 0.10498,-0.782874 0.10498,-1.430664 0,-0.950516 -0.0806,-1.58935 -0.2417,-1.916504 -0.16113,-0.327142 -0.40283,-0.490716 -0.72509,-0.490722 -0.32878,6e-6 -0.56641,0.166835 -0.7129,0.500488 -0.14648,0.333664 -0.21972,0.951339 -0.21972,1.853027 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3685-8" />
id="path3685-8"
inkscape:connector-curvature="0" />
</g>
</g>
<g
@ -3396,22 +3989,26 @@
<path
style="fill:#ffffff;fill-opacity:1;stroke:#fff8f8;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 600.45258,59.285714 0,-8.571429"
id="path3924-5" />
id="path3924-5"
inkscape:connector-curvature="0" />
<g
style="font-size:40px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;display:inline;font-family:Bitstream Vera Sans"
id="text3926-0">
<path
d="m 595.15228,42.291161 0,7.280273 -2.01172,0 0,-4.770508 c -0.32552,0.247401 -0.64046,0.447596 -0.94482,0.600586 -0.30436,0.152999 -0.68604,0.299483 -1.14502,0.439453 l 0,-1.630859 c 0.67708,-0.218093 1.2028,-0.480137 1.57715,-0.786133 0.37434,-0.305983 0.66731,-0.683587 0.8789,-1.132812 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3688-2" />
id="path3688-2"
inkscape:connector-curvature="0" />
<path
d="m 601.83197,42.291161 0,7.280273 -2.01172,0 0,-4.770508 c -0.32552,0.247401 -0.64046,0.447596 -0.94482,0.600586 -0.30437,0.152999 -0.68604,0.299483 -1.14502,0.439453 l 0,-1.630859 c 0.67708,-0.218093 1.2028,-0.480137 1.57715,-0.786133 0.37434,-0.305983 0.66731,-0.683587 0.8789,-1.132812 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3690-8" />
id="path3690-8"
inkscape:connector-curvature="0" />
<path
d="m 604.00482,45.963036 c 0,-1.360673 0.24496,-2.31282 0.73487,-2.856446 0.4899,-0.543613 1.23616,-0.815422 2.23876,-0.815429 0.48177,7e-6 0.87728,0.05941 1.18653,0.178222 0.30924,0.118822 0.56152,0.273445 0.75683,0.463867 0.19531,0.190437 0.34912,0.390632 0.46143,0.600586 0.1123,0.209967 0.20263,0.454921 0.271,0.734864 0.13345,0.533859 0.20018,1.090499 0.20019,1.669922 -10e-6,1.29883 -0.21973,2.24935 -0.65918,2.851562 -0.43946,0.602214 -1.19629,0.90332 -2.27051,0.90332 -0.60221,0 -1.08887,-0.09603 -1.45996,-0.288086 -0.37109,-0.192057 -0.67545,-0.473632 -0.91308,-0.844726 -0.17253,-0.263671 -0.30681,-0.624185 -0.40284,-1.081543 -0.096,-0.457354 -0.14404,-0.962725 -0.14404,-1.516113 z m 1.97266,0.0049 c 0,0.911461 0.0806,1.534019 0.2417,1.867676 0.16113,0.33366 0.39469,0.50049 0.70068,0.500488 0.20182,2e-6 0.37679,-0.0708 0.5249,-0.212402 0.14811,-0.1416 0.25716,-0.365395 0.32715,-0.671387 0.07,-0.305987 0.10498,-0.782874 0.10498,-1.430664 0,-0.950516 -0.0806,-1.58935 -0.2417,-1.916504 -0.16113,-0.327142 -0.40283,-0.490716 -0.72509,-0.490722 -0.32878,6e-6 -0.56641,0.166835 -0.7129,0.500488 -0.14648,0.333664 -0.21972,0.951339 -0.21972,1.853027 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3692-6" />
id="path3692-6"
inkscape:connector-curvature="0" />
</g>
</g>
<g
@ -3421,22 +4018,26 @@
<path
id="path3932-2"
d="m 632.45258,59.285714 0,-8.571429"
style="fill:#ffffff;fill-opacity:1;stroke:#fff8f8;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
style="fill:#ffffff;fill-opacity:1;stroke:#fff8f8;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
inkscape:connector-curvature="0" />
<g
style="font-size:40px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;display:inline;font-family:Bitstream Vera Sans"
id="text3934-4">
<path
d="m 627.15228,42.291161 0,7.280273 -2.01172,0 0,-4.770508 c -0.32552,0.247401 -0.64046,0.447596 -0.94482,0.600586 -0.30436,0.152999 -0.68604,0.299483 -1.14502,0.439453 l 0,-1.630859 c 0.67708,-0.218093 1.2028,-0.480137 1.57715,-0.786133 0.37434,-0.305983 0.66731,-0.683587 0.8789,-1.132812 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3695-8" />
id="path3695-8"
inkscape:connector-curvature="0" />
<path
d="m 635.14545,49.571434 -5.9668,0 c 0.0684,-0.589192 0.27588,-1.143391 0.62256,-1.662598 0.34668,-0.519203 0.9969,-1.131996 1.95068,-1.838379 0.58268,-0.432938 0.9554,-0.761714 1.11817,-0.986328 0.16275,-0.224604 0.24413,-0.43782 0.24414,-0.639648 -10e-6,-0.218094 -0.0806,-0.404454 -0.2417,-0.559082 -0.16114,-0.154617 -0.36378,-0.231928 -0.60791,-0.231934 -0.25391,6e-6 -0.46143,0.07976 -0.62256,0.239258 -0.16114,0.159511 -0.26937,0.441086 -0.32471,0.844727 l -1.99219,-0.161133 c 0.0781,-0.55989 0.22136,-0.996902 0.42969,-1.311035 0.20833,-0.314121 0.50212,-0.555006 0.88135,-0.722657 0.37923,-0.167636 0.90413,-0.251457 1.57471,-0.251464 0.69986,7e-6 1.2443,0.07976 1.6333,0.239257 0.38899,0.159512 0.69498,0.404467 0.91797,0.734864 0.22297,0.330409 0.33446,0.700689 0.33447,1.11084 -10e-6,0.436202 -0.12777,0.852868 -0.3833,1.25 -0.25554,0.397138 -0.72022,0.833336 -1.39405,1.308593 -0.40039,0.276695 -0.66813,0.47038 -0.80322,0.581055 -0.13509,0.110679 -0.29378,0.255536 -0.47607,0.43457 l 3.10547,0 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3697-6" />
id="path3697-6"
inkscape:connector-curvature="0" />
<path
d="m 636.00482,45.963036 c 0,-1.360673 0.24496,-2.31282 0.73487,-2.856446 0.4899,-0.543613 1.23616,-0.815422 2.23876,-0.815429 0.48177,7e-6 0.87728,0.05941 1.18653,0.178222 0.30924,0.118822 0.56152,0.273445 0.75683,0.463867 0.19531,0.190437 0.34912,0.390632 0.46143,0.600586 0.1123,0.209967 0.20263,0.454921 0.271,0.734864 0.13345,0.533859 0.20018,1.090499 0.20019,1.669922 -10e-6,1.29883 -0.21973,2.24935 -0.65918,2.851562 -0.43946,0.602214 -1.19629,0.90332 -2.27051,0.90332 -0.60221,0 -1.08887,-0.09603 -1.45996,-0.288086 -0.37109,-0.192057 -0.67545,-0.473632 -0.91308,-0.844726 -0.17253,-0.263671 -0.30681,-0.624185 -0.40284,-1.081543 -0.096,-0.457354 -0.14404,-0.962725 -0.14404,-1.516113 z m 1.97266,0.0049 c 0,0.911461 0.0806,1.534019 0.2417,1.867676 0.16113,0.33366 0.39469,0.50049 0.70068,0.500488 0.20182,2e-6 0.37679,-0.0708 0.5249,-0.212402 0.14811,-0.1416 0.25716,-0.365395 0.32715,-0.671387 0.07,-0.305987 0.10498,-0.782874 0.10498,-1.430664 0,-0.950516 -0.0806,-1.58935 -0.2417,-1.916504 -0.16113,-0.327142 -0.40283,-0.490716 -0.72509,-0.490722 -0.32878,6e-6 -0.56641,0.166835 -0.7129,0.500488 -0.14648,0.333664 -0.21972,0.951339 -0.21972,1.853027 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3699-5" />
id="path3699-5"
inkscape:connector-curvature="0" />
</g>
</g>
<g
@ -3446,22 +4047,26 @@
<path
style="fill:#ffffff;fill-opacity:1;stroke:#fff8f8;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 664.45258,59.285714 0,-8.571429"
id="path3940-9" />
id="path3940-9"
inkscape:connector-curvature="0" />
<g
style="font-size:40px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;display:inline;font-family:Bitstream Vera Sans"
id="text3942-0">
<path
d="m 659.15228,42.291161 0,7.280273 -2.01172,0 0,-4.770508 c -0.32552,0.247401 -0.64046,0.447596 -0.94482,0.600586 -0.30436,0.152999 -0.68604,0.299483 -1.14502,0.439453 l 0,-1.630859 c 0.67708,-0.218093 1.2028,-0.480137 1.57715,-0.786133 0.37434,-0.305983 0.66731,-0.683587 0.8789,-1.132812 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3702-0" />
id="path3702-0"
inkscape:connector-curvature="0" />
<path
d="m 663.25385,44.483543 -1.87989,-0.336914 c 0.15625,-0.598952 0.45654,-1.057936 0.90088,-1.376953 0.44434,-0.319003 1.0734,-0.478508 1.88721,-0.478515 0.93424,7e-6 1.60969,0.17416 2.02637,0.522461 0.41666,0.348313 0.62499,0.786138 0.625,1.313476 -10e-6,0.30925 -0.0846,0.589198 -0.25391,0.839844 -0.16928,0.250655 -0.42481,0.470382 -0.7666,0.65918 0.27669,0.06836 0.48827,0.148115 0.63476,0.239257 0.23763,0.146488 0.42236,0.339359 0.5542,0.578614 0.13183,0.23926 0.19775,0.524905 0.19776,0.856933 -10e-6,0.416669 -0.10906,0.816245 -0.32715,1.198731 -0.21811,0.382487 -0.53223,0.677083 -0.94238,0.883789 -0.41017,0.206705 -0.9489,0.310058 -1.61622,0.310058 -0.65104,0 -1.16455,-0.0765 -1.54052,-0.229492 -0.37598,-0.152994 -0.68523,-0.37679 -0.92774,-0.671387 -0.24251,-0.294595 -0.42887,-0.664874 -0.55908,-1.110839 l 1.98731,-0.263672 c 0.0781,0.400392 0.19937,0.677898 0.36376,0.832519 0.16439,0.154624 0.37354,0.231935 0.62745,0.231934 0.26692,10e-7 0.48909,-0.09766 0.6665,-0.292969 0.1774,-0.195311 0.26611,-0.455727 0.26611,-0.78125 0,-0.332029 -0.0855,-0.58919 -0.25634,-0.771484 -0.17091,-0.182289 -0.40284,-0.273435 -0.69581,-0.273438 -0.15625,3e-6 -0.37109,0.03907 -0.64453,0.117188 l 0.10254,-1.420899 c 0.11068,0.01628 0.19694,0.02442 0.25879,0.02441 0.26042,5e-6 0.4777,-0.083 0.65186,-0.249023 0.17415,-0.166011 0.26122,-0.362951 0.26123,-0.59082 -10e-6,-0.218094 -0.0651,-0.392247 -0.19531,-0.522461 -0.13022,-0.130203 -0.30925,-0.195307 -0.53711,-0.195313 -0.23438,6e-6 -0.42481,0.07081 -0.57129,0.212402 -0.14649,0.141608 -0.24577,0.389817 -0.29785,0.744629 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3704-6" />
id="path3704-6"
inkscape:connector-curvature="0" />
<path
d="m 668.00482,45.963036 c 0,-1.360673 0.24496,-2.31282 0.73487,-2.856446 0.4899,-0.543613 1.23616,-0.815422 2.23876,-0.815429 0.48177,7e-6 0.87728,0.05941 1.18653,0.178222 0.30924,0.118822 0.56152,0.273445 0.75683,0.463867 0.19531,0.190437 0.34912,0.390632 0.46143,0.600586 0.1123,0.209967 0.20263,0.454921 0.271,0.734864 0.13345,0.533859 0.20018,1.090499 0.20019,1.669922 -10e-6,1.29883 -0.21973,2.24935 -0.65918,2.851562 -0.43946,0.602214 -1.19629,0.90332 -2.27051,0.90332 -0.60221,0 -1.08887,-0.09603 -1.45996,-0.288086 -0.37109,-0.192057 -0.67545,-0.473632 -0.91308,-0.844726 -0.17253,-0.263671 -0.30681,-0.624185 -0.40284,-1.081543 -0.096,-0.457354 -0.14404,-0.962725 -0.14404,-1.516113 z m 1.97266,0.0049 c 0,0.911461 0.0806,1.534019 0.2417,1.867676 0.16113,0.33366 0.39469,0.50049 0.70068,0.500488 0.20182,2e-6 0.37679,-0.0708 0.5249,-0.212402 0.14811,-0.1416 0.25716,-0.365395 0.32715,-0.671387 0.07,-0.305987 0.10498,-0.782874 0.10498,-1.430664 0,-0.950516 -0.0806,-1.58935 -0.2417,-1.916504 -0.16113,-0.327142 -0.40283,-0.490716 -0.72509,-0.490722 -0.32878,6e-6 -0.56641,0.166835 -0.7129,0.500488 -0.14648,0.333664 -0.21972,0.951339 -0.21972,1.853027 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3706-1" />
id="path3706-1"
inkscape:connector-curvature="0" />
</g>
</g>
<g
@ -3471,22 +4076,26 @@
<path
id="path3948-8"
d="m 696.45258,59.285714 0,-8.571429"
style="fill:#ffffff;fill-opacity:1;stroke:#fff8f8;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
style="fill:#ffffff;fill-opacity:1;stroke:#fff8f8;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
inkscape:connector-curvature="0" />
<g
style="font-size:40px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;display:inline;font-family:Bitstream Vera Sans"
id="text3950-9">
<path
d="m 691.15228,42.291161 0,7.280273 -2.01172,0 0,-4.770508 c -0.32552,0.247401 -0.64046,0.447596 -0.94482,0.600586 -0.30436,0.152999 -0.68604,0.299483 -1.14502,0.439453 l 0,-1.630859 c 0.67708,-0.218093 1.2028,-0.480137 1.57715,-0.786133 0.37434,-0.305983 0.66731,-0.683587 0.8789,-1.132812 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3709-3" />
id="path3709-3"
inkscape:connector-curvature="0" />
<path
d="m 696.7431,48.233543 -3.62304,0 0,-1.635742 3.62304,-4.30664 1.7334,0 0,4.399414 0.89844,0 0,1.542968 -0.89844,0 0,1.337891 -1.7334,0 z m 0,-1.542968 0,-2.250977 -1.91406,2.250977 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3711-4" />
id="path3711-4"
inkscape:connector-curvature="0" />
<path
d="m 700.00482,45.963036 c 0,-1.360673 0.24496,-2.31282 0.73487,-2.856446 0.4899,-0.543613 1.23616,-0.815422 2.23876,-0.815429 0.48177,7e-6 0.87728,0.05941 1.18653,0.178222 0.30924,0.118822 0.56152,0.273445 0.75683,0.463867 0.19531,0.190437 0.34912,0.390632 0.46143,0.600586 0.1123,0.209967 0.20263,0.454921 0.271,0.734864 0.13345,0.533859 0.20018,1.090499 0.20019,1.669922 -10e-6,1.29883 -0.21973,2.24935 -0.65918,2.851562 -0.43946,0.602214 -1.19629,0.90332 -2.27051,0.90332 -0.60221,0 -1.08887,-0.09603 -1.45996,-0.288086 -0.37109,-0.192057 -0.67545,-0.473632 -0.91308,-0.844726 -0.17253,-0.263671 -0.30681,-0.624185 -0.40284,-1.081543 -0.096,-0.457354 -0.14404,-0.962725 -0.14404,-1.516113 z m 1.97266,0.0049 c 0,0.911461 0.0806,1.534019 0.2417,1.867676 0.16113,0.33366 0.39469,0.50049 0.70068,0.500488 0.20182,2e-6 0.37679,-0.0708 0.5249,-0.212402 0.14811,-0.1416 0.25716,-0.365395 0.32715,-0.671387 0.07,-0.305987 0.10498,-0.782874 0.10498,-1.430664 0,-0.950516 -0.0806,-1.58935 -0.2417,-1.916504 -0.16113,-0.327142 -0.40283,-0.490716 -0.72509,-0.490722 -0.32878,6e-6 -0.56641,0.166835 -0.7129,0.500488 -0.14648,0.333664 -0.21972,0.951339 -0.21972,1.853027 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3713-4" />
id="path3713-4"
inkscape:connector-curvature="0" />
</g>
</g>
<g
@ -3496,22 +4105,26 @@
<path
style="fill:#ffffff;fill-opacity:1;stroke:#fff8f8;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 722.45258,59.285714 0,-8.571429"
id="path3956-0" />
id="path3956-0"
inkscape:connector-curvature="0" />
<g
style="font-size:40px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;display:inline;font-family:Bitstream Vera Sans"
id="text3958-6">
<path
d="m 717.15228,42.291161 0,7.280273 -2.01172,0 0,-4.770508 c -0.32552,0.247401 -0.64046,0.447596 -0.94482,0.600586 -0.30436,0.152999 -0.68604,0.299483 -1.14502,0.439453 l 0,-1.630859 c 0.67708,-0.218093 1.2028,-0.480137 1.57715,-0.786133 0.37434,-0.305983 0.66731,-0.683587 0.8789,-1.132812 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3716-6" />
id="path3716-6"
inkscape:connector-curvature="0" />
<path
d="m 720.1308,42.413231 4.72168,0 0,1.586914 -3.19824,0 -0.1709,1.074219 c 0.22135,-0.104162 0.44026,-0.182287 0.65674,-0.234375 0.21646,-0.05208 0.43049,-0.07812 0.64209,-0.07813 0.71614,5e-6 1.29719,0.216476 1.74316,0.649414 0.44596,0.432946 0.66894,0.978193 0.66894,1.635742 0,0.462242 -0.11475,0.906577 -0.34423,1.333008 -0.2295,0.426433 -0.55502,0.751953 -0.97657,0.976562 -0.42155,0.22461 -0.9611,0.336914 -1.61865,0.336914 -0.47201,0 -0.87647,-0.04476 -1.21338,-0.134277 -0.33691,-0.08952 -0.62337,-0.222982 -0.85937,-0.400391 -0.23601,-0.177408 -0.42725,-0.378417 -0.57373,-0.603027 -0.14649,-0.224608 -0.26856,-0.504556 -0.36621,-0.839844 l 2.01172,-0.219726 c 0.0488,0.322267 0.16275,0.567221 0.34179,0.734863 0.17904,0.167644 0.39225,0.251466 0.63965,0.251465 0.27669,10e-7 0.50537,-0.104979 0.68604,-0.314942 0.18066,-0.209959 0.27099,-0.523272 0.27099,-0.939941 0,-0.42643 -0.0911,-0.738929 -0.27344,-0.9375 -0.18229,-0.198564 -0.4248,-0.297848 -0.72753,-0.297852 -0.19207,4e-6 -0.37761,0.04721 -0.55665,0.141602 -0.13346,0.06836 -0.27995,0.192061 -0.43945,0.371094 l -1.69433,-0.244141 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3718-1" />
id="path3718-1"
inkscape:connector-curvature="0" />
<path
d="m 726.00482,45.963036 c 0,-1.360673 0.24496,-2.31282 0.73487,-2.856446 0.4899,-0.543613 1.23616,-0.815422 2.23876,-0.815429 0.48177,7e-6 0.87728,0.05941 1.18653,0.178222 0.30924,0.118822 0.56152,0.273445 0.75683,0.463867 0.19531,0.190437 0.34912,0.390632 0.46143,0.600586 0.1123,0.209967 0.20263,0.454921 0.271,0.734864 0.13345,0.533859 0.20018,1.090499 0.20019,1.669922 -10e-6,1.29883 -0.21973,2.24935 -0.65918,2.851562 -0.43946,0.602214 -1.19629,0.90332 -2.27051,0.90332 -0.60221,0 -1.08887,-0.09603 -1.45996,-0.288086 -0.37109,-0.192057 -0.67545,-0.473632 -0.91308,-0.844726 -0.17253,-0.263671 -0.30681,-0.624185 -0.40284,-1.081543 -0.096,-0.457354 -0.14404,-0.962725 -0.14404,-1.516113 z m 1.97266,0.0049 c 0,0.911461 0.0806,1.534019 0.2417,1.867676 0.16113,0.33366 0.39469,0.50049 0.70068,0.500488 0.20182,2e-6 0.37679,-0.0708 0.5249,-0.212402 0.14811,-0.1416 0.25716,-0.365395 0.32715,-0.671387 0.07,-0.305987 0.10498,-0.782874 0.10498,-1.430664 0,-0.950516 -0.0806,-1.58935 -0.2417,-1.916504 -0.16113,-0.327142 -0.40283,-0.490716 -0.72509,-0.490722 -0.32878,6e-6 -0.56641,0.166835 -0.7129,0.500488 -0.14648,0.333664 -0.21972,0.951339 -0.21972,1.853027 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3720-8" />
id="path3720-8"
inkscape:connector-curvature="0" />
</g>
</g>
<g
@ -3521,22 +4134,26 @@
<path
id="path3964-9"
d="m 750.45258,59.285714 0,-8.571429"
style="fill:#ffffff;fill-opacity:1;stroke:#fff8f8;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
style="fill:#ffffff;fill-opacity:1;stroke:#fff8f8;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
inkscape:connector-curvature="0" />
<g
style="font-size:40px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;display:inline;font-family:Bitstream Vera Sans"
id="text3966-6">
<path
d="m 745.15228,42.291161 0,7.280273 -2.01172,0 0,-4.770508 c -0.32552,0.247401 -0.64046,0.447596 -0.94482,0.600586 -0.30436,0.152999 -0.68604,0.299483 -1.14502,0.439453 l 0,-1.630859 c 0.67708,-0.218093 1.2028,-0.480137 1.57715,-0.786133 0.37434,-0.305983 0.66731,-0.683587 0.8789,-1.132812 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3723-3" />
id="path3723-3"
inkscape:connector-curvature="0" />
<path
d="m 753.08197,44.024559 -1.97754,0.244141 c -0.0521,-0.276687 -0.13916,-0.472 -0.26123,-0.585938 -0.12207,-0.113926 -0.27263,-0.170892 -0.45166,-0.170898 -0.32227,6e-6 -0.57292,0.162766 -0.75195,0.488281 -0.13021,0.23438 -0.22624,0.735682 -0.28809,1.503906 0.23763,-0.240881 0.48177,-0.419103 0.73242,-0.534668 0.25065,-0.115555 0.54036,-0.173335 0.86914,-0.17334 0.63802,5e-6 1.17757,0.22787 1.61866,0.683594 0.44107,0.455733 0.66161,1.033532 0.66162,1.733399 -10e-6,0.472007 -0.1115,0.903321 -0.33448,1.293945 -0.22298,0.390626 -0.53223,0.686035 -0.92773,0.88623 -0.39551,0.200196 -0.89112,0.300293 -1.48682,0.300293 -0.71614,0 -1.29069,-0.12207 -1.72363,-0.366211 -0.43294,-0.24414 -0.77881,-0.633951 -1.0376,-1.169433 -0.25879,-0.53548 -0.38818,-1.244301 -0.38818,-2.126465 0,-1.292313 0.27181,-2.238764 0.81543,-2.839356 0.54362,-0.600578 1.2972,-0.900871 2.26074,-0.900878 0.56966,7e-6 1.01969,0.06593 1.3501,0.197753 0.3304,0.131843 0.60465,0.324714 0.82275,0.578614 0.2181,0.253912 0.38411,0.572922 0.49805,0.957031 z m -3.66211,3.188477 c 0,0.387371 0.0977,0.690919 0.29297,0.910644 0.19531,0.219728 0.43457,0.329591 0.71777,0.32959 0.26042,10e-7 0.47851,-0.09928 0.6543,-0.297852 0.17578,-0.198566 0.26367,-0.494789 0.26367,-0.888671 0,-0.403644 -0.0911,-0.71126 -0.27344,-0.922852 -0.18229,-0.211585 -0.40853,-0.317379 -0.67871,-0.317383 -0.27669,4e-6 -0.50863,0.102543 -0.6958,0.307617 -0.18717,0.205081 -0.28076,0.49805 -0.28076,0.878907 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3725-7" />
id="path3725-7"
inkscape:connector-curvature="0" />
<path
d="m 754.00482,45.963036 c 0,-1.360673 0.24496,-2.31282 0.73487,-2.856446 0.4899,-0.543613 1.23616,-0.815422 2.23876,-0.815429 0.48177,7e-6 0.87728,0.05941 1.18653,0.178222 0.30924,0.118822 0.56152,0.273445 0.75683,0.463867 0.19531,0.190437 0.34912,0.390632 0.46143,0.600586 0.1123,0.209967 0.20263,0.454921 0.271,0.734864 0.13345,0.533859 0.20018,1.090499 0.20019,1.669922 -10e-6,1.29883 -0.21973,2.24935 -0.65918,2.851562 -0.43946,0.602214 -1.19629,0.90332 -2.27051,0.90332 -0.60221,0 -1.08887,-0.09603 -1.45996,-0.288086 -0.37109,-0.192057 -0.67545,-0.473632 -0.91308,-0.844726 -0.17253,-0.263671 -0.30681,-0.624185 -0.40284,-1.081543 -0.096,-0.457354 -0.14404,-0.962725 -0.14404,-1.516113 z m 1.97266,0.0049 c 0,0.911461 0.0806,1.534019 0.2417,1.867676 0.16113,0.33366 0.39469,0.50049 0.70068,0.500488 0.20182,2e-6 0.37679,-0.0708 0.5249,-0.212402 0.14811,-0.1416 0.25716,-0.365395 0.32715,-0.671387 0.07,-0.305987 0.10498,-0.782874 0.10498,-1.430664 0,-0.950516 -0.0806,-1.58935 -0.2417,-1.916504 -0.16113,-0.327142 -0.40283,-0.490716 -0.72509,-0.490722 -0.32878,6e-6 -0.56641,0.166835 -0.7129,0.500488 -0.14648,0.333664 -0.21972,0.951339 -0.21972,1.853027 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3727-8" />
id="path3727-8"
inkscape:connector-curvature="0" />
</g>
</g>
<g
@ -3546,22 +4163,26 @@
<path
style="fill:#ffffff;fill-opacity:1;stroke:#fff8f8;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 774.45258,59.285714 0,-8.571429"
id="path3972-2" />
id="path3972-2"
inkscape:connector-curvature="0" />
<g
style="font-size:40px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;display:inline;font-family:Bitstream Vera Sans"
id="text3974-9">
<path
d="m 769.15228,42.291161 0,7.280273 -2.01172,0 0,-4.770508 c -0.32552,0.247401 -0.64046,0.447596 -0.94482,0.600586 -0.30436,0.152999 -0.68604,0.299483 -1.14502,0.439453 l 0,-1.630859 c 0.67708,-0.218093 1.2028,-0.480137 1.57715,-0.786133 0.37434,-0.305983 0.66731,-0.683587 0.8789,-1.132812 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3730-1" />
id="path3730-1"
inkscape:connector-curvature="0" />
<path
d="m 771.35931,42.413231 5.80567,0 0,1.342773 c -0.50457,0.455735 -0.92611,0.948898 -1.26465,1.479493 -0.41016,0.644534 -0.73405,1.362307 -0.97168,2.15332 -0.18881,0.615236 -0.31576,1.342774 -0.38086,2.182617 l -1.98242,0 c 0.15625,-1.168619 0.40201,-2.148435 0.7373,-2.939453 0.33529,-0.791012 0.86589,-1.637365 1.5918,-2.539063 l -3.53516,0 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3732-3" />
id="path3732-3"
inkscape:connector-curvature="0" />
<path
d="m 778.00482,45.963036 c 0,-1.360673 0.24496,-2.31282 0.73487,-2.856446 0.4899,-0.543613 1.23616,-0.815422 2.23876,-0.815429 0.48177,7e-6 0.87728,0.05941 1.18653,0.178222 0.30924,0.118822 0.56152,0.273445 0.75683,0.463867 0.19531,0.190437 0.34912,0.390632 0.46143,0.600586 0.1123,0.209967 0.20263,0.454921 0.271,0.734864 0.13345,0.533859 0.20018,1.090499 0.20019,1.669922 -10e-6,1.29883 -0.21973,2.24935 -0.65918,2.851562 -0.43946,0.602214 -1.19629,0.90332 -2.27051,0.90332 -0.60221,0 -1.08887,-0.09603 -1.45996,-0.288086 -0.37109,-0.192057 -0.67545,-0.473632 -0.91308,-0.844726 -0.17253,-0.263671 -0.30681,-0.624185 -0.40284,-1.081543 -0.096,-0.457354 -0.14404,-0.962725 -0.14404,-1.516113 z m 1.97266,0.0049 c 0,0.911461 0.0806,1.534019 0.2417,1.867676 0.16113,0.33366 0.39469,0.50049 0.70068,0.500488 0.20182,2e-6 0.37679,-0.0708 0.5249,-0.212402 0.14811,-0.1416 0.25716,-0.365395 0.32715,-0.671387 0.07,-0.305987 0.10498,-0.782874 0.10498,-1.430664 0,-0.950516 -0.0806,-1.58935 -0.2417,-1.916504 -0.16113,-0.327142 -0.40283,-0.490716 -0.72509,-0.490722 -0.32878,6e-6 -0.56641,0.166835 -0.7129,0.500488 -0.14648,0.333664 -0.21972,0.951339 -0.21972,1.853027 z"
style="font-size:10px;fill:#ffffff;fill-opacity:1;font-family:Arial Black;-inkscape-font-specification:Arial Black"
id="path3734-5" />
id="path3734-5"
inkscape:connector-curvature="0" />
</g>
</g>
</g>
@ -3570,7 +4191,8 @@
inkscape:groupmode="layer"
id="layer6"
inkscape:label="Bottom area"
style="display:inline">
style="display:none"
sodipodi:insensitive="true">
<g
style="display:inline"
transform="translate(395.4171,-213.55826)"
@ -3589,11 +4211,13 @@
<path
style="fill:none;stroke:#1c5313;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 408.10162,299.09061 0,13.8896"
id="path10183" />
id="path10183"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#1c5313;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 401.40937,306.03541 13.51079,0"
id="path10185" />
id="path10185"
inkscape:connector-curvature="0" />
</g>
<g
id="g10197">
@ -3630,19 +4254,22 @@
id="gcstelemetry-Connected"
d="m -109.55949,412.40842 0,9.28125 -31.40625,0 0,4.90625 0,0.0937 0,4.90625 31.40625,0 0,9.28125 14.250003,-14.25 -14.250003,-14.21875 z"
style="fill:#1c870b;fill-opacity:1;stroke:#113b05;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
inkscape:label="#path7548" />
inkscape:label="#path7548"
inkscape:connector-curvature="0" />
<path
inkscape:label="#path7548"
style="fill:#ff251b;fill-opacity:1;stroke:#6f100c;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m -109.81202,372.75993 0,9.28125 -10.62948,0 6.29058,7.3236 -15.93279,-7.3236 -11.13456,0 0,4.90625 0,0.0937 0,4.90625 10.88202,0 -4.27027,-6.81853 13.4074,6.81853 11.3871,0 0,9.28125 14.249996,-14.25 -14.249996,-14.21875 0,5e-5 z"
id="gcstelemetry-HandshakeReq"
sodipodi:nodetypes="ccccccccccccccccc" />
sodipodi:nodetypes="ccccccccccccccccc"
inkscape:connector-curvature="0" />
<path
inkscape:label="#path7548"
style="fill:#525652;fill-opacity:1;stroke:#262020;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 530.35185,620.93513 0,9.28125 -31.40625,0 0,4.90625 0,0.0937 0,4.90625 31.40625,0 0,9.28125 14.25,-14.25 -14.25,-14.21875 z"
id="gcstelemetry-Disconnected"
sodipodi:nodetypes="cccccccccc" />
sodipodi:nodetypes="cccccccccc"
inkscape:connector-curvature="0" />
<rect
style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:2.6691606;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
id="linkrate"
@ -3675,7 +4302,7 @@
inkscape:groupmode="layer"
id="layer9"
inkscape:label="Radar"
style="display:inline"
style="display:none"
transform="translate(230.4171,-2.5493479)"
sodipodi:insensitive="true">
<g
@ -3695,11 +4322,13 @@
<path
id="path5029"
d="m 408.10162,299.09061 0,13.8896"
style="fill:none;stroke:#1c5313;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
style="fill:none;stroke:#1c5313;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
inkscape:connector-curvature="0" />
<path
id="path5031"
d="m 401.40937,306.03541 13.51079,0"
style="fill:none;stroke:#1c5313;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
style="fill:none;stroke:#1c5313;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
inkscape:connector-curvature="0" />
</g>
<g
id="nextwaypoint"
@ -3718,18 +4347,20 @@
<path
style="fill:none;stroke:#ff251b;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 408.10162,299.09061 0,13.8896"
id="path5044" />
id="path5044"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#ff251b;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 401.40937,306.03541 13.51079,0"
id="path5046" />
id="path5046"
inkscape:connector-curvature="0" />
</g>
</g>
<g
inkscape:groupmode="layer"
id="layer5"
inkscape:label="Speed"
style="display:inline"
style="display:none"
transform="translate(230.4171,-2.5493479)"
sodipodi:insensitive="true">
<text
@ -3752,127 +4383,158 @@
<path
style="fill:none;stroke:#ffffff;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m -54.926844,77.693138 -17.403477,0"
id="path4035" />
id="path4035"
inkscape:connector-curvature="0" />
<path
id="path4037"
d="m -54.476965,95.92649 -8.529662,0"
style="fill:none;stroke:#ffffff;stroke-width:2.10024118;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
style="fill:none;stroke:#ffffff;stroke-width:2.10024118;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#ffffff;stroke-width:2.10024118;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m -54.476965,114.15979 -8.529662,0"
id="path4039" />
id="path4039"
inkscape:connector-curvature="0" />
<path
id="path4041"
d="m -54.476965,132.39316 -8.529662,0"
style="fill:none;stroke:#ffffff;stroke-width:2.10024118;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
style="fill:none;stroke:#ffffff;stroke-width:2.10024118;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#ffffff;stroke-width:2.10024118;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m -54.476965,150.62647 -8.529662,0"
id="path4043" />
id="path4043"
inkscape:connector-curvature="0" />
<path
id="path4058"
d="m -54.926844,168.8598 -17.403477,0"
style="fill:none;stroke:#ffffff;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
style="fill:none;stroke:#ffffff;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#ffffff;stroke-width:2.10024118;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m -54.476965,187.09311 -8.529662,0"
id="path4061" />
id="path4061"
inkscape:connector-curvature="0" />
<path
id="path4063"
d="m -54.476965,205.32648 -8.529662,0"
style="fill:none;stroke:#ffffff;stroke-width:2.10024118;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
style="fill:none;stroke:#ffffff;stroke-width:2.10024118;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#ffffff;stroke-width:2.10024118;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m -54.476965,223.55979 -8.529662,0"
id="path4065" />
id="path4065"
inkscape:connector-curvature="0" />
<path
id="path4067"
d="m -54.476965,241.79313 -8.529662,0"
style="fill:none;stroke:#ffffff;stroke-width:2.10024118;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
style="fill:none;stroke:#ffffff;stroke-width:2.10024118;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#ffffff;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m -54.926844,260.02648 -17.403477,0"
id="path4071" />
id="path4071"
inkscape:connector-curvature="0" />
<path
id="path4073"
d="m -54.476965,278.25979 -8.529662,0"
style="fill:none;stroke:#ffffff;stroke-width:2.10024118;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
style="fill:none;stroke:#ffffff;stroke-width:2.10024118;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#ffffff;stroke-width:2.10024118;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m -54.476965,296.49313 -8.529662,0"
id="path4075" />
id="path4075"
inkscape:connector-curvature="0" />
<path
id="path4077"
d="m -54.476965,314.72647 -8.529662,0"
style="fill:none;stroke:#ffffff;stroke-width:2.10024118;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
style="fill:none;stroke:#ffffff;stroke-width:2.10024118;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#ffffff;stroke-width:2.10024118;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m -54.476965,332.95981 -8.529662,0"
id="path4079" />
id="path4079"
inkscape:connector-curvature="0" />
<path
id="path4083"
d="m -54.926844,351.19313 -17.403477,0"
style="fill:none;stroke:#ffffff;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
style="fill:none;stroke:#ffffff;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#ffffff;stroke-width:2.10024118;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m -54.476965,369.42647 -8.529662,0"
id="path4085" />
id="path4085"
inkscape:connector-curvature="0" />
<path
id="path4087"
d="m -54.476965,387.65981 -8.529662,0"
style="fill:none;stroke:#ffffff;stroke-width:2.10024118;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
style="fill:none;stroke:#ffffff;stroke-width:2.10024118;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#ffffff;stroke-width:2.10024118;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m -54.476965,405.89316 -8.529662,0"
id="path4089" />
id="path4089"
inkscape:connector-curvature="0" />
<path
id="path4091"
d="m -54.476965,424.12646 -8.529662,0"
style="fill:none;stroke:#ffffff;stroke-width:2.10024118;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
style="fill:none;stroke:#ffffff;stroke-width:2.10024118;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#ffffff;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m -54.926844,442.35983 -17.403477,0"
id="path4095" />
id="path4095"
inkscape:connector-curvature="0" />
<path
id="path4097"
d="m -54.476965,460.59313 -8.529662,0"
style="fill:none;stroke:#ffffff;stroke-width:2.10024118;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
style="fill:none;stroke:#ffffff;stroke-width:2.10024118;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#ffffff;stroke-width:2.10024118;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m -54.476965,478.82647 -8.529662,0"
id="path4099" />
id="path4099"
inkscape:connector-curvature="0" />
<path
id="path4101"
d="m -54.476965,497.05982 -8.529662,0"
style="fill:none;stroke:#ffffff;stroke-width:2.10024118;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
style="fill:none;stroke:#ffffff;stroke-width:2.10024118;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#ffffff;stroke-width:2.10024118;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m -54.476965,515.29316 -8.529662,0"
id="path4103" />
id="path4103"
inkscape:connector-curvature="0" />
<path
id="path4107"
d="m -54.926844,533.52649 -17.403477,0"
style="fill:none;stroke:#ffffff;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
style="fill:none;stroke:#ffffff;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#ffffff;stroke-width:2.10024118;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m -54.476965,551.75981 -8.529662,0"
id="path4109" />
id="path4109"
inkscape:connector-curvature="0" />
<path
id="path4111"
d="m -54.476965,569.99314 -8.529662,0"
style="fill:none;stroke:#ffffff;stroke-width:2.10024118;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
style="fill:none;stroke:#ffffff;stroke-width:2.10024118;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#ffffff;stroke-width:2.10024118;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m -54.476965,588.22648 -8.529662,0"
id="path4113" />
id="path4113"
inkscape:connector-curvature="0" />
<path
id="path4115"
d="m -54.476965,606.45981 -8.529662,0"
style="fill:none;stroke:#ffffff;stroke-width:2.10024118;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
style="fill:none;stroke:#ffffff;stroke-width:2.10024118;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#ffffff;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m -54.926844,624.69315 -17.403477,0"
id="path4119" />
id="path4119"
inkscape:connector-curvature="0" />
</g>
</g>
<g
@ -3885,127 +4547,158 @@
<path
id="path5648"
d="m -54.926844,77.693138 -17.403477,0"
style="fill:none;stroke:#ffffff;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
style="fill:none;stroke:#ffffff;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#ffffff;stroke-width:2.10024118;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m -54.476965,95.92649 -8.529662,0"
id="path5650" />
id="path5650"
inkscape:connector-curvature="0" />
<path
id="path5652"
d="m -54.476965,114.15979 -8.529662,0"
style="fill:none;stroke:#ffffff;stroke-width:2.10024118;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
style="fill:none;stroke:#ffffff;stroke-width:2.10024118;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#ffffff;stroke-width:2.10024118;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m -54.476965,132.39316 -8.529662,0"
id="path5654" />
id="path5654"
inkscape:connector-curvature="0" />
<path
id="path5656"
d="m -54.476965,150.62647 -8.529662,0"
style="fill:none;stroke:#ffffff;stroke-width:2.10024118;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
style="fill:none;stroke:#ffffff;stroke-width:2.10024118;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#ffffff;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m -54.926844,168.8598 -17.403477,0"
id="path5658" />
id="path5658"
inkscape:connector-curvature="0" />
<path
id="path5660"
d="m -54.476965,187.09311 -8.529662,0"
style="fill:none;stroke:#ffffff;stroke-width:2.10024118;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
style="fill:none;stroke:#ffffff;stroke-width:2.10024118;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#ffffff;stroke-width:2.10024118;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m -54.476965,205.32648 -8.529662,0"
id="path5662" />
id="path5662"
inkscape:connector-curvature="0" />
<path
id="path5664"
d="m -54.476965,223.55979 -8.529662,0"
style="fill:none;stroke:#ffffff;stroke-width:2.10024118;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
style="fill:none;stroke:#ffffff;stroke-width:2.10024118;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#ffffff;stroke-width:2.10024118;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m -54.476965,241.79313 -8.529662,0"
id="path5666" />
id="path5666"
inkscape:connector-curvature="0" />
<path
id="path5668"
d="m -54.926844,260.02648 -17.403477,0"
style="fill:none;stroke:#ffffff;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
style="fill:none;stroke:#ffffff;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#ffffff;stroke-width:2.10024118;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m -54.476965,278.25979 -8.529662,0"
id="path5670" />
id="path5670"
inkscape:connector-curvature="0" />
<path
id="path5672"
d="m -54.476965,296.49313 -8.529662,0"
style="fill:none;stroke:#ffffff;stroke-width:2.10024118;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
style="fill:none;stroke:#ffffff;stroke-width:2.10024118;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#ffffff;stroke-width:2.10024118;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m -54.476965,314.72647 -8.529662,0"
id="path5674" />
id="path5674"
inkscape:connector-curvature="0" />
<path
id="path5676"
d="m -54.476965,332.95981 -8.529662,0"
style="fill:none;stroke:#ffffff;stroke-width:2.10024118;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
style="fill:none;stroke:#ffffff;stroke-width:2.10024118;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#ffffff;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m -54.926844,351.19313 -17.403477,0"
id="path5678" />
id="path5678"
inkscape:connector-curvature="0" />
<path
id="path5680"
d="m -54.476965,369.42647 -8.529662,0"
style="fill:none;stroke:#ffffff;stroke-width:2.10024118;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
style="fill:none;stroke:#ffffff;stroke-width:2.10024118;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#ffffff;stroke-width:2.10024118;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m -54.476965,387.65981 -8.529662,0"
id="path5682" />
id="path5682"
inkscape:connector-curvature="0" />
<path
id="path5684"
d="m -54.476965,405.89316 -8.529662,0"
style="fill:none;stroke:#ffffff;stroke-width:2.10024118;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
style="fill:none;stroke:#ffffff;stroke-width:2.10024118;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#ffffff;stroke-width:2.10024118;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m -54.476965,424.12646 -8.529662,0"
id="path5686" />
id="path5686"
inkscape:connector-curvature="0" />
<path
id="path5688"
d="m -54.926844,442.35983 -17.403477,0"
style="fill:none;stroke:#ffffff;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
style="fill:none;stroke:#ffffff;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#ffffff;stroke-width:2.10024118;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m -54.476965,460.59313 -8.529662,0"
id="path5690" />
id="path5690"
inkscape:connector-curvature="0" />
<path
id="path5692"
d="m -54.476965,478.82647 -8.529662,0"
style="fill:none;stroke:#ffffff;stroke-width:2.10024118;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
style="fill:none;stroke:#ffffff;stroke-width:2.10024118;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#ffffff;stroke-width:2.10024118;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m -54.476965,497.05982 -8.529662,0"
id="path5694" />
id="path5694"
inkscape:connector-curvature="0" />
<path
id="path5696"
d="m -54.476965,515.29316 -8.529662,0"
style="fill:none;stroke:#ffffff;stroke-width:2.10024118;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
style="fill:none;stroke:#ffffff;stroke-width:2.10024118;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#ffffff;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m -54.926844,533.52649 -17.403477,0"
id="path5698" />
id="path5698"
inkscape:connector-curvature="0" />
<path
id="path5700"
d="m -54.476965,551.75981 -8.529662,0"
style="fill:none;stroke:#ffffff;stroke-width:2.10024118;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
style="fill:none;stroke:#ffffff;stroke-width:2.10024118;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#ffffff;stroke-width:2.10024118;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m -54.476965,569.99314 -8.529662,0"
id="path5702" />
id="path5702"
inkscape:connector-curvature="0" />
<path
id="path5704"
d="m -54.476965,588.22648 -8.529662,0"
style="fill:none;stroke:#ffffff;stroke-width:2.10024118;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
style="fill:none;stroke:#ffffff;stroke-width:2.10024118;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#ffffff;stroke-width:2.10024118;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m -54.476965,606.45981 -8.529662,0"
id="path5706" />
id="path5706"
inkscape:connector-curvature="0" />
<path
id="path5708"
d="m -54.926844,624.69315 -17.403477,0"
style="fill:none;stroke:#ffffff;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
style="fill:none;stroke:#ffffff;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
inkscape:connector-curvature="0" />
</g>
</g>
</g>
@ -4020,6 +4713,7 @@
style="fill:#453e3e;fill-opacity:1;stroke:#000000;stroke-width:4.08031273;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m -115.54603,-47.690059 c -2.50791,0 -4.54785,1.99743 -4.54785,4.50534 l 0,807.009359 c 0,2.5079 2.03994,4.54785 4.54785,4.54785 l 807.00936,0 c 2.5079,0 4.50534,-2.03995 4.50534,-4.54785 l 0,-807.009359 c 0,-2.50791 -1.99744,-4.50534 -4.50534,-4.50534 l -807.00936,0 z M 289.34,11.395534 c 150.15374,0 271.88009,59.618647 272.02085,133.162706 l 0.21252,48.57516 -0.38253,374.99409 C 556.30557,639.62843 436.47945,673.69951 289.34,673.69951 c -147.13944,0 -266.965544,-34.07108 -271.850832,-105.57202 l -0.212516,0 0,-374.99409 0.0425,-48.58122 C 17.459912,71.008115 139.18627,11.395534 289.34,11.395534 z"
id="rect2816"
sodipodi:nodetypes="cccccccccccccsccccc" />
sodipodi:nodetypes="cccccccccccccsccccc"
inkscape:connector-curvature="0" />
</g>
</svg>

Before

Width:  |  Height:  |  Size: 301 KiB

After

Width:  |  Height:  |  Size: 320 KiB

View File

@ -25,6 +25,13 @@
WHEREAMI := $(dir $(lastword $(MAKEFILE_LIST)))
TOP := $(realpath $(WHEREAMI)/../../)
include $(TOP)/make/firmware-defs.mk
include $(TOP)/make/boards/$(BOARD_NAME)/board-info.mk
# Target file name (without extension).
TARGET := fw_$(BOARD_NAME)
# Directory for output files (lst, obj, dep, elf, sym, map, hex, bin etc.)
OUTDIR := $(TOP)/build/$(TARGET)
# Set developer code and compile options
# Set to YES for debugging
@ -41,21 +48,6 @@ endif
FLASH_TOOL = OPENOCD
# MCU name, submodel and board
# - MCU used for compiler-option (-mcpu)
# - MODEL used for linker-script name (-T) and passed as define
# - BOARD just passed as define (optional)
MCU = cortex-m3
CHIP = STM32F103CBT
BOARD = STM32103CB_AHRS
MODEL = MD
# Directory for output files (lst, obj, dep, elf, sym, map, hex, bin etc.)
OUTDIR = $(TOP)/build/ahrs
# Target file name (without extension).
TARGET = AHRS
# Paths
AHRS = ./
AHRSINC = $(AHRS)/inc
@ -160,7 +152,7 @@ CPPSRCARM =
# Even though the DOS/Win* filesystem matches both .s and .S the same,
# it will preserve the spelling of the filenames, and gcc itself does
# care about how the name is spelled on its command-line.
ASRC = $(PIOSSTM32F10X)/startup_stm32f10x_$(MODEL).S
ASRC = $(PIOSSTM32F10X)/startup_stm32f10x_$(MODEL)$(MODEL_SUFFIX).S
# List Assembler source files here which must be assembled in ARM-Mode..
ASRCARM =
@ -223,7 +215,6 @@ CDEFS = -DSTM32F10X_$(MODEL)
CDEFS += -DUSE_STDPERIPH_DRIVER
CDEFS += -DUSE_$(BOARD)
CDEFS += -DIN_AHRS
CDEFS += -DUSE_BOOTLOADER
# Place project-specific -D and/or -U options for
# Assembler with preprocessor here.
@ -299,21 +290,8 @@ LDFLAGS += -lc -lgcc
LDFLAGS += -T$(LINKERSCRIPTPATH)/link_$(BOARD)_memory.ld
LDFLAGS += -T$(LINKERSCRIPTPATH)/link_$(BOARD)_sections.ld
OOCD_LOADFILE+=$(OUTDIR)/$(TARGET).bin
# Program
OOCD_CL+=-c "flash write_image erase $(OOCD_LOADFILE) 0x08002000 bin"
# Verify
OOCD_CL+=-c "verify_image $(OOCD_LOADFILE) 0x08002000 bin"
# reset target
OOCD_CL+=-c "reset run"
# terminate OOCD after programming
OOCD_CL+=-c shutdown
# Define programs and commands.
REMOVE = $(REMOVE_CMD) -f
###SHELL = sh
###COPY = cp
# List of all source files.
ALLSRC = $(ASRCARM) $(ASRC) $(SRCARM) $(SRC) $(CPPSRCARM) $(CPPSRC)
@ -345,14 +323,6 @@ endif
endif
endif
# Program the device.
ifeq ($(FLASH_TOOL),OPENOCD)
# Program the device with Dominic Rath's OPENOCD in "batch-mode", needs cfg and "reset-script".
program: $(OUTDIR)/$(TARGET).bin
@echo ${quote}Programming with OPENOCD${quote}
$(OOCD_EXE) $(OOCD_CL)
endif
# Link: create ELF output file from object files.
$(eval $(call LINK_TEMPLATE, $(OUTDIR)/$(TARGET).elf, $(ALLOBJ)))
@ -382,23 +352,37 @@ $(eval $(call PARTIAL_COMPILE_ARM_TEMPLATE, SRCARM))
$(OUTDIR)/$(TARGET).bin.o: $(OUTDIR)/$(TARGET).bin
.PHONY: elf lss sym hex bin bino
$(eval $(call OPFW_TEMPLATE,$(OUTDIR)/$(TARGET).bin,$(BOARD_TYPE),$(BOARD_REVISION)))
# Add jtag targets (program and wipe)
$(eval $(call JTAG_TEMPLATE,$(OUTDIR)/$(TARGET).bin,$(FW_BANK_BASE),$(FW_BANK_SIZE)))
.PHONY: elf lss sym hex bin bino opfw
elf: $(OUTDIR)/$(TARGET).elf
lss: $(OUTDIR)/$(TARGET).lss
sym: $(OUTDIR)/$(TARGET).sym
hex: $(OUTDIR)/$(TARGET).hex
bin: $(OUTDIR)/$(TARGET).bin
bino: $(OUTDIR)/$(TARGET).bin.o
opfw: $(OUTDIR)/$(TARGET).opfw
# Display sizes of sections.
$(eval $(call SIZE_TEMPLATE, $(OUTDIR)/$(TARGET).elf))
.PHONY: size
size: $(OUTDIR)/$(TARGET).elf_size
# Generate Doxygen documents
docs:
doxygen $(DOXYGENDIR)/doxygen.cfg
# Install: install binary file with prefix/suffix into install directory
install: $(OUTDIR)/$(TARGET).opfw
ifneq ($(INSTALL_DIR),)
@echo $(MSG_INSTALLING) $(call toprel, $<)
$(V1) mkdir -p $(INSTALL_DIR)
$(V1) $(INSTALL) $< $(INSTALL_DIR)/$(INSTALL_PFX)$(TARGET)$(INSTALL_SFX).opfw
else
$(error INSTALL_DIR must be specified for $@)
endif
# Target: clean project.
clean: clean_list
@ -434,6 +418,5 @@ else
-include $(shell mkdir $(OUTDIR) 2>/dev/null) $(shell mkdir $(OUTDIR)/dep 2>/dev/null) $(wildcard $(OUTDIR)/dep/*)
endif
# Listing of phony targets.
.PHONY : all build clean clean_list program
.PHONY : all build clean clean_list install

View File

@ -33,6 +33,7 @@
/* OpenPilot Includes */
#include "ahrs.h"
#include <pios_board_info.h>
#include "pios.h"
#include "ahrs_timer.h"
#include "ahrs_spi_comm.h"
@ -1228,6 +1229,8 @@ void homelocation_callback(AhrsObjHandle obj)
void firmwareiapobj_callback(AhrsObjHandle obj)
{
const struct pios_board_info * bdinfo = &pios_board_info_blob;
FirmwareIAPObjData firmwareIAPObj;
FirmwareIAPObjGet(&firmwareIAPObj);
if(firmwareIAPObj.ArmReset==0)
@ -1235,7 +1238,7 @@ void firmwareiapobj_callback(AhrsObjHandle obj)
if(firmwareIAPObj.ArmReset==1)
{
if((firmwareIAPObj.BoardType==BOARD_TYPE) || (firmwareIAPObj.BoardType==0xFF))
if((firmwareIAPObj.BoardType==bdinfo->board_type) || (firmwareIAPObj.BoardType==0xFF))
{
++reset_count;
@ -1247,11 +1250,11 @@ void firmwareiapobj_callback(AhrsObjHandle obj)
}
}
}
else if(firmwareIAPObj.BoardType==BOARD_TYPE && firmwareIAPObj.crc!=PIOS_BL_HELPER_CRC_Memory_Calc())
else if(firmwareIAPObj.BoardType==bdinfo->board_type && firmwareIAPObj.crc!=PIOS_BL_HELPER_CRC_Memory_Calc())
{
PIOS_BL_HELPER_FLASH_Read_Description(firmwareIAPObj.Description,SIZE_OF_DESCRIPTION);
PIOS_BL_HELPER_FLASH_Read_Description(firmwareIAPObj.Description,bdinfo->desc_size);
firmwareIAPObj.crc=PIOS_BL_HELPER_CRC_Memory_Calc();
firmwareIAPObj.BoardRevision=BOARD_REVISION;
firmwareIAPObj.BoardRevision=bdinfo->board_rev;
FirmwareIAPObjSet(&firmwareIAPObj);
}
}

View File

@ -54,7 +54,6 @@ static const struct pios_spi_cfg pios_spi_op_cfg = {
.ahb_clk = RCC_AHBPeriph_DMA1,
.irq = {
.handler = PIOS_SPI_op_irq_handler,
.flags =
(DMA1_FLAG_TC4 | DMA1_FLAG_TE4 | DMA1_FLAG_HT4 |
DMA1_FLAG_GL4),
@ -153,11 +152,10 @@ void PIOS_SPI_op_irq_handler(void)
extern void PIOS_ADC_handler(void);
void DMA1_Channel1_IRQHandler() __attribute__ ((alias("PIOS_ADC_handler")));
// Remap the ADC DMA handler to this one
const struct pios_adc_cfg pios_adc_cfg = {
static const struct pios_adc_cfg pios_adc_cfg = {
.dma = {
.ahb_clk = RCC_AHBPeriph_DMA1,
.irq = {
.handler = PIOS_ADC_DMA_Handler,
.flags = (DMA1_FLAG_TC1 | DMA1_FLAG_TE1 | DMA1_FLAG_HT1 | DMA1_FLAG_GL1),
.init = {
.NVIC_IRQChannel = DMA1_Channel1_IRQn,
@ -205,17 +203,10 @@ void PIOS_ADC_handler() {
/*
* AUX USART
*/
void PIOS_USART_aux_irq_handler(void);
void USART3_IRQHandler()
__attribute__ ((alias("PIOS_USART_aux_irq_handler")));
const struct pios_usart_cfg pios_usart_aux_cfg = {
static const struct pios_usart_cfg pios_usart_aux_cfg = {
.regs = USART3,
.init = {
#if defined (PIOS_USART_BAUDRATE)
.USART_BaudRate = PIOS_USART_BAUDRATE,
#else
.USART_BaudRate = 57600,
#endif
.USART_BaudRate = 230400,
.USART_WordLength = USART_WordLength_8b,
.USART_Parity = USART_Parity_No,
.USART_StopBits = USART_StopBits_1,
@ -224,7 +215,6 @@ const struct pios_usart_cfg pios_usart_aux_cfg = {
.USART_Mode = USART_Mode_Rx | USART_Mode_Tx,
},
.irq = {
.handler = PIOS_USART_aux_irq_handler,
.init = {
.NVIC_IRQChannel = USART3_IRQn,
.NVIC_IRQChannelPreemptionPriority = PIOS_IRQ_PRIO_HIGH,
@ -250,18 +240,15 @@ const struct pios_usart_cfg pios_usart_aux_cfg = {
},
};
static uint32_t pios_usart_aux_id;
void PIOS_USART_aux_irq_handler(void)
{
PIOS_USART_IRQ_Handler(pios_usart_aux_id);
}
#endif /* PIOS_INCLUDE_USART */
#if defined(PIOS_INCLUDE_COM)
#include <pios_com_priv.h>
#define PIOS_COM_AUX_TX_BUF_LEN 192
static uint8_t pios_com_aux_tx_buffer[PIOS_COM_AUX_TX_BUF_LEN];
#endif /* PIOS_INCLUDE_COM */
#if defined(PIOS_INCLUDE_I2C)
@ -279,7 +266,7 @@ void I2C1_EV_IRQHandler()
void I2C1_ER_IRQHandler()
__attribute__ ((alias("PIOS_I2C_main_adapter_er_irq_handler")));
const struct pios_i2c_adapter_cfg pios_i2c_main_adapter_cfg = {
static const struct pios_i2c_adapter_cfg pios_i2c_main_adapter_cfg = {
.regs = I2C1,
.init = {
.I2C_Mode = I2C_Mode_I2C,
@ -307,7 +294,6 @@ const struct pios_i2c_adapter_cfg pios_i2c_main_adapter_cfg = {
},
},
.event = {
.handler = PIOS_I2C_main_adapter_ev_irq_handler,
.flags = 0, /* FIXME: check this */
.init = {
.NVIC_IRQChannel = I2C1_EV_IRQn,
@ -317,7 +303,6 @@ const struct pios_i2c_adapter_cfg pios_i2c_main_adapter_cfg = {
},
},
.error = {
.handler = PIOS_I2C_main_adapter_er_irq_handler,
.flags = 0, /* FIXME: check this */
.init = {
.NVIC_IRQChannel = I2C1_ER_IRQn,
@ -388,12 +373,17 @@ void PIOS_Board_Init(void) {
/* Communication system */
#if !defined(PIOS_ENABLE_DEBUG_PINS)
#if defined(PIOS_INCLUDE_COM)
{
uint32_t pios_usart_aux_id;
if (PIOS_USART_Init(&pios_usart_aux_id, &pios_usart_aux_cfg)) {
PIOS_DEBUG_Assert(0);
}
if (PIOS_COM_Init(&pios_com_aux_id, &pios_usart_com_driver, pios_usart_aux_id)) {
if (PIOS_COM_Init(&pios_com_aux_id, &pios_usart_com_driver, pios_usart_aux_id,
NULL, 0,
pios_com_aux_tx_buffer, sizeof(pios_com_aux_tx_buffer))) {
PIOS_DEBUG_Assert(0);
}
}
#endif /* PIOS_INCLUDE_COM */
#endif

View File

@ -25,6 +25,13 @@
WHEREAMI := $(dir $(lastword $(MAKEFILE_LIST)))
TOP := $(realpath $(WHEREAMI)/../../../)
include $(TOP)/make/firmware-defs.mk
include $(TOP)/make/boards/$(BOARD_NAME)/board-info.mk
# Target file name (without extension).
TARGET := bl_$(BOARD_NAME)
# Directory for output files (lst, obj, dep, elf, sym, map, hex, bin etc.)
OUTDIR := $(TOP)/build/$(TARGET)
# Set developer code and compile options
# Set to YES for debugging
@ -41,23 +48,6 @@ endif
FLASH_TOOL = OPENOCD
# MCU name, submodel and board
# - MCU used for compiler-option (-mcpu)
# - MODEL used for linker-script name (-T) and passed as define
# - BOARD just passed as define (optional)
MCU = cortex-m3
CHIP = STM32F103CBT
BOARD = STM32103CB_AHRS
MODEL = MD
# Directory for output files (lst, obj, dep, elf, sym, map, hex, bin etc.)
OUTDIR = $(TOP)/build/bl_ahrs
# Target file name (without extension).
TARGET = AHRS_BL
# Paths
AHRS_BL = ./
AHRS_BLINC = $(AHRS_BL)/inc
@ -100,6 +90,7 @@ SRC += $(PIOSSTM32F10X)/pios_spi.c
## PIOS Hardware (Common)
#SRC += $(PIOSCOMMON)/pios_com.c
#SRC += $(PIOSCOMMON)/pios_hmc5843.c
SRC += $(PIOSCOMMON)/pios_board_info.c
SRC += $(PIOSCOMMON)/pios_opahrs_proto.c
SRC += $(PIOSCOMMON)/printf-stdarg.c
SRC += $(PIOSCOMMON)/pios_bl_helper.c
@ -148,7 +139,7 @@ CPPSRCARM =
# Even though the DOS/Win* filesystem matches both .s and .S the same,
# it will preserve the spelling of the filenames, and gcc itself does
# care about how the name is spelled on its command-line.
ASRC = $(PIOSSTM32F10X)/startup_stm32f10x_$(MODEL).S
ASRC = $(PIOSSTM32F10X)/startup_stm32f10x_$(MODEL)$(MODEL_SUFFIX).S
# List Assembler source files here which must be assembled in ARM-Mode..
ASRCARM =
@ -208,6 +199,15 @@ CDEFS = -DSTM32F10X_$(MODEL)
CDEFS += -DUSE_STDPERIPH_DRIVER
CDEFS += -DUSE_$(BOARD)
# Provide (only) the bootloader with board-specific defines
BLONLY_CDEFS += -DBOARD_TYPE=$(BOARD_TYPE)
BLONLY_CDEFS += -DBOARD_REVISION=$(BOARD_REVISION)
BLONLY_CDEFS += -DHW_TYPE=$(HW_TYPE)
BLONLY_CDEFS += -DBOOTLOADER_VERSION=$(BOOTLOADER_VERSION)
BLONLY_CDEFS += -DFW_BANK_BASE=$(FW_BANK_BASE)
BLONLY_CDEFS += -DFW_BANK_SIZE=$(FW_BANK_SIZE)
BLONLY_CDEFS += -DFW_DESC_SIZE=$(FW_DESC_SIZE)
# Place project-specific -D and/or -U options for
# Assembler with preprocessor here.
#ADEFS = -DUSE_IRQ_ASM_WRAPPER
@ -242,8 +242,9 @@ CFLAGS += -O$(OPT)
ifeq ($(DEBUG),NO)
CFLAGS += -fdata-sections -ffunction-sections
endif
CFLAGS += -mcpu=$(MCU) -mthumb
CFLAGS += -mcpu=$(MCU)
CFLAGS += $(CDEFS)
CFLAGS += $(BLONLY_CDEFS)
CFLAGS += $(patsubst %,-I%,$(EXTRAINCDIRS)) -I.
CFLAGS += -mapcs-frame
@ -265,7 +266,7 @@ CONLYFLAGS += $(CSTANDARD)
# Assembler flags.
# -Wa,...: tell GCC to pass this to the assembler.
# -ahlns: create listing
ASFLAGS = -mcpu=$(MCU) -mthumb -I. -x assembler-with-cpp
ASFLAGS = -mcpu=$(MCU) -I. -x assembler-with-cpp
ASFLAGS += $(ADEFS)
ASFLAGS += -Wa,-adhlns=$(addprefix $(OUTDIR)/, $(notdir $(addsuffix .lst, $(basename $<))))
ASFLAGS += $(patsubst %,-I%,$(EXTRAINCDIRS))
@ -290,20 +291,8 @@ LDFLAGS += -lc -lgcc
LDFLAGS += -T$(LINKERSCRIPTPATH)/link_$(BOARD)_memory.ld
LDFLAGS += -T$(LINKERSCRIPTPATH)/link_$(BOARD)_BL_sections.ld
OOCD_LOADFILE+=$(OUTDIR)/$(TARGET).bin
# Program
OOCD_CL+=-c "flash write_image erase $(OOCD_LOADFILE) 0x08000000 bin"
# Verify
OOCD_CL+=-c "verify_image $(OOCD_LOADFILE) 0x08000000 bin"
# reset target
OOCD_CL+=-c "reset run"
# terminate OOCD after programming
OOCD_CL+=-c shutdown
# Define programs and commands.
REMOVE = $(REMOVE_CMD) -f
###SHELL = sh
###COPY = cp
# List of all source files.
ALLSRC = $(ASRCARM) $(ASRC) $(SRCARM) $(SRC) $(CPPSRCARM) $(CPPSRC)
@ -335,14 +324,6 @@ endif
endif
endif
# Program the device.
ifeq ($(FLASH_TOOL),OPENOCD)
# Program the device with Dominic Rath's OPENOCD in "batch-mode", needs cfg and "reset-script".
program: $(OUTDIR)/$(TARGET).bin
@echo "Programming with OPENOCD"
$(OOCD_EXE) $(OOCD_CL)
endif
# Link: create ELF output file from object files.
$(eval $(call LINK_TEMPLATE, $(OUTDIR)/$(TARGET).elf, $(ALLOBJ)))
@ -372,6 +353,9 @@ $(eval $(call PARTIAL_COMPILE_ARM_TEMPLATE, SRCARM))
$(OUTDIR)/$(TARGET).bin.o: $(OUTDIR)/$(TARGET).bin
# Add jtag targets (program and wipe)
$(eval $(call JTAG_TEMPLATE,$(OUTDIR)/$(TARGET).bin,$(BL_BANK_BASE),$(BL_BANK_SIZE)))
.PHONY: elf lss sym hex bin bino
elf: $(OUTDIR)/$(TARGET).elf
lss: $(OUTDIR)/$(TARGET).lss
@ -382,13 +366,21 @@ bino: $(OUTDIR)/$(TARGET).bin.o
# Display sizes of sections.
$(eval $(call SIZE_TEMPLATE, $(OUTDIR)/$(TARGET).elf))
.PHONY: size
size: $(OUTDIR)/$(TARGET).elf_size
# Generate Doxygen documents
docs:
doxygen $(DOXYGENDIR)/doxygen.cfg
# Install: install binary file with prefix/suffix into install directory
install: $(OUTDIR)/$(TARGET).bin
ifneq ($(INSTALL_DIR),)
@echo $(MSG_INSTALLING) $(call toprel, $<)
$(V1) mkdir -p $(INSTALL_DIR)
$(V1) $(INSTALL) $< $(INSTALL_DIR)/$(INSTALL_PFX)$(TARGET)$(INSTALL_SFX).bin
else
$(error INSTALL_DIR must be specified for $@)
endif
# Target: clean project.
clean: clean_list
@ -426,4 +418,4 @@ else
endif
# Listing of phony targets.
.PHONY : all build clean clean_list program
.PHONY : all build clean clean_list install

View File

@ -33,6 +33,7 @@
/* OpenPilot Includes */
#include "ahrs_bl.h"
#include <pios_board_info.h>
#include "pios_opahrs_proto.h"
#include "bl_fsm.h" /* lfsm_state */
#include "stm32f10x_flash.h"
@ -108,6 +109,7 @@ static struct opahrs_msg_v0 link_rx_v0;
static struct opahrs_msg_v0 user_tx_v0;
static struct opahrs_msg_v0 user_rx_v0;
void process_spi_request(void) {
const struct pios_board_info * bdinfo = &pios_board_info_blob;
bool msg_to_process = FALSE;
PIOS_IRQ_Disable();
@ -166,15 +168,15 @@ void process_spi_request(void) {
break;
case OPAHRS_MSG_V0_REQ_MEM_MAP:
opahrs_msg_v0_init_user_tx(&user_tx_v0, OPAHRS_MSG_V0_RSP_MEM_MAP);
user_tx_v0.payload.user.v.rsp.mem_map.density = HW_TYPE;
user_tx_v0.payload.user.v.rsp.mem_map.density = bdinfo->hw_type;
user_tx_v0.payload.user.v.rsp.mem_map.rw_flags = (BOARD_READABLE
| (BOARD_WRITABLA << 1));
| (BOARD_WRITABLE << 1));
user_tx_v0.payload.user.v.rsp.mem_map.size_of_code_memory
= SIZE_OF_CODE;
= bdinfo->fw_size;
user_tx_v0.payload.user.v.rsp.mem_map.size_of_description
= SIZE_OF_DESCRIPTION;
= bdinfo->desc_size;
user_tx_v0.payload.user.v.rsp.mem_map.start_of_user_code
= START_OF_USER_CODE;
= bdinfo->fw_base;
lfsm_user_set_tx_v0(&user_tx_v0);
break;
case OPAHRS_MSG_V0_REQ_SERIAL:
@ -192,7 +194,7 @@ void process_spi_request(void) {
PIOS_LED_On(LED1);
opahrs_msg_v0_init_user_tx(&user_tx_v0, OPAHRS_MSG_V0_RSP_FWUP_STATUS);
if (!(user_rx_v0.payload.user.v.req.fwup_data.adress
< START_OF_USER_CODE)) {
< bdinfo->fw_base)) {
for (uint8_t x = 0; x
< user_rx_v0.payload.user.v.req.fwup_data.size; ++x) {
if (FLASH_ProgramWord(
@ -250,13 +252,10 @@ void process_spi_request(void) {
return;
}
void jump_to_app() {
//while(TRUE)
//{
// PIOS_LED_Toggle(LED1);
// PIOS_DELAY_WaitmS(1000);
//}
const struct pios_board_info * bdinfo = &pios_board_info_blob;
PIOS_LED_On(LED1);
if (((*(__IO uint32_t*) START_OF_USER_CODE) & 0x2FFE0000) == 0x20000000) { /* Jump to user application */
if (((*(__IO uint32_t*) bdinfo->fw_base) & 0x2FFE0000) == 0x20000000) { /* Jump to user application */
FLASH_Lock();
RCC_APB2PeriphResetCmd(0xffffffff, ENABLE);
RCC_APB1PeriphResetCmd(0xffffffff, ENABLE);
@ -265,10 +264,10 @@ void jump_to_app() {
//_SetCNTR(0); // clear interrupt mask
//_SetISTR(0); // clear all requests
JumpAddress = *(__IO uint32_t*) (START_OF_USER_CODE + 4);
JumpAddress = *(__IO uint32_t*) (bdinfo->fw_base + 4);
Jump_To_Application = (pFunction) JumpAddress;
/* Initialize user application's Stack Pointer */
__set_MSP(*(__IO uint32_t*) START_OF_USER_CODE);
__set_MSP(*(__IO uint32_t*) bdinfo->fw_base);
Jump_To_Application();
} else {
boot_status = jump_failed;

View File

@ -55,7 +55,6 @@ static const struct pios_spi_cfg
.ahb_clk = RCC_AHBPeriph_DMA1,
.irq = {
.handler = PIOS_SPI_op_irq_handler,
.flags = (DMA1_FLAG_TC4 | DMA1_FLAG_TE4 | DMA1_FLAG_HT4 | DMA1_FLAG_GL4),
.init = {
.NVIC_IRQChannel = DMA1_Channel4_IRQn,
@ -133,11 +132,18 @@ void PIOS_SPI_op_irq_handler(void) {
#include "bl_fsm.h" /* lfsm_* */
static bool board_init_complete = false;
void PIOS_Board_Init() {
if (board_init_complete) {
return;
}
/* Set up the SPI interface to the OP board */
if (PIOS_SPI_Init(&pios_spi_op_id, &pios_spi_op_cfg)) {
PIOS_DEBUG_Assert(0);
}
lfsm_attach(pios_spi_op_id);
lfsm_init();
board_init_complete = true;
}

View File

@ -25,6 +25,13 @@
WHEREAMI := $(dir $(lastword $(MAKEFILE_LIST)))
TOP := $(realpath $(WHEREAMI)/../../../)
include $(TOP)/make/firmware-defs.mk
include $(TOP)/make/boards/$(BOARD_NAME)/board-info.mk
# Target file name (without extension).
TARGET = bu_$(BOARD_NAME)
# Directory for output files (lst, obj, dep, elf, sym, map, hex, bin etc.)
OUTDIR := $(TOP)/build/$(TARGET)
# Set developer code and compile options
# Set to YES to compile for debugging
@ -51,21 +58,6 @@ endif
FLASH_TOOL = OPENOCD
# MCU name, submodel and board
# - MCU used for compiler-option (-mcpu)
# - MODEL used for linker-script name (-T) and passed as define
# - BOARD just passed as define (optional)
MCU = cortex-m3
CHIP = STM32F103CBT
BOARD ?= NULL
MODEL ?= NULL
# Directory for output files (lst, obj, dep, elf, sym, map, hex, bin etc.)
OUTDIR = ../../../build/bootloaders/BootloaderUpdater
# Target file name (without extension).
TARGET = BL_Updater
# Paths
OPSYSTEM = .
OPSYSTEMINC = $(OPSYSTEM)/inc
@ -224,7 +216,6 @@ endif
ifeq ($(ENABLE_AUX_UART), YES)
CDEFS += -DPIOS_ENABLE_AUX_UART
endif
CDEFS += -DUSE_BOOTLOADER
# Place project-specific -D and/or -U options for
# Assembler with preprocessor here.
@ -309,9 +300,9 @@ LDFLAGS += -T$(LINKERSCRIPTPATH)/link_$(BOARD)_sections.ld
OOCD_LOADFILE+=$(OUTDIR)/$(TARGET).bin
# Program
OOCD_CL+=-c "flash write_image erase $(OOCD_LOADFILE) 0x08003000 bin"
OOCD_CL+=-c "flash write_image erase $(OOCD_LOADFILE) $(START_OF_FW_CODE) bin"
# Verify
OOCD_CL+=-c "verify_image $(OOCD_LOADFILE) 0x08003000 bin"
OOCD_CL+=-c "verify_image $(OOCD_LOADFILE) $(START_OF_FW_CODE) bin"
# reset target
OOCD_CL+=-c "reset run"
# terminate OOCD after programming
@ -364,6 +355,7 @@ program: $(OUTDIR)/$(TARGET).bin
endif
# Link: create ELF output file from object files.
BLOBJ := $(TOP)/build/bl_$(BOARD_NAME)/bl_$(BOARD_NAME).bin.o
$(eval $(call LINK_TEMPLATE, $(OUTDIR)/$(TARGET).elf, $(ALLOBJ) $(BLOBJ)))
# Assemble: create object files from assembler source files.
@ -392,14 +384,16 @@ $(eval $(call PARTIAL_COMPILE_ARM_TEMPLATE, SRCARM))
$(OUTDIR)/$(TARGET).bin.o: $(OUTDIR)/$(TARGET).bin
.PHONY: elf lss sym hex bin bino
$(eval $(call OPFW_TEMPLATE,$(OUTDIR)/$(TARGET).bin,$(BOARD_TYPE),$(BOARD_REVISION)))
.PHONY: elf lss sym hex bin bino opfw
elf: $(OUTDIR)/$(TARGET).elf
elf.stripped: $(OUTDIR)/$(TARGET).elf.stripped
lss: $(OUTDIR)/$(TARGET).lss
sym: $(OUTDIR)/$(TARGET).sym
hex: $(OUTDIR)/$(TARGET).hex
bin: $(OUTDIR)/$(TARGET).bin
bino: $(OUTDIR)/$(TARGET).bin.o
opfw: $(OUTDIR)/$(TARGET).opfw
# Display sizes of sections.
$(eval $(call SIZE_TEMPLATE, $(OUTDIR)/$(TARGET).elf))
@ -410,6 +404,16 @@ size: $(OUTDIR)/$(TARGET).elf_size
docs:
doxygen $(DOXYGENDIR)/doxygen.cfg
# Install: install binary file with prefix/suffix into install directory
install: $(OUTDIR)/$(TARGET).opfw
ifneq ($(INSTALL_DIR),)
@echo $(MSG_INSTALLING) $(call toprel, $<)
$(V1) mkdir -p $(INSTALL_DIR)
$(V1) $(INSTALL) $< $(INSTALL_DIR)/$(INSTALL_PFX)$(TARGET)$(INSTALL_SFX).opfw
else
$(error INSTALL_DIR must be specified for $@)
endif
# Target: clean project.
clean: begin clean_list finished end
@ -430,7 +434,6 @@ clean_list :
$(V1) $(REMOVE) $(CPPSRC:.cpp=.s)
$(V1) $(REMOVE) $(CPPSRCARM:.cpp=.s)
# Create output files directory
# all known MS Windows OS define the ComSpec environment variable
ifdef ComSpec
@ -447,4 +450,4 @@ else
endif
# Listing of phony targets.
.PHONY : all build clean clean_list program
.PHONY : all build clean clean_list program install

View File

@ -25,6 +25,13 @@
WHEREAMI := $(dir $(lastword $(MAKEFILE_LIST)))
TOP := $(realpath $(WHEREAMI)/../../../)
include $(TOP)/make/firmware-defs.mk
include $(TOP)/make/boards/$(BOARD_NAME)/board-info.mk
# Target file name (without extension).
TARGET := bl_$(BOARD_NAME)
# Directory for output files (lst, obj, dep, elf, sym, map, hex, bin etc.)
OUTDIR := $(TOP)/build/$(TARGET)
# Set developer code and compile options
# Set to YES to compile for debugging
@ -48,21 +55,6 @@ endif
FLASH_TOOL = OPENOCD
# MCU name, submodel and board
# - MCU used for compiler-option (-mcpu)
# - MODEL used for linker-script name (-T) and passed as define
# - BOARD just passed as define (optional)
MCU = cortex-m3
CHIP = STM32F103CBT
BOARD = STM32103CB_CC_Rev1
MODEL = MD
# Directory for output files (lst, obj, dep, elf, sym, map, hex, bin etc.)
OUTDIR = $(TOP)/build/bl_coptercontrol
# Target file name (without extension).
TARGET = CopterControl_BL
# Paths
OPSYSTEM = .
OPSYSTEMINC = $(OPSYSTEM)/inc
@ -102,8 +94,6 @@ DOXYGENDIR = ../Doc/Doxygen
SRC += $(OPSYSTEM)/main.c
SRC += $(OPSYSTEM)/pios_board.c
SRC += $(OPSYSTEM)/op_dfu.c
SRC += $(FLIGHTLIB)/stopwatch.c
## PIOS Hardware (STM32F10x)
SRC += $(PIOSSTM32F10X)/pios_sys.c
@ -123,6 +113,7 @@ SRC += $(PIOSSTM32F10X)/pios_usb_hid_prop.c
SRC += $(PIOSSTM32F10X)/pios_usb_hid_pwr.c
## PIOS Hardware (Common)
SRC += $(PIOSCOMMON)/pios_board_info.c
SRC += $(PIOSCOMMON)/pios_com.c
SRC += $(PIOSCOMMON)/pios_bl_helper.c
SRC += $(PIOSCOMMON)/pios_iap.c
@ -146,7 +137,6 @@ SRC += $(STMSPDSRCDIR)/stm32f10x_pwr.c
SRC += $(STMSPDSRCDIR)/stm32f10x_rcc.c
SRC += $(STMSPDSRCDIR)/stm32f10x_rtc.c
SRC += $(STMSPDSRCDIR)/stm32f10x_spi.c
SRC += $(STMSPDSRCDIR)/stm32f10x_tim.c
SRC += $(STMSPDSRCDIR)/stm32f10x_usart.c
SRC += $(STMSPDSRCDIR)/stm32f10x_dbgmcu.c
SRC += $(STMSPDSRCDIR)/misc.c
@ -180,7 +170,7 @@ CPPSRCARM =
# Even though the DOS/Win* filesystem matches both .s and .S the same,
# it will preserve the spelling of the filenames, and gcc itself does
# care about how the name is spelled on its command-line.
ASRC = $(PIOSSTM32F10X)/startup_stm32f10x_$(MODEL).S
ASRC = $(PIOSSTM32F10X)/startup_stm32f10x_$(MODEL)$(MODEL_SUFFIX).S
# List Assembler source files here which must be assembled in ARM-Mode..
ASRCARM =
@ -259,6 +249,15 @@ ifeq ($(ENABLE_AUX_UART), YES)
CDEFS += -DPIOS_ENABLE_AUX_UART
endif
# Provide (only) the bootloader with board-specific defines
BLONLY_CDEFS += -DBOARD_TYPE=$(BOARD_TYPE)
BLONLY_CDEFS += -DBOARD_REVISION=$(BOARD_REVISION)
BLONLY_CDEFS += -DHW_TYPE=$(HW_TYPE)
BLONLY_CDEFS += -DBOOTLOADER_VERSION=$(BOOTLOADER_VERSION)
BLONLY_CDEFS += -DFW_BANK_BASE=$(FW_BANK_BASE)
BLONLY_CDEFS += -DFW_BANK_SIZE=$(FW_BANK_SIZE)
BLONLY_CDEFS += -DFW_DESC_SIZE=$(FW_DESC_SIZE)
# Place project-specific -D and/or -U options for
# Assembler with preprocessor here.
#ADEFS = -DUSE_IRQ_ASM_WRAPPER
@ -294,8 +293,9 @@ ifeq ($(DEBUG),NO)
CFLAGS += -ffunction-sections
endif
CFLAGS += -mcpu=$(MCU) -mthumb
CFLAGS += -mcpu=$(MCU)
CFLAGS += $(CDEFS)
CFLAGS += $(BLONLY_CDEFS)
CFLAGS += $(patsubst %,-I%,$(EXTRAINCDIRS)) -I.
CFLAGS += -mapcs-frame
@ -315,7 +315,7 @@ CONLYFLAGS += $(CSTANDARD)
# Assembler flags.
# -Wa,...: tell GCC to pass this to the assembler.
# -ahlns: create listing
ASFLAGS = -mcpu=$(MCU) -mthumb -I. -x assembler-with-cpp
ASFLAGS = -mcpu=$(MCU) -I. -x assembler-with-cpp
ASFLAGS += $(ADEFS)
ASFLAGS += -Wa,-adhlns=$(addprefix $(OUTDIR)/, $(notdir $(addsuffix .lst, $(basename $<))))
ASFLAGS += $(patsubst %,-I%,$(EXTRAINCDIRS))
@ -340,20 +340,8 @@ LDFLAGS += -lc -lgcc
LDFLAGS += -T$(LINKERSCRIPTPATH)/link_$(BOARD)_memory.ld
LDFLAGS += -T$(LINKERSCRIPTPATH)/link_$(BOARD)_BL_sections.ld
OOCD_LOADFILE+=$(OUTDIR)/$(TARGET).bin
# Program
OOCD_CL+=-c "flash write_image erase $(OOCD_LOADFILE) 0x08000000 bin"
# Verify
OOCD_CL+=-c "verify_image $(OOCD_LOADFILE) 0x08000000 bin"
# reset target
OOCD_CL+=-c "reset run"
# terminate OOCD after programming
OOCD_CL+=-c shutdown
# Define programs and commands.
REMOVE = $(REMOVE_CMD) -f
###SHELL = sh
###COPY = cp
# List of all source files.
ALLSRC = $(ASRCARM) $(ASRC) $(SRCARM) $(SRC) $(CPPSRCARM) $(CPPSRC)
@ -393,14 +381,6 @@ ${OUTDIR}/InitMods.c: Makefile
@echo ${quote}${foreach MOD, ${MODNAMES}, ${MOD}Initialize();}${quote} >> ${OUTDIR}/InitMods.c
@echo ${quote}}${quote} >> ${OUTDIR}/InitMods.c
# Program the device.
ifeq ($(FLASH_TOOL),OPENOCD)
# Program the device with Dominic Rath's OPENOCD in "batch-mode", needs cfg and "reset-script".
program: $(OUTDIR)/$(TARGET).bin
@echo ${quote}Programming with OPENOCD${quote}
$(OOCD_EXE) $(OOCD_CL)
endif
# Link: create ELF output file from object files.
$(eval $(call LINK_TEMPLATE, $(OUTDIR)/$(TARGET).elf, $(ALLOBJ)))
@ -428,12 +408,11 @@ $(eval $(call PARTIAL_COMPILE_TEMPLATE, SRC))
# Compile: create assembler files from C source files. ARM only
$(eval $(call PARTIAL_COMPILE_ARM_TEMPLATE, SRCARM))
# Generate Doxygen documents
docs:
doxygen $(DOXYGENDIR)/doxygen.cfg
$(OUTDIR)/$(TARGET).bin.o: $(OUTDIR)/$(TARGET).bin
# Add jtag targets (program and wipe)
$(eval $(call JTAG_TEMPLATE,$(OUTDIR)/$(TARGET).bin,$(BL_BANK_BASE),$(BL_BANK_SIZE)))
.PHONY: elf lss sym hex bin bino
elf: $(OUTDIR)/$(TARGET).elf
lss: $(OUTDIR)/$(TARGET).lss
@ -444,8 +423,20 @@ bino: $(OUTDIR)/$(TARGET).bin.o
# Display sizes of sections.
$(eval $(call SIZE_TEMPLATE, $(OUTDIR)/$(TARGET).elf))
.PHONY: size
size: $(OUTDIR)/$(TARGET).elf_size
# Generate Doxygen documents
docs:
doxygen $(DOXYGENDIR)/doxygen.cfg
# Install: install binary file with prefix/suffix into install directory
install: $(OUTDIR)/$(TARGET).bin
ifneq ($(INSTALL_DIR),)
@echo $(MSG_INSTALLING) $(call toprel, $<)
$(V1) mkdir -p $(INSTALL_DIR)
$(V1) $(INSTALL) $< $(INSTALL_DIR)/$(INSTALL_PFX)$(TARGET)$(INSTALL_SFX).bin
else
$(error INSTALL_DIR must be specified for $@)
endif
# Target: clean project.
clean: clean_list
@ -484,4 +475,4 @@ else
endif
# Listing of phony targets.
.PHONY : all build clean clean_list program
.PHONY : all build clean clean_list install

View File

@ -27,7 +27,7 @@
*/
/* Bootloader Includes */
#include <pios.h>
#include "stopwatch.h"
#include <pios_board_info.h>
#include "op_dfu.h"
#include "usb_lib.h"
#include "pios_iap.h"
@ -46,9 +46,9 @@ pFunction Jump_To_Application;
uint32_t JumpAddress;
/// LEDs PWM
uint32_t period1 = 50; // *100 uS -> 5 mS
uint32_t period1 = 5000; // 5 mS
uint32_t sweep_steps1 = 100; // * 5 mS -> 500 mS
uint32_t period2 = 50; // *100 uS -> 5 mS
uint32_t period2 = 5000; // 5 mS
uint32_t sweep_steps2 = 100; // * 5 mS -> 500 mS
@ -69,7 +69,6 @@ uint8_t processRX();
void jump_to_app();
#define BLUE LED1
#define LED_PWM_TIMER TIM1
int main() {
PIOS_SYS_Init();
if (BSL_HOLD_STATE == 0)
@ -92,13 +91,17 @@ int main() {
DeviceState = DFUidle;
else
DeviceState = BLidle;
STOPWATCH_Init(100, LED_PWM_TIMER);
} else
JumpToApp = TRUE;
STOPWATCH_Reset(LED_PWM_TIMER);
uint32_t stopwatch = 0;
uint32_t prev_ticks = PIOS_DELAY_GetuS();
while (TRUE) {
/* Update the stopwatch */
uint32_t elapsed_ticks = PIOS_DELAY_GetuSSince(prev_ticks);
prev_ticks += elapsed_ticks;
stopwatch += elapsed_ticks;
if (JumpToApp == TRUE)
jump_to_app();
@ -106,19 +109,19 @@ int main() {
case Last_operation_Success:
case uploadingStarting:
case DFUidle:
period1 = 50;
period1 = 5000;
sweep_steps1 = 100;
PIOS_LED_Off(BLUE);
period2 = 0;
break;
case uploading:
period1 = 50;
period1 = 5000;
sweep_steps1 = 100;
period2 = 25;
period2 = 2500;
sweep_steps2 = 50;
break;
case downloading:
period1 = 25;
period1 = 2500;
sweep_steps1 = 50;
PIOS_LED_Off(BLUE);
period2 = 0;
@ -129,14 +132,14 @@ int main() {
period2 = 0;
break;
default://error
period1 = 50;
period1 = 5000;
sweep_steps1 = 100;
period2 = 50;
period2 = 5000;
sweep_steps2 = 100;
}
if (period1 != 0) {
if (LedPWM(period1, sweep_steps1, STOPWATCH_ValueGet(LED_PWM_TIMER)))
if (LedPWM(period1, sweep_steps1, stopwatch))
PIOS_LED_On(BLUE);
else
PIOS_LED_Off(BLUE);
@ -144,16 +147,16 @@ int main() {
PIOS_LED_On(BLUE);
if (period2 != 0) {
if (LedPWM(period2, sweep_steps2, STOPWATCH_ValueGet(LED_PWM_TIMER)))
if (LedPWM(period2, sweep_steps2, stopwatch))
PIOS_LED_On(BLUE);
else
PIOS_LED_Off(BLUE);
} else
PIOS_LED_Off(BLUE);
if (STOPWATCH_ValueGet(LED_PWM_TIMER) > 100 * 50 * 100)
STOPWATCH_Reset(LED_PWM_TIMER);
if ((STOPWATCH_ValueGet(LED_PWM_TIMER) > 60000) && (DeviceState
if (stopwatch > 50 * 1000 * 1000)
stopwatch = 0;
if ((stopwatch > 6 * 1000 * 1000) && (DeviceState
== BLidle))
JumpToApp = TRUE;
@ -163,7 +166,9 @@ int main() {
}
void jump_to_app() {
if (((*(__IO uint32_t*) START_OF_USER_CODE) & 0x2FFE0000) == 0x20000000) { /* Jump to user application */
const struct pios_board_info * bdinfo = &pios_board_info_blob;
if (((*(__IO uint32_t*) bdinfo->fw_base) & 0x2FFE0000) == 0x20000000) { /* Jump to user application */
FLASH_Lock();
RCC_APB2PeriphResetCmd(0xffffffff, ENABLE);
RCC_APB1PeriphResetCmd(0xffffffff, ENABLE);
@ -171,10 +176,10 @@ void jump_to_app() {
RCC_APB1PeriphResetCmd(0xffffffff, DISABLE);
_SetCNTR(0); // clear interrupt mask
_SetISTR(0); // clear all requests
JumpAddress = *(__IO uint32_t*) (START_OF_USER_CODE + 4);
JumpAddress = *(__IO uint32_t*) (bdinfo->fw_base + 4);
Jump_To_Application = (pFunction) JumpAddress;
/* Initialize user application's Stack Pointer */
__set_MSP(*(__IO uint32_t*) START_OF_USER_CODE);
__set_MSP(*(__IO uint32_t*) bdinfo->fw_base);
Jump_To_Application();
} else {
DeviceState = failed_jump;
@ -182,21 +187,22 @@ void jump_to_app() {
}
}
uint32_t LedPWM(uint32_t pwm_period, uint32_t pwm_sweep_steps, uint32_t count) {
uint32_t pwm_duty = ((count / pwm_period) % pwm_sweep_steps)
/ (pwm_sweep_steps / pwm_period);
if ((count % (2 * pwm_period * pwm_sweep_steps)) > pwm_period
* pwm_sweep_steps)
pwm_duty = pwm_period - pwm_duty; // negative direction each 50*100 ticks
uint32_t curr_step = (count / pwm_period) % pwm_sweep_steps; /* 0 - pwm_sweep_steps */
uint32_t pwm_duty = pwm_period * curr_step / pwm_sweep_steps; /* fraction of pwm_period */
uint32_t curr_sweep = (count / (pwm_period * pwm_sweep_steps)); /* ticks once per full sweep */
if (curr_sweep & 1) {
pwm_duty = pwm_period - pwm_duty; /* reverse direction in odd sweeps */
}
return ((count % pwm_period) > pwm_duty) ? 1 : 0;
}
uint8_t processRX() {
while (PIOS_COM_ReceiveBufferUsed(PIOS_COM_TELEM_USB) >= 63) {
for (int32_t x = 0; x < 63; ++x) {
mReceive_Buffer[x] = PIOS_COM_ReceiveBuffer(PIOS_COM_TELEM_USB);
}
if (PIOS_COM_ReceiveBuffer(PIOS_COM_TELEM_USB, mReceive_Buffer, 63, 0) == 63) {
processComand(mReceive_Buffer);
}
}
return TRUE;
}

View File

@ -30,6 +30,7 @@
#include "pios.h"
#include "op_dfu.h"
#include "pios_bl_helper.h"
#include <pios_board_info.h>
//programmable devices
Device devicesTable[10];
uint8_t numberOfDevices = 0;
@ -382,16 +383,18 @@ void processComand(uint8_t *xReceive_Buffer) {
return;
}
void OPDfuIni(uint8_t discover) {
const struct pios_board_info * bdinfo = &pios_board_info_blob;
Device dev;
dev.programmingType = Self_flash;
dev.readWriteFlags = (BOARD_READABLE | (BOARD_WRITABLA << 1));
dev.startOfUserCode = START_OF_USER_CODE;
dev.sizeOfCode = SIZE_OF_CODE;
dev.sizeOfDescription = SIZE_OF_DESCRIPTION;
dev.BL_Version = BOOTLOADER_VERSION;
dev.readWriteFlags = (BOARD_READABLE | (BOARD_WRITABLE << 1));
dev.startOfUserCode = bdinfo->fw_base;
dev.sizeOfCode = bdinfo->fw_size;
dev.sizeOfDescription = bdinfo->desc_size;
dev.BL_Version = bdinfo->bl_rev;
dev.FW_Crc = CalcFirmCRC();
dev.devID = (BOARD_TYPE << 8) | BOARD_REVISION;
dev.devType = HW_TYPE;
dev.devID = (bdinfo->board_type << 8) | (bdinfo->board_rev);
dev.devType = bdinfo->hw_type;
numberOfDevices = 1;
devicesTable[0] = dev;
if (discover) {

View File

@ -31,10 +31,31 @@
#include <pios_com_priv.h>
#define PIOS_COM_TELEM_USB_RX_BUF_LEN 192
#define PIOS_COM_TELEM_USB_TX_BUF_LEN 192
static uint8_t pios_com_telem_usb_rx_buffer[PIOS_COM_TELEM_USB_RX_BUF_LEN];
static uint8_t pios_com_telem_usb_tx_buffer[PIOS_COM_TELEM_USB_TX_BUF_LEN];
#endif /* PIOS_INCLUDE_COM */
// ***********************************************************************************
#if defined(PIOS_INCLUDE_USB_HID)
#include "pios_usb_hid_priv.h"
static const struct pios_usb_hid_cfg pios_usb_hid_main_cfg = {
.irq = {
.init = {
.NVIC_IRQChannel = USB_LP_CAN1_RX0_IRQn,
.NVIC_IRQChannelPreemptionPriority = PIOS_IRQ_PRIO_LOW,
.NVIC_IRQChannelSubPriority = 0,
.NVIC_IRQChannelCmd = ENABLE,
},
},
};
#endif /* PIOS_INCLUDE_USB_HID */
extern const struct pios_com_driver pios_usb_com_driver;
uint32_t pios_com_telem_usb_id;
@ -44,7 +65,12 @@ uint32_t pios_com_telem_usb_id;
* initializes all the core subsystems on this specific hardware
* called from System/openpilot.c
*/
static bool board_init_complete = false;
void PIOS_Board_Init(void) {
if (board_init_complete) {
return;
}
/* Enable Prefetch Buffer */
FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);
@ -58,13 +84,20 @@ void PIOS_Board_Init(void) {
PIOS_GPIO_Init();
#if defined(PIOS_INCLUDE_USB_HID)
PIOS_USB_HID_Init(0);
uint32_t pios_usb_hid_id;
if (PIOS_USB_HID_Init(&pios_usb_hid_id, &pios_usb_hid_main_cfg)) {
PIOS_Assert(0);
}
#if defined(PIOS_INCLUDE_COM)
if (PIOS_COM_Init(&pios_com_telem_usb_id, &pios_usb_com_driver, 0)) {
PIOS_DEBUG_Assert(0);
if (PIOS_COM_Init(&pios_com_telem_usb_id, &pios_usb_com_driver, pios_usb_hid_id,
pios_com_telem_usb_rx_buffer, sizeof(pios_com_telem_usb_rx_buffer),
pios_com_telem_usb_tx_buffer, sizeof(pios_com_telem_usb_tx_buffer))) {
PIOS_Assert(0);
}
#endif /* PIOS_INCLUDE_COM */
#endif /* PIOS_INCLUDE_USB_HID */
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_CRC, ENABLE);//TODO Tirar
board_init_complete = true;
}

View File

@ -25,6 +25,13 @@
WHEREAMI := $(dir $(lastword $(MAKEFILE_LIST)))
TOP := $(realpath $(WHEREAMI)/../../../)
include $(TOP)/make/firmware-defs.mk
include $(TOP)/make/boards/$(BOARD_NAME)/board-info.mk
# Target file name (without extension).
TARGET := bl_$(BOARD_NAME)
# Directory for output files (lst, obj, dep, elf, sym, map, hex, bin etc.)
OUTDIR := $(TOP)/build/$(TARGET)
# Set developer code and compile options
# Set to YES to compile for debugging
@ -48,21 +55,6 @@ endif
FLASH_TOOL = OPENOCD
# MCU name, submodel and board
# - MCU used for compiler-option (-mcpu)
# - MODEL used for linker-script name (-T) and passed as define
# - BOARD just passed as define (optional)
MCU = cortex-m3
CHIP = STM32F103RET
BOARD = STM3210E_OP
MODEL = HD
# Directory for output files (lst, obj, dep, elf, sym, map, hex, bin etc.)
OUTDIR = $(TOP)/build/bl_openpilot
# Target file name (without extension).
TARGET = OpenPilot_BL
# Paths
OPSYSTEM = .
OPSYSTEMINC = $(OPSYSTEM)/inc
@ -124,6 +116,7 @@ SRC += $(PIOSSTM32F10X)/pios_usb_hid_prop.c
SRC += $(PIOSSTM32F10X)/pios_usb_hid_pwr.c
## PIOS Hardware (Common)
SRC += $(PIOSCOMMON)/pios_board_info.c
SRC += $(PIOSCOMMON)/pios_com.c
SRC += $(PIOSCOMMON)/pios_opahrs_v0.c
SRC += $(PIOSCOMMON)/pios_bl_helper.c
@ -183,7 +176,7 @@ CPPSRCARM =
# Even though the DOS/Win* filesystem matches both .s and .S the same,
# it will preserve the spelling of the filenames, and gcc itself does
# care about how the name is spelled on its command-line.
ASRC = $(PIOSSTM32F10X)/startup_stm32f10x_$(MODEL)_OP.S
ASRC = $(PIOSSTM32F10X)/startup_stm32f10x_$(MODEL)$(MODEL_SUFFIX).S
# List Assembler source files here which must be assembled in ARM-Mode..
ASRCARM =
@ -262,6 +255,15 @@ ifeq ($(ENABLE_AUX_UART), YES)
CDEFS += -DPIOS_ENABLE_AUX_UART
endif
# Provide (only) the bootloader with board-specific defines
BLONLY_CDEFS += -DBOARD_TYPE=$(BOARD_TYPE)
BLONLY_CDEFS += -DBOARD_REVISION=$(BOARD_REVISION)
BLONLY_CDEFS += -DHW_TYPE=$(HW_TYPE)
BLONLY_CDEFS += -DBOOTLOADER_VERSION=$(BOOTLOADER_VERSION)
BLONLY_CDEFS += -DFW_BANK_BASE=$(FW_BANK_BASE)
BLONLY_CDEFS += -DFW_BANK_SIZE=$(FW_BANK_SIZE)
BLONLY_CDEFS += -DFW_DESC_SIZE=$(FW_DESC_SIZE)
# Place project-specific -D and/or -U options for
# Assembler with preprocessor here.
#ADEFS = -DUSE_IRQ_ASM_WRAPPER
@ -299,6 +301,7 @@ endif
CFLAGS += -mcpu=$(MCU)
CFLAGS += $(CDEFS)
CFLAGS += $(BLONLY_CDEFS)
CFLAGS += $(patsubst %,-I%,$(EXTRAINCDIRS)) -I.
CFLAGS += -mapcs-frame
@ -343,20 +346,8 @@ LDFLAGS += -lc -lgcc
LDFLAGS += -T$(LINKERSCRIPTPATH)/link_$(BOARD)_memory.ld
LDFLAGS += -T$(LINKERSCRIPTPATH)/link_$(BOARD)_BL_sections.ld
OOCD_LOADFILE+=$(OUTDIR)/$(TARGET).bin
# Program
OOCD_CL+=-c "flash write_image erase $(OOCD_LOADFILE) 0x08000000 bin"
# Verify
OOCD_CL+=-c "verify_image $(OOCD_LOADFILE) 0x08000000 bin"
# reset target
OOCD_CL+=-c "reset run"
# terminate OOCD after programming
OOCD_CL+=-c shutdown
# Define programs and commands.
REMOVE = $(REMOVE_CMD) -f
###SHELL = sh
###COPY = cp
# List of all source files.
ALLSRC = $(ASRCARM) $(ASRC) $(SRCARM) $(SRC) $(CPPSRCARM) $(CPPSRC)
@ -396,14 +387,6 @@ ${OUTDIR}/InitMods.c: Makefile
@echo ${quote}${foreach MOD, ${MODNAMES}, ${MOD}Initialize();}${quote} >> ${OUTDIR}/InitMods.c
@echo ${quote}}${quote} >> ${OUTDIR}/InitMods.c
# Program the device.
ifeq ($(FLASH_TOOL),OPENOCD)
# Program the device with Dominic Rath's OPENOCD in "batch-mode", needs cfg and "reset-script".
program: $(OUTDIR)/$(TARGET).bin
@echo ${quote}Programming with OPENOCD${quote}
$(OOCD_EXE) $(OOCD_CL)
endif
# Link: create ELF output file from object files.
$(eval $(call LINK_TEMPLATE, $(OUTDIR)/$(TARGET).elf, $(ALLOBJ)))
@ -433,6 +416,9 @@ $(eval $(call PARTIAL_COMPILE_ARM_TEMPLATE, SRCARM))
$(OUTDIR)/$(TARGET).bin.o: $(OUTDIR)/$(TARGET).bin
# Add jtag targets (program and wipe)
$(eval $(call JTAG_TEMPLATE,$(OUTDIR)/$(TARGET).bin,$(BL_BANK_BASE),$(BL_BANK_SIZE)))
.PHONY: elf lss sym hex bin bino
elf: $(OUTDIR)/$(TARGET).elf
lss: $(OUTDIR)/$(TARGET).lss
@ -443,13 +429,21 @@ bino: $(OUTDIR)/$(TARGET).bin.o
# Display sizes of sections.
$(eval $(call SIZE_TEMPLATE, $(OUTDIR)/$(TARGET).elf))
.PHONY: size
size: $(OUTDIR)/$(TARGET).elf_size
# Generate Doxygen documents
docs:
doxygen $(DOXYGENDIR)/doxygen.cfg
# Install: install binary file with prefix/suffix into install directory
install: $(OUTDIR)/$(TARGET).bin
ifneq ($(INSTALL_DIR),)
@echo $(MSG_INSTALLING) $(call toprel, $<)
$(V1) mkdir -p $(INSTALL_DIR)
$(V1) $(INSTALL) $< $(INSTALL_DIR)/$(INSTALL_PFX)$(TARGET)$(INSTALL_SFX).bin
else
$(error INSTALL_DIR must be specified for $@)
endif
# Target: clean project.
clean: clean_list
@ -487,4 +481,4 @@ else
endif
# Listing of phony targets.
.PHONY : all build clean clean_list program
.PHONY : all build clean clean_list install

View File

@ -27,6 +27,7 @@
*/
/* Bootloader Includes */
#include <pios.h>
#include <pios_board_info.h>
#include "pios_opahrs.h"
#include "stopwatch.h"
#include "op_dfu.h"
@ -216,7 +217,9 @@ int main() {
}
void jump_to_app() {
if (((*(__IO uint32_t*) START_OF_USER_CODE) & 0x2FFE0000) == 0x20000000) { /* Jump to user application */
const struct pios_board_info * bdinfo = &pios_board_info_blob;
if (((*(__IO uint32_t*) bdinfo->fw_base) & 0x2FFE0000) == 0x20000000) { /* Jump to user application */
FLASH_Lock();
RCC_APB2PeriphResetCmd(0xffffffff, ENABLE);
RCC_APB1PeriphResetCmd(0xffffffff, ENABLE);
@ -225,10 +228,10 @@ void jump_to_app() {
_SetCNTR(0); // clear interrupt mask
_SetISTR(0); // clear all requests
JumpAddress = *(__IO uint32_t*) (START_OF_USER_CODE + 4);
JumpAddress = *(__IO uint32_t*) (bdinfo->fw_base + 4);
Jump_To_Application = (pFunction) JumpAddress;
/* Initialize user application's Stack Pointer */
__set_MSP(*(__IO uint32_t*) START_OF_USER_CODE);
__set_MSP(*(__IO uint32_t*) bdinfo->fw_base);
Jump_To_Application();
} else {
DeviceState = failed_jump;
@ -247,11 +250,10 @@ uint32_t LedPWM(uint32_t pwm_period, uint32_t pwm_sweep_steps, uint32_t count) {
uint8_t processRX() {
if (ProgPort == Usb) {
while (PIOS_COM_ReceiveBufferUsed(PIOS_COM_TELEM_USB) >= 63) {
for (int32_t x = 0; x < 63; ++x) {
mReceive_Buffer[x] = PIOS_COM_ReceiveBuffer(PIOS_COM_TELEM_USB);
}
if (PIOS_COM_ReceiveBuffer(PIOS_COM_TELEM_USB, mReceive_Buffer, 63, 0) == 63) {
processComand(mReceive_Buffer);
}
}
} else if (ProgPort == Serial) {
if (fifoBuf_getUsed(&ssp_buffer) >= 63) {
@ -276,7 +278,12 @@ void SSP_CallBack(uint8_t *buf, uint16_t len) {
}
int16_t SSP_SerialRead(void) {
if (PIOS_COM_ReceiveBufferUsed(PIOS_COM_TELEM_RF) > 0) {
return PIOS_COM_ReceiveBuffer(PIOS_COM_TELEM_RF);
uint8_t byte;
if (PIOS_COM_ReceiveBuffer(PIOS_COM_TELEM_RF, &byte, 1, 0) == 1) {
return byte;
} else {
return -1;
}
} else
return -1;
}

View File

@ -30,6 +30,7 @@
#include "pios.h"
#include "op_dfu.h"
#include "pios_bl_helper.h"
#include <pios_board_info.h>
#include "pios_opahrs.h"
#include "ssp.h"
/* Private typedef -----------------------------------------------------------*/
@ -447,16 +448,18 @@ void processComand(uint8_t *xReceive_Buffer) {
return;
}
void OPDfuIni(uint8_t discover) {
const struct pios_board_info * bdinfo = &pios_board_info_blob;
Device dev;
dev.programmingType = Self_flash;
dev.readWriteFlags = (BOARD_READABLE | (BOARD_WRITABLA << 1));
dev.startOfUserCode = START_OF_USER_CODE;
dev.sizeOfCode = SIZE_OF_CODE;
dev.sizeOfDescription = SIZE_OF_DESCRIPTION;
dev.BL_Version = BOOTLOADER_VERSION;
dev.readWriteFlags = (BOARD_READABLE | (BOARD_WRITABLE << 1));
dev.startOfUserCode = bdinfo->fw_base;
dev.sizeOfCode = bdinfo->fw_size;
dev.sizeOfDescription = bdinfo->desc_size;
dev.BL_Version = bdinfo->bl_rev;
dev.FW_Crc = CalcFirmCRC();
dev.devID = (BOARD_TYPE << 8) | BOARD_REVISION;
dev.devType = HW_TYPE;
dev.devID = (bdinfo->board_type << 8) | (bdinfo->board_rev);
dev.devType = bdinfo->hw_type;
numberOfDevices = 1;
devicesTable[0] = dev;
if (discover) {

View File

@ -60,7 +60,6 @@ const struct pios_spi_cfg
.ahb_clk = RCC_AHBPeriph_DMA1,
.irq = {
.handler = PIOS_SPI_ahrs_irq_handler,
.flags = (DMA1_FLAG_TC4 | DMA1_FLAG_TE4 | DMA1_FLAG_HT4 | DMA1_FLAG_GL4),
.init = {
.NVIC_IRQChannel = DMA1_Channel4_IRQn,
@ -143,9 +142,9 @@ void PIOS_SPI_ahrs_irq_handler(void) {
/*
* Telemetry USART
*/
void PIOS_USART_telem_irq_handler(void);
void USART2_IRQHandler() __attribute__ ((alias ("PIOS_USART_telem_irq_handler")));
const struct pios_usart_cfg pios_usart_telem_cfg = { .regs = USART2, .init = {
const struct pios_usart_cfg pios_usart_telem_cfg = {
.regs = USART2,
.init = {
#if defined (PIOS_COM_TELEM_BAUDRATE)
.USART_BaudRate = PIOS_COM_TELEM_BAUDRATE,
#else
@ -157,7 +156,6 @@ const struct pios_usart_cfg pios_usart_telem_cfg = { .regs = USART2, .init = {
.USART_HardwareFlowControl = USART_HardwareFlowControl_None,
.USART_Mode = USART_Mode_Rx | USART_Mode_Tx,
}, .irq = {
.handler = PIOS_USART_telem_irq_handler,
.init = {
.NVIC_IRQChannel = USART2_IRQn,
.NVIC_IRQChannelPreemptionPriority = PIOS_IRQ_PRIO_HIGH,
@ -180,19 +178,41 @@ const struct pios_usart_cfg pios_usart_telem_cfg = { .regs = USART2, .init = {
},
}, };
static uint32_t pios_usart_telem_rf_id;
void PIOS_USART_telem_irq_handler(void) {
PIOS_USART_IRQ_Handler(pios_usart_telem_rf_id);
}
#endif /* PIOS_INCLUDE_USART */
#if defined(PIOS_INCLUDE_COM)
#include "pios_com_priv.h"
#define PIOS_COM_TELEM_USB_RX_BUF_LEN 192
#define PIOS_COM_TELEM_USB_TX_BUF_LEN 192
static uint8_t pios_com_telem_usb_rx_buffer[PIOS_COM_TELEM_USB_RX_BUF_LEN];
static uint8_t pios_com_telem_usb_tx_buffer[PIOS_COM_TELEM_USB_TX_BUF_LEN];
#define PIOS_COM_TELEM_RF_RX_BUF_LEN 192
#define PIOS_COM_TELEM_RF_TX_BUF_LEN 192
static uint8_t pios_com_telem_rf_rx_buffer[PIOS_COM_TELEM_RF_RX_BUF_LEN];
static uint8_t pios_com_telem_rf_tx_buffer[PIOS_COM_TELEM_RF_TX_BUF_LEN];
#endif /* PIOS_INCLUDE_COM */
#if defined(PIOS_INCLUDE_USB_HID)
#include "pios_usb_hid_priv.h"
static const struct pios_usb_hid_cfg pios_usb_hid_main_cfg = {
.irq = {
.init = {
.NVIC_IRQChannel = USB_LP_CAN1_RX0_IRQn,
.NVIC_IRQChannelPreemptionPriority = PIOS_IRQ_PRIO_LOW,
.NVIC_IRQChannelSubPriority = 0,
.NVIC_IRQChannelCmd = ENABLE,
},
},
};
#endif /* PIOS_INCLUDE_USB_HID */
extern const struct pios_com_driver pios_usb_com_driver;
uint32_t pios_com_telem_rf_id;
@ -205,7 +225,11 @@ uint32_t pios_com_telem_usb_id;
* initializes all the core subsystems on this specific hardware
* called from System/openpilot.c
*/
static bool board_init_complete = false;
void PIOS_Board_Init(void) {
if (board_init_complete) {
return;
}
/* Enable Prefetch Buffer */
FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);
@ -218,11 +242,14 @@ void PIOS_Board_Init(void) {
/* Initialize the PiOS library */
#if defined(PIOS_INCLUDE_COM)
uint32_t pios_usart_telem_rf_id;
if (PIOS_USART_Init(&pios_usart_telem_rf_id, &pios_usart_telem_cfg)) {
PIOS_DEBUG_Assert(0);
}
if (PIOS_COM_Init(&pios_com_telem_rf_id, &pios_usart_com_driver,
pios_usart_telem_rf_id)) {
pios_usart_telem_rf_id,
pios_com_telem_rf_rx_buffer, sizeof(pios_com_telem_rf_rx_buffer),
pios_com_telem_rf_tx_buffer, sizeof(pios_com_telem_rf_tx_buffer))) {
PIOS_DEBUG_Assert(0);
}
#endif /* PIOS_INCLUDE_COM */
@ -230,10 +257,13 @@ void PIOS_Board_Init(void) {
PIOS_GPIO_Init();
#if defined(PIOS_INCLUDE_USB_HID)
PIOS_USB_HID_Init(0);
uint32_t pios_usb_hid_id;
PIOS_USB_HID_Init(&pios_usb_hid_id, &pios_usb_hid_main_cfg);
#if defined(PIOS_INCLUDE_COM)
if (PIOS_COM_Init(&pios_com_telem_usb_id, &pios_usb_com_driver, 0)) {
PIOS_DEBUG_Assert(0);
if (PIOS_COM_Init(&pios_com_telem_usb_id, &pios_usb_com_driver, pios_usb_hid_id,
pios_com_telem_usb_rx_buffer, sizeof(pios_com_telem_usb_rx_buffer),
pios_com_telem_usb_tx_buffer, sizeof(pios_com_telem_usb_tx_buffer))) {
PIOS_Assert(0);
}
#endif /* PIOS_INCLUDE_COM */
#endif /* PIOS_INCLUDE_USB_HID */
@ -247,6 +277,8 @@ void PIOS_Board_Init(void) {
/* Bind the AHRS comms layer to the AHRS SPI link */
PIOS_OPAHRS_Attach(pios_spi_ahrs_id);
board_init_complete = true;
}
/**

View File

@ -25,6 +25,13 @@
WHEREAMI := $(dir $(lastword $(MAKEFILE_LIST)))
TOP := $(realpath $(WHEREAMI)/../../../)
include $(TOP)/make/firmware-defs.mk
include $(TOP)/make/boards/$(BOARD_NAME)/board-info.mk
# Target file name (without extension).
TARGET := bl_$(BOARD_NAME)
# Directory for output files (lst, obj, dep, elf, sym, map, hex, bin etc.)
OUTDIR := $(TOP)/build/$(TARGET)
# Set developer code and compile options
# Set to YES to compile for debugging
@ -48,21 +55,6 @@ endif
FLASH_TOOL = OPENOCD
# MCU name, submodel and board
# - MCU used for compiler-option (-mcpu)
# - MODEL used for linker-script name (-T) and passed as define
# - BOARD just passed as define (optional)
MCU = cortex-m3
CHIP = STM32F103CBT
BOARD = STM32103CB_PIPXTREME
MODEL = MD
# Directory for output files (lst, obj, dep, elf, sym, map, hex, bin etc.)
OUTDIR = $(TOP)/build/bl_pipxtreme
# Target file name (without extension).
TARGET = PipXtreme_BL
# Paths
OPSYSTEM = .
OPSYSTEMINC = $(OPSYSTEM)/inc
@ -102,8 +94,6 @@ DOXYGENDIR = ../Doc/Doxygen
SRC += $(OPSYSTEM)/main.c
SRC += $(OPSYSTEM)/pios_board.c
SRC += $(OPSYSTEM)/op_dfu.c
SRC += $(FLIGHTLIB)/stopwatch.c
## PIOS Hardware (STM32F10x)
SRC += $(PIOSSTM32F10X)/pios_sys.c
@ -122,6 +112,7 @@ SRC += $(PIOSSTM32F10X)/pios_usb_hid_prop.c
SRC += $(PIOSSTM32F10X)/pios_usb_hid_pwr.c
## PIOS Hardware (Common)
SRC += $(PIOSCOMMON)/pios_board_info.c
SRC += $(PIOSCOMMON)/pios_com.c
SRC += $(PIOSCOMMON)/pios_bl_helper.c
SRC += $(PIOSCOMMON)/pios_iap.c
@ -145,7 +136,6 @@ SRC += $(STMSPDSRCDIR)/stm32f10x_pwr.c
SRC += $(STMSPDSRCDIR)/stm32f10x_rcc.c
SRC += $(STMSPDSRCDIR)/stm32f10x_rtc.c
SRC += $(STMSPDSRCDIR)/stm32f10x_spi.c
SRC += $(STMSPDSRCDIR)/stm32f10x_tim.c
SRC += $(STMSPDSRCDIR)/stm32f10x_usart.c
SRC += $(STMSPDSRCDIR)/stm32f10x_dbgmcu.c
SRC += $(STMSPDSRCDIR)/misc.c
@ -179,7 +169,7 @@ CPPSRCARM =
# Even though the DOS/Win* filesystem matches both .s and .S the same,
# it will preserve the spelling of the filenames, and gcc itself does
# care about how the name is spelled on its command-line.
ASRC = $(PIOSSTM32F10X)/startup_stm32f10x_$(MODEL).S
ASRC = $(PIOSSTM32F10X)/startup_stm32f10x_$(MODEL)$(MODEL_SUFFIX).S
# List Assembler source files here which must be assembled in ARM-Mode..
ASRCARM =
@ -258,6 +248,17 @@ ifeq ($(ENABLE_AUX_UART), YES)
CDEFS += -DPIOS_ENABLE_AUX_UART
endif
# Provide (only) the bootloader with board-specific defines
BLONLY_CDEFS += -DBOARD_TYPE=$(BOARD_TYPE)
BLONLY_CDEFS += -DBOARD_REVISION=$(BOARD_REVISION)
BLONLY_CDEFS += -DHW_TYPE=$(HW_TYPE)
BLONLY_CDEFS += -DBOOTLOADER_VERSION=$(BOOTLOADER_VERSION)
BLONLY_CDEFS += -DFW_BANK_BASE=$(FW_BANK_BASE)
BLONLY_CDEFS += -DFW_BANK_SIZE=$(FW_BANK_SIZE)
BLONLY_CDEFS += -DFW_DESC_SIZE=$(FW_DESC_SIZE)
BLONLY_CDEFS += -DEE_BANK_BASE=$(EE_BANK_BASE)
BLONLY_CDEFS += -DEE_BANK_SIZE=$(EE_BANK_SIZE)
# Place project-specific -D and/or -U options for
# Assembler with preprocessor here.
#ADEFS = -DUSE_IRQ_ASM_WRAPPER
@ -293,8 +294,9 @@ ifeq ($(DEBUG),NO)
CFLAGS += -ffunction-sections
endif
CFLAGS += -mcpu=$(MCU) -mthumb
CFLAGS += -mcpu=$(MCU)
CFLAGS += $(CDEFS)
CFLAGS += $(BLONLY_CDEFS)
CFLAGS += $(patsubst %,-I%,$(EXTRAINCDIRS)) -I.
CFLAGS += -mapcs-frame
@ -314,7 +316,7 @@ CONLYFLAGS += $(CSTANDARD)
# Assembler flags.
# -Wa,...: tell GCC to pass this to the assembler.
# -ahlns: create listing
ASFLAGS = -mcpu=$(MCU) -mthumb -I. -x assembler-with-cpp
ASFLAGS = -mcpu=$(MCU) -I. -x assembler-with-cpp
ASFLAGS += $(ADEFS)
ASFLAGS += -Wa,-adhlns=$(addprefix $(OUTDIR)/, $(notdir $(addsuffix .lst, $(basename $<))))
ASFLAGS += $(patsubst %,-I%,$(EXTRAINCDIRS))
@ -339,20 +341,8 @@ LDFLAGS += -lc -lgcc
LDFLAGS += -T$(LINKERSCRIPTPATH)/link_$(BOARD)_memory.ld
LDFLAGS += -T$(LINKERSCRIPTPATH)/link_$(BOARD)_BL_sections.ld
OOCD_LOADFILE+=$(OUTDIR)/$(TARGET).bin
# Program
OOCD_CL+=-c "flash write_image erase $(OOCD_LOADFILE) 0x08000000 bin"
# Verify
OOCD_CL+=-c "verify_image $(OOCD_LOADFILE) 0x08000000 bin"
# reset target
OOCD_CL+=-c "reset run"
# terminate OOCD after programming
OOCD_CL+=-c shutdown
# Define programs and commands.
REMOVE = $(REMOVE_CMD) -f
###SHELL = sh
###COPY = cp
# List of all source files.
ALLSRC = $(ASRCARM) $(ASRC) $(SRCARM) $(SRC) $(CPPSRCARM) $(CPPSRC)
@ -392,14 +382,6 @@ ${OUTDIR}/InitMods.c: Makefile
@echo ${quote}${foreach MOD, ${MODNAMES}, ${MOD}Initialize();}${quote} >> ${OUTDIR}/InitMods.c
@echo ${quote}}${quote} >> ${OUTDIR}/InitMods.c
# Program the device.
ifeq ($(FLASH_TOOL),OPENOCD)
# Program the device with Dominic Rath's OPENOCD in "batch-mode", needs cfg and "reset-script".
program: $(OUTDIR)/$(TARGET).bin
@echo ${quote}Programming with OPENOCD${quote}
$(OOCD_EXE) $(OOCD_CL)
endif
# Link: create ELF output file from object files.
$(eval $(call LINK_TEMPLATE, $(OUTDIR)/$(TARGET).elf, $(ALLOBJ)))
@ -429,6 +411,9 @@ $(eval $(call PARTIAL_COMPILE_ARM_TEMPLATE, SRCARM))
$(OUTDIR)/$(TARGET).bin.o: $(OUTDIR)/$(TARGET).bin
# Add jtag targets (program and wipe)
$(eval $(call JTAG_TEMPLATE,$(OUTDIR)/$(TARGET).bin,$(BL_BANK_BASE),$(BL_BANK_SIZE)))
.PHONY: elf lss sym hex bin bino
elf: $(OUTDIR)/$(TARGET).elf
lss: $(OUTDIR)/$(TARGET).lss
@ -439,13 +424,21 @@ bino: $(OUTDIR)/$(TARGET).bin.o
# Display sizes of sections.
$(eval $(call SIZE_TEMPLATE, $(OUTDIR)/$(TARGET).elf))
.PHONY: size
size: $(OUTDIR)/$(TARGET).elf_size
# Generate Doxygen documents
docs:
doxygen $(DOXYGENDIR)/doxygen.cfg
# Install: install binary file with prefix/suffix into install directory
install: $(OUTDIR)/$(TARGET).bin
ifneq ($(INSTALL_DIR),)
@echo $(MSG_INSTALLING) $(call toprel, $<)
$(V1) mkdir -p $(INSTALL_DIR)
$(V1) $(INSTALL) $< $(INSTALL_DIR)/$(INSTALL_PFX)$(TARGET)$(INSTALL_SFX).bin
else
$(error INSTALL_DIR must be specified for $@)
endif
# Target: clean project.
clean: clean_list
@ -483,5 +476,4 @@ else
endif
# Listing of phony targets.
.PHONY : all build clean clean_list program
.PHONY : all build clean clean_list install

View File

@ -27,7 +27,7 @@
*/
/* Bootloader Includes */
#include <pios.h>
#include "stopwatch.h"
#include <pios_board_info.h>
#include "op_dfu.h"
#include "usb_lib.h"
#include "pios_iap.h"
@ -46,9 +46,9 @@ pFunction Jump_To_Application;
uint32_t JumpAddress;
/// LEDs PWM
uint32_t period1 = 50; // *100 uS -> 5 mS
uint32_t period1 = 5000; // 5 mS
uint32_t sweep_steps1 = 100; // * 5 mS -> 500 mS
uint32_t period2 = 50; // *100 uS -> 5 mS
uint32_t period2 = 5000; // 5 mS
uint32_t sweep_steps2 = 100; // * 5 mS -> 500 mS
@ -70,7 +70,6 @@ void jump_to_app();
#define BLUE LED1
#define RED LED4
#define LED_PWM_TIMER TIM3
int main() {
/* NOTE: Do NOT modify the following start-up sequence */
/* Any new initialization functions should be added in OpenPilotInit() */
@ -97,35 +96,37 @@ int main() {
DeviceState = DFUidle;
else
DeviceState = BLidle;
STOPWATCH_Init(100, LED_PWM_TIMER);
} else
JumpToApp = TRUE;
STOPWATCH_Reset(LED_PWM_TIMER);
uint32_t stopwatch = 0;
uint32_t prev_ticks = PIOS_DELAY_GetuS();
while (TRUE) {
/* Update the stopwatch */
uint32_t elapsed_ticks = PIOS_DELAY_GetuSSince(prev_ticks);
prev_ticks += elapsed_ticks;
stopwatch += elapsed_ticks;
if (JumpToApp == TRUE)
jump_to_app();
//pwm_period = 50; // *100 uS -> 5 mS
//pwm_sweep_steps =100; // * 5 mS -> 500 mS
switch (DeviceState) {
case Last_operation_Success:
case uploadingStarting:
case DFUidle:
period1 = 50;
period1 = 5000;
sweep_steps1 = 100;
PIOS_LED_Off(RED);
period2 = 0;
break;
case uploading:
period1 = 50;
period1 = 5000;
sweep_steps1 = 100;
period2 = 25;
period2 = 2500;
sweep_steps2 = 50;
break;
case downloading:
period1 = 25;
period1 = 2500;
sweep_steps1 = 50;
PIOS_LED_Off(RED);
period2 = 0;
@ -136,14 +137,14 @@ int main() {
period2 = 0;
break;
default://error
period1 = 50;
period1 = 5000;
sweep_steps1 = 100;
period2 = 50;
period2 = 5000;
sweep_steps2 = 100;
}
if (period1 != 0) {
if (LedPWM(period1, sweep_steps1, STOPWATCH_ValueGet(LED_PWM_TIMER)))
if (LedPWM(period1, sweep_steps1, stopwatch))
PIOS_LED_On(BLUE);
else
PIOS_LED_Off(BLUE);
@ -151,16 +152,16 @@ int main() {
PIOS_LED_On(BLUE);
if (period2 != 0) {
if (LedPWM(period2, sweep_steps2, STOPWATCH_ValueGet(LED_PWM_TIMER)))
if (LedPWM(period2, sweep_steps2, stopwatch))
PIOS_LED_On(RED);
else
PIOS_LED_Off(RED);
} else
PIOS_LED_Off(RED);
if (STOPWATCH_ValueGet(LED_PWM_TIMER) > 100 * 50 * 100)
STOPWATCH_Reset(LED_PWM_TIMER);
if ((STOPWATCH_ValueGet(LED_PWM_TIMER) > 60000) && (DeviceState
if (stopwatch > 50 * 1000 * 1000)
stopwatch = 0;
if ((stopwatch > 6 * 1000 * 1000) && (DeviceState
== BLidle))
JumpToApp = TRUE;
@ -170,7 +171,9 @@ int main() {
}
void jump_to_app() {
if (((*(__IO uint32_t*) START_OF_USER_CODE) & 0x2FFE0000) == 0x20000000) { /* Jump to user application */
const struct pios_board_info * bdinfo = &pios_board_info_blob;
if (((*(__IO uint32_t*) bdinfo->fw_base) & 0x2FFE0000) == 0x20000000) { /* Jump to user application */
FLASH_Lock();
RCC_APB2PeriphResetCmd(0xffffffff, ENABLE);
RCC_APB1PeriphResetCmd(0xffffffff, ENABLE);
@ -179,10 +182,10 @@ void jump_to_app() {
_SetCNTR(0); // clear interrupt mask
_SetISTR(0); // clear all requests
JumpAddress = *(__IO uint32_t*) (START_OF_USER_CODE + 4);
JumpAddress = *(__IO uint32_t*) (bdinfo->fw_base + 4);
Jump_To_Application = (pFunction) JumpAddress;
/* Initialize user application's Stack Pointer */
__set_MSP(*(__IO uint32_t*) START_OF_USER_CODE);
__set_MSP(*(__IO uint32_t*) bdinfo->fw_base);
Jump_To_Application();
} else {
DeviceState = failed_jump;
@ -190,21 +193,22 @@ void jump_to_app() {
}
}
uint32_t LedPWM(uint32_t pwm_period, uint32_t pwm_sweep_steps, uint32_t count) {
uint32_t pwm_duty = ((count / pwm_period) % pwm_sweep_steps)
/ (pwm_sweep_steps / pwm_period);
if ((count % (2 * pwm_period * pwm_sweep_steps)) > pwm_period
* pwm_sweep_steps)
pwm_duty = pwm_period - pwm_duty; // negative direction each 50*100 ticks
uint32_t curr_step = (count / pwm_period) % pwm_sweep_steps; /* 0 - pwm_sweep_steps */
uint32_t pwm_duty = pwm_period * curr_step / pwm_sweep_steps; /* fraction of pwm_period */
uint32_t curr_sweep = (count / (pwm_period * pwm_sweep_steps)); /* ticks once per full sweep */
if (curr_sweep & 1) {
pwm_duty = pwm_period - pwm_duty; /* reverse direction in odd sweeps */
}
return ((count % pwm_period) > pwm_duty) ? 1 : 0;
}
uint8_t processRX() {
while (PIOS_COM_ReceiveBufferUsed(PIOS_COM_TELEM_USB) >= 63) {
for (int32_t x = 0; x < 63; ++x) {
mReceive_Buffer[x] = PIOS_COM_ReceiveBuffer(PIOS_COM_TELEM_USB);
}
if (PIOS_COM_ReceiveBuffer(PIOS_COM_TELEM_USB, mReceive_Buffer, 63, 0) == 63) {
processComand(mReceive_Buffer);
}
}
return TRUE;
}

View File

@ -30,6 +30,7 @@
#include "pios.h"
#include "op_dfu.h"
#include "pios_bl_helper.h"
#include <pios_board_info.h>
/* Private typedef -----------------------------------------------------------*/
/* Private define ------------------------------------------------------------*/
/* Private macro -------------------------------------------------------------*/
@ -414,16 +415,18 @@ void processComand(uint8_t *xReceive_Buffer) {
return;
}
void OPDfuIni(uint8_t discover) {
const struct pios_board_info * bdinfo = &pios_board_info_blob;
Device dev;
dev.programmingType = Self_flash;
dev.readWriteFlags = (BOARD_READABLE | (BOARD_WRITABLA << 1));
dev.startOfUserCode = START_OF_USER_CODE;
dev.sizeOfCode = SIZE_OF_CODE;
dev.sizeOfDescription = SIZE_OF_DESCRIPTION;
dev.BL_Version = BOOTLOADER_VERSION;
dev.readWriteFlags = (BOARD_READABLE | (BOARD_WRITABLE << 1));
dev.startOfUserCode = bdinfo->fw_base;
dev.sizeOfCode = bdinfo->fw_size;
dev.sizeOfDescription = bdinfo->desc_size;
dev.BL_Version = bdinfo->bl_rev;
dev.FW_Crc = CalcFirmCRC();
dev.devID = (BOARD_TYPE << 8) | BOARD_REVISION;
dev.devType = HW_TYPE;
dev.devID = (bdinfo->board_type << 8) | (bdinfo->board_rev);
dev.devType = bdinfo->hw_type;
numberOfDevices = 1;
devicesTable[0] = dev;
if (discover) {

View File

@ -31,10 +31,31 @@
#include <pios_com_priv.h>
#define PIOS_COM_TELEM_USB_RX_BUF_LEN 192
#define PIOS_COM_TELEM_USB_TX_BUF_LEN 192
static uint8_t pios_com_telem_usb_rx_buffer[PIOS_COM_TELEM_USB_RX_BUF_LEN];
static uint8_t pios_com_telem_usb_tx_buffer[PIOS_COM_TELEM_USB_TX_BUF_LEN];
#endif /* PIOS_INCLUDE_COM */
// ***********************************************************************************
#if defined(PIOS_INCLUDE_USB_HID)
#include "pios_usb_hid_priv.h"
static const struct pios_usb_hid_cfg pios_usb_hid_main_cfg = {
.irq = {
.init = {
.NVIC_IRQChannel = USB_LP_CAN1_RX0_IRQn,
.NVIC_IRQChannelPreemptionPriority = PIOS_IRQ_PRIO_LOW,
.NVIC_IRQChannelSubPriority = 0,
.NVIC_IRQChannelCmd = ENABLE,
},
},
};
#endif /* PIOS_INCLUDE_USB_HID */
extern const struct pios_com_driver pios_usb_com_driver;
uint32_t pios_com_telem_usb_id;
@ -44,7 +65,12 @@ uint32_t pios_com_telem_usb_id;
* initializes all the core subsystems on this specific hardware
* called from System/openpilot.c
*/
static bool board_init_complete = false;
void PIOS_Board_Init(void) {
if (board_init_complete) {
return;
}
/* Enable Prefetch Buffer */
FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);
@ -58,13 +84,18 @@ void PIOS_Board_Init(void) {
PIOS_GPIO_Init();
#if defined(PIOS_INCLUDE_USB_HID)
PIOS_USB_HID_Init(0);
uint32_t pios_usb_hid_id;
PIOS_USB_HID_Init(&pios_usb_hid_id, &pios_usb_hid_main_cfg);
#if defined(PIOS_INCLUDE_COM)
if (PIOS_COM_Init(&pios_com_telem_usb_id, &pios_usb_com_driver, 0)) {
PIOS_DEBUG_Assert(0);
if (PIOS_COM_Init(&pios_com_telem_usb_id, &pios_usb_com_driver, pios_usb_hid_id,
pios_com_telem_usb_rx_buffer, sizeof(pios_com_telem_usb_rx_buffer),
pios_com_telem_usb_tx_buffer, sizeof(pios_com_telem_usb_tx_buffer))) {
PIOS_Assert(0);
}
#endif /* PIOS_INCLUDE_COM */
#endif /* PIOS_INCLUDE_USB_HID */
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_CRC, ENABLE);//TODO Tirar
board_init_complete = true;
}

View File

@ -25,11 +25,21 @@
WHEREAMI := $(dir $(lastword $(MAKEFILE_LIST)))
TOP := $(realpath $(WHEREAMI)/../../)
include $(TOP)/make/firmware-defs.mk
include $(TOP)/make/boards/$(BOARD_NAME)/board-info.mk
# Target file name (without extension).
TARGET := fw_$(BOARD_NAME)
# Directory for output files (lst, obj, dep, elf, sym, map, hex, bin etc.)
OUTDIR := $(TOP)/build/$(TARGET)
# Set developer code and compile options
# Set to YES to compile for debugging
DEBUG ?= NO
# Include objects that are just nice information to show
DIAGNOSTICS ?= NO
# Set to YES to build a FW version that will erase all flash memory
ERASE_FLASH ?= NO
# Set to YES to use the Servo output pins for debugging via scope or logic analyser
@ -38,7 +48,7 @@ ENABLE_DEBUG_PINS ?= NO
# Set to Yes to enable the AUX UART which is mapped on the S1 (Tx) and S2 (Rx) servo outputs
ENABLE_AUX_UART ?= NO
USE_SPEKTRUM ?= NO
USE_GPS ?= NO
USE_I2C ?= NO
@ -55,22 +65,9 @@ endif
FLASH_TOOL = OPENOCD
# List of modules to include
MODULES = Telemetry Attitude Stabilization Actuator ManualControl FirmwareIAP
# MCU name, submodel and board
# - MCU used for compiler-option (-mcpu)
# - MODEL used for linker-script name (-T) and passed as define
# - BOARD just passed as define (optional)
MCU = cortex-m3
CHIP = STM32F103CBT
BOARD = STM32103CB_CC_Rev1
MODEL = MD
# Directory for output files (lst, obj, dep, elf, sym, map, hex, bin etc.)
OUTDIR = $(TOP)/build/coptercontrol
# Target file name (without extension).
TARGET = CopterControl
MODULES = Attitude Stabilization Actuator ManualControl FirmwareIAP CameraStab
# Telemetry must be last to grab the optional modules
MODULES += Telemetry
# Paths
OPSYSTEM = ./System
@ -121,12 +118,9 @@ OPUAVSYNTHDIR = $(OUTDIR)/../uavobject-synthetics/flight
# List C source files here. (C dependencies are automatically generated.)
# use file-extension c for "c-only"-files
MODNAMES = $(notdir ${MODULES})
ifndef TESTAPP
## MODULES
SRC += ${foreach MOD, ${MODULES}, ${wildcard ${OPMODULEDIR}/${MOD}/*.c}}
SRC += ${OUTDIR}/InitMods.c
## OPENPILOT CORE:
SRC += ${OPMODULEDIR}/System/systemmod.c
SRC += $(OPSYSTEM)/coptercontrol.c
@ -136,7 +130,6 @@ SRC += $(OPSYSTEM)/taskmonitor.c
SRC += $(OPUAVTALK)/uavtalk.c
SRC += $(OPUAVOBJ)/uavobjectmanager.c
SRC += $(OPUAVOBJ)/eventdispatcher.c
SRC += $(OPUAVOBJ)/uavobjectsinit_linker.c
SRC += $(OPSYSTEM)/pios_usb_hid_desc.c
else
## TESTCODE
@ -148,6 +141,7 @@ endif
## UAVOBJECTS
ifndef TESTAPP
SRC += $(OPUAVSYNTHDIR)/accessorydesired.c
SRC += $(OPUAVSYNTHDIR)/objectpersistence.c
SRC += $(OPUAVSYNTHDIR)/gcstelemetrystats.c
SRC += $(OPUAVSYNTHDIR)/flighttelemetrystats.c
@ -163,20 +157,21 @@ SRC += $(OPUAVSYNTHDIR)/actuatorsettings.c
SRC += $(OPUAVSYNTHDIR)/attituderaw.c
SRC += $(OPUAVSYNTHDIR)/attitudeactual.c
SRC += $(OPUAVSYNTHDIR)/manualcontrolcommand.c
SRC += $(OPUAVSYNTHDIR)/taskinfo.c
SRC += $(OPUAVSYNTHDIR)/i2cstats.c
SRC += $(OPUAVSYNTHDIR)/watchdogstatus.c
SRC += $(OPUAVSYNTHDIR)/telemetrysettings.c
SRC += $(OPUAVSYNTHDIR)/ratedesired.c
SRC += $(OPUAVSYNTHDIR)/manualcontrolsettings.c
SRC += $(OPUAVSYNTHDIR)/mixersettings.c
SRC += $(OPUAVSYNTHDIR)/mixerstatus.c
SRC += $(OPUAVSYNTHDIR)/firmwareiapobj.c
SRC += $(OPUAVSYNTHDIR)/attitudesettings.c
#${wildcard ${OBJ}/$(shell echo $(VAR) | tr A-Z a-z)/*.c}
#SRC += ${foreach OBJ, ${UAVOBJECTS}, $(UAVOBJECTS)/$(OBJ).c}
# Cant use until i can automatically generate list of UAVObjects
#SRC += ${OUTDIR}/InitObjects.c
SRC += $(OPUAVSYNTHDIR)/camerastabsettings.c
SRC += $(OPUAVSYNTHDIR)/cameradesired.c
SRC += $(OPUAVSYNTHDIR)/hwsettings.c
SRC += $(OPUAVSYNTHDIR)/taskinfo.c
SRC += $(OPUAVSYNTHDIR)/mixerstatus.c
SRC += $(OPUAVSYNTHDIR)/ratedesired.c
endif
## PIOS Hardware (STM32F10x)
@ -192,9 +187,11 @@ SRC += $(PIOSSTM32F10X)/pios_spi.c
SRC += $(PIOSSTM32F10X)/pios_ppm.c
SRC += $(PIOSSTM32F10X)/pios_pwm.c
SRC += $(PIOSSTM32F10X)/pios_spektrum.c
SRC += $(PIOSSTM32F10X)/pios_sbus.c
SRC += $(PIOSSTM32F10X)/pios_debug.c
SRC += $(PIOSSTM32F10X)/pios_gpio.c
SRC += $(PIOSSTM32F10X)/pios_exti.c
SRC += $(PIOSSTM32F10X)/pios_rtc.c
SRC += $(PIOSSTM32F10X)/pios_wdg.c
@ -205,12 +202,15 @@ SRC += $(PIOSSTM32F10X)/pios_usb_hid_prop.c
SRC += $(PIOSSTM32F10X)/pios_usb_hid_pwr.c
## PIOS Hardware (Common)
SRC += $(PIOSCOMMON)/pios_crc.c
SRC += $(PIOSCOMMON)/pios_flashfs_objlist.c
SRC += $(PIOSCOMMON)/pios_flash_w25x.c
SRC += $(PIOSCOMMON)/pios_adxl345.c
SRC += $(PIOSCOMMON)/pios_com.c
SRC += $(PIOSCOMMON)/pios_i2c_esc.c
SRC += $(PIOSCOMMON)/pios_iap.c
SRC += $(PIOSCOMMON)/pios_bl_helper.c
SRC += $(PIOSCOMMON)/pios_rcvr.c
SRC += $(PIOSCOMMON)/printf-stdarg.c
## Libraries for flight calculations
SRC += $(FLIGHTLIB)/fifo_buffer.c
@ -298,7 +298,7 @@ CPPSRCARM =
# Even though the DOS/Win* filesystem matches both .s and .S the same,
# it will preserve the spelling of the filenames, and gcc itself does
# care about how the name is spelled on its command-line.
ASRC = $(PIOSSTM32F10X)/startup_stm32f10x_$(MODEL)_CC.S
ASRC = $(PIOSSTM32F10X)/startup_stm32f10x_$(MODEL)$(MODEL_SUFFIX).S
# List Assembler source files here which must be assembled in ARM-Mode..
ASRCARM =
@ -380,19 +380,18 @@ endif
ifeq ($(ENABLE_AUX_UART), YES)
CDEFS += -DPIOS_ENABLE_AUX_UART
endif
CDEFS += -DUSE_BOOTLOADER
ifeq ($(ERASE_FLASH), YES)
CDEFS += -DERASE_FLASH
endif
ifeq ($(USE_SPEKTRUM), YES)
CDEFS += -DUSE_SPEKTRUM
ifneq ($(USE_GPS), NO)
CDEFS += -DUSE_GPS
endif
ifeq ($(USE_I2C), YES)
CDEFS += -DUSE_I2C
endif
# Place project-specific -D and/or -U options for
# Assembler with preprocessor here.
#ADEFS = -DUSE_IRQ_ASM_WRAPPER
@ -419,9 +418,14 @@ CSTANDARD = -std=gnu99
# Flags for C and C++ (arm-elf-gcc/arm-elf-g++)
ifeq ($(DEBUG),YES)
CFLAGS = -g$(DEBUGF) -DDEBUG
CFLAGS = -DDEBUG
endif
ifeq ($(DIAGNOSTICS),YES)
CFLAGS = -DDIAGNOSTICS
endif
CFLAGS += -g$(DEBUGF)
CFLAGS += -O$(OPT)
CFLAGS += -mcpu=$(MCU)
CFLAGS += $(CDEFS)
@ -473,21 +477,9 @@ LDFLAGS += -lc -lgcc
LDFLAGS += -T$(LINKERSCRIPTPATH)/link_$(BOARD)_memory.ld
LDFLAGS += -T$(LINKERSCRIPTPATH)/link_$(BOARD)_sections.ld
OOCD_LOADFILE+=$(OUTDIR)/$(TARGET).bin
# Program
OOCD_CL+=-c "flash write_image erase $(OOCD_LOADFILE) 0x08003000 bin"
# Verify
OOCD_CL+=-c "verify_image $(OOCD_LOADFILE) 0x08003000 bin"
# reset target
OOCD_CL+=-c "reset run"
# terminate OOCD after programming
OOCD_CL+=-c shutdown
# Define programs and commands.
REMOVE = $(REMOVE_CMD) -f
PYTHON = python
###SHELL = sh
###COPY = cp
# List of all source files.
ALLSRC = $(ASRCARM) $(ASRC) $(SRCARM) $(SRC) $(CPPSRCARM) $(CPPSRC)
@ -503,7 +495,7 @@ LSTFILES = $(addprefix $(OUTDIR)/, $(addsuffix .lst, $(ALLSRCBASE)))
DEPFILES = $(addprefix $(OUTDIR)/dep/, $(addsuffix .o.d, $(ALLSRCBASE)))
# Default target.
all: gencode build
all: build
ifeq ($(LOADFORMAT),ihex)
build: elf hex lss sym
@ -519,18 +511,6 @@ endif
endif
endif
# Generate intermediate code for objects
gencode: ${OUTDIR}/InitMods.c
# Generate code for module initialization
${OUTDIR}/InitMods.c: Makefile
@echo $(MSG_MODINIT) $(call toprel, $@)
@echo ${quote}// Autogenerated file${quote} > ${OUTDIR}/InitMods.c
@echo ${quote}${foreach MOD, ${MODNAMES}, extern unsigned int ${MOD}Initialize(void);}${quote} >> ${OUTDIR}/InitMods.c
@echo ${quote}void InitModules() {${quote} >> ${OUTDIR}/InitMods.c
@echo ${quote}${foreach MOD, ${MODNAMES}, ${MOD}Initialize();}${quote} >> ${OUTDIR}/InitMods.c
@echo ${quote}}${quote} >> ${OUTDIR}/InitMods.c
# Generate code for PyMite
#$(OUTDIR)/pmlib_img.c $(OUTDIR)/pmlib_nat.c $(OUTDIR)/pmlibusr_img.c $(OUTDIR)/pmlibusr_nat.c $(OUTDIR)/pmfeatures.h: $(wildcard $(PYMITELIB)/*.py) $(wildcard $(PYMITEPLAT)/*.py) $(wildcard $(FLIGHTPLANLIB)/*.py) $(wildcard $(FLIGHTPLANS)/*.py)
# @echo $(MSG_PYMITEINIT) $(call toprel, $@)
@ -538,13 +518,6 @@ ${OUTDIR}/InitMods.c: Makefile
# @$(PYTHON) $(PYMITETOOLS)/pmGenPmFeatures.py $(PYMITEPLAT)/pmfeatures.py > $(OUTDIR)/pmfeatures.h
# @$(PYTHON) $(PYMITETOOLS)/pmImgCreator.py -f $(PYMITEPLAT)/pmfeatures.py -c -u -o $(OUTDIR)/pmlibusr_img.c --native-file=$(OUTDIR)/pmlibusr_nat.c $(FLIGHTPLANS)/test.py
ifeq ($(FLASH_TOOL),OPENOCD)
# Program the device with Dominic Rath's OPENOCD in "batch-mode", needs cfg and "reset-script".
program: $(OUTDIR)/$(TARGET).bin
@echo ${quote}Programming with OPENOCD${quote}
$(OOCD_EXE) $(OOCD_CL)
endif
# Link: create ELF output file from object files.
$(eval $(call LINK_TEMPLATE, $(OUTDIR)/$(TARGET).elf, $(ALLOBJ)))
@ -574,23 +547,37 @@ $(eval $(call PARTIAL_COMPILE_ARM_TEMPLATE, SRCARM))
$(OUTDIR)/$(TARGET).bin.o: $(OUTDIR)/$(TARGET).bin
.PHONY: elf lss sym hex bin bino
$(eval $(call OPFW_TEMPLATE,$(OUTDIR)/$(TARGET).bin,$(BOARD_TYPE),$(BOARD_REVISION)))
# Add jtag targets (program and wipe)
$(eval $(call JTAG_TEMPLATE,$(OUTDIR)/$(TARGET).bin,$(FW_BANK_BASE),$(FW_BANK_SIZE)))
.PHONY: elf lss sym hex bin bino opfw
elf: $(OUTDIR)/$(TARGET).elf
lss: $(OUTDIR)/$(TARGET).lss
sym: $(OUTDIR)/$(TARGET).sym
hex: $(OUTDIR)/$(TARGET).hex
bin: $(OUTDIR)/$(TARGET).bin
bino: $(OUTDIR)/$(TARGET).bin.o
opfw: $(OUTDIR)/$(TARGET).opfw
# Display sizes of sections.
$(eval $(call SIZE_TEMPLATE, $(OUTDIR)/$(TARGET).elf))
.PHONY: size
size: $(OUTDIR)/$(TARGET).elf_size
# Generate Doxygen documents
docs:
doxygen $(DOXYGENDIR)/doxygen.cfg
# Install: install binary file with prefix/suffix into install directory
install: $(OUTDIR)/$(TARGET).opfw
ifneq ($(INSTALL_DIR),)
@echo $(MSG_INSTALLING) $(call toprel, $<)
$(V1) mkdir -p $(INSTALL_DIR)
$(V1) $(INSTALL) $< $(INSTALL_DIR)/$(INSTALL_PFX)$(TARGET)$(INSTALL_SFX).opfw
else
$(error INSTALL_DIR must be specified for $@)
endif
# Target: clean project.
clean: clean_list
@ -630,5 +617,4 @@ else
endif
# Listing of phony targets.
.PHONY : all build clean clean_list program gencode
.PHONY : all build clean clean_list install

View File

@ -45,6 +45,8 @@ static int32_t hasSeverity(SystemAlarmsAlarmOptions severity);
*/
int32_t AlarmsInitialize(void)
{
SystemAlarmsInitialize();
lock = xSemaphoreCreateRecursiveMutex();
//do not change the default states of the alarms, let the init code generated by the uavobjectgenerator handle that
//AlarmsClearAll();

View File

@ -35,6 +35,8 @@
/* OpenPilot Includes */
#include "openpilot.h"
#include "uavobjectsinit.h"
#include "hwsettings.h"
#include "camerastab.h"
#include "systemmod.h"
/* Task Priorities */
@ -42,18 +44,16 @@
/* Global Variables */
/* Prototype of generated InitModules() function */
extern void InitModules(void);
/* Prototype of PIOS_Board_Init() function */
extern void PIOS_Board_Init(void);
extern void Stack_Change(void);
/**
* OpenPilot Main function:
*
* Initialize PiOS<BR>
* Create the "System" task (SystemModInitializein Modules/System/systemmod.c) <BR>
* Start FreeRTOS Scheduler (vTaskStartScheduler)<BR>
* Start FreeRTOS Scheduler (vTaskStartScheduler) (Now handled by caller)
* If something goes wrong, blink LED1 and LED2 every 100ms
*
*/
@ -65,40 +65,41 @@ int main()
/* Brings up System using CMSIS functions, enables the LEDs. */
PIOS_SYS_Init();
/* Initialize the system thread */
SystemModInitialize();
/* Architecture dependant Hardware and
* core subsystem initialisation
* (see pios_board.c for your arch)
* */
PIOS_Board_Init();
/* Start the FreeRTOS scheduler */
/* Initialize modules */
MODULE_INITIALISE_ALL
/* Optional module initialization. This code might want to go somewhere else as
* it grows */
uint8_t optionalModules[HWSETTINGS_OPTIONALMODULES_NUMELEM];
HwSettingsOptionalModulesGet(optionalModules);
if(optionalModules[HWSETTINGS_OPTIONALMODULES_CAMERASTABILIZATION] == HWSETTINGS_OPTIONALMODULES_ENABLED) {
CameraStabInitialize();
}
/* swap the stack to use the IRQ stack */
Stack_Change();
/* Start the FreeRTOS scheduler which should never returns.*/
vTaskStartScheduler();
/* If all is well we will never reach here as the scheduler will now be running. */
/* If we do get here, it will most likely be because we ran out of heap space. */
/* Do some indication to user that something bad just happened */
PIOS_LED_Off(LED1); \
for(;;) { \
PIOS_LED_Toggle(LED1); \
PIOS_DELAY_WaitmS(100); \
};
return 0;
}
/**
* Initialize the hardware, libraries and modules (called by the System thread in systemmod.c)
*/
void OpenPilotInit()
{
/* Architecture dependant Hardware and
* core subsystem initialisation
* (see pios_board.c for your arch)
* */
PIOS_Board_Init();
#ifdef ERASE_FLASH
PIOS_Flash_W25X_EraseChip();
#endif
/* Initialize modules */
InitModules();
}
/**
* @}
* @}

View File

@ -29,8 +29,8 @@
#define configCPU_CLOCK_HZ ( ( unsigned long ) 72000000 )
#define configTICK_RATE_HZ ( ( portTickType ) 1000 )
#define configMAX_PRIORITIES ( ( unsigned portBASE_TYPE ) 5 )
#define configMINIMAL_STACK_SIZE ( ( unsigned short ) 128 )
#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 14 * 1024 ) )
#define configMINIMAL_STACK_SIZE ( ( unsigned short ) 48 )
#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 54 * 256) )
#define configMAX_TASK_NAME_LEN ( 16 )
#define configUSE_TRACE_FACILITY 0
#define configUSE_16_BIT_TICKS 0
@ -39,7 +39,6 @@
#define configUSE_RECURSIVE_MUTEXES 1
#define configUSE_COUNTING_SEMAPHORES 0
#define configUSE_ALTERNATIVE_API 0
#define configCHECK_FOR_STACK_OVERFLOW 2
#define configQUEUE_REGISTRY_SIZE 10
/* Co-routine definitions. */
@ -71,6 +70,27 @@ configKERNEL_INTERRUPT_PRIORITY setting. Here 15 corresponds to the lowest
NVIC value of 255. */
#define configLIBRARY_KERNEL_INTERRUPT_PRIORITY 15
#if !defined(ARCH_POSIX) && !defined(ARCH_WIN32)
#define CHECK_IRQ_STACK
#endif
/* Enable run time stats collection */
#if defined(DIAGNOSTICS)
#define configCHECK_FOR_STACK_OVERFLOW 2
#define configGENERATE_RUN_TIME_STATS 1
#define INCLUDE_uxTaskGetRunTime 1
#define portCONFIGURE_TIMER_FOR_RUN_TIME_STATS()\
do {\
(*(unsigned long *)0xe000edfc) |= (1<<24);/* DEMCR |= DEMCR_TRCENA */\
(*(unsigned long *)0xe0001000) |= 1; /* DWT_CTRL |= DWT_CYCCNT_ENA */\
} while(0)
#define portGET_RUN_TIME_COUNTER_VALUE() (*(unsigned long *)0xe0001004)/* DWT_CYCCNT */
#else
#define configCHECK_FOR_STACK_OVERFLOW 1
#endif
/**
* @}
*/

View File

@ -30,11 +30,9 @@
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#ifndef PIOS_CONFIG_H
#define PIOS_CONFIG_H
/* Enable/Disable PiOS Modules */
#define PIOS_INCLUDE_ADC
#define PIOS_INCLUDE_DELAY
@ -45,14 +43,17 @@
#define PIOS_INCLUDE_IRQ
#define PIOS_INCLUDE_LED
#if defined(USE_SPEKTRUM)
#define PIOS_INCLUDE_RCVR
/* Supported receiver interfaces */
#define PIOS_INCLUDE_SPEKTRUM
#else
#define PIOS_INCLUDE_GPS
#define PIOS_INCLUDE_SBUS
//#define PIOS_INCLUDE_PPM
#define PIOS_INCLUDE_PWM
#endif
/* Supported USART-based PIOS modules */
#define PIOS_INCLUDE_TELEMETRY_RF
//#define PIOS_INCLUDE_GPS
#define PIOS_INCLUDE_SERVO
#define PIOS_INCLUDE_SPI
@ -64,6 +65,7 @@
#define PIOS_INCLUDE_FREERTOS
#define PIOS_INCLUDE_GPIO
#define PIOS_INCLUDE_EXTI
#define PIOS_INCLUDE_RTC
#define PIOS_INCLUDE_WDG
#define PIOS_INCLUDE_BL_HELPER
@ -84,21 +86,26 @@
#define AUXUART_BAUDRATE 19200
/* Alarm Thresholds */
#define HEAP_LIMIT_WARNING 350
#define HEAP_LIMIT_CRITICAL 250
#define CPULOAD_LIMIT_WARNING 80
#define HEAP_LIMIT_WARNING 220
#define HEAP_LIMIT_CRITICAL 40
#define IRQSTACK_LIMIT_WARNING 100
#define IRQSTACK_LIMIT_CRITICAL 60
#define CPULOAD_LIMIT_WARNING 85
#define CPULOAD_LIMIT_CRITICAL 95
/* Task stack sizes */
#define PIOS_ACTUATOR_STACK_SIZE 1020
#define PIOS_MANUAL_STACK_SIZE 724
#define PIOS_SYSTEM_STACK_SIZE 504
#define PIOS_SYSTEM_STACK_SIZE 460
#define PIOS_STABILIZATION_STACK_SIZE 524
#define PIOS_TELEM_STACK_SIZE 500
#define PIOS_EVENTDISPATCHER_STACK_SIZE 130
#define IDLE_COUNTS_PER_SEC_AT_NO_LOAD 1995998
//#define PIOS_QUATERNION_STABILIZATION
// This can't be too high to stop eventdispatcher thread overflowing
#define PIOS_EVENTDISAPTCHER_QUEUE 10
#endif /* PIOS_CONFIG_H */
/**
* @}

View File

@ -30,10 +30,11 @@
#include <pios.h>
#include <openpilot.h>
#include <uavobjectsinit.h>
#include <hwsettings.h>
#include <manualcontrolsettings.h>
#if defined(PIOS_INCLUDE_SPI)
#include <pios_spi_priv.h>
/* Flash/Accel Interface
@ -44,7 +45,7 @@
void PIOS_SPI_flash_accel_irq_handler(void);
void DMA1_Channel4_IRQHandler() __attribute__ ((alias ("PIOS_SPI_flash_accel_irq_handler")));
void DMA1_Channel5_IRQHandler() __attribute__ ((alias ("PIOS_SPI_flash_accel_irq_handler")));
const struct pios_spi_cfg pios_spi_flash_accel_cfg = {
static const struct pios_spi_cfg pios_spi_flash_accel_cfg = {
.regs = SPI2,
.init = {
.SPI_Mode = SPI_Mode_Master,
@ -62,7 +63,6 @@ const struct pios_spi_cfg pios_spi_flash_accel_cfg = {
.ahb_clk = RCC_AHBPeriph_DMA1,
.irq = {
.handler = PIOS_SPI_flash_accel_irq_handler,
.flags = (DMA1_FLAG_TC4 | DMA1_FLAG_TE4 | DMA1_FLAG_HT4 | DMA1_FLAG_GL4),
.init = {
.NVIC_IRQChannel = DMA1_Channel4_IRQn,
@ -151,11 +151,10 @@ void PIOS_SPI_flash_accel_irq_handler(void)
extern void PIOS_ADC_handler(void);
void DMA1_Channel1_IRQHandler() __attribute__ ((alias("PIOS_ADC_handler")));
// Remap the ADC DMA handler to this one
const struct pios_adc_cfg pios_adc_cfg = {
static const struct pios_adc_cfg pios_adc_cfg = {
.dma = {
.ahb_clk = RCC_AHBPeriph_DMA1,
.irq = {
.handler = PIOS_ADC_DMA_Handler,
.flags = (DMA1_FLAG_TC1 | DMA1_FLAG_TE1 | DMA1_FLAG_HT1 | DMA1_FLAG_GL1),
.init = {
.NVIC_IRQChannel = DMA1_Channel1_IRQn,
@ -200,19 +199,14 @@ void PIOS_ADC_handler() {
#include "pios_usart_priv.h"
#if defined(PIOS_INCLUDE_TELEMETRY_RF)
/*
* Telemetry USART
*/
void PIOS_USART_telem_irq_handler(void);
void USART1_IRQHandler() __attribute__ ((alias ("PIOS_USART_telem_irq_handler")));
const struct pios_usart_cfg pios_usart_telem_cfg = {
static const struct pios_usart_cfg pios_usart_telem_main_cfg = {
.regs = USART1,
.init = {
#if defined (PIOS_COM_TELEM_BAUDRATE)
.USART_BaudRate = PIOS_COM_TELEM_BAUDRATE,
#else
.USART_BaudRate = 57600,
#endif
.USART_WordLength = USART_WordLength_8b,
.USART_Parity = USART_Parity_No,
.USART_StopBits = USART_StopBits_1,
@ -220,7 +214,6 @@ const struct pios_usart_cfg pios_usart_telem_cfg = {
.USART_Mode = USART_Mode_Rx | USART_Mode_Tx,
},
.irq = {
.handler = PIOS_USART_telem_irq_handler,
.init = {
.NVIC_IRQChannel = USART1_IRQn,
.NVIC_IRQChannelPreemptionPriority = PIOS_IRQ_PRIO_MID,
@ -246,20 +239,10 @@ const struct pios_usart_cfg pios_usart_telem_cfg = {
},
};
#if defined(PIOS_INCLUDE_GPS)
/*
* GPS USART
*/
void PIOS_USART_gps_irq_handler(void);
void USART3_IRQHandler() __attribute__ ((alias ("PIOS_USART_gps_irq_handler")));
const struct pios_usart_cfg pios_usart_gps_cfg = {
static const struct pios_usart_cfg pios_usart_telem_flexi_cfg = {
.regs = USART3,
.init = {
#if defined (PIOS_COM_GPS_BAUDRATE)
.USART_BaudRate = PIOS_COM_GPS_BAUDRATE,
#else
.USART_BaudRate = 57600,
#endif
.USART_WordLength = USART_WordLength_8b,
.USART_Parity = USART_Parity_No,
.USART_StopBits = USART_StopBits_1,
@ -267,7 +250,6 @@ const struct pios_usart_cfg pios_usart_gps_cfg = {
.USART_Mode = USART_Mode_Rx | USART_Mode_Tx,
},
.irq = {
.handler = PIOS_USART_gps_irq_handler,
.init = {
.NVIC_IRQChannel = USART3_IRQn,
.NVIC_IRQChannelPreemptionPriority = PIOS_IRQ_PRIO_MID,
@ -292,22 +274,143 @@ const struct pios_usart_cfg pios_usart_gps_cfg = {
},
},
};
#endif
#endif /* PIOS_INCLUDE_TELEMETRY_RF */
#if defined(PIOS_INCLUDE_GPS)
/*
* GPS USART
*/
static const struct pios_usart_cfg pios_usart_gps_main_cfg = {
.regs = USART1,
.init = {
.USART_BaudRate = 57600,
.USART_WordLength = USART_WordLength_8b,
.USART_Parity = USART_Parity_No,
.USART_StopBits = USART_StopBits_1,
.USART_HardwareFlowControl = USART_HardwareFlowControl_None,
.USART_Mode = USART_Mode_Rx | USART_Mode_Tx,
},
.irq = {
.init = {
.NVIC_IRQChannel = USART1_IRQn,
.NVIC_IRQChannelPreemptionPriority = PIOS_IRQ_PRIO_MID,
.NVIC_IRQChannelSubPriority = 0,
.NVIC_IRQChannelCmd = ENABLE,
},
},
.rx = {
.gpio = GPIOA,
.init = {
.GPIO_Pin = GPIO_Pin_10,
.GPIO_Speed = GPIO_Speed_2MHz,
.GPIO_Mode = GPIO_Mode_IPU,
},
},
.tx = {
.gpio = GPIOA,
.init = {
.GPIO_Pin = GPIO_Pin_9,
.GPIO_Speed = GPIO_Speed_2MHz,
.GPIO_Mode = GPIO_Mode_AF_PP,
},
},
};
static const struct pios_usart_cfg pios_usart_gps_flexi_cfg = {
.regs = USART3,
.init = {
.USART_BaudRate = 57600,
.USART_WordLength = USART_WordLength_8b,
.USART_Parity = USART_Parity_No,
.USART_StopBits = USART_StopBits_1,
.USART_HardwareFlowControl = USART_HardwareFlowControl_None,
.USART_Mode = USART_Mode_Rx | USART_Mode_Tx,
},
.irq = {
.init = {
.NVIC_IRQChannel = USART3_IRQn,
.NVIC_IRQChannelPreemptionPriority = PIOS_IRQ_PRIO_MID,
.NVIC_IRQChannelSubPriority = 0,
.NVIC_IRQChannelCmd = ENABLE,
},
},
.rx = {
.gpio = GPIOB,
.init = {
.GPIO_Pin = GPIO_Pin_11,
.GPIO_Speed = GPIO_Speed_2MHz,
.GPIO_Mode = GPIO_Mode_IPU,
},
},
.tx = {
.gpio = GPIOB,
.init = {
.GPIO_Pin = GPIO_Pin_10,
.GPIO_Speed = GPIO_Speed_2MHz,
.GPIO_Mode = GPIO_Mode_AF_PP,
},
},
};
#endif /* PIOS_INCLUDE_GPS */
#if defined(PIOS_INCLUDE_SPEKTRUM)
/*
* SPEKTRUM USART
*/
void PIOS_USART_spektrum_irq_handler(void);
void USART3_IRQHandler() __attribute__ ((alias ("PIOS_USART_spektrum_irq_handler")));
const struct pios_usart_cfg pios_usart_spektrum_cfg = {
.regs = USART3,
#include <pios_spektrum_priv.h>
static const struct pios_usart_cfg pios_usart_spektrum_main_cfg = {
.regs = USART1,
.init = {
.USART_BaudRate = 115200,
.USART_WordLength = USART_WordLength_8b,
.USART_Parity = USART_Parity_No,
.USART_StopBits = USART_StopBits_1,
.USART_HardwareFlowControl = USART_HardwareFlowControl_None,
.USART_Mode = USART_Mode_Rx,
},
.irq = {
.init = {
.NVIC_IRQChannel = USART1_IRQn,
.NVIC_IRQChannelPreemptionPriority = PIOS_IRQ_PRIO_HIGH,
.NVIC_IRQChannelSubPriority = 0,
.NVIC_IRQChannelCmd = ENABLE,
},
},
.rx = {
.gpio = GPIOA,
.init = {
.GPIO_Pin = GPIO_Pin_10,
.GPIO_Speed = GPIO_Speed_2MHz,
.GPIO_Mode = GPIO_Mode_IPU,
},
},
.tx = {
.gpio = GPIOA,
.init = {
.GPIO_Pin = GPIO_Pin_9,
.GPIO_Speed = GPIO_Speed_2MHz,
.GPIO_Mode = GPIO_Mode_IN_FLOATING,
},
},
};
static const struct pios_spektrum_cfg pios_spektrum_main_cfg = {
.bind = {
.gpio = GPIOA,
.init = {
.GPIO_Pin = GPIO_Pin_10,
.GPIO_Speed = GPIO_Speed_2MHz,
.GPIO_Mode = GPIO_Mode_Out_PP,
},
},
.remap = 0,
};
static const struct pios_usart_cfg pios_usart_spektrum_flexi_cfg = {
.regs = USART3,
.init = {
#if defined (PIOS_COM_SPEKTRUM_BAUDRATE)
.USART_BaudRate = PIOS_COM_SPEKTRUM_BAUDRATE,
#else
.USART_BaudRate = 115200,
#endif
.USART_WordLength = USART_WordLength_8b,
.USART_Parity = USART_Parity_No,
.USART_StopBits = USART_StopBits_1,
@ -315,7 +418,6 @@ const struct pios_usart_cfg pios_usart_spektrum_cfg = {
.USART_Mode = USART_Mode_Rx,
},
.irq = {
.handler = PIOS_USART_spektrum_irq_handler,
.init = {
.NVIC_IRQChannel = USART3_IRQn,
.NVIC_IRQChannelPreemptionPriority = PIOS_IRQ_PRIO_HIGH,
@ -341,62 +443,78 @@ const struct pios_usart_cfg pios_usart_spektrum_cfg = {
},
};
static uint32_t pios_usart_spektrum_id;
void PIOS_USART_spektrum_irq_handler(void)
{
SPEKTRUM_IRQHandler(pios_usart_spektrum_id);
}
#include <pios_spektrum_priv.h>
void TIM2_IRQHandler();
void TIM2_IRQHandler() __attribute__ ((alias ("PIOS_TIM2_irq_handler")));
const struct pios_spektrum_cfg pios_spektrum_cfg = {
.pios_usart_spektrum_cfg = &pios_usart_spektrum_cfg,
.tim_base_init = {
.TIM_Prescaler = (PIOS_MASTER_CLOCK / 1000000) - 1, /* For 1 uS accuracy */
.TIM_ClockDivision = TIM_CKD_DIV1,
.TIM_CounterMode = TIM_CounterMode_Up,
.TIM_Period = ((1000000 / 120) - 1), //11ms-10*16b/115200bps atleast one interrupt between frames
.TIM_RepetitionCounter = 0x0000,
},
.gpio_init = { //used for bind feature
.GPIO_Mode = GPIO_Mode_Out_PP,
static const struct pios_spektrum_cfg pios_spektrum_flexi_cfg = {
.bind = {
.gpio = GPIOB,
.init = {
.GPIO_Pin = GPIO_Pin_11,
.GPIO_Speed = GPIO_Speed_2MHz,
.GPIO_Mode = GPIO_Mode_Out_PP,
},
},
.remap = 0,
.irq = {
.handler = TIM2_IRQHandler,
};
#endif /* PIOS_INCLUDE_SPEKTRUM */
#if defined(PIOS_INCLUDE_SBUS)
/*
* SBUS USART
*/
#include <pios_sbus_priv.h>
static const struct pios_usart_cfg pios_usart_sbus_main_cfg = {
.regs = USART1,
.init = {
.NVIC_IRQChannelPreemptionPriority = PIOS_IRQ_PRIO_MID,
.USART_BaudRate = 100000,
.USART_WordLength = USART_WordLength_8b,
.USART_Parity = USART_Parity_Even,
.USART_StopBits = USART_StopBits_2,
.USART_HardwareFlowControl = USART_HardwareFlowControl_None,
.USART_Mode = USART_Mode_Rx,
},
.irq = {
.init = {
.NVIC_IRQChannel = USART1_IRQn,
.NVIC_IRQChannelPreemptionPriority = PIOS_IRQ_PRIO_HIGH,
.NVIC_IRQChannelSubPriority = 0,
.NVIC_IRQChannelCmd = ENABLE,
},
},
.timer = TIM2,
.port = GPIOB,
.ccr = TIM_IT_Update,
.pin = GPIO_Pin_11,
.rx = {
.gpio = GPIOA,
.init = {
.GPIO_Pin = GPIO_Pin_10,
.GPIO_Speed = GPIO_Speed_2MHz,
.GPIO_Mode = GPIO_Mode_IPU,
},
},
.tx = {
.gpio = GPIOA,
.init = {
.GPIO_Pin = GPIO_Pin_9,
.GPIO_Speed = GPIO_Speed_2MHz,
.GPIO_Mode = GPIO_Mode_IN_FLOATING,
},
},
};
void PIOS_TIM2_irq_handler()
{
PIOS_SPEKTRUM_irq_handler(pios_usart_spektrum_id);
}
#endif /* PIOS_INCLUDE_SPEKTRUM */
static const struct pios_sbus_cfg pios_sbus_cfg = {
/* Inverter configuration */
.inv = {
.gpio = GPIOB,
.init = {
.GPIO_Pin = GPIO_Pin_2,
.GPIO_Mode = GPIO_Mode_Out_PP,
.GPIO_Speed = GPIO_Speed_2MHz,
},
},
.gpio_clk_func = RCC_APB2PeriphClockCmd,
.gpio_clk_periph = RCC_APB2Periph_GPIOB,
.gpio_inv_enable = Bit_SET,
};
static uint32_t pios_usart_telem_rf_id;
void PIOS_USART_telem_irq_handler(void)
{
PIOS_USART_IRQ_Handler(pios_usart_telem_rf_id);
}
#if defined(PIOS_INCLUDE_GPS)
static uint32_t pios_usart_gps_id;
void PIOS_USART_gps_irq_handler(void)
{
PIOS_USART_IRQ_Handler(pios_usart_gps_id);
}
#endif /* PIOS_INCLUDE_GPS */
#endif /* PIOS_INCLUDE_SBUS */
#endif /* PIOS_INCLUDE_USART */
@ -404,13 +522,49 @@ void PIOS_USART_gps_irq_handler(void)
#include "pios_com_priv.h"
#define PIOS_COM_TELEM_RF_RX_BUF_LEN 192
#define PIOS_COM_TELEM_RF_TX_BUF_LEN 192
#define PIOS_COM_GPS_RX_BUF_LEN 96
#define PIOS_COM_TELEM_USB_RX_BUF_LEN 192
#define PIOS_COM_TELEM_USB_TX_BUF_LEN 192
#endif /* PIOS_INCLUDE_COM */
#if defined(PIOS_INCLUDE_RTC)
/*
* Realtime Clock (RTC)
*/
#include <pios_rtc_priv.h>
void PIOS_RTC_IRQ_Handler (void);
void RTC_IRQHandler() __attribute__ ((alias ("PIOS_RTC_IRQ_Handler")));
static const struct pios_rtc_cfg pios_rtc_main_cfg = {
.clksrc = RCC_RTCCLKSource_HSE_Div128,
.prescaler = 100,
.irq = {
.init = {
.NVIC_IRQChannel = RTC_IRQn,
.NVIC_IRQChannelPreemptionPriority = PIOS_IRQ_PRIO_MID,
.NVIC_IRQChannelSubPriority = 0,
.NVIC_IRQChannelCmd = ENABLE,
},
},
};
void PIOS_RTC_IRQ_Handler (void)
{
PIOS_RTC_irq_handler ();
}
#endif
/*
* Servo outputs
*/
#include <pios_servo_priv.h>
const struct pios_servo_channel pios_servo_channels[] = {
static const struct pios_servo_channel pios_servo_channels[] = {
{
.timer = TIM4,
.port = GPIOB,
@ -441,14 +595,12 @@ const struct pios_servo_channel pios_servo_channels[] = {
.channel = TIM_Channel_1,
.pin = GPIO_Pin_4,
},
#ifndef PIOS_INCLUDE_SPEKTRUM
{
.timer = TIM2,
.port = GPIOA,
.channel = TIM_Channel_3,
.pin = GPIO_Pin_2,
},
#endif
};
const struct pios_servo_cfg pios_servo_cfg = {
@ -478,13 +630,64 @@ const struct pios_servo_cfg pios_servo_cfg = {
.num_channels = NELEMENTS(pios_servo_channels),
};
#if defined(PIOS_INCLUDE_PWM) && defined(PIOS_INCLUDE_PPM)
#error Cannot define both PIOS_INCLUDE_PWM and PIOS_INCLUDE_PPM at the same time (yet)
#endif
/*
* PPM Inputs
*/
#if defined(PIOS_INCLUDE_PPM)
#include <pios_ppm_priv.h>
void TIM4_IRQHandler();
void TIM4_IRQHandler() __attribute__ ((alias ("PIOS_TIM4_irq_handler")));
const struct pios_ppm_cfg pios_ppm_cfg = {
.tim_base_init = {
.TIM_Prescaler = (PIOS_MASTER_CLOCK / 1000000) - 1, /* For 1 uS accuracy */
.TIM_ClockDivision = TIM_CKD_DIV1,
.TIM_CounterMode = TIM_CounterMode_Up,
.TIM_Period = 0xFFFF, /* shared timer, make sure init correctly in outputs */
.TIM_RepetitionCounter = 0x0000,
},
.tim_ic_init = {
.TIM_Channel = TIM_Channel_1,
.TIM_ICPolarity = TIM_ICPolarity_Rising,
.TIM_ICSelection = TIM_ICSelection_DirectTI,
.TIM_ICPrescaler = TIM_ICPSC_DIV1,
.TIM_ICFilter = 0x0,
},
.gpio_init = {
.GPIO_Pin = GPIO_Pin_6,
.GPIO_Mode = GPIO_Mode_IPD,
.GPIO_Speed = GPIO_Speed_2MHz,
},
.remap = 0,
.irq = {
.init = {
.NVIC_IRQChannelPreemptionPriority = PIOS_IRQ_PRIO_MID,
.NVIC_IRQChannelSubPriority = 0,
.NVIC_IRQChannelCmd = ENABLE,
},
},
.timer = TIM4,
.port = GPIOB,
.ccr = TIM_IT_CC1,
};
void PIOS_TIM4_irq_handler()
{
PIOS_PPM_irq_handler();
}
#endif /* PIOS_INCLUDE_PPM */
/*
* PWM Inputs
*/
#if defined(PIOS_INCLUDE_PWM)
#include <pios_pwm_priv.h>
const struct pios_pwm_channel pios_pwm_channels[] = {
static const struct pios_pwm_channel pios_pwm_channels[] = {
{
.timer = TIM4,
.port = GPIOB,
@ -555,7 +758,6 @@ const struct pios_pwm_cfg pios_pwm_cfg = {
},
.remap = 0,
.irq = {
.handler = TIM2_IRQHandler,
.init = {
.NVIC_IRQChannelPreemptionPriority = PIOS_IRQ_PRIO_MID,
.NVIC_IRQChannelSubPriority = 0,
@ -592,7 +794,7 @@ void PIOS_I2C_main_adapter_er_irq_handler(void);
void I2C2_EV_IRQHandler() __attribute__ ((alias ("PIOS_I2C_main_adapter_ev_irq_handler")));
void I2C2_ER_IRQHandler() __attribute__ ((alias ("PIOS_I2C_main_adapter_er_irq_handler")));
const struct pios_i2c_adapter_cfg pios_i2c_main_adapter_cfg = {
static const struct pios_i2c_adapter_cfg pios_i2c_main_adapter_cfg = {
.regs = I2C2,
.init = {
.I2C_Mode = I2C_Mode_I2C,
@ -620,7 +822,6 @@ const struct pios_i2c_adapter_cfg pios_i2c_main_adapter_cfg = {
},
},
.event = {
.handler = PIOS_I2C_main_adapter_ev_irq_handler,
.flags = 0, /* FIXME: check this */
.init = {
.NVIC_IRQChannel = I2C2_EV_IRQn,
@ -630,7 +831,6 @@ const struct pios_i2c_adapter_cfg pios_i2c_main_adapter_cfg = {
},
},
.error = {
.handler = PIOS_I2C_main_adapter_er_irq_handler,
.flags = 0, /* FIXME: check this */
.init = {
.NVIC_IRQChannel = I2C2_ER_IRQn,
@ -656,12 +856,33 @@ void PIOS_I2C_main_adapter_er_irq_handler(void)
#endif /* PIOS_INCLUDE_I2C */
#if defined(PIOS_INCLUDE_RCVR)
#include "pios_rcvr_priv.h"
struct pios_rcvr_channel_map pios_rcvr_channel_to_id_map[PIOS_RCVR_MAX_CHANNELS];
uint32_t pios_rcvr_max_channel;
#endif /* PIOS_INCLUDE_RCVR */
#if defined(PIOS_INCLUDE_USB_HID)
#include "pios_usb_hid_priv.h"
static const struct pios_usb_hid_cfg pios_usb_hid_main_cfg = {
.irq = {
.init = {
.NVIC_IRQChannel = USB_LP_CAN1_RX0_IRQn,
.NVIC_IRQChannelPreemptionPriority = PIOS_IRQ_PRIO_LOW,
.NVIC_IRQChannelSubPriority = 0,
.NVIC_IRQChannelCmd = ENABLE,
},
},
};
#endif /* PIOS_INCLUDE_USB_HID */
extern const struct pios_com_driver pios_usb_com_driver;
uint32_t pios_com_telem_rf_id;
uint32_t pios_com_telem_usb_id;
uint32_t pios_com_gps_id;
uint32_t pios_com_spektrum_id;
/**
* PIOS_Board_Init()
@ -675,27 +896,25 @@ void PIOS_Board_Init(void) {
/* Set up the SPI interface to the serial flash */
if (PIOS_SPI_Init(&pios_spi_flash_accel_id, &pios_spi_flash_accel_cfg)) {
PIOS_DEBUG_Assert(0);
PIOS_Assert(0);
}
PIOS_Flash_W25X_Init(pios_spi_flash_accel_id);
PIOS_ADXL345_Attach(pios_spi_flash_accel_id);
#if defined(PIOS_INCLUDE_SPEKTRUM)
/* SPEKTRUM init must come before comms */
PIOS_SPEKTRUM_Init();
PIOS_FLASHFS_Init();
if (PIOS_USART_Init(&pios_usart_spektrum_id, &pios_usart_spektrum_cfg)) {
PIOS_DEBUG_Assert(0);
}
if (PIOS_COM_Init(&pios_com_spektrum_id, &pios_usart_com_driver, pios_usart_spektrum_id)) {
PIOS_DEBUG_Assert(0);
}
#endif
/* Initialize UAVObject libraries */
EventDispatcherInitialize();
UAVObjInitialize();
UAVObjectsInitializeAll();
HwSettingsInitialize();
ManualControlSettingsInitialize();
#if defined(PIOS_INCLUDE_RTC)
/* Initialize the real-time clock and its associated tick */
PIOS_RTC_Init(&pios_rtc_main_cfg);
#endif
/* Initialize the alarms library */
AlarmsInitialize();
@ -703,23 +922,229 @@ void PIOS_Board_Init(void) {
/* Initialize the task monitor library */
TaskMonitorInitialize();
/* Initialize the PiOS library */
#if defined(PIOS_INCLUDE_COM)
if (PIOS_USART_Init(&pios_usart_telem_rf_id, &pios_usart_telem_cfg)) {
PIOS_DEBUG_Assert(0);
/* Configure the main IO port */
uint8_t hwsettings_cc_mainport;
HwSettingsCC_MainPortGet(&hwsettings_cc_mainport);
switch (hwsettings_cc_mainport) {
case HWSETTINGS_CC_MAINPORT_DISABLED:
break;
case HWSETTINGS_CC_MAINPORT_TELEMETRY:
#if defined(PIOS_INCLUDE_TELEMETRY_RF)
{
uint32_t pios_usart_telem_rf_id;
if (PIOS_USART_Init(&pios_usart_telem_rf_id, &pios_usart_telem_main_cfg)) {
PIOS_Assert(0);
}
if (PIOS_COM_Init(&pios_com_telem_rf_id, &pios_usart_com_driver, pios_usart_telem_rf_id)) {
PIOS_DEBUG_Assert(0);
uint8_t * rx_buffer = (uint8_t *) pvPortMalloc(PIOS_COM_TELEM_RF_RX_BUF_LEN);
uint8_t * tx_buffer = (uint8_t *) pvPortMalloc(PIOS_COM_TELEM_RF_TX_BUF_LEN);
PIOS_Assert(rx_buffer);
PIOS_Assert(tx_buffer);
if (PIOS_COM_Init(&pios_com_telem_rf_id, &pios_usart_com_driver, pios_usart_telem_rf_id,
rx_buffer, PIOS_COM_TELEM_RF_RX_BUF_LEN,
tx_buffer, PIOS_COM_TELEM_RF_TX_BUF_LEN)) {
PIOS_Assert(0);
}
}
#endif /* PIOS_INCLUDE_TELEMETRY_RF */
break;
case HWSETTINGS_CC_MAINPORT_SBUS:
#if defined(PIOS_INCLUDE_SBUS)
{
uint32_t pios_usart_sbus_id;
if (PIOS_USART_Init(&pios_usart_sbus_id, &pios_usart_sbus_main_cfg)) {
PIOS_Assert(0);
}
uint32_t pios_sbus_id;
if (PIOS_SBUS_Init(&pios_sbus_id, &pios_sbus_cfg, &pios_usart_com_driver, pios_usart_sbus_id)) {
PIOS_Assert(0);
}
}
#endif /* PIOS_INCLUDE_SBUS */
break;
case HWSETTINGS_CC_MAINPORT_GPS:
#if defined(PIOS_INCLUDE_GPS)
if (PIOS_USART_Init(&pios_usart_gps_id, &pios_usart_gps_cfg)) {
PIOS_DEBUG_Assert(0);
{
uint32_t pios_usart_gps_id;
if (PIOS_USART_Init(&pios_usart_gps_id, &pios_usart_gps_main_cfg)) {
PIOS_Assert(0);
}
uint8_t * rx_buffer = (uint8_t *) pvPortMalloc(PIOS_COM_GPS_RX_BUF_LEN);
PIOS_Assert(rx_buffer);
if (PIOS_COM_Init(&pios_com_gps_id, &pios_usart_com_driver, pios_usart_gps_id,
rx_buffer, PIOS_COM_GPS_RX_BUF_LEN,
NULL, 0)) {
PIOS_Assert(0);
}
if (PIOS_COM_Init(&pios_com_gps_id, &pios_usart_com_driver, pios_usart_gps_id)) {
PIOS_DEBUG_Assert(0);
}
#endif /* PIOS_INCLUDE_GPS */
#endif /* PIOS_INCLUDE_COM */
break;
case HWSETTINGS_CC_MAINPORT_SPEKTRUM:
#if defined(PIOS_INCLUDE_SPEKTRUM)
{
uint32_t pios_usart_spektrum_id;
if (PIOS_USART_Init(&pios_usart_spektrum_id, &pios_usart_spektrum_main_cfg)) {
PIOS_Assert(0);
}
uint32_t pios_spektrum_id;
if (PIOS_SPEKTRUM_Init(&pios_spektrum_id, &pios_spektrum_main_cfg, &pios_usart_com_driver, pios_usart_spektrum_id, false)) {
PIOS_Assert(0);
}
}
#endif /* PIOS_INCLUDE_SPEKTRUM */
break;
case HWSETTINGS_CC_MAINPORT_COMAUX:
break;
}
/* Configure the flexi port */
uint8_t hwsettings_cc_flexiport;
HwSettingsCC_FlexiPortGet(&hwsettings_cc_flexiport);
switch (hwsettings_cc_flexiport) {
case HWSETTINGS_CC_FLEXIPORT_DISABLED:
break;
case HWSETTINGS_CC_FLEXIPORT_TELEMETRY:
#if defined(PIOS_INCLUDE_TELEMETRY_RF)
{
uint32_t pios_usart_telem_rf_id;
if (PIOS_USART_Init(&pios_usart_telem_rf_id, &pios_usart_telem_flexi_cfg)) {
PIOS_Assert(0);
}
uint8_t * rx_buffer = (uint8_t *) pvPortMalloc(PIOS_COM_TELEM_RF_RX_BUF_LEN);
uint8_t * tx_buffer = (uint8_t *) pvPortMalloc(PIOS_COM_TELEM_RF_TX_BUF_LEN);
PIOS_Assert(rx_buffer);
PIOS_Assert(tx_buffer);
if (PIOS_COM_Init(&pios_com_telem_rf_id, &pios_usart_com_driver, pios_usart_telem_rf_id,
rx_buffer, PIOS_COM_TELEM_RF_RX_BUF_LEN,
tx_buffer, PIOS_COM_TELEM_RF_TX_BUF_LEN)) {
PIOS_Assert(0);
}
}
#endif /* PIOS_INCLUDE_TELEMETRY_RF */
break;
case HWSETTINGS_CC_FLEXIPORT_GPS:
#if defined(PIOS_INCLUDE_GPS)
{
uint32_t pios_usart_gps_id;
if (PIOS_USART_Init(&pios_usart_gps_id, &pios_usart_gps_flexi_cfg)) {
PIOS_Assert(0);
}
uint8_t * rx_buffer = (uint8_t *) pvPortMalloc(PIOS_COM_GPS_RX_BUF_LEN);
PIOS_Assert(rx_buffer);
if (PIOS_COM_Init(&pios_com_gps_id, &pios_usart_com_driver, pios_usart_gps_id,
rx_buffer, PIOS_COM_GPS_RX_BUF_LEN,
NULL, 0)) {
PIOS_Assert(0);
}
}
#endif /* PIOS_INCLUDE_GPS */
break;
case HWSETTINGS_CC_FLEXIPORT_SPEKTRUM:
#if defined(PIOS_INCLUDE_SPEKTRUM)
{
uint32_t pios_usart_spektrum_id;
if (PIOS_USART_Init(&pios_usart_spektrum_id, &pios_usart_spektrum_flexi_cfg)) {
PIOS_Assert(0);
}
uint32_t pios_spektrum_id;
if (PIOS_SPEKTRUM_Init(&pios_spektrum_id, &pios_spektrum_flexi_cfg, &pios_usart_com_driver, pios_usart_spektrum_id, false)) {
PIOS_Assert(0);
}
}
#endif /* PIOS_INCLUDE_SPEKTRUM */
break;
case HWSETTINGS_CC_FLEXIPORT_COMAUX:
break;
case HWSETTINGS_CC_FLEXIPORT_I2C:
#if defined(PIOS_INCLUDE_I2C)
{
if (PIOS_I2C_Init(&pios_i2c_main_adapter_id, &pios_i2c_main_adapter_cfg)) {
PIOS_Assert(0);
}
}
#endif /* PIOS_INCLUDE_I2C */
break;
}
/* Configure the selected receiver */
uint8_t manualcontrolsettings_inputmode;
ManualControlSettingsInputModeGet(&manualcontrolsettings_inputmode);
switch (manualcontrolsettings_inputmode) {
case MANUALCONTROLSETTINGS_INPUTMODE_PWM:
#if defined(PIOS_INCLUDE_PWM)
PIOS_PWM_Init();
uint32_t pios_pwm_rcvr_id;
if (PIOS_RCVR_Init(&pios_pwm_rcvr_id, &pios_pwm_rcvr_driver, 0)) {
PIOS_Assert(0);
}
for (uint8_t i = 0;
i < PIOS_PWM_NUM_INPUTS && pios_rcvr_max_channel < NELEMENTS(pios_rcvr_channel_to_id_map);
i++) {
pios_rcvr_channel_to_id_map[pios_rcvr_max_channel].id = pios_pwm_rcvr_id;
pios_rcvr_channel_to_id_map[pios_rcvr_max_channel].channel = i;
pios_rcvr_max_channel++;
}
#endif /* PIOS_INCLUDE_PWM */
break;
case MANUALCONTROLSETTINGS_INPUTMODE_PPM:
#if defined(PIOS_INCLUDE_PPM)
PIOS_PPM_Init();
uint32_t pios_ppm_rcvr_id;
if (PIOS_RCVR_Init(&pios_ppm_rcvr_id, &pios_ppm_rcvr_driver, 0)) {
PIOS_Assert(0);
}
for (uint8_t i = 0;
i < PIOS_PPM_NUM_INPUTS && pios_rcvr_max_channel < NELEMENTS(pios_rcvr_channel_to_id_map);
i++) {
pios_rcvr_channel_to_id_map[pios_rcvr_max_channel].id = pios_ppm_rcvr_id;
pios_rcvr_channel_to_id_map[pios_rcvr_max_channel].channel = i;
pios_rcvr_max_channel++;
}
#endif /* PIOS_INCLUDE_PPM */
break;
case MANUALCONTROLSETTINGS_INPUTMODE_SPEKTRUM:
#if defined(PIOS_INCLUDE_SPEKTRUM)
if (hwsettings_cc_mainport == HWSETTINGS_CC_MAINPORT_SPEKTRUM ||
hwsettings_cc_flexiport == HWSETTINGS_CC_FLEXIPORT_SPEKTRUM) {
uint32_t pios_spektrum_rcvr_id;
if (PIOS_RCVR_Init(&pios_spektrum_rcvr_id, &pios_spektrum_rcvr_driver, 0)) {
PIOS_Assert(0);
}
for (uint8_t i = 0;
i < PIOS_SPEKTRUM_NUM_INPUTS && pios_rcvr_max_channel < NELEMENTS(pios_rcvr_channel_to_id_map);
i++) {
pios_rcvr_channel_to_id_map[pios_rcvr_max_channel].id = pios_spektrum_rcvr_id;
pios_rcvr_channel_to_id_map[pios_rcvr_max_channel].channel = i;
pios_rcvr_max_channel++;
}
}
#endif /* PIOS_INCLUDE_SPEKTRUM */
break;
case MANUALCONTROLSETTINGS_INPUTMODE_SBUS:
#if defined(PIOS_INCLUDE_SBUS)
if (hwsettings_cc_mainport == HWSETTINGS_CC_MAINPORT_SBUS) {
uint32_t pios_sbus_rcvr_id;
if (PIOS_RCVR_Init(&pios_sbus_rcvr_id, &pios_sbus_rcvr_driver, 0)) {
PIOS_Assert(0);
}
for (uint8_t i = 0;
i < SBUS_NUMBER_OF_CHANNELS && pios_rcvr_max_channel < NELEMENTS(pios_rcvr_channel_to_id_map);
i++) {
pios_rcvr_channel_to_id_map[pios_rcvr_max_channel].id = pios_sbus_rcvr_id;
pios_rcvr_channel_to_id_map[pios_rcvr_max_channel].channel = i;
pios_rcvr_max_channel++;
}
}
#endif /* PIOS_INCLUDE_SBUS */
break;
}
/* Remap AFIO pin */
GPIO_PinRemapConfig( GPIO_Remap_SWJ_NoJTRST, ENABLE);
@ -728,26 +1153,22 @@ void PIOS_Board_Init(void) {
PIOS_ADC_Init();
PIOS_GPIO_Init();
#if defined(PIOS_INCLUDE_PWM)
PIOS_PWM_Init();
#endif
#if defined(PIOS_INCLUDE_PPM)
PIOS_PPM_Init();
#endif
#if defined(PIOS_INCLUDE_USB_HID)
PIOS_USB_HID_Init(0);
uint32_t pios_usb_hid_id;
PIOS_USB_HID_Init(&pios_usb_hid_id, &pios_usb_hid_main_cfg);
#if defined(PIOS_INCLUDE_COM)
if (PIOS_COM_Init(&pios_com_telem_usb_id, &pios_usb_com_driver, 0)) {
PIOS_DEBUG_Assert(0);
uint8_t * rx_buffer = (uint8_t *) pvPortMalloc(PIOS_COM_TELEM_USB_RX_BUF_LEN);
uint8_t * tx_buffer = (uint8_t *) pvPortMalloc(PIOS_COM_TELEM_USB_TX_BUF_LEN);
PIOS_Assert(rx_buffer);
PIOS_Assert(tx_buffer);
if (PIOS_COM_Init(&pios_com_telem_usb_id, &pios_usb_com_driver, pios_usb_hid_id,
rx_buffer, PIOS_COM_TELEM_USB_RX_BUF_LEN,
tx_buffer, PIOS_COM_TELEM_USB_TX_BUF_LEN)) {
PIOS_Assert(0);
}
#endif /* PIOS_INCLUDE_COM */
#endif
#endif /* PIOS_INCLUDE_USB_HID */
#if defined(PIOS_INCLUDE_I2C)
if (PIOS_I2C_Init(&pios_i2c_main_adapter_id, &pios_i2c_main_adapter_cfg)) {
PIOS_DEBUG_Assert(0);
}
#endif /* PIOS_INCLUDE_I2C */
PIOS_IAP_Init();
PIOS_WDG_Init();
}

View File

@ -42,7 +42,6 @@ void PIOS_Board_Init(void) {
/* Initialize UAVObject libraries */
EventDispatcherInitialize();
UAVObjInitialize();
UAVObjectsInitializeAll();
/* Initialize the alarms library */
AlarmsInitialize();

View File

@ -35,6 +35,7 @@
// Private variables
static xSemaphoreHandle lock;
static xTaskHandle handles[TASKINFO_RUNNING_NUMELEM];
static uint32_t lastMonitorTime;
// Private functions
@ -45,6 +46,10 @@ int32_t TaskMonitorInitialize(void)
{
lock = xSemaphoreCreateRecursiveMutex();
memset(handles, 0, sizeof(xTaskHandle)*TASKINFO_RUNNING_NUMELEM);
lastMonitorTime = 0;
#if defined(DIAGNOSTICS)
lastMonitorTime = portGET_RUN_TIME_COUNTER_VALUE();
#endif
return 0;
}
@ -71,12 +76,27 @@ int32_t TaskMonitorAdd(TaskInfoRunningElem task, xTaskHandle handle)
*/
void TaskMonitorUpdateAll(void)
{
#if defined(DIAGNOSTICS)
TaskInfoData data;
int n;
// Lock
xSemaphoreTakeRecursive(lock, portMAX_DELAY);
#if ( configGENERATE_RUN_TIME_STATS == 1 )
uint32_t currentTime;
uint32_t deltaTime;
/*
* Calculate the amount of elapsed run time between the last time we
* measured and now. Scale so that we can convert task run times
* directly to percentages.
*/
currentTime = portGET_RUN_TIME_COUNTER_VALUE();
deltaTime = ((currentTime - lastMonitorTime) / 100) ? : 1; /* avoid divide-by-zero if the interval is too small */
lastMonitorTime = currentTime;
#endif
// Update all task information
for (n = 0; n < TASKINFO_RUNNING_NUMELEM; ++n)
{
@ -87,12 +107,18 @@ void TaskMonitorUpdateAll(void)
data.StackRemaining[n] = 10000;
#else
data.StackRemaining[n] = uxTaskGetStackHighWaterMark(handles[n]) * 4;
#if ( configGENERATE_RUN_TIME_STATS == 1 )
/* Generate run time stats */
data.RunningTime[n] = uxTaskGetRunTime(handles[n]) / deltaTime;
#endif
#endif
}
else
{
data.Running[n] = TASKINFO_RUNNING_FALSE;
data.StackRemaining[n] = 0;
data.RunningTime[n] = 0;
}
}
@ -101,4 +127,5 @@ void TaskMonitorUpdateAll(void)
// Done
xSemaphoreGiveRecursive(lock);
#endif
}

View File

@ -25,11 +25,17 @@
WHEREAMI := $(dir $(lastword $(MAKEFILE_LIST)))
TOP := $(realpath $(WHEREAMI)/../../)
include $(TOP)/make/firmware-defs.mk
include $(TOP)/make/boards/$(BOARD_NAME)/board-info.mk
# Target file name (without extension).
TARGET := fw_$(BOARD_NAME)
# Directory for output files (lst, obj, dep, elf, sym, map, hex, bin etc.)
OUTDIR := $(TOP)/build/$(TARGET)
# Set developer code and compile options
# Set to YES for debugging
DEBUG ?= YES
USE_BOOTLOADER ?= NO
# Set to YES when using Code Sourcery toolchain
CODE_SOURCERY ?= YES
@ -42,26 +48,6 @@ endif
FLASH_TOOL = OPENOCD
# MCU name, submodel and board
# - MCU used for compiler-option (-mcpu)
# - MODEL used for linker-script name (-T) and passed as define
# - BOARD just passed as define (optional)
MCU = cortex-m3
CHIP = STM32F103RET
BOARD = STM3210E_INS
MODEL = HD
ifeq ($(USE_BOOTLOADER), YES)
BOOT_MODEL = $(MODEL)_BL
else
BOOT_MODEL = $(MODEL)_NB
endif
# Directory for output files (lst, obj, dep, elf, sym, map, hex, bin etc.)
OUTDIR = $(TOP)/build/ins
# Target file name (without extension).
TARGET = INS
# Paths
INS = ./
INSINC = $(INS)/inc
@ -168,7 +154,7 @@ CPPSRCARM =
# Even though the DOS/Win* filesystem matches both .s and .S the same,
# it will preserve the spelling of the filenames, and gcc itself does
# care about how the name is spelled on its command-line.
ASRC = $(PIOSSTM32F10X)/startup_stm32f10x_$(MODEL).S
ASRC = $(PIOSSTM32F10X)/startup_stm32f10x_$(MODEL)$(MODEL_SUFFIX).S
# List Assembler source files here which must be assembled in ARM-Mode..
ASRCARM =
@ -231,9 +217,7 @@ CDEFS = -DSTM32F10X_$(MODEL)
CDEFS += -DUSE_STDPERIPH_DRIVER
CDEFS += -DUSE_$(BOARD)
CDEFS += -DIN_INS
ifeq ($(USE_BOOTLOADER), YES)
CDEFS += -DUSE_BOOTLOADER
endif
# Place project-specific -D and/or -U options for
# Assembler with preprocessor here.
#ADEFS = -DUSE_IRQ_ASM_WRAPPER
@ -311,22 +295,11 @@ LDFLAGS += $(MATH_LIB)
LDFLAGS += -lc -lgcc
# Set linker-script name depending on selected submodel name
LDFLAGS +=-T$(LINKERSCRIPTPATH)/link_$(BOARD)_$(BOOT_MODEL).ld
OOCD_LOADFILE+=$(OUTDIR)/$(TARGET).elf
# Program
OOCD_CL+=-c "flash write_image $(OOCD_LOADFILE)"
# Verify
OOCD_CL+=-c "verify_image $(OOCD_LOADFILE)"
# reset target
OOCD_CL+=-c "reset run"
# # terminate OOCD after programming
OOCD_CL+=-c shutdown
LDFLAGS += -T$(LINKERSCRIPTPATH)/link_$(BOARD)_memory.ld
LDFLAGS += -T$(LINKERSCRIPTPATH)/link_$(BOARD)_sections.ld
# Define programs and commands.
REMOVE = $(REMOVE_CMD) -f
###SHELL = sh
###COPY = cp
# List of all source files.
ALLSRC = $(ASRCARM) $(ASRC) $(SRCARM) $(SRC) $(CPPSRCARM) $(CPPSRC)
@ -358,21 +331,6 @@ endif
endif
endif
# Program the device.
ifeq ($(USE_BOOTLOADER), YES)
# Program the device with OP Upload Tool".
program: $(OUTDIR)/$(TARGET).bin
@echo ${quote}Programming with OP Upload Tool${quote}
../../ground/src/experimental/upload-build-desktop/debug/OPUploadTool -d 1 -p $(OUTDIR)/$(TARGET).bin
else
ifeq ($(FLASH_TOOL),OPENOCD)
# Program the device with Dominic Rath's OPENOCD in "batch-mode", needs cfg and "reset-script".
program: $(OUTDIR)/$(TARGET).elf
@echo ${quote}Programming with OPENOCD${quote}
$(OOCD_EXE) $(OOCD_CL)
endif
endif
# Link: create ELF output file from object files.
$(eval $(call LINK_TEMPLATE, $(OUTDIR)/$(TARGET).elf, $(ALLOBJ)))
@ -400,22 +358,39 @@ $(eval $(call PARTIAL_COMPILE_TEMPLATE, SRC))
# Compile: create assembler files from C source files. ARM only
$(eval $(call PARTIAL_COMPILE_ARM_TEMPLATE, SRCARM))
.PHONY: elf lss sym hex bin
$(OUTDIR)/$(TARGET).bin.o: $(OUTDIR)/$(TARGET).bin
$(eval $(call OPFW_TEMPLATE,$(OUTDIR)/$(TARGET).bin,$(BOARD_TYPE),$(BOARD_REVISION)))
# Add jtag targets (program and wipe)
$(eval $(call JTAG_TEMPLATE,$(OUTDIR)/$(TARGET).bin,$(FW_BANK_BASE),$(FW_BANK_SIZE)))
.PHONY: elf lss sym hex bin bino opfw
elf: $(OUTDIR)/$(TARGET).elf
lss: $(OUTDIR)/$(TARGET).lss
sym: $(OUTDIR)/$(TARGET).sym
hex: $(OUTDIR)/$(TARGET).hex
bin: $(OUTDIR)/$(TARGET).bin
bino: $(OUTDIR)/$(TARGET).bin.o
opfw: $(OUTDIR)/$(TARGET).opfw
# Display sizes of sections.
$(eval $(call SIZE_TEMPLATE, $(OUTDIR)/$(TARGET).elf))
.PHONY: size
size: $(OUTDIR)/$(TARGET).elf_size
# Generate Doxygen documents
docs:
doxygen $(DOXYGENDIR)/doxygen.cfg
# Install: install binary file with prefix/suffix into install directory
install: $(OUTDIR)/$(TARGET).opfw
ifneq ($(INSTALL_DIR),)
@echo $(MSG_INSTALLING) $(call toprel, $<)
$(V1) mkdir -p $(INSTALL_DIR)
$(V1) $(INSTALL) $< $(INSTALL_DIR)/$(INSTALL_PFX)$(TARGET)$(INSTALL_SFX).opfw
else
$(error INSTALL_DIR must be specified for $@)
endif
# Target: clean project.
clean: clean_list
@ -450,6 +425,5 @@ else
-include $(shell mkdir $(OUTDIR) 2>/dev/null) $(shell mkdir $(OUTDIR)/dep 2>/dev/null) $(wildcard $(OUTDIR)/dep/*)
endif
# Listing of phony targets.
.PHONY : all build clean clean_list program
.PHONY : all build clean clean_list install

View File

@ -61,7 +61,6 @@ static const struct pios_spi_cfg pios_spi_op_mag_cfg = {
.ahb_clk = RCC_AHBPeriph_DMA1,
.irq = {
.handler = PIOS_SPI_op_mag_irq_handler,
.flags =
(DMA1_FLAG_TC4 | DMA1_FLAG_TE4 | DMA1_FLAG_HT4 |
DMA1_FLAG_GL4),
@ -175,7 +174,6 @@ static const struct pios_spi_cfg pios_spi_accel_cfg = {
.ahb_clk = RCC_AHBPeriph_DMA1,
.irq = {
.handler = PIOS_SPI_accel_irq_handler,
.flags = (DMA1_FLAG_TC2 | DMA1_FLAG_TE2 | DMA1_FLAG_HT2 | DMA1_FLAG_GL2),
.init = {
.NVIC_IRQChannel = DMA1_Channel2_IRQn,
@ -265,17 +263,10 @@ void PIOS_SPI_accel_irq_handler(void)
/*
* GPS USART
*/
void PIOS_USART_gps_irq_handler(void);
void USART1_IRQHandler()
__attribute__ ((alias("PIOS_USART_gps_irq_handler")));
const struct pios_usart_cfg pios_usart_gps_cfg = {
static const struct pios_usart_cfg pios_usart_gps_cfg = {
.regs = USART1,
.init = {
#if defined (PIOS_USART_BAUDRATE)
.USART_BaudRate = PIOS_USART_BAUDRATE,
#else
.USART_BaudRate = 57600,
#endif
.USART_WordLength = USART_WordLength_8b,
.USART_Parity = USART_Parity_No,
.USART_StopBits = USART_StopBits_1,
@ -284,7 +275,6 @@ const struct pios_usart_cfg pios_usart_gps_cfg = {
.USART_Mode = USART_Mode_Rx | USART_Mode_Tx,
},
.irq = {
.handler = PIOS_USART_gps_irq_handler,
.init = {
.NVIC_IRQChannel = USART1_IRQn,
.NVIC_IRQChannelPreemptionPriority = PIOS_IRQ_PRIO_MID,
@ -310,29 +300,16 @@ const struct pios_usart_cfg pios_usart_gps_cfg = {
},
};
static uint32_t pios_usart_gps_id;
void PIOS_USART_gps_irq_handler(void)
{
PIOS_USART_IRQ_Handler(pios_usart_gps_id);
}
#endif /* PIOS_INCLUDE_GPS */
#ifdef PIOS_COM_AUX
/*
* AUX USART
*/
void PIOS_USART_aux_irq_handler(void);
void USART4_IRQHandler()
__attribute__ ((alias("PIOS_USART_aux_irq_handler")));
const struct pios_usart_cfg pios_usart_aux_cfg = {
static const struct pios_usart_cfg pios_usart_aux_cfg = {
.regs = USART4,
.init = {
#if defined (PIOS_USART_BAUDRATE)
.USART_BaudRate = PIOS_USART_BAUDRATE,
#else
.USART_BaudRate = 57600,
#endif
.USART_WordLength = USART_WordLength_8b,
.USART_Parity = USART_Parity_No,
.USART_StopBits = USART_StopBits_1,
@ -341,7 +318,6 @@ const struct pios_usart_cfg pios_usart_aux_cfg = {
.USART_Mode = USART_Mode_Rx | USART_Mode_Tx,
},
.irq = {
.handler = PIOS_USART_aux_irq_handler,
.init = {
.NVIC_IRQChannel = USART4_IRQn,
.NVIC_IRQChannelPreemptionPriority = PIOS_IRQ_PRIO_HIGH,
@ -367,15 +343,24 @@ const struct pios_usart_cfg pios_usart_aux_cfg = {
},
};
static uint32_t pios_usart_aux_id;
void PIOS_USART_aux_irq_handler(void)
{
PIOS_USART_IRQ_Handler(pios_usart_aux_id);
}
#endif /* PIOS_COM_AUX */
#if defined(PIOS_INCLUDE_COM)
#include <pios_com_priv.h>
#if 0
#define PIOS_COM_AUX_TX_BUF_LEN 192
static uint8_t pios_com_aux_tx_buffer[PIOS_COM_AUX_TX_BUF_LEN];
#endif
#define PIOS_COM_GPS_RX_BUF_LEN 96
static uint8_t pios_com_gps_rx_buffer[PIOS_COM_GPS_RX_BUF_LEN];
#endif /* PIOS_INCLUDE_COM */
#if defined(PIOS_INCLUDE_I2C)
#include <pios_i2c_priv.h>
@ -391,7 +376,7 @@ void I2C1_EV_IRQHandler()
void I2C1_ER_IRQHandler()
__attribute__ ((alias("PIOS_I2C_pres_mag_adapter_er_irq_handler")));
const struct pios_i2c_adapter_cfg pios_i2c_pres_mag_adapter_cfg = {
static const struct pios_i2c_adapter_cfg pios_i2c_pres_mag_adapter_cfg = {
.regs = I2C1,
.init = {
.I2C_Mode = I2C_Mode_I2C,
@ -419,7 +404,6 @@ const struct pios_i2c_adapter_cfg pios_i2c_pres_mag_adapter_cfg = {
},
},
.event = {
.handler = PIOS_I2C_pres_mag_adapter_ev_irq_handler,
.flags = 0, /* FIXME: check this */
.init = {
.NVIC_IRQChannel = I2C1_EV_IRQn,
@ -429,7 +413,6 @@ const struct pios_i2c_adapter_cfg pios_i2c_pres_mag_adapter_cfg = {
},
},
.error = {
.handler = PIOS_I2C_pres_mag_adapter_er_irq_handler,
.flags = 0, /* FIXME: check this */
.init = {
.NVIC_IRQChannel = I2C1_ER_IRQn,
@ -459,7 +442,7 @@ void PIOS_I2C_gyro_adapter_er_irq_handler(void);
void I2C2_EV_IRQHandler() __attribute__ ((alias ("PIOS_I2C_gyro_adapter_ev_irq_handler")));
void I2C2_ER_IRQHandler() __attribute__ ((alias ("PIOS_I2C_gyro_adapter_er_irq_handler")));
const struct pios_i2c_adapter_cfg pios_i2c_gyro_adapter_cfg = {
static const struct pios_i2c_adapter_cfg pios_i2c_gyro_adapter_cfg = {
.regs = I2C2,
.init = {
.I2C_Mode = I2C_Mode_I2C,
@ -487,7 +470,6 @@ const struct pios_i2c_adapter_cfg pios_i2c_gyro_adapter_cfg = {
},
},
.event = {
.handler = PIOS_I2C_gyro_adapter_ev_irq_handler,
.flags = 0, /* FIXME: check this */
.init = {
.NVIC_IRQChannel = I2C2_EV_IRQn,
@ -497,7 +479,6 @@ const struct pios_i2c_adapter_cfg pios_i2c_gyro_adapter_cfg = {
},
},
.error = {
.handler = PIOS_I2C_gyro_adapter_er_irq_handler,
.flags = 0, /* FIXME: check this */
.init = {
.NVIC_IRQChannel = I2C2_ER_IRQn,
@ -547,10 +528,13 @@ void PIOS_Board_Init(void) {
#if defined(PIOS_INCLUDE_COM)
#if defined(PIOS_INCLUDE_GPS)
uint32_t pios_usart_gps_id;
if (PIOS_USART_Init(&pios_usart_gps_id, &pios_usart_gps_cfg)) {
PIOS_DEBUG_Assert(0);
}
if (PIOS_COM_Init(&pios_com_gps_id, &pios_usart_com_driver, pios_usart_gps_id)) {
if (PIOS_COM_Init(&pios_com_gps_id, &pios_usart_com_driver, pios_usart_gps_id,
pios_com_gps_rx_buffer, sizeof(pios_com_gps_rx_buffer),
NULL, 0)) {
PIOS_DEBUG_Assert(0);
}
#endif /* PIOS_INCLUDE_GPS */

View File

@ -79,6 +79,7 @@ CREATEHANDLE(10, FirmwareIAPObj);
static void ObjectUpdatedCb(UAVObjEvent * ev);
#define ADDHANDLE(idx,obj) {\
obj##Initialize();\
int n = idx;\
objectHandles[n].data = &obj;\
objectHandles[n].uavHandle = obj##Handle();\

View File

@ -26,7 +26,7 @@
#ifndef _FIFO_BUFFER_H_
#define _FIFO_BUFFER_H_
#include "stm32f10x.h"
#include <stdint.h>
// *********************

View File

@ -52,6 +52,8 @@
#include "ahrs_comms.h"
#include "ahrs_spi_comm.h"
#include "ahrsstatus.h"
#include "ahrscalibration.h"
// Private constants
#define STACK_SIZE configMINIMAL_STACK_SIZE-128
@ -69,7 +71,7 @@ static void ahrscommsTask(void *parameters);
* Initialise the module, called on startup
* \returns 0 on success or -1 if initialisation failed
*/
int32_t AHRSCommsInitialize(void)
int32_t AHRSCommsStart(void)
{
// Start main task
xTaskCreate(ahrscommsTask, (signed char *)"AHRSComms", STACK_SIZE, NULL, TASK_PRIORITY, &taskHandle);
@ -79,6 +81,22 @@ int32_t AHRSCommsInitialize(void)
return 0;
}
/**
* Initialise the module, called on startup
* \returns 0 on success or -1 if initialisation failed
*/
int32_t AHRSCommsInitialize(void)
{
AhrsStatusInitialize();
AHRSCalibrationInitialize();
AttitudeRawInitialize();
VelocityActualInitialize();
PositionActualInitialize();
return 0;
}
MODULE_INITCALL(AHRSCommsInitialize, AHRSCommsStart)
/**
* Module thread, should not return.
*/

View File

@ -32,6 +32,7 @@
#include "openpilot.h"
#include "accessorydesired.h"
#include "actuator.h"
#include "actuatorsettings.h"
#include "systemsettings.h"
@ -40,6 +41,7 @@
#include "flightstatus.h"
#include "mixersettings.h"
#include "mixerstatus.h"
#include "cameradesired.h"
// Private constants
@ -74,7 +76,6 @@ static int16_t scaleChannel(float value, int16_t max, int16_t min, int16_t neutr
static void setFailsafe();
static float MixerCurve(const float throttle, const float* curve);
static bool set_channel(uint8_t mixer_channel, uint16_t value);
float ProcessMixer(const int index, const float curve1, const float curve2,
MixerSettingsData* mixerSettings, ActuatorDesiredData* desired,
const float period);
@ -85,6 +86,19 @@ typedef struct {
int8_t matrix[5];
} __attribute__((packed)) Mixer_t;
/**
* @brief Module initialization
* @return 0
*/
int32_t ActuatorStart()
{
// Start main task
xTaskCreate(actuatorTask, (signed char*)"Actuator", STACK_SIZE_BYTES/4, NULL, TASK_PRIORITY, &taskHandle);
TaskMonitorAdd(TASKINFO_RUNNING_ACTUATOR, taskHandle);
PIOS_WDG_RegisterFlag(PIOS_WDG_ACTUATOR);
return 0;
}
/**
* @brief Module initialization
@ -95,19 +109,23 @@ int32_t ActuatorInitialize()
// Create object queue
queue = xQueueCreate(MAX_QUEUE_SIZE, sizeof(UAVObjEvent));
ActuatorSettingsInitialize();
ActuatorDesiredInitialize();
MixerSettingsInitialize();
ActuatorCommandInitialize();
#if defined(DIAGNOSTICS)
MixerStatusInitialize();
#endif
// Listen for ExampleObject1 updates
ActuatorDesiredConnectQueue(queue);
// If settings change, update the output rate
ActuatorSettingsConnectCallback(actuator_update_rate);
// Start main task
xTaskCreate(actuatorTask, (signed char*)"Actuator", STACK_SIZE_BYTES/4, NULL, TASK_PRIORITY, &taskHandle);
TaskMonitorAdd(TASKINFO_RUNNING_ACTUATOR, taskHandle);
PIOS_WDG_RegisterFlag(PIOS_WDG_ACTUATOR);
return 0;
}
MODULE_INITCALL(ActuatorInitialize, ActuatorStart)
/**
* @brief Main Actuator module task
@ -128,17 +146,20 @@ static void actuatorTask(void* parameters)
portTickType lastSysTime;
portTickType thisSysTime;
float dT = 0.0f;
ActuatorCommandData command;
ActuatorSettingsData settings;
SystemSettingsData sysSettings;
ActuatorCommandData command;
MixerSettingsData mixerSettings;
ActuatorDesiredData desired;
MixerStatusData mixerStatus;
FlightStatusData flightStatus;
ActuatorSettingsGet(&settings);
PIOS_Servo_SetHz(&settings.ChannelUpdateFreq[0], ACTUATORSETTINGS_CHANNELUPDATEFREQ_NUMELEM);
uint8_t MotorsSpinWhileArmed;
int16_t ChannelMax[ACTUATORCOMMAND_CHANNEL_NUMELEM];
int16_t ChannelMin[ACTUATORCOMMAND_CHANNEL_NUMELEM];
int16_t ChannelNeutral[ACTUATORCOMMAND_CHANNEL_NUMELEM];
uint16_t ChannelUpdateFreq[ACTUATORSETTINGS_CHANNELUPDATEFREQ_NUMELEM];
ActuatorSettingsChannelUpdateFreqGet(ChannelUpdateFreq);
PIOS_Servo_SetHz(&ChannelUpdateFreq[0], ACTUATORSETTINGS_CHANNELUPDATEFREQ_NUMELEM);
float * status = (float *)&mixerStatus; //access status objects as an array of floats
@ -164,14 +185,18 @@ static void actuatorTask(void* parameters)
dT = (thisSysTime - lastSysTime) / portTICK_RATE_MS / 1000.0f;
lastSysTime = thisSysTime;
FlightStatusGet(&flightStatus);
SystemSettingsGet(&sysSettings);
MixerStatusGet(&mixerStatus);
MixerSettingsGet (&mixerSettings);
ActuatorDesiredGet(&desired);
ActuatorCommandGet(&command);
ActuatorSettingsGet(&settings);
#if defined(DIAGNOSTICS)
MixerStatusGet(&mixerStatus);
#endif
ActuatorSettingsMotorsSpinWhileArmedGet(&MotorsSpinWhileArmed);
ActuatorSettingsChannelMaxGet(ChannelMax);
ActuatorSettingsChannelMinGet(ChannelMin);
ActuatorSettingsChannelNeutralGet(ChannelNeutral);
int nMixers = 0;
Mixer_t * mixers = (Mixer_t *)&mixerSettings.Mixer1Type;
@ -192,10 +217,38 @@ static void actuatorTask(void* parameters)
bool armed = flightStatus.Armed == FLIGHTSTATUS_ARMED_ARMED;
bool positiveThrottle = desired.Throttle >= 0.00;
bool spinWhileArmed = settings.MotorsSpinWhileArmed == ACTUATORSETTINGS_MOTORSSPINWHILEARMED_TRUE;
bool spinWhileArmed = MotorsSpinWhileArmed == ACTUATORSETTINGS_MOTORSSPINWHILEARMED_TRUE;
float curve1 = MixerCurve(desired.Throttle,mixerSettings.ThrottleCurve1);
float curve2 = MixerCurve(desired.Throttle,mixerSettings.ThrottleCurve2);
//The source for the secondary curve is selectable
float curve2 = 0;
AccessoryDesiredData accessory;
switch(mixerSettings.Curve2Source) {
case MIXERSETTINGS_CURVE2SOURCE_THROTTLE:
curve2 = MixerCurve(desired.Throttle,mixerSettings.ThrottleCurve2);
break;
case MIXERSETTINGS_CURVE2SOURCE_ROLL:
curve2 = MixerCurve(desired.Roll,mixerSettings.ThrottleCurve2);
break;
case MIXERSETTINGS_CURVE2SOURCE_PITCH:
curve2 = MixerCurve(desired.Pitch,mixerSettings.ThrottleCurve2);
break;
case MIXERSETTINGS_CURVE2SOURCE_YAW:
curve2 = MixerCurve(desired.Yaw,mixerSettings.ThrottleCurve2);
break;
case MIXERSETTINGS_CURVE2SOURCE_ACCESSORY0:
case MIXERSETTINGS_CURVE2SOURCE_ACCESSORY1:
case MIXERSETTINGS_CURVE2SOURCE_ACCESSORY2:
case MIXERSETTINGS_CURVE2SOURCE_ACCESSORY3:
case MIXERSETTINGS_CURVE2SOURCE_ACCESSORY4:
case MIXERSETTINGS_CURVE2SOURCE_ACCESSORY5:
if(AccessoryDesiredInstGet(mixerSettings.Curve2Source - MIXERSETTINGS_CURVE2SOURCE_ACCESSORY0,&accessory) == 0)
curve2 = MixerCurve(accessory.AccessoryVal,mixerSettings.ThrottleCurve2);
else
curve2 = 0;
break;
}
for(int ct=0; ct < MAX_MIX_ACTUATORS; ct++)
{
if(mixers[ct].type == MIXERSETTINGS_MIXER1TYPE_DISABLED) {
@ -205,7 +258,12 @@ static void actuatorTask(void* parameters)
continue;
}
if((mixers[ct].type == MIXERSETTINGS_MIXER1TYPE_MOTOR) || (mixers[ct].type == MIXERSETTINGS_MIXER1TYPE_SERVO))
status[ct] = ProcessMixer(ct, curve1, curve2, &mixerSettings, &desired, dT);
else
status[ct] = -1;
// Motors have additional protection for when to be on
if(mixers[ct].type == MIXERSETTINGS_MIXER1TYPE_MOTOR) {
@ -224,12 +282,51 @@ static void actuatorTask(void* parameters)
status[ct] = 0;
}
command.Channel[ct] = scaleChannel(status[ct],
settings.ChannelMax[ct],
settings.ChannelMin[ct],
settings.ChannelNeutral[ct]);
// If an accessory channel is selected for direct bypass mode
// In this configuration the accessory channel is scaled and mapped
// directly to output. Note: THERE IS NO SAFETY CHECK HERE FOR ARMING
// these also will not be updated in failsafe mode. I'm not sure what
// the correct behavior is since it seems domain specific. I don't love
// this code
if( (mixers[ct].type >= MIXERSETTINGS_MIXER1TYPE_ACCESSORY0) &&
(mixers[ct].type <= MIXERSETTINGS_MIXER1TYPE_ACCESSORY5))
{
if(AccessoryDesiredInstGet(mixers[ct].type - MIXERSETTINGS_MIXER1TYPE_ACCESSORY0,&accessory) == 0)
status[ct] = accessory.AccessoryVal;
else
status[ct] = -1;
}
if( (mixers[ct].type >= MIXERSETTINGS_MIXER1TYPE_CAMERAROLL) &&
(mixers[ct].type <= MIXERSETTINGS_MIXER1TYPE_CAMERAYAW))
{
CameraDesiredData cameraDesired;
if( CameraDesiredGet(&cameraDesired) == 0 ) {
switch(mixers[ct].type) {
case MIXERSETTINGS_MIXER1TYPE_CAMERAROLL:
status[ct] = cameraDesired.Roll;
break;
case MIXERSETTINGS_MIXER1TYPE_CAMERAPITCH:
status[ct] = cameraDesired.Pitch;
break;
case MIXERSETTINGS_MIXER1TYPE_CAMERAYAW:
status[ct] = cameraDesired.Yaw;
break;
default:
break;
}
}
else
status[ct] = -1;
}
command.Channel[ct] = scaleChannel(status[ct],
ChannelMax[ct],
ChannelMin[ct],
ChannelNeutral[ct]);
}
#if defined(DIAGNOSTICS)
MixerStatusSet(&mixerStatus);
#endif
// Store update time
command.UpdateTime = 1000*dT;
@ -391,11 +488,13 @@ static int16_t scaleChannel(float value, int16_t max, int16_t min, int16_t neutr
*/
static void setFailsafe()
{
ActuatorCommandData command;
ActuatorSettingsData settings;
ActuatorCommandGet(&command);
ActuatorSettingsGet(&settings);
/* grab only the modules parts that we are going to use */
int16_t ChannelMin[ACTUATORCOMMAND_CHANNEL_NUMELEM];
ActuatorSettingsChannelMinGet(ChannelMin);
int16_t ChannelNeutral[ACTUATORCOMMAND_CHANNEL_NUMELEM];
ActuatorSettingsChannelNeutralGet(ChannelNeutral);
int16_t Channel[ACTUATORCOMMAND_CHANNEL_NUMELEM];
ActuatorCommandChannelGet(Channel);
MixerSettingsData mixerSettings;
MixerSettingsGet (&mixerSettings);
@ -407,15 +506,15 @@ static void setFailsafe()
if(mixers[n].type == MIXERSETTINGS_MIXER1TYPE_MOTOR)
{
command.Channel[n] = settings.ChannelMin[n];
Channel[n] = ChannelMin[n];
}
else if(mixers[n].type == MIXERSETTINGS_MIXER1TYPE_SERVO)
{
command.Channel[n] = settings.ChannelNeutral[n];
Channel[n] = ChannelNeutral[n];
}
else
{
command.Channel[n] = 0;
Channel[n] = 0;
}
}
@ -425,11 +524,11 @@ static void setFailsafe()
// Update servo outputs
for (int n = 0; n < ACTUATORCOMMAND_CHANNEL_NUMELEM; ++n)
{
set_channel(n, command.Channel[n]);
set_channel(n, Channel[n]);
}
// Update output object
ActuatorCommandSet(&command);
// Update output object's parts that we changed
ActuatorCommandChannelGet(Channel);
}
@ -438,15 +537,13 @@ static void setFailsafe()
*/
static void actuator_update_rate(UAVObjEvent * ev)
{
ActuatorSettingsData settings;
uint16_t ChannelUpdateFreq[ACTUATORSETTINGS_CHANNELUPDATEFREQ_NUMELEM];
if ( ev->obj == ActuatorSettingsHandle() ) {
ActuatorSettingsGet(&settings);
PIOS_Servo_SetHz(&settings.ChannelUpdateFreq[0], ACTUATORSETTINGS_CHANNELUPDATEFREQ_NUMELEM);
ActuatorSettingsChannelUpdateFreqGet(ChannelUpdateFreq);
PIOS_Servo_SetHz(&ChannelUpdateFreq[0], ACTUATORSETTINGS_CHANNELUPDATEFREQ_NUMELEM);
}
}
#if defined(ARCH_POSIX) || defined(ARCH_WIN32)
static bool set_channel(uint8_t mixer_channel, uint16_t value) {
return true;

View File

@ -37,6 +37,7 @@
*/
#include "openpilot.h"
#include "altitude.h"
#include "baroaltitude.h" // object that will be updated by the module
#if defined(PIOS_INCLUDE_HCSR04)
#include "sonaraltitude.h" // object that will be updated by the module
@ -66,12 +67,28 @@ static void altitudeTask(void *parameters);
* Initialise the module, called on startup
* \returns 0 on success or -1 if initialisation failed
*/
int32_t AltitudeInitialize()
int32_t AltitudeStart()
{
BaroAltitudeInitialize();
#if defined(PIOS_INCLUDE_HCSR04)
SonarAltitudeInitialze();
#endif
// Start main task
xTaskCreate(altitudeTask, (signed char *)"Altitude", STACK_SIZE_BYTES/4, NULL, TASK_PRIORITY, &taskHandle);
TaskMonitorAdd(TASKINFO_RUNNING_ALTITUDE, taskHandle);
return 0;
}
/**
* Initialise the module, called on startup
* \returns 0 on success or -1 if initialisation failed
*/
int32_t AltitudeInitialize()
{
// init down-sampling data
alt_ds_temp = 0;
alt_ds_pres = 0;
@ -79,7 +96,7 @@ int32_t AltitudeInitialize()
return 0;
}
MODULE_INITCALL(AltitudeInitialize, AltitudeStart)
/**
* Module thread, should not return.
*/

View File

@ -76,7 +76,7 @@ static void AttitudeTask(void *parameters);
static float gyro_correct_int[3] = {0,0,0};
static xQueueHandle gyro_queue;
static void updateSensors(AttitudeRawData *);
static int8_t updateSensors(AttitudeRawData *);
static void updateAttitude(AttitudeRawData *);
static void settingsUpdatedCb(UAVObjEvent * objEv);
@ -89,6 +89,22 @@ static float q[4] = {1,0,0,0};
static float R[3][3];
static int8_t rotate = 0;
static bool zero_during_arming = false;
static bool bias_correct_gyro = true;
/**
* Initialise the module, called on startup
* \returns 0 on success or -1 if initialisation failed
*/
int32_t AttitudeStart(void)
{
// Start main task
xTaskCreate(AttitudeTask, (signed char *)"Attitude", STACK_SIZE_BYTES/4, NULL, TASK_PRIORITY, &taskHandle);
TaskMonitorAdd(TASKINFO_RUNNING_ATTITUDE, taskHandle);
PIOS_WDG_RegisterFlag(PIOS_WDG_ATTITUDE);
return 0;
}
/**
* Initialise the module, called on startup
@ -96,6 +112,10 @@ static bool zero_during_arming = false;
*/
int32_t AttitudeInitialize(void)
{
AttitudeActualInitialize();
AttitudeRawInitialize();
AttitudeSettingsInitialize();
// Initialize quaternion
AttitudeActualData attitude;
AttitudeActualGet(&attitude);
@ -105,27 +125,39 @@ int32_t AttitudeInitialize(void)
attitude.q4 = 0;
AttitudeActualSet(&attitude);
// Cannot trust the values to init right above if BL runs
gyro_correct_int[0] = 0;
gyro_correct_int[1] = 0;
gyro_correct_int[2] = 0;
q[0] = 1;
q[1] = 0;
q[2] = 0;
q[3] = 0;
for(uint8_t i = 0; i < 3; i++)
for(uint8_t j = 0; j < 3; j++)
R[i][j] = 0;
// Create queue for passing gyro data, allow 2 back samples in case
gyro_queue = xQueueCreate(1, sizeof(float) * 4);
if(gyro_queue == NULL)
return -1;
PIOS_ADC_SetQueue(gyro_queue);
AttitudeSettingsConnectCallback(&settingsUpdatedCb);
// Start main task
xTaskCreate(AttitudeTask, (signed char *)"Attitude", STACK_SIZE_BYTES/4, NULL, TASK_PRIORITY, &taskHandle);
TaskMonitorAdd(TASKINFO_RUNNING_ATTITUDE, taskHandle);
PIOS_WDG_RegisterFlag(PIOS_WDG_ATTITUDE);
return 0;
}
MODULE_INITCALL(AttitudeInitialize, AttitudeStart)
/**
* Module thread, should not return.
*/
static void AttitudeTask(void *parameters)
{
uint8_t init = 0;
AlarmsClear(SYSTEMALARMS_ALARM_ATTITUDE);
@ -135,27 +167,38 @@ static void AttitudeTask(void *parameters)
PIOS_FLASH_DISABLE;
PIOS_ADXL345_Init();
zero_during_arming = false;
// Set critical error and wait until the accel is producing data
while(PIOS_ADXL345_FifoElements() == 0) {
AlarmsSet(SYSTEMALARMS_ALARM_ATTITUDE, SYSTEMALARMS_ALARM_CRITICAL);
PIOS_WDG_UpdateFlag(PIOS_WDG_ATTITUDE);
}
// Force settings update to make sure rotation loaded
settingsUpdatedCb(AttitudeSettingsHandle());
// Main task loop
while (1) {
FlightStatusData flightStatus;
FlightStatusGet(&flightStatus);
if(xTaskGetTickCount() < 10000) {
// For first 5 seconds use accels to get gyro bias
if((xTaskGetTickCount() < 7000) && (xTaskGetTickCount() > 1000)) {
// For first 7 seconds use accels to get gyro bias
accelKp = 1;
// Decrease the rate of gyro learning during init
accelKi = .5 / (1 + xTaskGetTickCount() / 5000);
yawBiasRate = 0.01 / (1 + xTaskGetTickCount() / 5000);
accelKi = 0.9;
yawBiasRate = 0.23;
init = 0;
}
else if (zero_during_arming && (flightStatus.Armed == FLIGHTSTATUS_ARMED_ARMING)) {
accelKi = .01;
yawBiasRate = 0.1;
accelKp = 1;
accelKi = 0.9;
yawBiasRate = 0.23;
init = 0;
} else if (init == 0) {
settingsUpdatedCb(AttitudeSettingsHandle());
// Reload settings (all the rates)
AttitudeSettingsAccelKiGet(&accelKi);
AttitudeSettingsAccelKpGet(&accelKp);
AttitudeSettingsYawBiasRateGet(&yawBiasRate);
init = 1;
}
@ -163,14 +206,24 @@ static void AttitudeTask(void *parameters)
AttitudeRawData attitudeRaw;
AttitudeRawGet(&attitudeRaw);
updateSensors(&attitudeRaw);
if(updateSensors(&attitudeRaw) != 0)
AlarmsSet(SYSTEMALARMS_ALARM_ATTITUDE, SYSTEMALARMS_ALARM_ERROR);
else {
// Only update attitude when sensor data is good
updateAttitude(&attitudeRaw);
AttitudeRawSet(&attitudeRaw);
AlarmsClear(SYSTEMALARMS_ALARM_ATTITUDE);
}
}
}
static void updateSensors(AttitudeRawData * attitudeRaw)
/**
* Get an update from the sensors
* @param[in] attitudeRaw Populate the UAVO instead of saving right here
* @return 0 if successfull, -1 if not
*/
static int8_t updateSensors(AttitudeRawData * attitudeRaw)
{
struct pios_adxl345_data accel_data;
float gyro[4];
@ -178,9 +231,12 @@ static void updateSensors(AttitudeRawData * attitudeRaw)
// Only wait the time for two nominal updates before setting an alarm
if(xQueueReceive(gyro_queue, (void * const) gyro, UPDATE_RATE * 2) == errQUEUE_EMPTY) {
AlarmsSet(SYSTEMALARMS_ALARM_ATTITUDE, SYSTEMALARMS_ALARM_ERROR);
return;
return -1;
}
// No accel data available
if(PIOS_ADXL345_FifoElements() == 0)
return -1;
// First sample is temperature
attitudeRaw->gyros[ATTITUDERAW_GYROS_X] = -(gyro[1] - GYRO_NEUTRAL) * gyroGain;
@ -226,25 +282,27 @@ static void updateSensors(AttitudeRawData * attitudeRaw)
attitudeRaw->accels[ATTITUDERAW_ACCELS_Y] = (attitudeRaw->accels[ATTITUDERAW_ACCELS_Y] - accelbias[1]) * 0.004f * 9.81f;
attitudeRaw->accels[ATTITUDERAW_ACCELS_Z] = (attitudeRaw->accels[ATTITUDERAW_ACCELS_Z] - accelbias[2]) * 0.004f * 9.81f;
if(bias_correct_gyro) {
// Applying integral component here so it can be seen on the gyros and correct bias
attitudeRaw->gyros[ATTITUDERAW_GYROS_X] += gyro_correct_int[0];
attitudeRaw->gyros[ATTITUDERAW_GYROS_Y] += gyro_correct_int[1];
// Because most crafts wont get enough information from gravity to zero yaw gyro
attitudeRaw->gyros[ATTITUDERAW_GYROS_Z] += gyro_correct_int[2];
}
// Because most crafts wont get enough information from gravity to zero yaw gyro, we try
// and make it average zero (weakly)
gyro_correct_int[2] += - attitudeRaw->gyros[ATTITUDERAW_GYROS_Z] * yawBiasRate;
return 0;
}
static void updateAttitude(AttitudeRawData * attitudeRaw)
{
float dT;
portTickType thisSysTime = xTaskGetTickCount();
static portTickType lastSysTime = 0;
static portTickType thisSysTime;
static float dT = 0;
thisSysTime = xTaskGetTickCount();
if(thisSysTime > lastSysTime) // reuse dt in case of wraparound
dT = (thisSysTime - lastSysTime) / portTICK_RATE_MS / 1000.0f;
dT = (thisSysTime == lastSysTime) ? 0.001 : (portMAX_DELAY & (thisSysTime - lastSysTime)) / portTICK_RATE_MS / 1000.0f;
lastSysTime = thisSysTime;
// Bad practice to assume structure order, but saves memory
@ -270,9 +328,10 @@ static void updateAttitude(AttitudeRawData * attitudeRaw)
accel_err[1] /= accel_mag;
accel_err[2] /= accel_mag;
// Accumulate integral of error. Scale here so that units are (rad/s) but Ki has units of s
// Accumulate integral of error. Scale here so that units are (deg/s) but Ki has units of s
gyro_correct_int[0] += accel_err[0] * accelKi;
gyro_correct_int[1] += accel_err[1] * accelKi;
//gyro_correct_int[2] += accel_err[2] * settings.AccelKI * dT;
// Correct rates based on error, integral component dealt with in updateSensors
@ -295,6 +354,13 @@ static void updateAttitude(AttitudeRawData * attitudeRaw)
q[1] = q[1] + qdot[1];
q[2] = q[2] + qdot[2];
q[3] = q[3] + qdot[3];
if(q[0] < 0) {
q[0] = -q[0];
q[1] = -q[1];
q[2] = -q[2];
q[3] = -q[3];
}
}
// Renomalize
@ -304,6 +370,15 @@ static void updateAttitude(AttitudeRawData * attitudeRaw)
q[2] = q[2] / qmag;
q[3] = q[3] / qmag;
// If quaternion has become inappropriately short or is nan reinit.
// THIS SHOULD NEVER ACTUALLY HAPPEN
if((fabs(qmag) < 1e-3) || (qmag != qmag)) {
q[0] = 1;
q[1] = 0;
q[2] = 0;
q[3] = 0;
}
AttitudeActualData attitudeActual;
AttitudeActualGet(&attitudeActual);
@ -326,11 +401,16 @@ static void settingsUpdatedCb(UAVObjEvent * objEv) {
gyroGain = attitudeSettings.GyroGain;
zero_during_arming = attitudeSettings.ZeroDuringArming == ATTITUDESETTINGS_ZERODURINGARMING_TRUE;
bias_correct_gyro = attitudeSettings.BiasCorrectGyro == ATTITUDESETTINGS_BIASCORRECTGYRO_TRUE;
accelbias[0] = attitudeSettings.AccelBias[ATTITUDESETTINGS_ACCELBIAS_X];
accelbias[1] = attitudeSettings.AccelBias[ATTITUDESETTINGS_ACCELBIAS_Y];
accelbias[2] = attitudeSettings.AccelBias[ATTITUDESETTINGS_ACCELBIAS_Z];
gyro_correct_int[0] = attitudeSettings.GyroBias[ATTITUDESETTINGS_GYROBIAS_X] / 100.0f;
gyro_correct_int[1] = attitudeSettings.GyroBias[ATTITUDESETTINGS_GYROBIAS_Y] / 100.0f;
gyro_correct_int[2] = attitudeSettings.GyroBias[ATTITUDESETTINGS_GYROBIAS_Z] / 100.0f;
// Indicates not to expend cycles on rotation
if(attitudeSettings.BoardRotation[0] == 0 && attitudeSettings.BoardRotation[1] == 0 &&
attitudeSettings.BoardRotation[2] == 0) {

View File

@ -75,8 +75,13 @@ static void onTimer(UAVObjEvent* ev);
* Initialise the module, called on startup
* \returns 0 on success or -1 if initialisation failed
*/
MODULE_INITCALL(BatteryInitialize, 0)
int32_t BatteryInitialize(void)
{
BatteryStateInitialze();
BatterySettingsInitialize();
static UAVObjEvent ev;
memset(&ev,0,sizeof(UAVObjEvent));

View File

@ -0,0 +1,141 @@
/**
******************************************************************************
* @addtogroup OpenPilotModules OpenPilot Modules
* @{
* @addtogroup CameraStab Camera Stabilization Module
* @brief Camera stabilization module
* Updates accessory outputs with values appropriate for camera stabilization
* @{
*
* @file camerastab.c
* @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010.
* @brief Stabilize camera against the roll pitch and yaw of aircraft
*
* @see The GNU Public License (GPL) Version 3
*
*****************************************************************************/
/*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
/**
* Output object: Accessory
*
* This module will periodically calculate the output values for stabilizing the camera
*
* UAVObjects are automatically generated by the UAVObjectGenerator from
* the object definition XML file.
*
* Modules have no API, all communication to other modules is done through UAVObjects.
* However modules may use the API exposed by shared libraries.
* See the OpenPilot wiki for more details.
* http://www.openpilot.org/OpenPilot_Application_Architecture
*
*/
#include "openpilot.h"
#include "accessorydesired.h"
#include "attitudeactual.h"
#include "camerastabsettings.h"
#include "cameradesired.h"
//
// Configuration
//
#define SAMPLE_PERIOD_MS 10
// Private types
// Private variables
// Private functions
static void attitudeUpdated(UAVObjEvent* ev);
static float bound(float val);
/**
* Initialise the module, called on startup
* \returns 0 on success or -1 if initialisation failed
*/
int32_t CameraStabInitialize(void)
{
static UAVObjEvent ev;
ev.obj = AttitudeActualHandle();
ev.instId = 0;
ev.event = 0;
CameraStabSettingsInitialize();
CameraDesiredInitialize();
EventPeriodicCallbackCreate(&ev, attitudeUpdated, SAMPLE_PERIOD_MS / portTICK_RATE_MS);
return 0;
}
static void attitudeUpdated(UAVObjEvent* ev)
{
if (ev->obj != AttitudeActualHandle())
return;
float attitude;
float output;
AccessoryDesiredData accessory;
CameraStabSettingsData cameraStab;
CameraStabSettingsGet(&cameraStab);
// Read any input channels
float inputs[3] = {0,0,0};
if(cameraStab.Inputs[CAMERASTABSETTINGS_INPUTS_ROLL] != CAMERASTABSETTINGS_INPUTS_NONE) {
if(AccessoryDesiredInstGet(cameraStab.Inputs[CAMERASTABSETTINGS_INPUTS_ROLL] - CAMERASTABSETTINGS_INPUTS_ACCESSORY0, &accessory) == 0)
inputs[0] = accessory.AccessoryVal * cameraStab.InputRange[CAMERASTABSETTINGS_INPUTRANGE_ROLL];
}
if(cameraStab.Inputs[CAMERASTABSETTINGS_INPUTS_PITCH] != CAMERASTABSETTINGS_INPUTS_NONE) {
if(AccessoryDesiredInstGet(cameraStab.Inputs[CAMERASTABSETTINGS_INPUTS_PITCH] - CAMERASTABSETTINGS_INPUTS_ACCESSORY0, &accessory) == 0)
inputs[1] = accessory.AccessoryVal * cameraStab.InputRange[CAMERASTABSETTINGS_INPUTRANGE_PITCH];
}
if(cameraStab.Inputs[CAMERASTABSETTINGS_INPUTS_YAW] != CAMERASTABSETTINGS_INPUTS_NONE) {
if(AccessoryDesiredInstGet(cameraStab.Inputs[CAMERASTABSETTINGS_INPUTS_YAW] - CAMERASTABSETTINGS_INPUTS_ACCESSORY0, &accessory) == 0)
inputs[2] = accessory.AccessoryVal * cameraStab.InputRange[CAMERASTABSETTINGS_INPUTRANGE_YAW];
}
// Set output channels
AttitudeActualRollGet(&attitude);
output = bound((attitude + inputs[0]) / cameraStab.OutputRange[CAMERASTABSETTINGS_OUTPUTRANGE_ROLL]);
CameraDesiredRollSet(&output);
AttitudeActualPitchGet(&attitude);
output = bound((attitude + inputs[1]) / cameraStab.OutputRange[CAMERASTABSETTINGS_OUTPUTRANGE_PITCH]);
CameraDesiredPitchSet(&output);
AttitudeActualYawGet(&attitude);
output = bound((attitude + inputs[2]) / cameraStab.OutputRange[CAMERASTABSETTINGS_OUTPUTRANGE_YAW]);
CameraDesiredYawSet(&output);
}
float bound(float val)
{
return (val > 1) ? 1 :
(val < -1) ? -1 :
val;
}
/**
* @}
*/
/**
* @}
*/

View File

@ -1,13 +1,14 @@
/**
******************************************************************************
* @addtogroup OpenPilotModules OpenPilot Modules
* @{
* @addtogroup BatteryModule Battery Module
* @{
*
* @file uavobjectsinit.c
* @file battery.h
* @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010.
* @brief Initialize all objects.
* Automatically generated by the UAVObjectGenerator.
* @brief Module to read the battery Voltage and Current periodically and set alarms appropriately.
*
* @note This is an automatically generated file.
* DO NOT modify manually.
* @see The GNU Public License (GPL) Version 3
*
*****************************************************************************/
@ -26,20 +27,16 @@
* with this program; if not, write to the Free Software Foundation, Inc.,
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#ifndef BATTERY_H
#define BATTERY_H
#include "openpilot.h"
int32_t CameraStabInitialize(void);
#endif // BATTERY_H
/**
* Function used to initialize the first instance of each object.
* This file is automatically updated by the UAVObjectGenerator.
* @}
* @}
*/
extern initcall_t __uavobj_initcall_start[], __uavobj_initcall_end[];
void UAVObjectsInitializeAll()
{
initcall_t *fn;
int32_t ret;
for (fn = __uavobj_initcall_start; fn < __uavobj_initcall_end; fn++)
ret = (*fn)();
}

View File

@ -49,9 +49,14 @@
#include "examplemodperiodic.h"
#include "examplemodthread.h"
void ExampleInitialize(void)
void ExampleStart(void)
{
ExampleModEventInitialize();
ExampleModPeriodicInitialize();
ExampleModThreadInitialize();
}
void ExampleInitialize(void)
{
ExampleModEventInitialize();
}
MODULE_INITCALL(ExampleInitialize, ExampleStart)

View File

@ -27,9 +27,11 @@
#include <stdint.h>
#include "pios.h"
#include <pios_board_info.h>
#include "openpilot.h"
#include "firmwareiap.h"
#include "firmwareiapobj.h"
#include "flightstatus.h"
// Private constants
#define IAP_CMD_STEP_1 1122
@ -86,17 +88,22 @@ static void resetTask(UAVObjEvent *);
* \note
*
*/
MODULE_INITCALL(FirmwareIAPInitialize, 0)
int32_t FirmwareIAPInitialize()
{
data.BoardType= BOARD_TYPE;
FirmwareIAPObjInitialize();
const struct pios_board_info * bdinfo = &pios_board_info_blob;
data.BoardType= bdinfo->board_type;
PIOS_BL_HELPER_FLASH_Read_Description(data.Description,FIRMWAREIAPOBJ_DESCRIPTION_NUMELEM);
PIOS_SYS_SerialNumberGetBinary(data.CPUSerial);
data.BoardRevision= BOARD_REVISION;
data.BoardRevision= bdinfo->board_rev;
data.ArmReset=0;
data.crc = 0;
FirmwareIAPObjSet( &data );
FirmwareIAPObjConnectCallback( &FirmwareIAPCallback );
if(bdinfo->magic==PIOS_BOARD_INFO_BLOB_MAGIC) FirmwareIAPObjConnectCallback( &FirmwareIAPCallback );
return 0;
}
@ -111,6 +118,7 @@ int32_t FirmwareIAPInitialize()
static uint8_t iap_state = IAP_STATE_READY;
static void FirmwareIAPCallback(UAVObjEvent* ev)
{
const struct pios_board_info * bdinfo = &pios_board_info_blob;
static uint32_t last_time = 0;
uint32_t this_time;
uint32_t delta;
@ -124,11 +132,11 @@ static void FirmwareIAPCallback(UAVObjEvent* ev)
this_time = get_time();
delta = this_time - last_time;
last_time = this_time;
if((data.BoardType==BOARD_TYPE)&&(data.crc != PIOS_BL_HELPER_CRC_Memory_Calc()))
if((data.BoardType==bdinfo->board_type)&&(data.crc != PIOS_BL_HELPER_CRC_Memory_Calc()))
{
PIOS_BL_HELPER_FLASH_Read_Description(data.Description,FIRMWAREIAPOBJ_DESCRIPTION_NUMELEM);
PIOS_SYS_SerialNumberGetBinary(data.CPUSerial);
data.BoardRevision=BOARD_REVISION;
data.BoardRevision=bdinfo->board_rev;
data.crc = PIOS_BL_HELPER_CRC_Memory_Calc();
FirmwareIAPObjSet( &data );
}
@ -156,6 +164,16 @@ static void FirmwareIAPCallback(UAVObjEvent* ev)
case IAP_STATE_STEP_2:
if( data.Command == IAP_CMD_STEP_3 ) {
if( delta > iap_time_3_low_end && delta < iap_time_3_high_end ) {
FlightStatusData flightStatus;
FlightStatusGet(&flightStatus);
if(flightStatus.Armed != FLIGHTSTATUS_ARMED_DISARMED) {
// Abort any attempts if not disarmed
iap_state = IAP_STATE_READY;
break;
}
// we've met the three sequence of command numbers
// we've met the time requirements.
PIOS_IAP_SetRequest1();

View File

@ -31,6 +31,7 @@
#include "openpilot.h"
#include "pm.h"
#include "flightplan.h"
#include "flightplanstatus.h"
#include "flightplancontrol.h"
#include "flightplansettings.h"
@ -53,6 +54,20 @@ static void objectUpdatedCb(UAVObjEvent * ev);
// External variables (temporary, TODO: this will be loaded from the SD card)
extern unsigned char usrlib_img[];
/**
* Module initialization
*/
int32_t FlightPlanStart()
{
taskHandle = NULL;
// Start VM thread
xTaskCreate(flightPlanTask, (signed char *)"FlightPlan", STACK_SIZE_BYTES/4, NULL, TASK_PRIORITY, &taskHandle);
TaskMonitorAdd(TASKINFO_RUNNING_FLIGHTPLAN, taskHandle);
return 0;
}
/**
* Module initialization
*/
@ -60,6 +75,10 @@ int32_t FlightPlanInitialize()
{
taskHandle = NULL;
FlightPlanStatusInitialize();
FlightPlanControlInitialize();
FlightPlanSettingsInitialize();
// Listen for object updates
FlightPlanControlConnectCallback(&objectUpdatedCb);
@ -69,13 +88,9 @@ int32_t FlightPlanInitialize()
// Listen for FlightPlanControl updates
FlightPlanControlConnectQueue(queue);
// Start VM thread
xTaskCreate(flightPlanTask, (signed char *)"FlightPlan", STACK_SIZE_BYTES/4, NULL, TASK_PRIORITY, &taskHandle);
TaskMonitorAdd(TASKINFO_RUNNING_FLIGHTPLAN, taskHandle);
return 0;
}
MODULE_INITCALL(FlightPlanInitialize, FlightPlanStart)
/**
* Module task
*/

View File

@ -288,7 +288,7 @@ class UAVObject:
uint32_t type;
uint32_t numElements;
uint8_t const *tmpStr;
int8_t tmpInt8;
int8_t tmpInt8 = 0;
int16_t tmpInt16;
int32_t tmpInt32;
float tmpFloat;

View File

@ -63,7 +63,7 @@ static float GravityAccel(float latitude, float longitude, float altitude);
// Private constants
//#define FULL_COLD_RESTART // uncomment this to tell the GPS to do a FULL COLD restart
//#define DISABLE_GPS_TRESHOLD //
//#define DISABLE_GPS_THRESHOLD //
#define GPS_TIMEOUT_MS 500
#define GPS_COMMAND_RESEND_TIMEOUT_MS 2000
@ -109,19 +109,31 @@ static uint32_t numParsingErrors;
* \return 0 on success
*/
int32_t GPSInitialize(void)
int32_t GPSStart(void)
{
signed portBASE_TYPE xReturn;
// TODO: Get gps settings object
gpsPort = PIOS_COM_GPS;
// Start gps task
xReturn = xTaskCreate(gpsTask, (signed char *)"GPS", STACK_SIZE_BYTES/4, NULL, TASK_PRIORITY, &gpsTaskHandle);
xTaskCreate(gpsTask, (signed char *)"GPS", STACK_SIZE_BYTES/4, NULL, TASK_PRIORITY, &gpsTaskHandle);
TaskMonitorAdd(TASKINFO_RUNNING_GPS, gpsTaskHandle);
return 0;
}
/**
* Initialise the gps module
* \return -1 if initialisation failed
* \return 0 on success
*/
int32_t GPSInitialize(void)
{
GPSPositionInitialize();
GPSTimeInitialize();
HomeLocationInitialize();
// TODO: Get gps settings object
gpsPort = PIOS_COM_GPS;
return 0;
}
MODULE_INITCALL(GPSInitialize, GPSStart)
// ****************
/**
@ -154,7 +166,7 @@ static void gpsTask(void *parameters)
}
#endif
#ifdef DISABLE_GPS_TRESHOLD
#ifdef DISABLE_GPS_THRESHOLD
PIOS_COM_SendStringNonBlocking(gpsPort, "$PMTK397,0*23\r\n");
#endif
@ -188,8 +200,10 @@ static void gpsTask(void *parameters)
while (PIOS_COM_ReceiveBufferUsed(gpsPort) > 0)
{
int res = GTOP_BIN_update_position(PIOS_COM_ReceiveBuffer(gpsPort), &numChecksumErrors, &numParsingErrors);
if (res >= 0)
uint8_t c;
PIOS_COM_ReceiveBuffer(gpsPort, &c, 1, 0);
if (GTOP_BIN_update_position(c, &numChecksumErrors, &numParsingErrors) >= 0)
{
numUpdates++;
@ -205,7 +219,8 @@ static void gpsTask(void *parameters)
// This blocks the task until there is something on the buffer
while (PIOS_COM_ReceiveBufferUsed(gpsPort) > 0)
{
char c = PIOS_COM_ReceiveBuffer(gpsPort);
uint8_t c;
PIOS_COM_ReceiveBuffer(gpsPort, &c, 1, 0);
// detect start while acquiring stream
if (!start_flag && (c == '$'))

View File

@ -82,14 +82,8 @@ static void updateVtolDesiredAttitude();
* Initialise the module, called on startup
* \returns 0 on success or -1 if initialisation failed
*/
int32_t GuidanceInitialize()
int32_t GuidanceStart()
{
// Create object queue
queue = xQueueCreate(MAX_QUEUE_SIZE, sizeof(UAVObjEvent));
// Listen for updates.
AttitudeRawConnectQueue(queue);
// Start main task
xTaskCreate(guidanceTask, (signed char *)"Guidance", STACK_SIZE_BYTES/4, NULL, TASK_PRIORITY, &guidanceTaskHandle);
TaskMonitorAdd(TASKINFO_RUNNING_GUIDANCE, guidanceTaskHandle);
@ -97,6 +91,28 @@ int32_t GuidanceInitialize()
return 0;
}
/**
* Initialise the module, called on startup
* \returns 0 on success or -1 if initialisation failed
*/
int32_t GuidanceInitialize()
{
GuidanceSettingsInitialize();
PositionDesiredInitialize();
NedAccelInitialize();
VelocityDesiredInitialize();
// Create object queue
queue = xQueueCreate(MAX_QUEUE_SIZE, sizeof(UAVObjEvent));
// Listen for updates.
AttitudeRawConnectQueue(queue);
return 0;
}
MODULE_INITCALL(GuidanceInitialize, GuidanceStart)
static float northVelIntegral = 0;
static float eastVelIntegral = 0;
static float downVelIntegral = 0;
@ -236,7 +252,7 @@ void updateVtolDesiredVelocity()
{
static portTickType lastSysTime;
portTickType thisSysTime = xTaskGetTickCount();;
float dT;
float dT = 0;
GuidanceSettingsData guidanceSettings;
PositionActualData positionActual;
@ -304,7 +320,7 @@ static void updateVtolDesiredAttitude()
{
static portTickType lastSysTime;
portTickType thisSysTime = xTaskGetTickCount();;
float dT;
float dT = 0;
VelocityDesiredData velocityDesired;
VelocityActualData velocityActual;

View File

@ -27,5 +27,5 @@
#define EXAMPLEMODPERIODIC_H
int32_t ExampleModPeriodicInitialize();
int32_t GuidanceInitialize(void);
#endif // EXAMPLEMODPERIODIC_H

View File

@ -45,4 +45,64 @@ typedef enum {FLIGHTMODE_UNDEFINED = 0, FLIGHTMODE_MANUAL = 1, FLIGHTMODE_STABIL
int32_t ManualControlInitialize();
/*
* These are assumptions we make in the flight code about the order of settings and their consistency between
* objects. Please keep this synchronized to the UAVObjects
*/
#define assumptions1 ( \
((int)MANUALCONTROLSETTINGS_STABILIZATION1SETTINGS_NONE == (int)STABILIZATIONDESIRED_STABILIZATIONMODE_NONE) && \
((int)MANUALCONTROLSETTINGS_STABILIZATION1SETTINGS_RATE == (int)STABILIZATIONDESIRED_STABILIZATIONMODE_RATE) && \
((int)MANUALCONTROLSETTINGS_STABILIZATION1SETTINGS_AXISLOCK == (int)STABILIZATIONDESIRED_STABILIZATIONMODE_AXISLOCK) && \
((int)MANUALCONTROLSETTINGS_STABILIZATION1SETTINGS_WEAKLEVELING == (int)STABILIZATIONDESIRED_STABILIZATIONMODE_WEAKLEVELING) && \
((int)MANUALCONTROLSETTINGS_STABILIZATION1SETTINGS_ATTITUDE == (int)STABILIZATIONDESIRED_STABILIZATIONMODE_ATTITUDE) \
)
#define assumptions3 ( \
((int)MANUALCONTROLSETTINGS_STABILIZATION2SETTINGS_NONE == (int)STABILIZATIONDESIRED_STABILIZATIONMODE_NONE) && \
((int)MANUALCONTROLSETTINGS_STABILIZATION2SETTINGS_RATE == (int)STABILIZATIONDESIRED_STABILIZATIONMODE_RATE) && \
((int)MANUALCONTROLSETTINGS_STABILIZATION2SETTINGS_AXISLOCK == (int)STABILIZATIONDESIRED_STABILIZATIONMODE_AXISLOCK) && \
((int)MANUALCONTROLSETTINGS_STABILIZATION2SETTINGS_WEAKLEVELING == (int)STABILIZATIONDESIRED_STABILIZATIONMODE_WEAKLEVELING) && \
((int)MANUALCONTROLSETTINGS_STABILIZATION2SETTINGS_ATTITUDE == (int)STABILIZATIONDESIRED_STABILIZATIONMODE_ATTITUDE) \
)
#define assumptions5 ( \
((int)MANUALCONTROLSETTINGS_STABILIZATION3SETTINGS_NONE == (int)STABILIZATIONDESIRED_STABILIZATIONMODE_NONE) && \
((int)MANUALCONTROLSETTINGS_STABILIZATION3SETTINGS_RATE == (int)STABILIZATIONDESIRED_STABILIZATIONMODE_RATE) && \
((int)MANUALCONTROLSETTINGS_STABILIZATION3SETTINGS_AXISLOCK == (int)STABILIZATIONDESIRED_STABILIZATIONMODE_AXISLOCK) && \
((int)MANUALCONTROLSETTINGS_STABILIZATION3SETTINGS_WEAKLEVELING == (int)STABILIZATIONDESIRED_STABILIZATIONMODE_WEAKLEVELING) && \
((int)MANUALCONTROLSETTINGS_STABILIZATION3SETTINGS_ATTITUDE == (int)STABILIZATIONDESIRED_STABILIZATIONMODE_ATTITUDE) \
)
#define ARMING_CHANNEL_ROLL 0
#define ARMING_CHANNEL_PITCH 1
#define ARMING_CHANNEL_YAW 2
#define assumptions7 ( \
( ((int)MANUALCONTROLSETTINGS_ARMING_ROLLLEFT -(int)MANUALCONTROLSETTINGS_ARMING_ROLLLEFT)/2 == ARMING_CHANNEL_ROLL) && \
( ((int)MANUALCONTROLSETTINGS_ARMING_ROLLRIGHT -(int)MANUALCONTROLSETTINGS_ARMING_ROLLLEFT)/2 == ARMING_CHANNEL_ROLL) && \
( ((int)MANUALCONTROLSETTINGS_ARMING_PITCHFORWARD -(int)MANUALCONTROLSETTINGS_ARMING_ROLLLEFT)/2 == ARMING_CHANNEL_PITCH) && \
( ((int)MANUALCONTROLSETTINGS_ARMING_PITCHAFT -(int)MANUALCONTROLSETTINGS_ARMING_ROLLLEFT)/2 == ARMING_CHANNEL_PITCH) && \
( ((int)MANUALCONTROLSETTINGS_ARMING_YAWLEFT -(int)MANUALCONTROLSETTINGS_ARMING_ROLLLEFT)/2 == ARMING_CHANNEL_YAW) && \
( ((int)MANUALCONTROLSETTINGS_ARMING_YAWRIGHT -(int)MANUALCONTROLSETTINGS_ARMING_ROLLLEFT)/2 == ARMING_CHANNEL_YAW) \
)
#define assumptions8 ( \
( ((int)MANUALCONTROLSETTINGS_ARMING_ROLLLEFT -(int)MANUALCONTROLSETTINGS_ARMING_ROLLLEFT)%2 == 0) && \
( ((int)MANUALCONTROLSETTINGS_ARMING_ROLLRIGHT -(int)MANUALCONTROLSETTINGS_ARMING_ROLLLEFT)%2 != 0) && \
( ((int)MANUALCONTROLSETTINGS_ARMING_PITCHFORWARD -(int)MANUALCONTROLSETTINGS_ARMING_ROLLLEFT)%2 == 0) && \
( ((int)MANUALCONTROLSETTINGS_ARMING_PITCHAFT -(int)MANUALCONTROLSETTINGS_ARMING_ROLLLEFT)%2 != 0) && \
( ((int)MANUALCONTROLSETTINGS_ARMING_YAWLEFT -(int)MANUALCONTROLSETTINGS_ARMING_ROLLLEFT)%2 == 0) && \
( ((int)MANUALCONTROLSETTINGS_ARMING_YAWRIGHT -(int)MANUALCONTROLSETTINGS_ARMING_ROLLLEFT)%2 != 0) \
)
#define assumptions_flightmode ( \
( (int)MANUALCONTROLSETTINGS_FLIGHTMODEPOSITION_MANUAL == (int) FLIGHTSTATUS_FLIGHTMODE_MANUAL) && \
( (int)MANUALCONTROLSETTINGS_FLIGHTMODEPOSITION_STABILIZED1 == (int) FLIGHTSTATUS_FLIGHTMODE_STABILIZED1) && \
( (int)MANUALCONTROLSETTINGS_FLIGHTMODEPOSITION_STABILIZED2 == (int) FLIGHTSTATUS_FLIGHTMODE_STABILIZED2) && \
( (int)MANUALCONTROLSETTINGS_FLIGHTMODEPOSITION_STABILIZED3 == (int) FLIGHTSTATUS_FLIGHTMODE_STABILIZED3) && \
( (int)MANUALCONTROLSETTINGS_FLIGHTMODEPOSITION_VELOCITYCONTROL == (int) FLIGHTSTATUS_FLIGHTMODE_VELOCITYCONTROL) && \
( (int)MANUALCONTROLSETTINGS_FLIGHTMODEPOSITION_POSITIONHOLD == (int) FLIGHTSTATUS_FLIGHTMODE_POSITIONHOLD) \
)
#endif // MANUALCONTROL_H

View File

@ -42,6 +42,7 @@
#include "stabilizationdesired.h"
#include "flighttelemetrystats.h"
#include "flightstatus.h"
#include "accessorydesired.h"
// Private constants
#if defined(PIOS_MANUAL_STACK_SIZE)
@ -86,76 +87,41 @@ static uint32_t timeDifferenceMs(portTickType start_time, portTickType end_time)
static bool okToArm(void);
static bool validInputRange(int16_t min, int16_t max, uint16_t value);
#define assumptions1 ( \
((int)MANUALCONTROLSETTINGS_STABILIZATION1SETTINGS_NONE == (int)STABILIZATIONDESIRED_STABILIZATIONMODE_NONE) && \
((int)MANUALCONTROLSETTINGS_STABILIZATION1SETTINGS_RATE == (int)STABILIZATIONDESIRED_STABILIZATIONMODE_RATE) && \
((int)MANUALCONTROLSETTINGS_STABILIZATION1SETTINGS_ATTITUDE == (int)STABILIZATIONDESIRED_STABILIZATIONMODE_ATTITUDE) \
)
#define assumptions3 ( \
((int)MANUALCONTROLSETTINGS_STABILIZATION2SETTINGS_NONE == (int)STABILIZATIONDESIRED_STABILIZATIONMODE_NONE) && \
((int)MANUALCONTROLSETTINGS_STABILIZATION2SETTINGS_RATE == (int)STABILIZATIONDESIRED_STABILIZATIONMODE_RATE) && \
((int)MANUALCONTROLSETTINGS_STABILIZATION2SETTINGS_ATTITUDE == (int)STABILIZATIONDESIRED_STABILIZATIONMODE_ATTITUDE) \
)
#define assumptions5 ( \
((int)MANUALCONTROLSETTINGS_STABILIZATION3SETTINGS_NONE == (int)STABILIZATIONDESIRED_STABILIZATIONMODE_NONE) && \
((int)MANUALCONTROLSETTINGS_STABILIZATION3SETTINGS_RATE == (int)STABILIZATIONDESIRED_STABILIZATIONMODE_RATE) && \
((int)MANUALCONTROLSETTINGS_STABILIZATION3SETTINGS_ATTITUDE == (int)STABILIZATIONDESIRED_STABILIZATIONMODE_ATTITUDE) \
)
#define ARMING_CHANNEL_ROLL 0
#define ARMING_CHANNEL_PITCH 1
#define ARMING_CHANNEL_YAW 2
#define assumptions7 ( \
( ((int)MANUALCONTROLSETTINGS_ARMING_ROLLLEFT -(int)MANUALCONTROLSETTINGS_ARMING_ROLLLEFT)/2 == ARMING_CHANNEL_ROLL) && \
( ((int)MANUALCONTROLSETTINGS_ARMING_ROLLRIGHT -(int)MANUALCONTROLSETTINGS_ARMING_ROLLLEFT)/2 == ARMING_CHANNEL_ROLL) && \
( ((int)MANUALCONTROLSETTINGS_ARMING_PITCHFORWARD -(int)MANUALCONTROLSETTINGS_ARMING_ROLLLEFT)/2 == ARMING_CHANNEL_PITCH) && \
( ((int)MANUALCONTROLSETTINGS_ARMING_PITCHAFT -(int)MANUALCONTROLSETTINGS_ARMING_ROLLLEFT)/2 == ARMING_CHANNEL_PITCH) && \
( ((int)MANUALCONTROLSETTINGS_ARMING_YAWLEFT -(int)MANUALCONTROLSETTINGS_ARMING_ROLLLEFT)/2 == ARMING_CHANNEL_YAW) && \
( ((int)MANUALCONTROLSETTINGS_ARMING_YAWRIGHT -(int)MANUALCONTROLSETTINGS_ARMING_ROLLLEFT)/2 == ARMING_CHANNEL_YAW) \
)
#define assumptions8 ( \
( ((int)MANUALCONTROLSETTINGS_ARMING_ROLLLEFT -(int)MANUALCONTROLSETTINGS_ARMING_ROLLLEFT)%2 == 0) && \
( ((int)MANUALCONTROLSETTINGS_ARMING_ROLLRIGHT -(int)MANUALCONTROLSETTINGS_ARMING_ROLLLEFT)%2 != 0) && \
( ((int)MANUALCONTROLSETTINGS_ARMING_PITCHFORWARD -(int)MANUALCONTROLSETTINGS_ARMING_ROLLLEFT)%2 == 0) && \
( ((int)MANUALCONTROLSETTINGS_ARMING_PITCHAFT -(int)MANUALCONTROLSETTINGS_ARMING_ROLLLEFT)%2 != 0) && \
( ((int)MANUALCONTROLSETTINGS_ARMING_YAWLEFT -(int)MANUALCONTROLSETTINGS_ARMING_ROLLLEFT)%2 == 0) && \
( ((int)MANUALCONTROLSETTINGS_ARMING_YAWRIGHT -(int)MANUALCONTROLSETTINGS_ARMING_ROLLLEFT)%2 != 0) \
)
#define assumptions_flightmode ( \
( (int)MANUALCONTROLSETTINGS_FLIGHTMODEPOSITION_MANUAL == (int) FLIGHTSTATUS_FLIGHTMODE_MANUAL) && \
( (int)MANUALCONTROLSETTINGS_FLIGHTMODEPOSITION_STABILIZED1 == (int) FLIGHTSTATUS_FLIGHTMODE_STABILIZED1) && \
( (int)MANUALCONTROLSETTINGS_FLIGHTMODEPOSITION_STABILIZED2 == (int) FLIGHTSTATUS_FLIGHTMODE_STABILIZED2) && \
( (int)MANUALCONTROLSETTINGS_FLIGHTMODEPOSITION_STABILIZED3 == (int) FLIGHTSTATUS_FLIGHTMODE_STABILIZED3) && \
( (int)MANUALCONTROLSETTINGS_FLIGHTMODEPOSITION_VELOCITYCONTROL == (int) FLIGHTSTATUS_FLIGHTMODE_VELOCITYCONTROL) && \
( (int)MANUALCONTROLSETTINGS_FLIGHTMODEPOSITION_POSITIONHOLD == (int) FLIGHTSTATUS_FLIGHTMODE_POSITIONHOLD) \
)
#define assumptions (assumptions1 && assumptions3 && assumptions5 && assumptions7 && assumptions8 && assumptions_flightmode)
/**
* Module starting
*/
int32_t ManualControlStart()
{
// Start main task
xTaskCreate(manualControlTask, (signed char *)"ManualControl", STACK_SIZE_BYTES/4, NULL, TASK_PRIORITY, &taskHandle);
TaskMonitorAdd(TASKINFO_RUNNING_MANUALCONTROL, taskHandle);
PIOS_WDG_RegisterFlag(PIOS_WDG_MANUAL);
return 0;
}
/**
* Module initialization
*/
int32_t ManualControlInitialize()
{
/* Check the assumptions about uavobject enum's are correct */
if(!assumptions)
return -1;
// Start main task
xTaskCreate(manualControlTask, (signed char *)"ManualControl", STACK_SIZE_BYTES/4, NULL, TASK_PRIORITY, &taskHandle);
TaskMonitorAdd(TASKINFO_RUNNING_MANUALCONTROL, taskHandle);
PIOS_WDG_RegisterFlag(PIOS_WDG_MANUAL);
AccessoryDesiredInitialize();
ManualControlCommandInitialize();
FlightStatusInitialize();
StabilizationDesiredInitialize();
ManualControlSettingsInitialize();
return 0;
}
MODULE_INITCALL(ManualControlInitialize, ManualControlStart)
/**
* Module task
@ -170,6 +136,11 @@ static void manualControlTask(void *parameters)
uint8_t disconnected_count = 0;
uint8_t connected_count = 0;
// For now manual instantiate extra instances of Accessory Desired. In future should be done dynamically
// this includes not even registering it if not used
AccessoryDesiredCreateInstance();
AccessoryDesiredCreateInstance();
// Make sure unarmed on power up
ManualControlCommandGet(&cmd);
FlightStatusGet(&flightStatus);
@ -203,17 +174,13 @@ static void manualControlTask(void *parameters)
if (!ManualControlCommandReadOnly(&cmd)) {
// Read channel values in us
// TODO: settings.InputMode is currently ignored because PIOS will not allow runtime
// selection of PWM and PPM. The configuration is currently done at compile time in
// the pios_config.h file.
for (int n = 0; n < MANUALCONTROLCOMMAND_CHANNEL_NUMELEM; ++n) {
#if defined(PIOS_INCLUDE_PWM)
cmd.Channel[n] = PIOS_PWM_Get(n);
#elif defined(PIOS_INCLUDE_PPM)
cmd.Channel[n] = PIOS_PPM_Get(n);
#elif defined(PIOS_INCLUDE_SPEKTRUM)
cmd.Channel[n] = PIOS_SPEKTRUM_Get(n);
#endif
if (pios_rcvr_channel_to_id_map[n].id) {
cmd.Channel[n] = PIOS_RCVR_Read(pios_rcvr_channel_to_id_map[n].id,
pios_rcvr_channel_to_id_map[n].channel);
} else {
cmd.Channel[n] = -1;
}
scaledChannel[n] = scaleChannel(cmd.Channel[n], settings.ChannelMax[n], settings.ChannelMin[n], settings.ChannelNeutral[n]);
}
@ -266,10 +233,26 @@ static void manualControlTask(void *parameters)
cmd.Throttle = scaledChannel[settings.Throttle];
flightMode = scaledChannel[settings.FlightMode];
// Set accessory channels
cmd.Accessory1 = (settings.Accessory1 != MANUALCONTROLSETTINGS_ACCESSORY1_NONE) ? scaledChannel[settings.Accessory1] : 0;
cmd.Accessory2 = (settings.Accessory1 != MANUALCONTROLSETTINGS_ACCESSORY2_NONE) ? scaledChannel[settings.Accessory2] : 0;
cmd.Accessory3 = (settings.Accessory1 != MANUALCONTROLSETTINGS_ACCESSORY3_NONE) ? scaledChannel[settings.Accessory3] : 0;
AccessoryDesiredData accessory;
// Set Accessory 0
if(settings.Accessory0 != MANUALCONTROLSETTINGS_ACCESSORY0_NONE) {
accessory.AccessoryVal = scaledChannel[settings.Accessory0];
if(AccessoryDesiredInstSet(0, &accessory) != 0)
AlarmsSet(SYSTEMALARMS_ALARM_MANUALCONTROL, SYSTEMALARMS_ALARM_WARNING);
}
// Set Accessory 1
if(settings.Accessory1 != MANUALCONTROLSETTINGS_ACCESSORY1_NONE) {
accessory.AccessoryVal = scaledChannel[settings.Accessory1];
if(AccessoryDesiredInstSet(1, &accessory) != 0)
AlarmsSet(SYSTEMALARMS_ALARM_MANUALCONTROL, SYSTEMALARMS_ALARM_WARNING);
}
// Set Accsesory 2
if(settings.Accessory2 != MANUALCONTROLSETTINGS_ACCESSORY2_NONE) {
accessory.AccessoryVal = scaledChannel[settings.Accessory2];
if(AccessoryDesiredInstSet(2, &accessory) != 0)
AlarmsSet(SYSTEMALARMS_ALARM_MANUALCONTROL, SYSTEMALARMS_ALARM_WARNING);
}
processFlightMode(&settings, flightMode);
processArm(&cmd, &settings);
@ -350,17 +333,23 @@ static void updateStabilizationDesired(ManualControlCommandData * cmd, ManualCon
stabilization.Roll = (stab_settings[0] == STABILIZATIONDESIRED_STABILIZATIONMODE_NONE) ? cmd->Roll :
(stab_settings[0] == STABILIZATIONDESIRED_STABILIZATIONMODE_RATE) ? cmd->Roll * stabSettings.ManualRate[STABILIZATIONSETTINGS_MANUALRATE_ROLL] :
(stab_settings[0] == STABILIZATIONDESIRED_STABILIZATIONMODE_WEAKLEVELING) ? cmd->Roll * stabSettings.ManualRate[STABILIZATIONSETTINGS_MANUALRATE_ROLL] :
(stab_settings[0] == STABILIZATIONDESIRED_STABILIZATIONMODE_ATTITUDE) ? cmd->Roll * stabSettings.RollMax :
(stab_settings[0] == STABILIZATIONDESIRED_STABILIZATIONMODE_AXISLOCK) ? cmd->Roll * stabSettings.ManualRate[STABILIZATIONSETTINGS_MANUALRATE_ROLL] :
0; // this is an invalid mode
;
stabilization.Pitch = (stab_settings[1] == STABILIZATIONDESIRED_STABILIZATIONMODE_NONE) ? cmd->Pitch :
(stab_settings[1] == STABILIZATIONDESIRED_STABILIZATIONMODE_RATE) ? cmd->Pitch * stabSettings.ManualRate[STABILIZATIONSETTINGS_MANUALRATE_PITCH] :
(stab_settings[1] == STABILIZATIONDESIRED_STABILIZATIONMODE_WEAKLEVELING) ? cmd->Pitch * stabSettings.ManualRate[STABILIZATIONSETTINGS_MANUALRATE_PITCH] :
(stab_settings[1] == STABILIZATIONDESIRED_STABILIZATIONMODE_ATTITUDE) ? cmd->Pitch * stabSettings.PitchMax :
(stab_settings[1] == STABILIZATIONDESIRED_STABILIZATIONMODE_AXISLOCK) ? cmd->Pitch * stabSettings.ManualRate[STABILIZATIONSETTINGS_MANUALRATE_PITCH] :
0; // this is an invalid mode
stabilization.Yaw = (stab_settings[2] == STABILIZATIONDESIRED_STABILIZATIONMODE_NONE) ? cmd->Yaw :
(stab_settings[2] == STABILIZATIONDESIRED_STABILIZATIONMODE_RATE) ? cmd->Yaw * stabSettings.ManualRate[STABILIZATIONSETTINGS_MANUALRATE_YAW] :
(stab_settings[2] == STABILIZATIONDESIRED_STABILIZATIONMODE_ATTITUDE) ? fmod(cmd->Yaw * 180.0, 360) :
(stab_settings[2] == STABILIZATIONDESIRED_STABILIZATIONMODE_WEAKLEVELING) ? cmd->Yaw * stabSettings.ManualRate[STABILIZATIONSETTINGS_MANUALRATE_YAW] :
(stab_settings[2] == STABILIZATIONDESIRED_STABILIZATIONMODE_ATTITUDE) ? cmd->Yaw * stabSettings.YawMax :
(stab_settings[2] == STABILIZATIONDESIRED_STABILIZATIONMODE_AXISLOCK) ? cmd->Yaw * stabSettings.ManualRate[STABILIZATIONSETTINGS_MANUALRATE_YAW] :
0; // this is an invalid mode
stabilization.Throttle = (cmd->Throttle < 0) ? -1 : cmd->Throttle;

View File

@ -40,8 +40,6 @@
#include "attitudeactual.h"
#include "attituderaw.h"
#include "flightstatus.h"
#include "systemsettings.h"
#include "ahrssettings.h"
#include "manualcontrol.h" // Just to get a macro
#include "CoordinateConversions.h"
@ -77,6 +75,15 @@ static xTaskHandle taskHandle;
static StabilizationSettingsData settings;
static xQueueHandle queue;
float dT = 1;
float gyro_alpha = 0;
float gyro_filtered[3] = {0,0,0};
float axis_lock_accum[3] = {0,0,0};
uint8_t max_axis_lock = 0;
uint8_t max_axislock_rate = 0;
float weak_leveling_kp = 0;
uint8_t weak_leveling_max = 0;
bool lowThrottleZeroIntegral;
pid_type pids[PID_MAX];
// Private functions
@ -86,12 +93,31 @@ static float bound(float val);
static void ZeroPids(void);
static void SettingsUpdatedCb(UAVObjEvent * ev);
/**
* Module initialization
*/
int32_t StabilizationStart()
{
// Initialize variables
// Start main task
xTaskCreate(stabilizationTask, (signed char*)"Stabilization", STACK_SIZE_BYTES/4, NULL, TASK_PRIORITY, &taskHandle);
TaskMonitorAdd(TASKINFO_RUNNING_STABILIZATION, taskHandle);
PIOS_WDG_RegisterFlag(PIOS_WDG_STABILIZATION);
return 0;
}
/**
* Module initialization
*/
int32_t StabilizationInitialize()
{
// Initialize variables
StabilizationSettingsInitialize();
ActuatorDesiredInitialize();
#if defined(DIAGNOSTICS)
RateDesiredInitialize();
#endif
// Create object queue
queue = xQueueCreate(MAX_QUEUE_SIZE, sizeof(UAVObjEvent));
@ -103,13 +129,12 @@ int32_t StabilizationInitialize()
StabilizationSettingsConnectCallback(SettingsUpdatedCb);
SettingsUpdatedCb(StabilizationSettingsHandle());
// Start main task
xTaskCreate(stabilizationTask, (signed char*)"Stabilization", STACK_SIZE_BYTES/4, NULL, TASK_PRIORITY, &taskHandle);
TaskMonitorAdd(TASKINFO_RUNNING_STABILIZATION, taskHandle);
PIOS_WDG_RegisterFlag(PIOS_WDG_STABILIZATION);
return 0;
}
MODULE_INITCALL(StabilizationInitialize, StabilizationStart)
/**
* Module task
*/
@ -125,7 +150,6 @@ static void stabilizationTask(void* parameters)
RateDesiredData rateDesired;
AttitudeActualData attitudeActual;
AttitudeRawData attitudeRaw;
SystemSettingsData systemSettings;
FlightStatusData flightStatus;
SettingsUpdatedCb((UAVObjEvent *) NULL);
@ -153,8 +177,10 @@ static void stabilizationTask(void* parameters)
StabilizationDesiredGet(&stabDesired);
AttitudeActualGet(&attitudeActual);
AttitudeRawGet(&attitudeRaw);
#if defined(DIAGNOSTICS)
RateDesiredGet(&rateDesired);
SystemSettingsGet(&systemSettings);
#endif
#if defined(PIOS_QUATERNION_STABILIZATION)
// Quaternion calculation of error in each axis. Uses more memory.
@ -193,48 +219,84 @@ static void stabilizationTask(void* parameters)
local_error[2] = fmod(local_error[2] + 180, 360) - 180;
#endif
for(uint8_t i = 0; i < MAX_AXES; i++) {
gyro_filtered[i] = gyro_filtered[i] * gyro_alpha + attitudeRaw.gyros[i] * (1 - gyro_alpha);
}
float *attitudeDesiredAxis = &stabDesired.Roll;
float *actuatorDesiredAxis = &actuatorDesired.Roll;
float *rateDesiredAxis = &rateDesired.Roll;
//Calculate desired rate
for(int8_t ct=0; ct< MAX_AXES; ct++)
for(uint8_t i=0; i< MAX_AXES; i++)
{
switch(stabDesired.StabilizationMode[ct])
switch(stabDesired.StabilizationMode[i])
{
case STABILIZATIONDESIRED_STABILIZATIONMODE_RATE:
rateDesiredAxis[ct] = attitudeDesiredAxis[ct];
rateDesiredAxis[i] = attitudeDesiredAxis[i];
axis_lock_accum[i] = 0;
break;
case STABILIZATIONDESIRED_STABILIZATIONMODE_WEAKLEVELING:
{
float weak_leveling = local_error[i] * weak_leveling_kp;
if(weak_leveling > weak_leveling_max)
weak_leveling = weak_leveling_max;
if(weak_leveling < -weak_leveling_max)
weak_leveling = -weak_leveling_max;
rateDesiredAxis[i] = attitudeDesiredAxis[i] + weak_leveling;
axis_lock_accum[i] = 0;
break;
}
case STABILIZATIONDESIRED_STABILIZATIONMODE_ATTITUDE:
rateDesiredAxis[ct] = ApplyPid(&pids[PID_ROLL + ct], local_error[ct]);
rateDesiredAxis[i] = ApplyPid(&pids[PID_ROLL + i], local_error[i]);
axis_lock_accum[i] = 0;
break;
case STABILIZATIONDESIRED_STABILIZATIONMODE_AXISLOCK:
if(fabs(attitudeDesiredAxis[i]) > max_axislock_rate) {
// While getting strong commands act like rate mode
rateDesiredAxis[i] = attitudeDesiredAxis[i];
axis_lock_accum[i] = 0;
} else {
// For weaker commands or no command simply attitude lock (almost) on no gyro change
axis_lock_accum[i] += (attitudeDesiredAxis[i] - gyro_filtered[i]) * dT;
if(axis_lock_accum[i] > max_axis_lock)
axis_lock_accum[i] = max_axis_lock;
else if(axis_lock_accum[i] < -max_axis_lock)
axis_lock_accum[i] = -max_axis_lock;
rateDesiredAxis[i] = ApplyPid(&pids[PID_ROLL + i], axis_lock_accum[i]);
}
break;
}
}
uint8_t shouldUpdate = 1;
#if defined(DIAGNOSTICS)
RateDesiredSet(&rateDesired);
#endif
ActuatorDesiredGet(&actuatorDesired);
//Calculate desired command
for(int8_t ct=0; ct< MAX_AXES; ct++)
{
if(fabs(rateDesiredAxis[ct]) > settings.MaximumRate[ct])
{
if(rateDesiredAxis[ct] > 0)
{
if(rateDesiredAxis[ct] > settings.MaximumRate[ct])
rateDesiredAxis[ct] = settings.MaximumRate[ct];
}else
{
else if(rateDesiredAxis[ct] < -settings.MaximumRate[ct])
rateDesiredAxis[ct] = -settings.MaximumRate[ct];
}
}
switch(stabDesired.StabilizationMode[ct])
{
case STABILIZATIONDESIRED_STABILIZATIONMODE_RATE:
case STABILIZATIONDESIRED_STABILIZATIONMODE_ATTITUDE:
case STABILIZATIONDESIRED_STABILIZATIONMODE_AXISLOCK:
case STABILIZATIONDESIRED_STABILIZATIONMODE_WEAKLEVELING:
{
float command = ApplyPid(&pids[PID_RATE_ROLL + ct], rateDesiredAxis[ct]-attitudeRaw.gyros[ct]);
float command = ApplyPid(&pids[PID_RATE_ROLL + ct], rateDesiredAxis[ct] - gyro_filtered[ct]);
actuatorDesiredAxis[ct] = bound(command);
break;
}
@ -274,7 +336,8 @@ static void stabilizationTask(void* parameters)
}
if(flightStatus.Armed != FLIGHTSTATUS_ARMED_ARMED ||
!shouldUpdate || (stabDesired.Throttle < 0))
(lowThrottleZeroIntegral && stabDesired.Throttle < 0) ||
!shouldUpdate)
{
ZeroPids();
}
@ -289,15 +352,15 @@ float ApplyPid(pid_type * pid, const float err)
{
float diff = (err - pid->lastErr);
pid->lastErr = err;
pid->iAccumulator += err * pid->i * dT;
if(fabs(pid->iAccumulator) > pid->iLim) {
if(pid->iAccumulator >0) {
pid->iAccumulator = pid->iLim;
} else {
pid->iAccumulator = -pid->iLim;
// Scale up accumulator by 1000 while computing to avoid losing precision
pid->iAccumulator += err * (pid->i * dT * 1000);
if(pid->iAccumulator > (pid->iLim * 1000)) {
pid->iAccumulator = pid->iLim * 1000;
} else if (pid->iAccumulator < -(pid->iLim * 1000)) {
pid->iAccumulator = -pid->iLim * 1000;
}
}
return ((err * pid->p) + pid->iAccumulator + (diff * pid->d / dT));
return ((err * pid->p) + pid->iAccumulator / 1000 + (diff * pid->d / dT));
}
@ -307,6 +370,8 @@ static void ZeroPids(void)
pids[ct].iAccumulator = 0;
pids[ct].lastErr = 0;
}
for(uint8_t i = 0; i < 3; i++)
axis_lock_accum[i] = 0;
}
@ -329,13 +394,60 @@ static void SettingsUpdatedCb(UAVObjEvent * ev)
memset(pids,0,sizeof (pid_type) * PID_MAX);
StabilizationSettingsGet(&settings);
float * data = settings.RollRatePI;
for(int8_t pid=0; pid < PID_MAX; pid++)
{
pids[pid].p = *data++;
pids[pid].i = *data++;
pids[pid].iLim = *data++;
}
// Set the roll rate PID constants
pids[0].p = settings.RollRatePID[STABILIZATIONSETTINGS_ROLLRATEPID_KP];
pids[0].i = settings.RollRatePID[STABILIZATIONSETTINGS_ROLLRATEPID_KI];
pids[0].d = settings.RollRatePID[STABILIZATIONSETTINGS_ROLLRATEPID_KD];
pids[0].iLim = settings.RollRatePID[STABILIZATIONSETTINGS_ROLLRATEPID_ILIMIT];
// Set the pitch rate PID constants
pids[1].p = settings.PitchRatePID[STABILIZATIONSETTINGS_PITCHRATEPID_KP];
pids[1].i = settings.PitchRatePID[STABILIZATIONSETTINGS_PITCHRATEPID_KI];
pids[1].d = settings.PitchRatePID[STABILIZATIONSETTINGS_PITCHRATEPID_KD];
pids[1].iLim = settings.PitchRatePID[STABILIZATIONSETTINGS_PITCHRATEPID_ILIMIT];
// Set the yaw rate PID constants
pids[2].p = settings.YawRatePID[STABILIZATIONSETTINGS_YAWRATEPID_KP];
pids[2].i = settings.YawRatePID[STABILIZATIONSETTINGS_YAWRATEPID_KI];
pids[2].d = settings.YawRatePID[STABILIZATIONSETTINGS_YAWRATEPID_KD];
pids[2].iLim = settings.YawRatePID[STABILIZATIONSETTINGS_YAWRATEPID_ILIMIT];
// Set the roll attitude PI constants
pids[3].p = settings.RollPI[STABILIZATIONSETTINGS_ROLLPI_KP];
pids[3].i = settings.RollPI[STABILIZATIONSETTINGS_ROLLPI_KI];
pids[3].iLim = settings.RollPI[STABILIZATIONSETTINGS_ROLLPI_ILIMIT];
// Set the pitch attitude PI constants
pids[4].p = settings.PitchPI[STABILIZATIONSETTINGS_PITCHPI_KP];
pids[4].i = settings.PitchPI[STABILIZATIONSETTINGS_PITCHPI_KI];
pids[4].iLim = settings.PitchPI[STABILIZATIONSETTINGS_PITCHPI_ILIMIT];
// Set the yaw attitude PI constants
pids[5].p = settings.YawPI[STABILIZATIONSETTINGS_YAWPI_KP];
pids[5].i = settings.YawPI[STABILIZATIONSETTINGS_YAWPI_KI];
pids[5].iLim = settings.YawPI[STABILIZATIONSETTINGS_YAWPI_ILIMIT];
// Maximum deviation to accumulate for axis lock
max_axis_lock = settings.MaxAxisLock;
max_axislock_rate = settings.MaxAxisLockRate;
// Settings for weak leveling
weak_leveling_kp = settings.WeakLevelingKp;
weak_leveling_max = settings.MaxWeakLevelingRate;
// Whether to zero the PID integrals while throttle is low
lowThrottleZeroIntegral = settings.LowThrottleZeroIntegral == STABILIZATIONSETTINGS_LOWTHROTTLEZEROINTEGRAL_TRUE;
// The dT has some jitter iteration to iteration that we don't want to
// make thie result unpredictable. Still, it's nicer to specify the constant
// based on a time (in ms) rather than a fixed multiplier. The error between
// update rates on OP (~300 Hz) and CC (~475 Hz) is negligible for this
// calculation
const float fakeDt = 0.0025;
if(settings.GyroTau < 0.0001)
gyro_alpha = 0; // not trusting this to resolve to 0
else
gyro_alpha = exp(-fakeDt / settings.GyroTau);
}

View File

@ -43,7 +43,9 @@
#include "objectpersistence.h"
#include "flightstatus.h"
#include "systemstats.h"
#include "systemsettings.h"
#include "i2cstats.h"
#include "taskinfo.h"
#include "watchdogstatus.h"
#include "taskmonitor.h"
#include "pios_config.h"
@ -78,24 +80,51 @@ static int32_t stackOverflow;
// Private functions
static void objectUpdatedCb(UAVObjEvent * ev);
static void updateStats();
static void updateI2Cstats();
static void updateWDGstats();
static void updateSystemAlarms();
static void systemTask(void *parameters);
#if defined(DIAGNOSTICS)
static void updateI2Cstats();
static void updateWDGstats();
#endif
/**
* Initialise the module, called on startup.
* \returns 0 on success or -1 if initialisation failed
* Create the module task.
* \returns 0 on success or -1 if initialization failed
*/
int32_t SystemModInitialize(void)
int32_t SystemModStart(void)
{
// Initialize vars
stackOverflow = 0;
// Create system task
xTaskCreate(systemTask, (signed char *)"System", STACK_SIZE_BYTES/4, NULL, TASK_PRIORITY, &systemTaskHandle);
// Register task
TaskMonitorAdd(TASKINFO_RUNNING_SYSTEM, systemTaskHandle);
return 0;
}
/**
* Initialize the module, called on startup.
* \returns 0 on success or -1 if initialization failed
*/
int32_t SystemModInitialize(void)
{
// Must registers objects here for system thread because ObjectManager started in OpenPilotInit
SystemSettingsInitialize();
SystemStatsInitialize();
ObjectPersistenceInitialize();
#if defined(DIAGNOSTICS)
TaskInfoInitialize();
I2CStatsInitialize();
WatchdogStatusInitialize();
#endif
SystemModStart();
return 0;
}
MODULE_INITCALL(SystemModInitialize, 0)
/**
* System task, periodically executes every SYSTEM_UPDATE_PERIOD_MS
*/
@ -103,11 +132,8 @@ static void systemTask(void *parameters)
{
portTickType lastSysTime;
// System initialization
OpenPilotInit();
// Register task
TaskMonitorAdd(TASKINFO_RUNNING_SYSTEM, systemTaskHandle);
/* create all modules thread */
MODULE_TASKCREATE_ALL
// Initialize vars
idleCounter = 0;
@ -124,9 +150,10 @@ static void systemTask(void *parameters)
// Update the system alarms
updateSystemAlarms();
#if defined(DIAGNOSTICS)
updateI2Cstats();
updateWDGstats();
#endif
// Update the task status object
TaskMonitorUpdateAll();
@ -228,9 +255,7 @@ static void objectUpdatedCb(UAVObjEvent * ev)
/**
* Called periodically to update the I2C statistics
*/
#if defined(ARCH_POSIX) || defined(ARCH_WIN32)
static void updateI2Cstats() {} //Posix and win32 don't have I2C
#else
#if defined(DIAGNOSTICS)
static void updateI2Cstats()
{
#if defined(PIOS_INCLUDE_I2C)
@ -250,7 +275,6 @@ static void updateI2Cstats()
I2CStatsSet(&i2cStats);
#endif
}
#endif
static void updateWDGstats()
{
@ -259,6 +283,50 @@ static void updateWDGstats()
watchdogStatus.ActiveFlags = PIOS_WDG_GetActiveFlags();
WatchdogStatusSet(&watchdogStatus);
}
#endif
/**
* Called periodically to update the system stats
*/
static uint16_t GetFreeIrqStackSize(void)
{
uint32_t i = 0x200;
#if !defined(ARCH_POSIX) && !defined(ARCH_WIN32) && defined(CHECK_IRQ_STACK)
extern uint32_t _irq_stack_top;
extern uint32_t _irq_stack_end;
uint32_t pattern = 0x0000A5A5;
uint32_t *ptr = &_irq_stack_end;
#if 1 /* the ugly way accurate but takes more time, useful for debugging */
uint32_t stack_size = (((uint32_t)&_irq_stack_top - (uint32_t)&_irq_stack_end) & ~3 ) / 4;
for (i=0; i< stack_size; i++)
{
if (ptr[i] != pattern)
{
i=i*4;
break;
}
}
#else /* faster way but not accurate */
if (*(volatile uint32_t *)((uint32_t)ptr + IRQSTACK_LIMIT_CRITICAL) != pattern)
{
i = IRQSTACK_LIMIT_CRITICAL - 1;
}
else if (*(volatile uint32_t *)((uint32_t)ptr + IRQSTACK_LIMIT_WARNING) != pattern)
{
i = IRQSTACK_LIMIT_WARNING - 1;
}
else
{
i = IRQSTACK_LIMIT_WARNING;
}
#endif
#endif
return i;
}
/**
* Called periodically to update the system stats
@ -278,6 +346,9 @@ static void updateStats()
stats.HeapRemaining = xPortGetFreeHeapSize();
#endif
// Get Irq stack status
stats.IRQStackRemaining = GetFreeIrqStackSize();
// When idleCounterClear was not reset by the idle-task, it means the idle-task did not run
if (idleCounterClear) {
idleCounter = 0;
@ -320,6 +391,17 @@ static void updateSystemAlarms()
AlarmsClear(SYSTEMALARMS_ALARM_OUTOFMEMORY);
}
#if !defined(ARCH_POSIX) && !defined(ARCH_WIN32) && defined(CHECK_IRQ_STACK)
// Check IRQ stack
if (stats.IRQStackRemaining < IRQSTACK_LIMIT_CRITICAL) {
AlarmsSet(SYSTEMALARMS_ALARM_OUTOFMEMORY, SYSTEMALARMS_ALARM_CRITICAL);
} else if (stats.IRQStackRemaining < IRQSTACK_LIMIT_WARNING) {
AlarmsSet(SYSTEMALARMS_ALARM_OUTOFMEMORY, SYSTEMALARMS_ALARM_WARNING);
} else {
AlarmsClear(SYSTEMALARMS_ALARM_OUTOFMEMORY);
}
#endif
// Check CPU load
if (stats.CPULoad > CPULOAD_LIMIT_CRITICAL) {
AlarmsSet(SYSTEMALARMS_ALARM_CPUOVERLOAD, SYSTEMALARMS_ALARM_CRITICAL);

View File

@ -31,6 +31,7 @@
*/
#include "openpilot.h"
#include "telemetry.h"
#include "flighttelemetrystats.h"
#include "gcstelemetrystats.h"
#include "telemetrysettings.h"
@ -66,6 +67,7 @@ static uint32_t txErrors;
static uint32_t txRetries;
static TelemetrySettingsData settings;
static uint32_t timeOfLastObjectUpdate;
static UAVTalkConnection uavTalkCon;
// Private functions
static void telemetryTxTask(void *parameters);
@ -85,34 +87,11 @@ static void updateSettings();
* \return -1 if initialisation failed
* \return 0 on success
*/
int32_t TelemetryInitialize(void)
int32_t TelemetryStart(void)
{
UAVObjEvent ev;
// Initialize vars
timeOfLastObjectUpdate = 0;
// Create object queues
queue = xQueueCreate(MAX_QUEUE_SIZE, sizeof(UAVObjEvent));
#if defined(PIOS_TELEM_PRIORITY_QUEUE)
priorityQueue = xQueueCreate(MAX_QUEUE_SIZE, sizeof(UAVObjEvent));
#endif
// Get telemetry settings object
updateSettings();
// Initialise UAVTalk
UAVTalkInitialize(&transmitData);
// Process all registered objects and connect queue for updates
UAVObjIterate(&registerObject);
// Create periodic event that will be used to update the telemetry stats
txErrors = 0;
txRetries = 0;
memset(&ev, 0, sizeof(UAVObjEvent));
EventPeriodicQueueCreate(&ev, priorityQueue, STATS_UPDATE_PERIOD_MS);
// Listen to objects of interest
GCSTelemetryStatsConnectQueue(priorityQueue);
TelemetrySettingsConnectQueue(priorityQueue);
@ -131,6 +110,46 @@ int32_t TelemetryInitialize(void)
return 0;
}
/**
* Initialise the telemetry module
* \return -1 if initialisation failed
* \return 0 on success
*/
int32_t TelemetryInitialize(void)
{
UAVObjEvent ev;
FlightTelemetryStatsInitialize();
GCSTelemetryStatsInitialize();
TelemetrySettingsInitialize();
// Initialize vars
timeOfLastObjectUpdate = 0;
// Create object queues
queue = xQueueCreate(MAX_QUEUE_SIZE, sizeof(UAVObjEvent));
#if defined(PIOS_TELEM_PRIORITY_QUEUE)
priorityQueue = xQueueCreate(MAX_QUEUE_SIZE, sizeof(UAVObjEvent));
#endif
// Get telemetry settings object
updateSettings();
// Initialise UAVTalk
uavTalkCon = UAVTalkInitialize(&transmitData,256);
// Create periodic event that will be used to update the telemetry stats
txErrors = 0;
txRetries = 0;
memset(&ev, 0, sizeof(UAVObjEvent));
EventPeriodicQueueCreate(&ev, priorityQueue, STATS_UPDATE_PERIOD_MS);
return 0;
}
MODULE_INITCALL(TelemetryInitialize, TelemetryStart)
/**
* Register a new object, adds object to local list and connects the queue depending on the object's
* telemetry settings.
@ -221,7 +240,7 @@ static void processObjEvent(UAVObjEvent * ev)
if (ev->event == EV_UPDATED || ev->event == EV_UPDATED_MANUAL) {
// Send update to GCS (with retries)
while (retries < MAX_RETRIES && success == -1) {
success = UAVTalkSendObject(ev->obj, ev->instId, metadata.telemetryAcked, REQ_TIMEOUT_MS); // call blocks until ack is received or timeout
success = UAVTalkSendObject(uavTalkCon, ev->obj, ev->instId, metadata.telemetryAcked, REQ_TIMEOUT_MS); // call blocks until ack is received or timeout
++retries;
}
// Update stats
@ -232,7 +251,7 @@ static void processObjEvent(UAVObjEvent * ev)
} else if (ev->event == EV_UPDATE_REQ) {
// Request object update from GCS (with retries)
while (retries < MAX_RETRIES && success == -1) {
success = UAVTalkSendObjectRequest(ev->obj, ev->instId, REQ_TIMEOUT_MS); // call blocks until update is received or timeout
success = UAVTalkSendObjectRequest(uavTalkCon, ev->obj, ev->instId, REQ_TIMEOUT_MS); // call blocks until update is received or timeout
++retries;
}
// Update stats
@ -291,7 +310,6 @@ static void telemetryTxPriTask(void *parameters)
static void telemetryRxTask(void *parameters)
{
uint32_t inputPort;
int32_t len;
// Task loop
while (1) {
@ -305,14 +323,20 @@ static void telemetryRxTask(void *parameters)
inputPort = telemetryPort;
}
if (inputPort) {
// Block until data are available
// TODO: Currently we periodically check the buffer for data, update once the PIOS_COM is made blocking
len = PIOS_COM_ReceiveBufferUsed(inputPort);
for (int32_t n = 0; n < len; ++n) {
UAVTalkProcessInputStream(PIOS_COM_ReceiveBuffer(inputPort));
}
vTaskDelay(5); // <- remove when blocking calls are implemented
uint8_t serial_data[1];
uint16_t bytes_to_process;
bytes_to_process = PIOS_COM_ReceiveBuffer(inputPort, serial_data, sizeof(serial_data), 500);
if (bytes_to_process > 0) {
for (uint8_t i = 0; i < bytes_to_process; i++) {
UAVTalkProcessInputStream(uavTalkCon,serial_data[i]);
}
}
} else {
vTaskDelay(5);
}
}
}
@ -336,7 +360,11 @@ static int32_t transmitData(uint8_t * data, int32_t length)
outputPort = telemetryPort;
}
if (outputPort) {
return PIOS_COM_SendBufferNonBlocking(outputPort, data, length);
} else {
return -1;
}
}
/**
@ -403,8 +431,8 @@ static void updateTelemetryStats()
uint32_t timeNow;
// Get stats
UAVTalkGetStats(&utalkStats);
UAVTalkResetStats();
UAVTalkGetStats(uavTalkCon, &utalkStats);
UAVTalkResetStats(uavTalkCon);
// Get object data
FlightTelemetryStatsGet(&flightStats);
@ -492,20 +520,16 @@ static void updateSettings()
// Retrieve settings
TelemetrySettingsGet(&settings);
if (telemetryPort) {
// Set port speed
if (settings.Speed == TELEMETRYSETTINGS_SPEED_2400) PIOS_COM_ChangeBaud(telemetryPort, 2400);
else
if (settings.Speed == TELEMETRYSETTINGS_SPEED_4800) PIOS_COM_ChangeBaud(telemetryPort, 4800);
else
if (settings.Speed == TELEMETRYSETTINGS_SPEED_9600) PIOS_COM_ChangeBaud(telemetryPort, 9600);
else
if (settings.Speed == TELEMETRYSETTINGS_SPEED_19200) PIOS_COM_ChangeBaud(telemetryPort, 19200);
else
if (settings.Speed == TELEMETRYSETTINGS_SPEED_38400) PIOS_COM_ChangeBaud(telemetryPort, 38400);
else
if (settings.Speed == TELEMETRYSETTINGS_SPEED_57600) PIOS_COM_ChangeBaud(telemetryPort, 57600);
else
if (settings.Speed == TELEMETRYSETTINGS_SPEED_115200) PIOS_COM_ChangeBaud(telemetryPort, 115200);
else if (settings.Speed == TELEMETRYSETTINGS_SPEED_4800) PIOS_COM_ChangeBaud(telemetryPort, 4800);
else if (settings.Speed == TELEMETRYSETTINGS_SPEED_9600) PIOS_COM_ChangeBaud(telemetryPort, 9600);
else if (settings.Speed == TELEMETRYSETTINGS_SPEED_19200) PIOS_COM_ChangeBaud(telemetryPort, 19200);
else if (settings.Speed == TELEMETRYSETTINGS_SPEED_38400) PIOS_COM_ChangeBaud(telemetryPort, 38400);
else if (settings.Speed == TELEMETRYSETTINGS_SPEED_57600) PIOS_COM_ChangeBaud(telemetryPort, 57600);
else if (settings.Speed == TELEMETRYSETTINGS_SPEED_115200) PIOS_COM_ChangeBaud(telemetryPort, 115200);
}
}
/**

View File

@ -25,6 +25,13 @@
WHEREAMI := $(dir $(lastword $(MAKEFILE_LIST)))
TOP := $(realpath $(WHEREAMI)/../../)
include $(TOP)/make/firmware-defs.mk
include $(TOP)/make/boards/$(BOARD_NAME)/board-info.mk
# Target file name (without extension).
TARGET := fw_$(BOARD_NAME)
# Directory for output files (lst, obj, dep, elf, sym, map, hex, bin etc.)
OUTDIR := $(TOP)/build/$(TARGET)
# Set developer code and compile options
# Set to YES to compile for debugging
@ -36,9 +43,6 @@ ENABLE_DEBUG_PINS ?= NO
# Set to Yes to enable the AUX UART which is mapped on the S1 (Tx) and S2 (Rx) servo outputs
ENABLE_AUX_UART ?= NO
USE_SPEKTRUM ?= NO
# Set to YES when using Code Sourcery toolchain
CODE_SOURCERY ?= YES
@ -52,29 +56,13 @@ endif
FLASH_TOOL = OPENOCD
# List of modules to include
MODULES = Actuator Telemetry GPS ManualControl Altitude AHRSComms Stabilization Guidance FirmwareIAP FlightPlan
MODULES = Actuator Telemetry GPS ManualControl Altitude AHRSComms Stabilization Guidance FirmwareIAP
PYMODULES = FlightPlan
#MODULES = Telemetry Example
#MODULES = Telemetry MK/MKSerial
#MODULES = Telemetry
#MODULES += Osd/OsdEtStd
# MCU name, submodel and board
# - MCU used for compiler-option (-mcpu)
# - MODEL used for linker-script name (-T) and passed as define
# - BOARD just passed as define (optional)
MCU = cortex-m3
CHIP = STM32F103RET
BOARD = STM3210E_OP
MODEL = HD
# Directory for output files (lst, obj, dep, elf, sym, map, hex, bin etc.)
OUTDIR = $(TOP)/build/openpilot
# Target file name (without extension).
TARGET = OpenPilot
# Paths
OPSYSTEM = ./System
OPSYSTEMINC = $(OPSYSTEM)/inc
@ -124,21 +112,20 @@ UAVOBJSYNTHDIR = $(OUTDIR)/../uavobject-synthetics/flight
# List C source files here. (C dependencies are automatically generated.)
# use file-extension c for "c-only"-files
MODNAMES = $(notdir ${MODULES})
ifndef TESTAPP
## PyMite files
## PyMite files and modules
SRC += $(OUTDIR)/pmlib_img.c
SRC += $(OUTDIR)/pmlib_nat.c
SRC += $(OUTDIR)/pmlibusr_img.c
SRC += $(OUTDIR)/pmlibusr_nat.c
SRC += $(wildcard ${PYMITEVM}/*.c)
SRC += $(wildcard ${PYMITEPLAT}/*.c)
PYSRC += $(wildcard ${PYMITEVM}/*.c)
PYSRC += $(wildcard ${PYMITEPLAT}/*.c)
PYSRC += ${foreach MOD, ${PYMODULES}, ${wildcard ${OPMODULEDIR}/${MOD}/*.c}}
SRC += $(PYSRC)
## MODULES
SRC += ${foreach MOD, ${MODULES}, ${wildcard ${OPMODULEDIR}/${MOD}/*.c}}
SRC += ${OUTDIR}/InitMods.c
## OPENPILOT CORE:
SRC += ${OPMODULEDIR}/System/systemmod.c
SRC += $(OPSYSTEM)/openpilot.c
@ -148,7 +135,6 @@ SRC += $(OPSYSTEM)/taskmonitor.c
SRC += $(OPUAVTALK)/uavtalk.c
SRC += $(OPUAVOBJ)/uavobjectmanager.c
SRC += $(OPUAVOBJ)/eventdispatcher.c
SRC += $(OPUAVOBJ)/uavobjectsinit_linker.c
else
## TESTCODE
SRC += $(OPTESTS)/test_common.c
@ -177,6 +163,7 @@ SRC += $(PIOSSTM32F10X)/pios_spi.c
SRC += $(PIOSSTM32F10X)/pios_ppm.c
SRC += $(PIOSSTM32F10X)/pios_pwm.c
SRC += $(PIOSSTM32F10X)/pios_spektrum.c
SRC += $(PIOSSTM32F10X)/pios_sbus.c
SRC += $(PIOSSTM32F10X)/pios_debug.c
SRC += $(PIOSSTM32F10X)/pios_gpio.c
SRC += $(PIOSSTM32F10X)/pios_exti.c
@ -193,6 +180,7 @@ SRC += $(PIOSSTM32F10X)/pios_usb_hid_prop.c
SRC += $(PIOSSTM32F10X)/pios_usb_hid_pwr.c
## PIOS Hardware (Common)
SRC += $(PIOSCOMMON)/pios_crc.c
SRC += $(PIOSCOMMON)/pios_sdcard.c
SRC += $(PIOSCOMMON)/pios_com.c
SRC += $(PIOSCOMMON)/pios_bmp085.c
@ -200,6 +188,7 @@ SRC += $(PIOSCOMMON)/pios_hcsr04.c
SRC += $(PIOSCOMMON)/pios_i2c_esc.c
SRC += $(PIOSCOMMON)/pios_iap.c
SRC += $(PIOSCOMMON)/pios_bl_helper.c
SRC += $(PIOSCOMMON)/pios_rcvr.c
SRC += $(PIOSCOMMON)/printf-stdarg.c
SRC += $(FLIGHTLIB)/ahrs_spi_comm.c
SRC += $(FLIGHTLIB)/ahrs_comm_objects.c
@ -286,7 +275,7 @@ CPPSRCARM =
# Even though the DOS/Win* filesystem matches both .s and .S the same,
# it will preserve the spelling of the filenames, and gcc itself does
# care about how the name is spelled on its command-line.
ASRC = $(PIOSSTM32F10X)/startup_stm32f10x_$(MODEL)_OP.S
ASRC = $(PIOSSTM32F10X)/startup_stm32f10x_$(MODEL)$(MODEL_SUFFIX).S
# List Assembler source files here which must be assembled in ARM-Mode..
ASRCARM =
@ -317,7 +306,7 @@ EXTRAINCDIRS += $(RTOSSRCDIR)/portable/GCC/ARM_CM3
EXTRAINCDIRS += $(AHRSBOOTLOADERINC)
EXTRAINCDIRS += $(PYMITEINC)
EXTRAINCDIRS += ${foreach MOD, ${MODULES}, $(OPMODULEDIR)/${MOD}/inc} ${OPMODULEDIR}/System/inc
EXTRAINCDIRS += ${foreach MOD, ${MODULES} ${PYMODULES}, $(OPMODULEDIR)/${MOD}/inc} ${OPMODULEDIR}/System/inc
# List any extra directories to look for library files here.
@ -368,12 +357,6 @@ endif
ifeq ($(ENABLE_AUX_UART), YES)
CDEFS += -DPIOS_ENABLE_AUX_UART
endif
CDEFS += -DUSE_BOOTLOADER
ifeq ($(USE_SPEKTRUM), YES)
CDEFS += -DUSE_SPEKTRUM
endif
# Place project-specific -D and/or -U options for
# Assembler with preprocessor here.
@ -404,6 +387,9 @@ ifeq ($(DEBUG),YES)
CFLAGS = -g$(DEBUGF) -DDEBUG
endif
# OP has enough memory to always enable optional objects
CFLAGS += -DDIAGNOSTICS
CFLAGS += -O$(OPT)
CFLAGS += -mcpu=$(MCU)
CFLAGS += $(CDEFS)
@ -450,22 +436,9 @@ LDFLAGS += -lc -lgcc
LDFLAGS += -T$(LINKERSCRIPTPATH)/link_$(BOARD)_memory.ld
LDFLAGS += -T$(LINKERSCRIPTPATH)/link_$(BOARD)_sections.ld
OOCD_LOADFILE+=$(OUTDIR)/$(TARGET).bin
# Program
OOCD_CL+=-c "flash write_image erase $(OOCD_LOADFILE) 0x08005000 bin"
# Verify
OOCD_CL+=-c "verify_image $(OOCD_LOADFILE) 0x08005000 bin"
# reset target
OOCD_CL+=-c "reset run"
# terminate OOCD after programming
OOCD_CL+=-c shutdown
# Define programs and commands.
REMOVE = $(REMOVE_CMD) -f
PYTHON = python
###SHELL = sh
###COPY = cp
# List of all source files.
ALLSRC = $(ASRCARM) $(ASRC) $(SRCARM) $(SRC) $(CPPSRCARM) $(CPPSRC)
@ -481,7 +454,7 @@ LSTFILES = $(addprefix $(OUTDIR)/, $(addsuffix .lst, $(ALLSRCBASE)))
DEPFILES = $(addprefix $(OUTDIR)/dep/, $(addsuffix .o.d, $(ALLSRCBASE)))
# Default target.
all: gencode gccversion build
all: gccversion build
ifeq ($(LOADFORMAT),ihex)
build: elf hex lss sym
@ -498,16 +471,9 @@ endif
endif
# Generate intermediate code
gencode: ${OUTDIR}/InitMods.c ${OUTDIR}/pmlib_img.c ${OUTDIR}/pmlib_nat.c ${OUTDIR}/pmlibusr_img.c ${OUTDIR}/pmlibusr_nat.c ${OUTDIR}/pmfeatures.h
gencode: ${OUTDIR}/pmlib_img.c ${OUTDIR}/pmlib_nat.c ${OUTDIR}/pmlibusr_img.c ${OUTDIR}/pmlibusr_nat.c ${OUTDIR}/pmfeatures.h
# Generate code for module initialization
${OUTDIR}/InitMods.c: Makefile
@echo $(MSG_MODINIT) $(call toprel, $@)
@echo ${quote}// Autogenerated file${quote} > ${OUTDIR}/InitMods.c
@echo ${quote}${foreach MOD, ${MODNAMES}, extern unsigned int ${MOD}Initialize(void);}${quote} >> ${OUTDIR}/InitMods.c
@echo ${quote}void InitModules() {${quote} >> ${OUTDIR}/InitMods.c
@echo ${quote}${foreach MOD, ${MODNAMES}, ${MOD}Initialize();}${quote} >> ${OUTDIR}/InitMods.c
@echo ${quote}}${quote} >> ${OUTDIR}/InitMods.c
$(PYSRC): gencode
# Generate code for PyMite
${OUTDIR}/pmlib_img.c ${OUTDIR}/pmlib_nat.c ${OUTDIR}/pmlibusr_img.c ${OUTDIR}/pmlibusr_nat.c ${OUTDIR}/pmfeatures.h: $(wildcard ${PYMITELIB}/*.py) $(wildcard ${PYMITEPLAT}/*.py) $(wildcard ${FLIGHTPLANLIB}/*.py) $(wildcard ${FLIGHTPLANS}/*.py)
@ -516,14 +482,6 @@ ${OUTDIR}/pmlib_img.c ${OUTDIR}/pmlib_nat.c ${OUTDIR}/pmlibusr_img.c ${OUTDIR}/p
@$(PYTHON) $(PYMITETOOLS)/pmGenPmFeatures.py $(PYMITEPLAT)/pmfeatures.py > $(OUTDIR)/pmfeatures.h
@$(PYTHON) $(PYMITETOOLS)/pmImgCreator.py -f $(PYMITEPLAT)/pmfeatures.py -c -u -o $(OUTDIR)/pmlibusr_img.c --native-file=$(OUTDIR)/pmlibusr_nat.c $(FLIGHTPLANS)/test.py
# Program the device.
ifeq ($(FLASH_TOOL),OPENOCD)
# Program the device with Dominic Rath's OPENOCD in "batch-mode", needs cfg and "reset-script".
program: $(OUTDIR)/$(TARGET).bin
@echo ${quote}Programming with OPENOCD${quote}
$(OOCD_EXE) $(OOCD_CL)
endif
# Link: create ELF output file from object files.
$(eval $(call LINK_TEMPLATE, $(OUTDIR)/$(TARGET).elf, $(ALLOBJ)))
@ -553,23 +511,37 @@ $(eval $(call PARTIAL_COMPILE_ARM_TEMPLATE, SRCARM))
$(OUTDIR)/$(TARGET).bin.o: $(OUTDIR)/$(TARGET).bin
.PHONY: elf lss sym hex bin bino
$(eval $(call OPFW_TEMPLATE,$(OUTDIR)/$(TARGET).bin,$(BOARD_TYPE),$(BOARD_REVISION)))
# Add jtag targets (program and wipe)
$(eval $(call JTAG_TEMPLATE,$(OUTDIR)/$(TARGET).bin,$(FW_BANK_BASE),$(FW_BANK_SIZE)))
.PHONY: elf lss sym hex bin bino opfw
elf: $(OUTDIR)/$(TARGET).elf
lss: $(OUTDIR)/$(TARGET).lss
sym: $(OUTDIR)/$(TARGET).sym
hex: $(OUTDIR)/$(TARGET).hex
bin: $(OUTDIR)/$(TARGET).bin
bino: $(OUTDIR)/$(TARGET).bin.o
opfw: $(OUTDIR)/$(TARGET).opfw
# Display sizes of sections.
$(eval $(call SIZE_TEMPLATE, $(OUTDIR)/$(TARGET).elf))
.PHONY: size
size: $(OUTDIR)/$(TARGET).elf_size
# Generate Doxygen documents
docs:
doxygen $(DOXYGENDIR)/doxygen.cfg
# Install: install binary file with prefix/suffix into install directory
install: $(OUTDIR)/$(TARGET).opfw
ifneq ($(INSTALL_DIR),)
@echo $(MSG_INSTALLING) $(call toprel, $<)
$(V1) mkdir -p $(INSTALL_DIR)
$(V1) $(INSTALL) $< $(INSTALL_DIR)/$(INSTALL_PFX)$(TARGET)$(INSTALL_SFX).opfw
else
$(error INSTALL_DIR must be specified for $@)
endif
# Target: clean project.
clean: clean_list
@ -609,5 +581,4 @@ else
endif
# Listing of phony targets.
.PHONY : all build clean clean_list program gencode
.PHONY : all build clean clean_list gencode install

View File

@ -162,8 +162,10 @@ CFLAGS_UAVOBJECTS = $(UAVOBJDEFINE)
endif
## PIOS Hardware (posix)
SRC += $(PIOSPOSIX)/pios_crc.c
SRC += $(PIOSPOSIX)/pios_sys.c
SRC += $(PIOSPOSIX)/pios_led.c
SRC += $(PIOSPOSIX)/pios_irq.c
SRC += $(PIOSPOSIX)/pios_delay.c
SRC += $(PIOSPOSIX)/pios_sdcard.c
SRC += $(PIOSPOSIX)/pios_udp.c
@ -172,8 +174,10 @@ SRC += $(PIOSPOSIX)/pios_servo.c
SRC += $(PIOSPOSIX)/pios_wdg.c
SRC += $(PIOSPOSIX)/pios_debug.c
SRC += $(PIOSPOSIX)/pios_rcvr.c
## Libraries for flight calculations
#SRC += $(FLIGHTLIB)/fifo_buffer.c
SRC += $(FLIGHTLIB)/fifo_buffer.c
SRC += $(FLIGHTLIB)/WorldMagModel.c
SRC += $(FLIGHTLIB)/CoordinateConversions.c
## RTOS and RTOS Portable
@ -440,9 +444,13 @@ ${OUTDIR}/InitMods.c: Makefile.posix
@echo ${MSG_MODINIT}
@echo ${quote}// Autogenerated file${quote} > ${OUTDIR}/InitMods.c
@echo ${quote}${foreach MOD, ${MODNAMES}, extern unsigned int ${MOD}Initialize(void);}${quote} >> ${OUTDIR}/InitMods.c
@echo ${quote}${foreach MOD, ${MODNAMES}, extern unsigned int ${MOD}Start(void);}${quote} >> ${OUTDIR}/InitMods.c
@echo ${quote}void InitModules() {${quote} >> ${OUTDIR}/InitMods.c
@echo ${quote}${foreach MOD, ${MODNAMES}, ${MOD}Initialize();}${quote} >> ${OUTDIR}/InitMods.c
@echo ${quote}}${quote} >> ${OUTDIR}/InitMods.c
@echo ${quote}void StartModules() {${quote} >> ${OUTDIR}/InitMods.c
@echo ${quote}${foreach MOD, ${MODNAMES}, ${MOD}Start();}${quote} >> ${OUTDIR}/InitMods.c
@echo ${quote}}${quote} >> ${OUTDIR}/InitMods.c
# Generate code for PyMite
${OUTDIR}/pmlib_img.c ${OUTDIR}/pmlib_nat.c ${OUTDIR}/pmlibusr_img.c ${OUTDIR}/pmlibusr_nat.c ${OUTDIR}/pmfeatures.h: $(wildcard ${PYMITELIB}/*.py) $(wildcard ${PYMITEPLAT}/*.py) $(wildcard ${FLIGHTPLANLIB}/*.py) $(wildcard ${FLIGHTPLANS}/*.py) $(wildcard $(UAVOBJPYTHONSYNTHDIR)/*.py)

View File

@ -166,6 +166,7 @@ SRC += $(PIOSWIN32)/pios_udp.c
SRC += $(PIOSWIN32)/pios_com.c
SRC += $(PIOSWIN32)/pios_servo.c
SRC += $(PIOSWIN32)/pios_wdg.c
SRC += $(PIOSWIN32)/pios_crc.c
#
## RTOS
SRC += $(RTOSSRCDIR)/list.c

View File

@ -45,10 +45,8 @@ static int32_t hasSeverity(SystemAlarmsAlarmOptions severity);
*/
int32_t AlarmsInitialize(void)
{
SystemAlarmsInitialize();
lock = xSemaphoreCreateRecursiveMutex();
//do not change the default states of the alarms, let the init code generated by the uavobjectgenerator handle that
//AlarmsClearAll();
//AlarmsDefaultAll();
return 0;
}

View File

@ -39,7 +39,7 @@
#define configUSE_RECURSIVE_MUTEXES 1
#define configUSE_COUNTING_SEMAPHORES 0
#define configUSE_ALTERNATIVE_API 0
#define configCHECK_FOR_STACK_OVERFLOW 2
//#define configCHECK_FOR_STACK_OVERFLOW 2
#define configQUEUE_REGISTRY_SIZE 10
/* Co-routine definitions. */
@ -72,14 +72,24 @@ NVIC value of 255. */
#define configLIBRARY_KERNEL_INTERRUPT_PRIORITY 15
/* Enable run time stats collection */
#if defined(DEBUG)
#if defined(DIAGNOSTICS)
#define configCHECK_FOR_STACK_OVERFLOW 2
#define configGENERATE_RUN_TIME_STATS 1
#define INCLUDE_uxTaskGetRunTime 1
#define portCONFIGURE_TIMER_FOR_RUN_TIME_STATS() PIOS_RTC_Start()
// Note: Using the tick count defeats the purpose here, need some timer on the scale of 10khz
#define portGET_RUN_TIME_COUNTER_VALUE() PIOS_RTC_Counter()
#define portCONFIGURE_TIMER_FOR_RUN_TIME_STATS()\
do {\
(*(unsigned long *)0xe000edfc) |= (1<<24);/* DEMCR |= DEMCR_TRCENA */\
(*(unsigned long *)0xe0001000) |= 1; /* DWT_CTRL |= DWT_CYCCNT_ENA */\
} while(0)
#define portGET_RUN_TIME_COUNTER_VALUE() (*(unsigned long *)0xe0001004)/* DWT_CYCCNT */
#else
#define configCHECK_FOR_STACK_OVERFLOW 1
#endif
#if !defined(ARCH_POSIX) && !defined(ARCH_WIN32)
#define CHECK_IRQ_STACK
#endif
/**
* @}

View File

@ -52,15 +52,22 @@
//-------------------------
//#define PIOS_USART_TX_BUFFER_SIZE 256
#define PIOS_COM_BUFFER_SIZE 1024
#define PIOS_COM_MAX_DEVS 256
#define PIOS_UDP_RX_BUFFER_SIZE PIOS_COM_BUFFER_SIZE
#define PIOS_COM_TELEM_RF 0
#define PIOS_COM_GPS 1
#define PIOS_COM_TELEM_USB 2
extern uint32_t pios_com_telem_rf_id;
extern uint32_t pios_com_telem_usb_id;
extern uint32_t pios_com_gps_id;
extern uint32_t pios_com_aux_id;
extern uint32_t pios_com_spectrum_id;
#define PIOS_COM_TELEM_RF (pios_com_telem_rf_id)
#define PIOS_COM_TELEM_USB (pios_com_telem_usb_id)
#define PIOS_COM_GPS (pios_com_gps_id)
#ifdef PIOS_ENABLE_AUX_UART
#define PIOS_COM_AUX 3
#define PIOS_COM_DEBUG PIOS_COM_AUX
#define PIOS_COM_AUX (pios_com_aux_id)
#define PIOS_COM_DEBUG (PIOS_COM_AUX
#endif
/**

View File

@ -42,12 +42,14 @@
#define PIOS_INCLUDE_IRQ
#define PIOS_INCLUDE_LED
#if defined(USE_SPEKTRUM)
#define PIOS_INCLUDE_RCVR
#define PIOS_INCLUDE_SPEKTRUM
#else
//#define PIOS_INCLUDE_PPM
//#define PIOS_INCLUDE_SBUS
#define PIOS_INCLUDE_PWM
#endif
//#define PIOS_INCLUDE_PPM
#define PIOS_INCLUDE_TELEMETRY_RF
#define PIOS_INCLUDE_SERVO
#define PIOS_INCLUDE_SPI
@ -58,6 +60,7 @@
//#define PIOS_INCLUDE_HCSR04
#define PIOS_INCLUDE_OPAHRS
#define PIOS_INCLUDE_COM
#define PIOS_INCLUDE_GPS
#define PIOS_INCLUDE_SDCARD
#define PIOS_INCLUDE_SETTINGS
#define PIOS_INCLUDE_FREERTOS
@ -84,6 +87,8 @@
/* Alarm Thresholds */
#define HEAP_LIMIT_WARNING 4000
#define HEAP_LIMIT_CRITICAL 1000
#define IRQSTACK_LIMIT_WARNING 150
#define IRQSTACK_LIMIT_CRITICAL 80
#define CPULOAD_LIMIT_WARNING 80
#define CPULOAD_LIMIT_CRITICAL 95

View File

@ -36,9 +36,15 @@
#define PIOS_INCLUDE_SDCARD
#define PIOS_INCLUDE_FREERTOS
#define PIOS_INCLUDE_COM
#define PIOS_INCLUDE_GPS
#define PIOS_INCLUDE_IRQ
#define PIOS_INCLUDE_TELEMETRY_RF
#define PIOS_INCLUDE_UDP
#define PIOS_INCLUDE_SERVO
#define PIOS_INCLUDE_RCVR
#define PIOS_RCVR_MAX_CHANNELS 12
#define PIOS_RCVR_MAX_DEVS 3
/* Defaults for Logging */
#define LOG_FILENAME "PIOS.LOG"

View File

@ -62,11 +62,10 @@ static void TaskSDCard(void *pvParameters);
int32_t CONSOLE_Parse(uint8_t port, char c);
void OP_ADC_NotifyChange(uint32_t pin, uint32_t pin_value);
/* Prototype of generated InitModules() function */
extern void InitModules(void);
/* Prototype of PIOS_Board_Init() function */
extern void PIOS_Board_Init(void);
extern void Stack_Change(void);
static void Stack_Change_Weak () __attribute__ ((weakref ("Stack_Change")));
/**
* OpenPilot Main function:
@ -85,48 +84,42 @@ int main()
/* Brings up System using CMSIS functions, enables the LEDs. */
PIOS_SYS_Init();
/* Initialize the system thread */
SystemModInitialize();
/* Start the FreeRTOS scheduler */
vTaskStartScheduler();
/* If all is well we will never reach here as the scheduler will now be running. */
/* If we do get here, it will most likely be because we ran out of heap space. */
PIOS_LED_Off(LED1);
PIOS_LED_Off(LED2);
for(;;) {
PIOS_LED_Toggle(LED1);
PIOS_LED_Toggle(LED2);
PIOS_DELAY_WaitmS(100);
}
return 0;
}
/**
* Initialize the hardware, libraries and modules (called by the System thread in systemmod.c)
*/
void OpenPilotInit()
{
/* Architecture dependant Hardware and
* core subsystem initialisation
* (see pios_board.c for your arch)
* */
PIOS_Board_Init();
/* Initialize modules */
InitModules();
MODULE_INITIALISE_ALL
#if INCLUDE_TEST_TASKS
/* Create test tasks */
//xTaskCreate(TaskTesting, (signed portCHAR *)"Testing", configMINIMAL_STACK_SIZE , NULL, 4, NULL);
//xTaskCreate(TaskHIDTest, (signed portCHAR *)"HIDTest", configMINIMAL_STACK_SIZE , NULL, 3, NULL);
//xTaskCreate(TaskServos, (signed portCHAR *)"Servos", configMINIMAL_STACK_SIZE , NULL, 3, NULL);
//xTaskCreate(TaskSDCard, (signed portCHAR *)"SDCard", configMINIMAL_STACK_SIZE, NULL, (tskIDLE_PRIORITY + 2), NULL);
xTaskCreate(TaskTesting, (signed portCHAR *)"Testing", configMINIMAL_STACK_SIZE , NULL, 4, NULL);
xTaskCreate(TaskHIDTest, (signed portCHAR *)"HIDTest", configMINIMAL_STACK_SIZE , NULL, 3, NULL);
xTaskCreate(TaskServos, (signed portCHAR *)"Servos", configMINIMAL_STACK_SIZE , NULL, 3, NULL);
xTaskCreate(TaskSDCard, (signed portCHAR *)"SDCard", configMINIMAL_STACK_SIZE, NULL, (tskIDLE_PRIORITY + 2), NULL);
#endif
/* swap the stack to use the IRQ stack (does nothing in sim mode) */
Stack_Change_Weak();
/* Start the FreeRTOS scheduler which should never returns.*/
vTaskStartScheduler();
/* If all is well we will never reach here as the scheduler will now be running. */
/* Do some indication to user that something bad just happened */
PIOS_LED_Off(LED1); \
for(;;) { \
PIOS_LED_Toggle(LED1); \
PIOS_DELAY_WaitmS(100); \
};
return 0;
}
#if INCLUDE_TEST_TASKS
static void TaskTesting(void *pvParameters)
{
@ -153,6 +146,9 @@ static void TaskTesting(void *pvParameters)
#if defined(PIOS_INCLUDE_SPEKTRUM)
PIOS_COM_SendFormattedStringNonBlocking(COM_DEBUG_USART, "%u,%u,%u,%u,%u,%u,%u,%u\r", PIOS_SPEKTRUM_Get(0), PIOS_SPEKTRUM_Get(1), PIOS_SPEKTRUM_Get(2), PIOS_SPEKTRUM_Get(3), PIOS_SPEKTRUM_Get(4), PIOS_SPEKTRUM_Get(5), PIOS_SPEKTRUM_Get(6), PIOS_SPEKTRUM_Get(7));
#endif
#if defined(PIOS_INCLUDE_SBUS)
PIOS_COM_SendFormattedStringNonBlocking(COM_DEBUG_USART, "%u,%u,%u,%u,%u,%u,%u,%u\r", PIOS_SBUS_Get(0), PIOS_SBUS_Get(1), PIOS_SBUS_Get(2), PIOS_SBUS_Get(3), PIOS_SBUS_Get(4), PIOS_SBUS_Get(5), PIOS_SBUS_Get(6), PIOS_SBUS_Get(7));
#endif
#if defined(PIOS_INCLUDE_PWM)
PIOS_COM_SendFormattedStringNonBlocking(COM_DEBUG_USART, "%u,%u,%u,%u,%u,%u,%u,%u uS\r", PIOS_PWM_Get(0), PIOS_PWM_Get(1), PIOS_PWM_Get(2), PIOS_PWM_Get(3), PIOS_PWM_Get(4), PIOS_PWM_Get(5), PIOS_PWM_Get(6), PIOS_PWM_Get(7));
#endif

View File

@ -30,6 +30,7 @@
#include <pios.h>
#include <openpilot.h>
#include <uavobjectsinit.h>
#include "manualcontrolsettings.h"
//#define I2C_DEBUG_PIN 0
//#define USART_GPS_DEBUG_PIN 1
@ -46,7 +47,7 @@
void PIOS_SPI_sdcard_irq_handler(void);
void DMA1_Channel2_IRQHandler() __attribute__ ((alias ("PIOS_SPI_sdcard_irq_handler")));
void DMA1_Channel3_IRQHandler() __attribute__ ((alias ("PIOS_SPI_sdcard_irq_handler")));
const struct pios_spi_cfg pios_spi_sdcard_cfg = {
static const struct pios_spi_cfg pios_spi_sdcard_cfg = {
.regs = SPI1,
.init = {
.SPI_Mode = SPI_Mode_Master,
@ -63,7 +64,6 @@ const struct pios_spi_cfg pios_spi_sdcard_cfg = {
.ahb_clk = RCC_AHBPeriph_DMA1,
.irq = {
.handler = PIOS_SPI_sdcard_irq_handler,
.flags = (DMA1_FLAG_TC2 | DMA1_FLAG_TE2 | DMA1_FLAG_HT2 | DMA1_FLAG_GL2),
.init = {
.NVIC_IRQChannel = DMA1_Channel2_IRQn,
@ -144,7 +144,7 @@ const struct pios_spi_cfg pios_spi_sdcard_cfg = {
void PIOS_SPI_ahrs_irq_handler(void);
void DMA1_Channel4_IRQHandler() __attribute__ ((alias ("PIOS_SPI_ahrs_irq_handler")));
void DMA1_Channel5_IRQHandler() __attribute__ ((alias ("PIOS_SPI_ahrs_irq_handler")));
const struct pios_spi_cfg pios_spi_ahrs_cfg = {
static const struct pios_spi_cfg pios_spi_ahrs_cfg = {
.regs = SPI2,
.init = {
.SPI_Mode = SPI_Mode_Master,
@ -162,7 +162,6 @@ const struct pios_spi_cfg pios_spi_ahrs_cfg = {
.ahb_clk = RCC_AHBPeriph_DMA1,
.irq = {
.handler = PIOS_SPI_ahrs_irq_handler,
.flags = (DMA1_FLAG_TC4 | DMA1_FLAG_TE4 | DMA1_FLAG_HT4 | DMA1_FLAG_GL4),
.init = {
.NVIC_IRQChannel = DMA1_Channel4_IRQn,
@ -258,11 +257,10 @@ void PIOS_SPI_ahrs_irq_handler(void)
extern void PIOS_ADC_handler(void);
void DMA1_Channel1_IRQHandler() __attribute__ ((alias("PIOS_ADC_handler")));
// Remap the ADC DMA handler to this one
const struct pios_adc_cfg pios_adc_cfg = {
static const struct pios_adc_cfg pios_adc_cfg = {
.dma = {
.ahb_clk = RCC_AHBPeriph_DMA1,
.irq = {
.handler = PIOS_ADC_DMA_Handler,
.flags = (DMA1_FLAG_TC1 | DMA1_FLAG_TE1 | DMA1_FLAG_HT1 | DMA1_FLAG_GL1),
.init = {
.NVIC_IRQChannel = DMA1_Channel1_IRQn,
@ -310,16 +308,10 @@ void PIOS_ADC_handler() {
/*
* Telemetry USART
*/
void PIOS_USART_telem_irq_handler(void);
void USART2_IRQHandler() __attribute__ ((alias ("PIOS_USART_telem_irq_handler")));
const struct pios_usart_cfg pios_usart_telem_cfg = {
static const struct pios_usart_cfg pios_usart_telem_cfg = {
.regs = USART2,
.init = {
#if defined (PIOS_COM_TELEM_BAUDRATE)
.USART_BaudRate = PIOS_COM_TELEM_BAUDRATE,
#else
.USART_BaudRate = 57600,
#endif
.USART_WordLength = USART_WordLength_8b,
.USART_Parity = USART_Parity_No,
.USART_StopBits = USART_StopBits_1,
@ -327,7 +319,6 @@ const struct pios_usart_cfg pios_usart_telem_cfg = {
.USART_Mode = USART_Mode_Rx | USART_Mode_Tx,
},
.irq = {
.handler = PIOS_USART_telem_irq_handler,
.init = {
.NVIC_IRQChannel = USART2_IRQn,
.NVIC_IRQChannelPreemptionPriority = PIOS_IRQ_PRIO_MID,
@ -356,17 +347,11 @@ const struct pios_usart_cfg pios_usart_telem_cfg = {
/*
* GPS USART
*/
void PIOS_USART_gps_irq_handler(void);
void USART3_IRQHandler() __attribute__ ((alias ("PIOS_USART_gps_irq_handler")));
const struct pios_usart_cfg pios_usart_gps_cfg = {
static const struct pios_usart_cfg pios_usart_gps_cfg = {
.regs = USART3,
.remap = GPIO_PartialRemap_USART3,
.init = {
#if defined (PIOS_COM_GPS_BAUDRATE)
.USART_BaudRate = PIOS_COM_GPS_BAUDRATE,
#else
.USART_BaudRate = 57600,
#endif
.USART_WordLength = USART_WordLength_8b,
.USART_Parity = USART_Parity_No,
.USART_StopBits = USART_StopBits_1,
@ -374,7 +359,6 @@ const struct pios_usart_cfg pios_usart_gps_cfg = {
.USART_Mode = USART_Mode_Rx | USART_Mode_Tx,
},
.irq = {
.handler = PIOS_USART_gps_irq_handler,
.init = {
.NVIC_IRQChannel = USART3_IRQn,
.NVIC_IRQChannelPreemptionPriority = PIOS_IRQ_PRIO_MID,
@ -404,16 +388,9 @@ const struct pios_usart_cfg pios_usart_gps_cfg = {
/*
* AUX USART
*/
void PIOS_USART_aux_irq_handler(void);
void USART1_IRQHandler() __attribute__ ((alias ("PIOS_USART_aux_irq_handler")));
const struct pios_usart_cfg pios_usart_aux_cfg = {
static const struct pios_usart_cfg pios_usart_aux_cfg = {
.regs = USART1,
.init = {
#if defined (PIOS_COM_AUX_BAUDRATE)
.USART_BaudRate = PIOS_COM_AUX_BAUDRATE,
#else
.USART_BaudRate = 57600,
#endif
.USART_BaudRate = 57600,
.USART_WordLength = USART_WordLength_8b,
.USART_Parity = USART_Parity_No,
@ -422,7 +399,6 @@ const struct pios_usart_cfg pios_usart_aux_cfg = {
.USART_Mode = USART_Mode_Rx | USART_Mode_Tx,
},
.irq = {
.handler = PIOS_USART_aux_irq_handler,
.init = {
.NVIC_IRQChannel = USART1_IRQn,
.NVIC_IRQChannelPreemptionPriority = PIOS_IRQ_PRIO_MID,
@ -450,20 +426,44 @@ const struct pios_usart_cfg pios_usart_aux_cfg = {
};
#endif
#ifdef PIOS_COM_SPEKTRUM
#if defined(PIOS_INCLUDE_RTC)
/*
* Realtime Clock (RTC)
*/
#include <pios_rtc_priv.h>
void PIOS_RTC_IRQ_Handler (void);
void RTC_IRQHandler() __attribute__ ((alias ("PIOS_RTC_IRQ_Handler")));
static const struct pios_rtc_cfg pios_rtc_main_cfg = {
.clksrc = RCC_RTCCLKSource_HSE_Div128,
.prescaler = 100,
.irq = {
.init = {
.NVIC_IRQChannel = RTC_IRQn,
.NVIC_IRQChannelPreemptionPriority = PIOS_IRQ_PRIO_MID,
.NVIC_IRQChannelSubPriority = 0,
.NVIC_IRQChannelCmd = ENABLE,
},
},
};
void PIOS_RTC_IRQ_Handler (void)
{
PIOS_RTC_irq_handler ();
}
#endif
#if defined(PIOS_INCLUDE_SPEKTRUM)
/*
* SPEKTRUM USART
*/
void PIOS_USART_spektrum_irq_handler(void);
void USART1_IRQHandler() __attribute__ ((alias ("PIOS_USART_spektrum_irq_handler")));
const struct pios_usart_cfg pios_usart_spektrum_cfg = {
#include <pios_spektrum_priv.h>
static const struct pios_usart_cfg pios_usart_spektrum_cfg = {
.regs = USART1,
.init = {
#if defined (PIOS_COM_SPEKTRUM_BAUDRATE)
.USART_BaudRate = PIOS_COM_SPEKTRUM_BAUDRATE,
#else
.USART_BaudRate = 115200,
#endif
.USART_WordLength = USART_WordLength_8b,
.USART_Parity = USART_Parity_No,
.USART_StopBits = USART_StopBits_1,
@ -471,7 +471,6 @@ const struct pios_usart_cfg pios_usart_spektrum_cfg = {
.USART_Mode = USART_Mode_Rx,
},
.irq = {
.handler = PIOS_USART_spektrum_irq_handler,
.init = {
.NVIC_IRQChannel = USART1_IRQn,
.NVIC_IRQChannelPreemptionPriority = PIOS_IRQ_PRIO_HIGH,
@ -497,75 +496,24 @@ const struct pios_usart_cfg pios_usart_spektrum_cfg = {
},
};
static uint32_t pios_usart_spektrum_id;
void PIOS_USART_spektrum_irq_handler(void)
{
SPEKTRUM_IRQHandler(pios_usart_spektrum_id);
}
#include <pios_spektrum_priv.h>
void TIM6_IRQHandler();
void TIM6_IRQHandler() __attribute__ ((alias ("PIOS_TIM6_irq_handler")));
const struct pios_spektrum_cfg pios_spektrum_cfg = {
.pios_usart_spektrum_cfg = &pios_usart_spektrum_cfg,
.tim_base_init = {
.TIM_Prescaler = (PIOS_MASTER_CLOCK / 1000000) - 1, /* For 1 uS accuracy */
.TIM_ClockDivision = TIM_CKD_DIV1,
.TIM_CounterMode = TIM_CounterMode_Up,
.TIM_Period = ((1000000 / 120) - 1), //11ms-10*16b/115200bps, atleast one interrupt between frames
.TIM_RepetitionCounter = 0x0000,
},
.gpio_init = { //used for bind feature
.GPIO_Mode = GPIO_Mode_Out_PP,
static const struct pios_spektrum_cfg pios_spektrum_cfg = {
.bind = {
.gpio = GPIOA,
.init = {
.GPIO_Pin = GPIO_Pin_10,
.GPIO_Speed = GPIO_Speed_2MHz,
.GPIO_Mode = GPIO_Mode_Out_PP,
},
},
.remap = 0,
.irq = {
.handler = TIM6_IRQHandler,
.init = {
.NVIC_IRQChannelPreemptionPriority = PIOS_IRQ_PRIO_MID,
.NVIC_IRQChannelSubPriority = 0,
.NVIC_IRQChannelCmd = ENABLE,
},
},
.timer = TIM6,
.port = GPIOA,
.ccr = TIM_IT_Update,
.pin = GPIO_Pin_10,
};
void PIOS_TIM6_irq_handler()
{
PIOS_SPEKTRUM_irq_handler();
}
#endif /* PIOS_COM_SPEKTRUM */
static uint32_t pios_usart_telem_rf_id;
void PIOS_USART_telem_irq_handler(void)
{
PIOS_USART_IRQ_Handler(pios_usart_telem_rf_id);
}
static uint32_t pios_usart_gps_id;
void PIOS_USART_gps_irq_handler(void)
{
#ifdef USART_GPS_DEBUG_PIN
PIOS_DEBUG_PinHigh(USART_GPS_DEBUG_PIN);
#endif
PIOS_USART_IRQ_Handler(pios_usart_gps_id);
#ifdef USART_GPS_DEBUG_PIN
PIOS_DEBUG_PinLow(USART_GPS_DEBUG_PIN);
#endif
}
#ifdef PIOS_COM_AUX
static uint32_t pios_usart_aux_id;
void PIOS_USART_aux_irq_handler(void)
{
PIOS_USART_IRQ_Handler(pios_usart_aux_id);
}
#endif
#if defined(PIOS_INCLUDE_SBUS)
#error PIOS_INCLUDE_SBUS not implemented
#endif /* PIOS_INCLUDE_SBUS */
#endif /* PIOS_INCLUDE_USART */
@ -573,13 +521,22 @@ void PIOS_USART_aux_irq_handler(void)
#include "pios_com_priv.h"
#define PIOS_COM_TELEM_RF_RX_BUF_LEN 192
#define PIOS_COM_TELEM_RF_TX_BUF_LEN 192
#define PIOS_COM_GPS_RX_BUF_LEN 96
#define PIOS_COM_GPS_TX_BUF_LEN 96
#define PIOS_COM_TELEM_USB_RX_BUF_LEN 192
#define PIOS_COM_TELEM_USB_TX_BUF_LEN 192
#endif /* PIOS_INCLUDE_COM */
/**
* Pios servo configuration structures
*/
#include <pios_servo_priv.h>
const struct pios_servo_channel pios_servo_channels[] = {
static const struct pios_servo_channel pios_servo_channels[] = {
{
.timer = TIM4,
.port = GPIOB,
@ -663,7 +620,7 @@ const struct pios_servo_cfg pios_servo_cfg = {
*/
#if defined(PIOS_INCLUDE_PWM)
#include <pios_pwm_priv.h>
const struct pios_pwm_channel pios_pwm_channels[] = {
static const struct pios_pwm_channel pios_pwm_channels[] = {
{
.timer = TIM1,
.port = GPIOA,
@ -748,7 +705,6 @@ const struct pios_pwm_cfg pios_pwm_cfg = {
},
.remap = GPIO_PartialRemap_TIM3,
.irq = {
.handler = TIM1_CC_IRQHandler,
.init = {
.NVIC_IRQChannelPreemptionPriority = PIOS_IRQ_PRIO_MID,
.NVIC_IRQChannelSubPriority = 0,
@ -779,7 +735,7 @@ void PIOS_TIM5_irq_handler()
#include <pios_ppm_priv.h>
void TIM6_IRQHandler();
void TIM6_IRQHandler() __attribute__ ((alias ("PIOS_TIM6_irq_handler")));
const struct pios_ppmsv_cfg pios_ppmsv_cfg = {
static const struct pios_ppmsv_cfg pios_ppmsv_cfg = {
.tim_base_init = {
.TIM_Prescaler = (PIOS_MASTER_CLOCK / 1000000) - 1, /* For 1 uS accuracy */
.TIM_ClockDivision = TIM_CKD_DIV1,
@ -788,7 +744,6 @@ const struct pios_ppmsv_cfg pios_ppmsv_cfg = {
.TIM_RepetitionCounter = 0x0000,
},
.irq = {
.handler = TIM6_IRQHandler,
.init = {
.NVIC_IRQChannelPreemptionPriority = PIOS_IRQ_PRIO_MID,
.NVIC_IRQChannelSubPriority = 0,
@ -799,14 +754,14 @@ const struct pios_ppmsv_cfg pios_ppmsv_cfg = {
.ccr = TIM_IT_Update,
};
void PIOS_TIM6_irq_handler()
void PIOS_TIM6_irq_handler(void)
{
PIOS_PPMSV_irq_handler();
}
void TIM1_CC_IRQHandler();
void TIM1_CC_IRQHandler() __attribute__ ((alias ("PIOS_TIM1_CC_irq_handler")));
const struct pios_ppm_cfg pios_ppm_cfg = {
static const struct pios_ppm_cfg pios_ppm_cfg = {
.tim_base_init = {
.TIM_Prescaler = (PIOS_MASTER_CLOCK / 1000000) - 1, /* For 1 uS accuracy */
.TIM_ClockDivision = TIM_CKD_DIV1,
@ -828,7 +783,6 @@ const struct pios_ppm_cfg pios_ppm_cfg = {
},
.remap = 0,
.irq = {
.handler = TIM1_CC_IRQHandler,
.init = {
.NVIC_IRQChannelPreemptionPriority = PIOS_IRQ_PRIO_MID,
.NVIC_IRQChannelSubPriority = 0,
@ -841,7 +795,7 @@ const struct pios_ppm_cfg pios_ppm_cfg = {
.ccr = TIM_IT_CC2,
};
void PIOS_TIM1_CC_irq_handler()
void PIOS_TIM1_CC_irq_handler(void)
{
PIOS_PPM_irq_handler();
}
@ -861,7 +815,7 @@ void PIOS_I2C_main_adapter_er_irq_handler(void);
void I2C2_EV_IRQHandler() __attribute__ ((alias ("PIOS_I2C_main_adapter_ev_irq_handler")));
void I2C2_ER_IRQHandler() __attribute__ ((alias ("PIOS_I2C_main_adapter_er_irq_handler")));
const struct pios_i2c_adapter_cfg pios_i2c_main_adapter_cfg = {
static const struct pios_i2c_adapter_cfg pios_i2c_main_adapter_cfg = {
.regs = I2C2,
.init = {
.I2C_Mode = I2C_Mode_I2C,
@ -889,7 +843,6 @@ const struct pios_i2c_adapter_cfg pios_i2c_main_adapter_cfg = {
},
},
.event = {
.handler = PIOS_I2C_main_adapter_ev_irq_handler,
.flags = 0, /* FIXME: check this */
.init = {
.NVIC_IRQChannel = I2C2_EV_IRQn,
@ -899,7 +852,6 @@ const struct pios_i2c_adapter_cfg pios_i2c_main_adapter_cfg = {
},
},
.error = {
.handler = PIOS_I2C_main_adapter_er_irq_handler,
.flags = 0, /* FIXME: check this */
.init = {
.NVIC_IRQChannel = I2C2_ER_IRQn,
@ -1010,6 +962,28 @@ static const struct stm32_gpio pios_debug_pins[] = {
#endif /* PIOS_ENABLE_DEBUG_PINS */
#if defined(PIOS_INCLUDE_RCVR)
#include "pios_rcvr_priv.h"
struct pios_rcvr_channel_map pios_rcvr_channel_to_id_map[PIOS_RCVR_MAX_CHANNELS];
uint32_t pios_rcvr_max_channel;
#endif /* PIOS_INCLUDE_RCVR */
#if defined(PIOS_INCLUDE_USB_HID)
#include "pios_usb_hid_priv.h"
static const struct pios_usb_hid_cfg pios_usb_hid_main_cfg = {
.irq = {
.init = {
.NVIC_IRQChannel = USB_LP_CAN1_RX0_IRQn,
.NVIC_IRQChannelPreemptionPriority = PIOS_IRQ_PRIO_LOW,
.NVIC_IRQChannelSubPriority = 0,
.NVIC_IRQChannelCmd = ENABLE,
},
},
};
#endif /* PIOS_INCLUDE_USB_HID */
extern const struct pios_com_driver pios_usb_com_driver;
uint32_t pios_com_telem_rf_id;
@ -1039,7 +1013,7 @@ void PIOS_Board_Init(void) {
#if defined(PIOS_INCLUDE_SPI)
/* Set up the SPI interface to the SD card */
if (PIOS_SPI_Init(&pios_spi_sdcard_id, &pios_spi_sdcard_cfg)) {
PIOS_DEBUG_Assert(0);
PIOS_Assert(0);
}
/* Enable and mount the SDCard */
@ -1047,21 +1021,14 @@ void PIOS_Board_Init(void) {
PIOS_SDCARD_MountFS(0);
#endif /* PIOS_INCLUDE_SPI */
#if defined(PIOS_INCLUDE_SPEKTRUM)
/* SPEKTRUM init must come before comms */
PIOS_SPEKTRUM_Init();
if (PIOS_USART_Init(&pios_usart_spektrum_id, &pios_usart_spektrum_cfg)) {
PIOS_DEBUG_Assert(0);
}
if (PIOS_COM_Init(&pios_com_spektrum_id, &pios_usart_com_driver, pios_usart_spektrum_id)) {
PIOS_DEBUG_Assert(0);
}
#endif
/* Initialize UAVObject libraries */
EventDispatcherInitialize();
UAVObjInitialize();
UAVObjectsInitializeAll();
#if defined(PIOS_INCLUDE_RTC)
/* Initialize the real-time clock and its associated tick */
PIOS_RTC_Init(&pios_rtc_main_cfg);
#endif
/* Initialize the alarms library */
AlarmsInitialize();
@ -1074,7 +1041,7 @@ void PIOS_Board_Init(void) {
/* Set up the SPI interface to the AHRS */
if (PIOS_SPI_Init(&pios_spi_ahrs_id, &pios_spi_ahrs_cfg)) {
PIOS_DEBUG_Assert(0);
PIOS_Assert(0);
}
/* Bind the AHRS comms layer to the AHRS SPI link */
@ -1082,43 +1049,147 @@ void PIOS_Board_Init(void) {
/* Initialize the PiOS library */
#if defined(PIOS_INCLUDE_COM)
#if defined(PIOS_INCLUDE_TELEMETRY_RF)
{
uint32_t pios_usart_telem_rf_id;
if (PIOS_USART_Init(&pios_usart_telem_rf_id, &pios_usart_telem_cfg)) {
PIOS_DEBUG_Assert(0);
}
if (PIOS_COM_Init(&pios_com_telem_rf_id, &pios_usart_com_driver, pios_usart_telem_rf_id)) {
PIOS_DEBUG_Assert(0);
PIOS_Assert(0);
}
uint8_t * rx_buffer = (uint8_t *) pvPortMalloc(PIOS_COM_TELEM_RF_RX_BUF_LEN);
uint8_t * tx_buffer = (uint8_t *) pvPortMalloc(PIOS_COM_TELEM_RF_TX_BUF_LEN);
PIOS_Assert(rx_buffer);
PIOS_Assert(tx_buffer);
if (PIOS_COM_Init(&pios_com_telem_rf_id, &pios_usart_com_driver, pios_usart_telem_rf_id,
rx_buffer, PIOS_COM_TELEM_RF_RX_BUF_LEN,
tx_buffer, PIOS_COM_TELEM_RF_TX_BUF_LEN)) {
PIOS_Assert(0);
}
}
#endif /* PIOS_INCLUDE_TELEMETRY_RF */
#if defined(PIOS_INCLUDE_GPS)
{
uint32_t pios_usart_gps_id;
if (PIOS_USART_Init(&pios_usart_gps_id, &pios_usart_gps_cfg)) {
PIOS_DEBUG_Assert(0);
PIOS_Assert(0);
}
if (PIOS_COM_Init(&pios_com_gps_id, &pios_usart_com_driver, pios_usart_gps_id)) {
PIOS_DEBUG_Assert(0);
uint8_t * rx_buffer = (uint8_t *) pvPortMalloc(PIOS_COM_GPS_RX_BUF_LEN);
uint8_t * tx_buffer = (uint8_t *) pvPortMalloc(PIOS_COM_GPS_TX_BUF_LEN);
PIOS_Assert(rx_buffer);
PIOS_Assert(tx_buffer);
if (PIOS_COM_Init(&pios_com_gps_id, &pios_usart_com_driver, pios_usart_gps_id,
rx_buffer, PIOS_COM_GPS_RX_BUF_LEN,
tx_buffer, PIOS_COM_GPS_TX_BUF_LEN)) {
PIOS_Assert(0);
}
}
#endif /* PIOS_INCLUDE_GPS */
#endif
PIOS_Servo_Init();
PIOS_ADC_Init();
PIOS_GPIO_Init();
/* Configure the selected receiver */
uint8_t manualcontrolsettings_inputmode;
ManualControlSettingsInputModeGet(&manualcontrolsettings_inputmode);
switch (manualcontrolsettings_inputmode) {
case MANUALCONTROLSETTINGS_INPUTMODE_PWM:
#if defined(PIOS_INCLUDE_PWM)
#if (PIOS_PWM_NUM_INPUTS > PIOS_RCVR_MAX_CHANNELS)
#error More receiver inputs than available devices
#endif
PIOS_PWM_Init();
#endif
uint32_t pios_pwm_rcvr_id;
if (PIOS_RCVR_Init(&pios_pwm_rcvr_id, &pios_pwm_rcvr_driver, 0)) {
PIOS_Assert(0);
}
for (uint8_t i = 0;
i < PIOS_PWM_NUM_INPUTS && pios_rcvr_max_channel < NELEMENTS(pios_rcvr_channel_to_id_map);
i++) {
pios_rcvr_channel_to_id_map[pios_rcvr_max_channel].id = pios_pwm_rcvr_id;
pios_rcvr_channel_to_id_map[pios_rcvr_max_channel].channel = i;
pios_rcvr_max_channel++;
}
#endif /* PIOS_INCLUDE_PWM */
break;
case MANUALCONTROLSETTINGS_INPUTMODE_PPM:
#if defined(PIOS_INCLUDE_PPM)
PIOS_PPM_Init();
#if (PIOS_PPM_NUM_INPUTS > PIOS_RCVR_MAX_CHANNELS)
#error More receiver inputs than available devices
#endif
PIOS_PPM_Init();
uint32_t pios_ppm_rcvr_id;
if (PIOS_RCVR_Init(&pios_ppm_rcvr_id, &pios_ppm_rcvr_driver, 0)) {
PIOS_Assert(0);
}
for (uint8_t i = 0;
i < PIOS_PPM_NUM_INPUTS && pios_rcvr_max_channel < NELEMENTS(pios_rcvr_channel_to_id_map);
i++) {
pios_rcvr_channel_to_id_map[pios_rcvr_max_channel].id = pios_ppm_rcvr_id;
pios_rcvr_channel_to_id_map[pios_rcvr_max_channel].channel = i;
pios_rcvr_max_channel++;
}
#endif /* PIOS_INCLUDE_PPM */
break;
case MANUALCONTROLSETTINGS_INPUTMODE_SPEKTRUM:
#if defined(PIOS_INCLUDE_SPEKTRUM)
#if (PIOS_SPEKTRUM_NUM_INPUTS > PIOS_RCVR_MAX_CHANNELS)
#error More receiver inputs than available devices
#endif
{
uint32_t pios_usart_spektrum_id;
if (PIOS_USART_Init(&pios_usart_spektrum_id, &pios_usart_spektrum_cfg)) {
PIOS_Assert(0);
}
uint32_t pios_spektrum_id;
if (PIOS_SPEKTRUM_Init(&pios_spektrum_id, &pios_spektrum_cfg, &pios_usart_com_driver, pios_usart_spektrum_id, false)) {
PIOS_Assert(0);
}
uint32_t pios_spektrum_rcvr_id;
if (PIOS_RCVR_Init(&pios_spektrum_rcvr_id, &pios_spektrum_rcvr_driver, 0)) {
PIOS_Assert(0);
}
for (uint8_t i = 0;
i < PIOS_SPEKTRUM_NUM_INPUTS && pios_rcvr_max_channel < NELEMENTS(pios_rcvr_channel_to_id_map);
i++) {
pios_rcvr_channel_to_id_map[pios_rcvr_max_channel].id = pios_spektrum_rcvr_id;
pios_rcvr_channel_to_id_map[pios_rcvr_max_channel].channel = i;
pios_rcvr_max_channel++;
}
}
#endif
break;
case MANUALCONTROLSETTINGS_INPUTMODE_SBUS:
#if defined(PIOS_INCLUDE_SBUS)
#error SBUS NOT ON OP YET
#endif /* PIOS_INCLUDE_SBUS */
break;
}
#if defined(PIOS_INCLUDE_USB_HID)
PIOS_USB_HID_Init(0);
uint32_t pios_usb_hid_id;
PIOS_USB_HID_Init(&pios_usb_hid_id, &pios_usb_hid_main_cfg);
#if defined(PIOS_INCLUDE_COM)
if (PIOS_COM_Init(&pios_com_telem_usb_id, &pios_usb_com_driver, 0)) {
PIOS_DEBUG_Assert(0);
uint8_t * rx_buffer = (uint8_t *) pvPortMalloc(PIOS_COM_TELEM_USB_RX_BUF_LEN);
uint8_t * tx_buffer = (uint8_t *) pvPortMalloc(PIOS_COM_TELEM_USB_TX_BUF_LEN);
PIOS_Assert(rx_buffer);
PIOS_Assert(tx_buffer);
if (PIOS_COM_Init(&pios_com_telem_usb_id, &pios_usb_com_driver, pios_usb_hid_id,
rx_buffer, PIOS_COM_TELEM_USB_RX_BUF_LEN,
tx_buffer, PIOS_COM_TELEM_USB_TX_BUF_LEN)) {
PIOS_Assert(0);
}
#endif /* PIOS_INCLUDE_COM */
#endif /* PIOS_INCLUDE_USB_HID */
#if defined(PIOS_INCLUDE_I2C)
if (PIOS_I2C_Init(&pios_i2c_main_adapter_id, &pios_i2c_main_adapter_cfg)) {
PIOS_DEBUG_Assert(0);
PIOS_Assert(0);
}
#endif /* PIOS_INCLUDE_I2C */
PIOS_IAP_Init();

View File

@ -29,42 +29,32 @@
#include <openpilot.h>
#include <uavobjectsinit.h>
/**
* PIOS_Board_Init()
* initializes all the core systems on this specific hardware
* called from System/openpilot.c
*/
void PIOS_Board_Init(void) {
#include "attituderaw.h"
#include "attitudeactual.h"
#include "positionactual.h"
#include "velocityactual.h"
/* Delay system */
PIOS_DELAY_Init();
#include "pios_rcvr_priv.h"
/* Initialize UAVObject libraries */
EventDispatcherInitialize();
UAVObjInitialize();
UAVObjectsInitializeAll();
struct pios_rcvr_channel_map pios_rcvr_channel_to_id_map[PIOS_RCVR_MAX_CHANNELS];
uint32_t pios_rcvr_max_channel;
/* Initialize the alarms library */
AlarmsInitialize();
/* Initialize the task monitor library */
TaskMonitorInitialize();
/* Initialize the PiOS library */
PIOS_COM_Init();
void Stack_Change() {
}
void Stack_Change_Weak() {
}
const struct pios_udp_cfg pios_udp0_cfg = {
const struct pios_udp_cfg pios_udp_telem_cfg = {
.ip = "0.0.0.0",
.port = 9000,
};
const struct pios_udp_cfg pios_udp1_cfg = {
const struct pios_udp_cfg pios_udp_gps_cfg = {
.ip = "0.0.0.0",
.port = 9001,
};
const struct pios_udp_cfg pios_udp2_cfg = {
const struct pios_udp_cfg pios_udp_debug_cfg = {
.ip = "0.0.0.0",
.port = 9002,
};
@ -73,15 +63,20 @@ const struct pios_udp_cfg pios_udp2_cfg = {
/*
* AUX USART
*/
const struct pios_udp_cfg pios_udp3_cfg = {
const struct pios_udp_cfg pios_udp_aux_cfg = {
.ip = "0.0.0.0",
.port = 9003,
};
#endif
#define PIOS_COM_TELEM_RF_RX_BUF_LEN 192
#define PIOS_COM_TELEM_RF_TX_BUF_LEN 192
#define PIOS_COM_GPS_RX_BUF_LEN 192
/*
* Board specific number of devices.
*/
/*
struct pios_udp_dev pios_udp_devs[] = {
#define PIOS_UDP_TELEM 0
{
@ -104,7 +99,7 @@ struct pios_udp_dev pios_udp_devs[] = {
};
uint8_t pios_udp_num_devices = NELEMENTS(pios_udp_devs);
*/
/*
* COM devices
*/
@ -115,28 +110,79 @@ uint8_t pios_udp_num_devices = NELEMENTS(pios_udp_devs);
extern const struct pios_com_driver pios_serial_com_driver;
extern const struct pios_com_driver pios_udp_com_driver;
struct pios_com_dev pios_com_devs[] = {
{
.id = PIOS_UDP_TELEM,
.driver = &pios_udp_com_driver,
},
{
.id = PIOS_UDP_GPS,
.driver = &pios_udp_com_driver,
},
{
.id = PIOS_UDP_LOCAL,
.driver = &pios_udp_com_driver,
},
#ifdef PIOS_COM_AUX
{
.id = PIOS_UDP_AUX,
.driver = &pios_udp_com_driver,
},
#endif
};
uint32_t pios_com_telem_rf_id;
uint32_t pios_com_telem_usb_id;
uint32_t pios_com_gps_id;
uint32_t pios_com_aux_id;
uint32_t pios_com_spectrum_id;
const uint8_t pios_com_num_devices = NELEMENTS(pios_com_devs);
/**
* PIOS_Board_Init()
* initializes all the core systems on this specific hardware
* called from System/openpilot.c
*/
void PIOS_Board_Init(void) {
/* Delay system */
PIOS_DELAY_Init();
/* Initialize UAVObject libraries */
EventDispatcherInitialize();
UAVObjInitialize();
UAVObjectsInitializeAll();
/* Initialize the alarms library */
AlarmsInitialize();
/* Initialize the task monitor library */
TaskMonitorInitialize();
#if defined(PIOS_INCLUDE_COM)
#if defined(PIOS_INCLUDE_TELEMETRY_RF)
{
uint32_t pios_udp_telem_rf_id;
if (PIOS_UDP_Init(&pios_udp_telem_rf_id, &pios_udp_telem_cfg)) {
PIOS_Assert(0);
}
uint8_t * rx_buffer = (uint8_t *) pvPortMalloc(PIOS_COM_TELEM_RF_RX_BUF_LEN);
uint8_t * tx_buffer = (uint8_t *) pvPortMalloc(PIOS_COM_TELEM_RF_TX_BUF_LEN);
PIOS_Assert(rx_buffer);
PIOS_Assert(tx_buffer);
if (PIOS_COM_Init(&pios_com_telem_rf_id, &pios_udp_com_driver, pios_udp_telem_rf_id,
rx_buffer, PIOS_COM_TELEM_RF_RX_BUF_LEN,
tx_buffer, PIOS_COM_TELEM_RF_TX_BUF_LEN)) {
PIOS_Assert(0);
}
}
#endif /* PIOS_INCLUDE_TELEMETRY_RF */
#if defined(PIOS_INCLUDE_GPS)
{
uint32_t pios_udp_gps_id;
if (PIOS_UDP_Init(&pios_udp_gps_id, &pios_udp_gps_cfg)) {
PIOS_Assert(0);
}
uint8_t * rx_buffer = (uint8_t *) pvPortMalloc(PIOS_COM_GPS_RX_BUF_LEN);
uint8_t * tx_buffer = (uint8_t *) pvPortMalloc(PIOS_COM_GPS_RX_BUF_LEN);
PIOS_Assert(rx_buffer);
PIOS_Assert(tx_buffer);
if (PIOS_COM_Init(&pios_com_gps_id, &pios_udp_com_driver, pios_udp_gps_id,
rx_buffer, PIOS_COM_GPS_RX_BUF_LEN,
tx_buffer, PIOS_COM_GPS_RX_BUF_LEN)) {
PIOS_Assert(0);
}
}
#endif /* PIOS_INCLUDE_GPS */
#endif
// Initialize these here as posix has no AHRSComms
AttitudeRawInitialize();
AttitudeActualInitialize();
VelocityActualInitialize();
PositionActualInitialize();
}
/**
* @}

View File

@ -35,6 +35,7 @@
// Private variables
static xSemaphoreHandle lock;
static xTaskHandle handles[TASKINFO_RUNNING_NUMELEM];
static uint32_t lastMonitorTime;
// Private functions
@ -45,6 +46,10 @@ int32_t TaskMonitorInitialize(void)
{
lock = xSemaphoreCreateRecursiveMutex();
memset(handles, 0, sizeof(xTaskHandle)*TASKINFO_RUNNING_NUMELEM);
lastMonitorTime = 0;
#if defined(DIAGNOSTICS)
lastMonitorTime = portGET_RUN_TIME_COUNTER_VALUE();
#endif
return 0;
}
@ -89,12 +94,27 @@ int32_t TaskMonitorRemove(TaskInfoRunningElem task)
*/
void TaskMonitorUpdateAll(void)
{
#if defined(DIAGNOSTICS)
TaskInfoData data;
int n;
// Lock
xSemaphoreTakeRecursive(lock, portMAX_DELAY);
#if ( configGENERATE_RUN_TIME_STATS == 1 )
uint32_t currentTime;
uint32_t deltaTime;
/*
* Calculate the amount of elapsed run time between the last time we
* measured and now. Scale so that we can convert task run times
* directly to percentages.
*/
currentTime = portGET_RUN_TIME_COUNTER_VALUE();
deltaTime = ((currentTime - lastMonitorTime) / 100) ? : 1; /* avoid divide-by-zero if the interval is too small */
lastMonitorTime = currentTime;
#endif
// Update all task information
for (n = 0; n < TASKINFO_RUNNING_NUMELEM; ++n)
{
@ -107,7 +127,8 @@ void TaskMonitorUpdateAll(void)
data.StackRemaining[n] = uxTaskGetStackHighWaterMark(handles[n]) * 4;
#if ( configGENERATE_RUN_TIME_STATS == 1 )
/* Generate run time stats */
data.RunningTime[n] = 100 * (float) uxTaskGetRunTime(handles[n]) / portGET_RUN_TIME_COUNTER_VALUE();
data.RunningTime[n] = uxTaskGetRunTime(handles[n]) / deltaTime;
#endif
#endif
@ -125,4 +146,5 @@ void TaskMonitorUpdateAll(void)
// Done
xSemaphoreGiveRecursive(lock);
#endif
}

View File

@ -24,6 +24,7 @@
# (all architectures)
UAVOBJSRCFILENAMES =
UAVOBJSRCFILENAMES += accessorydesired
UAVOBJSRCFILENAMES += actuatorcommand
UAVOBJSRCFILENAMES += actuatordesired
UAVOBJSRCFILENAMES += actuatorsettings
@ -68,6 +69,8 @@ UAVOBJSRCFILENAMES += velocityactual
UAVOBJSRCFILENAMES += velocitydesired
UAVOBJSRCFILENAMES += watchdogstatus
UAVOBJSRCFILENAMES += flightstatus
UAVOBJSRCFILENAMES += cameradesired
UAVOBJSRCFILENAMES += camerastabsettings
UAVOBJSRC = $(foreach UAVOBJSRCFILE,$(UAVOBJSRCFILENAMES),$(UAVOBJSYNTHDIR)/$(UAVOBJSRCFILE).c )
UAVOBJDEFINE = $(foreach UAVOBJSRCFILE,$(UAVOBJSRCFILENAMES),-DUAVOBJ_INIT_$(UAVOBJSRCFILE) )

View File

@ -1,5 +1,10 @@
/**
******************************************************************************
* @addtogroup PIOS PIOS Core hardware abstraction layer
* @{
* @addtogroup PIOS_COM COM layer functions
* @brief Hardware communication layer
* @{
*
* @file pios_com.h
* @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010.
@ -27,29 +32,34 @@
#ifndef PIOS_COM_H
#define PIOS_COM_H
/* Public Functions */
extern int32_t PIOS_COM_Init(void);
extern int32_t PIOS_COM_ChangeBaud(uint8_t port, uint32_t baud);
extern int32_t PIOS_COM_SendCharNonBlocking(uint8_t port, char c);
extern int32_t PIOS_COM_SendChar(uint8_t port, char c);
extern int32_t PIOS_COM_SendBufferNonBlocking(uint8_t port, uint8_t *buffer, uint16_t len);
extern int32_t PIOS_COM_SendBuffer(uint8_t port, uint8_t *buffer, uint16_t len);
extern int32_t PIOS_COM_SendStringNonBlocking(uint8_t port, char *str);
extern int32_t PIOS_COM_SendString(uint8_t port, char *str);
extern int32_t PIOS_COM_SendFormattedStringNonBlocking(uint8_t port, char *format, ...);
extern int32_t PIOS_COM_SendFormattedString(uint8_t port, char *format, ...);
extern uint8_t PIOS_COM_ReceiveBuffer(uint8_t port);
extern int32_t PIOS_COM_ReceiveBufferUsed(uint8_t port);
extern int32_t PIOS_COM_ReceiveHandler(void);
typedef uint16_t (*pios_com_callback)(uint32_t context, uint8_t * buf, uint16_t buf_len, uint16_t * headroom, bool * task_woken);
struct pios_com_driver {
void (*init)(uint8_t id);
void (*set_baud)(uint8_t id, uint32_t baud);
int32_t (*tx_nb)(uint8_t id, uint8_t *buffer, uint16_t len);
int32_t (*tx)(uint8_t id, uint8_t *buffer, uint16_t len);
int32_t (*rx)(uint8_t id);
int32_t (*rx_avail)(uint8_t id);
void (*init)(uint32_t id);
void (*set_baud)(uint32_t id, uint32_t baud);
void (*tx_start)(uint32_t id, uint16_t tx_bytes_avail);
void (*rx_start)(uint32_t id, uint16_t rx_bytes_avail);
void (*bind_rx_cb)(uint32_t id, pios_com_callback rx_in_cb, uint32_t context);
void (*bind_tx_cb)(uint32_t id, pios_com_callback tx_out_cb, uint32_t context);
};
/* Public Functions */
extern int32_t PIOS_COM_Init(uint32_t * com_id, const struct pios_com_driver * driver, uint32_t lower_id, uint8_t * rx_buffer, uint16_t rx_buffer_len, uint8_t * tx_buffer, uint16_t tx_buffer_len);
extern int32_t PIOS_COM_ChangeBaud(uint32_t com_id, uint32_t baud);
extern int32_t PIOS_COM_SendCharNonBlocking(uint32_t com_id, char c);
extern int32_t PIOS_COM_SendChar(uint32_t com_id, char c);
extern int32_t PIOS_COM_SendBufferNonBlocking(uint32_t com_id, const uint8_t *buffer, uint16_t len);
extern int32_t PIOS_COM_SendBuffer(uint32_t com_id, const uint8_t *buffer, uint16_t len);
extern int32_t PIOS_COM_SendStringNonBlocking(uint32_t com_id, const char *str);
extern int32_t PIOS_COM_SendString(uint32_t com_id, const char *str);
extern int32_t PIOS_COM_SendFormattedStringNonBlocking(uint32_t com_id, const char *format, ...);
extern int32_t PIOS_COM_SendFormattedString(uint32_t com_id, const char *format, ...);
extern uint16_t PIOS_COM_ReceiveBuffer(uint32_t com_id, uint8_t * buf, uint16_t buf_len, uint32_t timeout_ms);
extern int32_t PIOS_COM_ReceiveBufferUsed(uint32_t com_id);
#endif /* PIOS_COM_H */
/**
* @}
* @}
*/

Some files were not shown because too many files have changed in this diff Show More