diff --git a/Makefile b/Makefile index 369ef7d5d..33b737f8a 100644 --- a/Makefile +++ b/Makefile @@ -72,6 +72,7 @@ help: @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 " dfuutil_install - Install the dfu-util tool for unbricking F4-based boards" @echo @echo " [Big Hammer]" @echo " all - Generate UAVObjects, build openpilot firmware and gcs" @@ -172,7 +173,6 @@ qt_sdk_install : | $(DL_DIR) $(TOOLS_DIR) qt_sdk_install: qt_sdk_clean # download the source only if it's newer than what we already have $(V1) wget -N --content-disposition -P "$(DL_DIR)" "$(QT_SDK_URL)" - # tell the user exactly which path they should select in the GUI $(V1) echo "*** NOTE NOTE NOTE ***" $(V1) echo "*" @@ -209,36 +209,173 @@ arm_sdk_clean: $(V1) [ ! -d "$(ARM_SDK_DIR)" ] || $(RM) -r $(ARM_SDK_DIR) # Set up openocd tools -OPENOCD_DIR := $(TOOLS_DIR)/openocd +OPENOCD_DIR := $(TOOLS_DIR)/openocd +OPENOCD_WIN_DIR := $(TOOLS_DIR)/openocd_win +OPENOCD_BUILD_DIR := $(DL_DIR)/openocd-build .PHONY: openocd_install +openocd_install: | $(DL_DIR) $(TOOLS_DIR) openocd_install: OPENOCD_URL := http://sourceforge.net/projects/openocd/files/openocd/0.5.0/openocd-0.5.0.tar.bz2/download openocd_install: OPENOCD_FILE := openocd-0.5.0.tar.bz2 -# order-only prereq on directory existance: -openocd_install: | $(DL_DIR) $(TOOLS_DIR) openocd_install: openocd_clean # download the source only if it's newer than what we already have $(V1) wget -N -P "$(DL_DIR)" --trust-server-name "$(OPENOCD_URL)" # extract the source - $(V1) [ ! -d "$(DL_DIR)/openocd-build" ] || $(RM) -r "$(DL_DIR)/openocd-build" - $(V1) mkdir -p "$(DL_DIR)/openocd-build" - $(V1) tar -C $(DL_DIR)/openocd-build -xjf "$(DL_DIR)/$(OPENOCD_FILE)" + $(V1) [ ! -d "$(OPENOCD_BUILD_DIR)" ] || $(RM) -r "$(OPENOCD_BUILD_DIR)" + $(V1) mkdir -p "$(OPENOCD_BUILD_DIR)" + $(V1) tar -C $(OPENOCD_BUILD_DIR) -xjf "$(DL_DIR)/$(OPENOCD_FILE)" # build and install $(V1) mkdir -p "$(OPENOCD_DIR)" $(V1) ( \ - cd $(DL_DIR)/openocd-build/openocd-0.5.0 ; \ - ./configure --prefix="$(OPENOCD_DIR)" --enable-ft2232_libftdi ; \ + cd $(OPENOCD_BUILD_DIR)/openocd-0.5.0 ; \ + ./configure --prefix="$(OPENOCD_DIR)" --enable-ft2232_libftdi --enable-buspirate; \ + $(MAKE) --silent ; \ + $(MAKE) --silent install ; \ + ) + + # delete the extracted source when we're done + $(V1) [ ! -d "$(OPENOCD_BUILD_DIR)" ] || $(RM) -rf "$(OPENOCD_BUILD_DIR)" + +.PHONY: ftd2xx_install + +FTD2XX_DIR := $(DL_DIR)/ftd2xx + +ftd2xx_install: | $(DL_DIR) +ftd2xx_install: FTD2XX_URL := http://www.ftdichip.com/Drivers/CDM/Beta/CDM20817.zip +ftd2xx_install: FTD2XX_FILE := CDM20817.zip +ftd2xx_install: ftd2xx_clean + # download the file only if it's newer than what we already have + $(V0) @echo " DOWNLOAD $(FTD2XX_URL)" + $(V1) wget -q -N -P "$(DL_DIR)" "$(FTD2XX_URL)" + + # extract the source + $(V0) @echo " EXTRACT $(FTD2XX_FILE) -> $(FTD2XX_DIR)" + $(V1) mkdir -p "$(FTD2XX_DIR)" + $(V1) unzip -q -d "$(FTD2XX_DIR)" "$(DL_DIR)/$(FTD2XX_FILE)" + +.PHONY: ftd2xx_clean +ftd2xx_clean: + $(V0) @echo " CLEAN $(FTD2XX_DIR)" + $(V1) [ ! -d "$(FTD2XX_DIR)" ] || $(RM) -r "$(FTD2XX_DIR)" + +.PHONY: ftd2xx_install + +LIBUSB_WIN_DIR := $(DL_DIR)/libusb-win32-bin-1.2.6.0 + +libusb_win_install: | $(DL_DIR) +libusb_win_install: LIBUSB_WIN_URL := http://sourceforge.net/projects/libusb-win32/files/libusb-win32-releases/1.2.6.0/libusb-win32-bin-1.2.6.0.zip/download +libusb_win_install: LIBUSB_WIN_FILE := libusb-win32-bin-1.2.6.0.zip +libusb_win_install: libusb_win_clean + # download the file only if it's newer than what we already have + $(V0) @echo " DOWNLOAD $(LIBUSB_WIN_URL)" + $(V1) wget -q -N -P "$(DL_DIR)" --trust-server-name "$(LIBUSB_WIN_URL)" + + # extract the source + $(V0) @echo " EXTRACT $(LIBUSB_WIN_FILE) -> $(LIBUSB_WIN_DIR)" + $(V1) mkdir -p "$(LIBUSB_WIN_DIR)" + $(V1) unzip -q -d "$(DL_DIR)" "$(DL_DIR)/$(LIBUSB_WIN_FILE)" + + # fixup .h file needed by openocd build + $(V0) @echo " FIXUP $(LIBUSB_WIN_DIR)" + $(V1) ln -s "$(LIBUSB_WIN_DIR)/include/lusb0_usb.h" "$(LIBUSB_WIN_DIR)/include/usb.h" + +.PHONY: libusb_win_clean +libusb_win_clean: + $(V0) @echo " CLEAN $(LIBUSB_WIN_DIR)" + $(V1) [ ! -d "$(LIBUSB_WIN_DIR)" ] || $(RM) -r "$(LIBUSB_WIN_DIR)" + +.PHONY: openocd_git_win_install + +openocd_git_win_install: | $(DL_DIR) $(TOOLS_DIR) +openocd_git_win_install: OPENOCD_URL := git://openocd.git.sourceforge.net/gitroot/openocd/openocd +openocd_git_win_install: OPENOCD_REV := f1c0133321c8fcadadd10bba5537c0a634eb183b +openocd_git_win_install: openocd_win_clean libusb_win_install ftd2xx_install + # download the source + $(V0) @echo " DOWNLOAD $(OPENOCD_URL) @ $(OPENOCD_REV)" + $(V1) [ ! -d "$(OPENOCD_BUILD_DIR)" ] || $(RM) -rf "$(OPENOCD_BUILD_DIR)" + $(V1) mkdir -p "$(OPENOCD_BUILD_DIR)" + $(V1) git clone --no-checkout $(OPENOCD_URL) "$(DL_DIR)/openocd-build" + $(V1) ( \ + cd $(OPENOCD_BUILD_DIR) ; \ + git checkout -q $(OPENOCD_REV) ; \ + ) + + # apply patches + $(V0) @echo " PATCH $(OPENOCD_BUILD_DIR)" + $(V1) ( \ + cd $(OPENOCD_BUILD_DIR) ; \ + git apply < $(ROOT_DIR)/flight/Project/OpenOCD/0001-armv7m-remove-dummy-FP-regs-for-new-gdb.patch ; \ + git apply < $(ROOT_DIR)/flight/Project/OpenOCD/0002-rtos-add-stm32_stlink-to-FreeRTOS-targets.patch ; \ + ) + + # build and install + $(V0) @echo " BUILD $(OPENOCD_WIN_DIR)" + $(V1) mkdir -p "$(OPENOCD_WIN_DIR)" + $(V1) ( \ + cd $(OPENOCD_BUILD_DIR) ; \ + ./bootstrap ; \ + ./configure --enable-maintainer-mode --prefix="$(OPENOCD_WIN_DIR)" \ + --build=i686-pc-linux-gnu --host=i586-mingw32msvc \ + CPPFLAGS=-I$(LIBUSB_WIN_DIR)/include \ + LDFLAGS=-L$(LIBUSB_WIN_DIR)/lib/gcc \ + --enable-ft2232_ftd2xx --with-ftd2xx-win32-zipdir=$(FTD2XX_DIR) \ + --disable-werror \ + --enable-stlink ; \ $(MAKE) ; \ $(MAKE) install ; \ ) # delete the extracted source when we're done - $(V1) [ ! -d "$(DL_DIR)/openocd-build" ] || $(RM) -r "$(DL_DIR)/openocd-build" + $(V1) [ ! -d "$(OPENOCD_BUILD_DIR)" ] || $(RM) -rf "$(OPENOCD_BUILD_DIR)" + +.PHONY: openocd_win_clean +openocd_win_clean: + $(V0) @echo " CLEAN $(OPENOCD_WIN_DIR)" + $(V1) [ ! -d "$(OPENOCD_WIN_DIR)" ] || $(RM) -r "$(OPENOCD_WIN_DIR)" + +.PHONY: openocd_git_install + +openocd_git_install: | $(DL_DIR) $(TOOLS_DIR) +openocd_git_install: OPENOCD_URL := git://openocd.git.sourceforge.net/gitroot/openocd/openocd +openocd_git_install: OPENOCD_REV := f1c0133321c8fcadadd10bba5537c0a634eb183b +openocd_git_install: openocd_clean + # download the source + $(V0) @echo " DOWNLOAD $(OPENOCD_URL) @ $(OPENOCD_REV)" + $(V1) [ ! -d "$(OPENOCD_BUILD_DIR)" ] || $(RM) -rf "$(OPENOCD_BUILD_DIR)" + $(V1) mkdir -p "$(OPENOCD_BUILD_DIR)" + $(V1) git clone --no-checkout $(OPENOCD_URL) "$(OPENOCD_BUILD_DIR)" + $(V1) ( \ + cd $(OPENOCD_BUILD_DIR) ; \ + git checkout -q $(OPENOCD_REV) ; \ + ) + + # apply patches + $(V0) @echo " PATCH $(OPENOCD_DIR)" + $(V1) ( \ + cd $(OPENOCD_BUILD_DIR) ; \ + git apply < $(ROOT_DIR)/flight/Project/OpenOCD/0001-armv7m-remove-dummy-FP-regs-for-new-gdb.patch ; \ + git apply < $(ROOT_DIR)/flight/Project/OpenOCD/0002-rtos-add-stm32_stlink-to-FreeRTOS-targets.patch ; \ + ) + + # build and install + $(V0) @echo " BUILD $(OPENOCD_DIR)" + $(V1) mkdir -p "$(OPENOCD_DIR)" + $(V1) ( \ + cd $(OPENOCD_BUILD_DIR) ; \ + ./bootstrap ; \ + ./configure --enable-maintainer-mode --prefix="$(OPENOCD_DIR)" --enable-ft2232_libftdi --enable-buspirate --enable-stlink ; \ + $(MAKE) ; \ + $(MAKE) install ; \ + ) + + # delete the extracted source when we're done + $(V1) [ ! -d "$(OPENOCD_BUILD_DIR)" ] || $(RM) -rf "$(OPENOCD_BUILD_DIR)" .PHONY: openocd_clean openocd_clean: + $(V0) @echo " CLEAN $(OPENOCD_DIR)" $(V1) [ ! -d "$(OPENOCD_DIR)" ] || $(RM) -r "$(OPENOCD_DIR)" STM32FLASH_DIR := $(TOOLS_DIR)/stm32flash @@ -260,6 +397,38 @@ stm32flash_clean: $(V0) @echo " CLEAN $(STM32FLASH_DIR)" $(V1) [ ! -d "$(STM32FLASH_DIR)" ] || $(RM) -r "$(STM32FLASH_DIR)" +DFUUTIL_DIR := $(TOOLS_DIR)/dfu-util + +.PHONY: dfuutil_install +dfuutil_install: DFUUTIL_URL := http://dfu-util.gnumonks.org/releases/dfu-util-0.5.tar.gz +dfuutil_install: DFUUTIL_FILE := $(notdir $(DFUUTIL_URL)) +dfuutil_install: | $(DL_DIR) $(TOOLS_DIR) +dfuutil_install: dfuutil_clean + # download the source + $(V0) @echo " DOWNLOAD $(DFUUTIL_URL)" + $(V1) wget -N -P "$(DL_DIR)" "$(DFUUTIL_URL)" + + # extract the source + $(V0) @echo " EXTRACT $(DFUUTIL_FILE)" + $(V1) [ ! -d "$(DL_DIR)/dfuutil-build" ] || $(RM) -r "$(DL_DIR)/dfuutil-build" + $(V1) mkdir -p "$(DL_DIR)/dfuutil-build" + $(V1) tar -C $(DL_DIR)/dfuutil-build -xf "$(DL_DIR)/$(DFUUTIL_FILE)" + + # build + $(V0) @echo " BUILD $(DFUUTIL_DIR)" + $(V1) mkdir -p "$(DFUUTIL_DIR)" + $(V1) ( \ + cd $(DL_DIR)/dfuutil-build/dfu-util-0.5 ; \ + ./configure --prefix="$(DFUUTIL_DIR)" ; \ + $(MAKE) ; \ + $(MAKE) install ; \ + ) + +.PHONY: dfuutil_clean +dfuutil_clean: + $(V0) @echo " CLEAN $(DFUUTIL_DIR)" + $(V1) [ ! -d "$(DFUUTIL_DIR)" ] || $(RM) -r "$(DFUUTIL_DIR)" + ############################## # # Set up paths to tools @@ -429,32 +598,53 @@ bu_$(1)_clean: $(V1) $(RM) -fr $(BUILD_DIR)/bu_$(1) endef +# $(1) = Canonical board name all in lower case (e.g. coptercontrol) +define EF_TEMPLATE +.PHONY: ef_$(1) +ef_$(1): ef_$(1)_bin + +ef_$(1)_%: bl_$(1)_bin fw_$(1)_bin + $(V1) mkdir -p $(BUILD_DIR)/ef_$(1)/dep + $(V1) cd $(ROOT_DIR)/flight/EntireFlash && \ + $$(MAKE) -r --no-print-directory \ + BOARD_NAME=$(1) \ + TCHAIN_PREFIX="$(ARM_SDK_PREFIX)" \ + DFU_CMD="$(DFUUTIL_DIR)/bin/dfu-util" \ + $$* + +.PHONY: ef_$(1)_clean +ef_$(1)_clean: + $(V0) @echo " CLEAN $$@" + $(V1) $(RM) -fr $(BUILD_DIR)/ef_$(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)) +all_$(1): $$(filter ef_$(1), $$(EF_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))) +all_$(1)_clean: $$(addsuffix _clean, $$(filter ef_$(1), $$(EF_TARGETS))) endef -ALL_BOARDS := openpilot ahrs coptercontrol pipxtreme ins +ALL_BOARDS := coptercontrol pipxtreme revolution # 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 +revolution_friendly := Revolution # 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) +EF_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. @@ -465,6 +655,7 @@ BU_BOARDS := $(filter-out ins, $(BU_BOARDS)) FW_TARGETS := $(addprefix fw_, $(FW_BOARDS)) BL_TARGETS := $(addprefix bl_, $(BL_BOARDS)) BU_TARGETS := $(addprefix bu_, $(BU_BOARDS)) +EF_TARGETS := $(addprefix ef_, $(EF_BOARDS)) .PHONY: all_fw all_fw_clean all_fw: $(addsuffix _opfw, $(FW_TARGETS)) @@ -478,9 +669,13 @@ all_bl_clean: $(addsuffix _clean, $(BL_TARGETS)) all_bu: $(addsuffix _opfw, $(BU_TARGETS)) all_bu_clean: $(addsuffix _clean, $(BU_TARGETS)) +.PHONY: all_ef all_ef_clean +all_ef: $(EF_TARGETS)) +all_ef_clean: $(addsuffix _clean, $(EF_TARGETS)) + .PHONY: all_flight all_flight_clean -all_flight: all_fw all_bl all_bu -all_flight_clean: all_fw_clean all_bl_clean all_bu_clean +all_flight: all_fw all_bl all_bu all_ef +all_flight_clean: all_fw_clean all_bl_clean all_bu_clean all_ef_clean # Expand the groups of targets for each board $(foreach board, $(ALL_BOARDS), $(eval $(call BOARD_PHONY_TEMPLATE,$(board)))) @@ -494,6 +689,9 @@ $(foreach board, $(ALL_BOARDS), $(eval $(call FW_TEMPLATE,$(board),$($(board)_fr # Expand the bootloader rules $(foreach board, $(ALL_BOARDS), $(eval $(call BL_TEMPLATE,$(board),$($(board)_friendly)))) +# Expand the entire-flash rules +$(foreach board, $(ALL_BOARDS), $(eval $(call EF_TEMPLATE,$(board),$($(board)_friendly)))) + .PHONY: sim_posix sim_posix: sim_posix_elf diff --git a/flight/AHRS/Makefile b/flight/AHRS/Makefile deleted file mode 100644 index 17559cf58..000000000 --- a/flight/AHRS/Makefile +++ /dev/null @@ -1,424 +0,0 @@ - ##### - # Project: OpenPilot AHRS - # - # - # Makefile for OpenPilot AHRS project - # - # The OpenPilot Team, http://www.openpilot.org, Copyright (C) 2009. - # - # - # 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 - ##### - -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 ?= NO - -# Set to YES when using Code Sourcery toolchain -CODE_SOURCERY ?= YES - -ifeq ($(CODE_SOURCERY), YES) -REMOVE_CMD = cs-rm -else -REMOVE_CMD = rm -endif - -FLASH_TOOL = OPENOCD - -# Paths -AHRS = ./ -AHRSINC = $(AHRS)/inc -PIOS = ../PiOS -PIOSINC = $(PIOS)/inc -FLIGHTLIB = ../Libraries -FLIGHTLIBINC = ../Libraries/inc -PIOSSTM32F10X = $(PIOS)/STM32F10x -PIOSCOMMON = $(PIOS)/Common -PIOSBOARDS = $(PIOS)/Boards -APPLIBDIR = $(PIOSSTM32F10X)/Libraries -STMLIBDIR = $(APPLIBDIR) -STMSPDDIR = $(STMLIBDIR)/STM32F10x_StdPeriph_Driver -STMUSBDIR = $(STMLIBDIR)/STM32_USB-FS-Device_Driver -STMSPDSRCDIR = $(STMSPDDIR)/src -STMSPDINCDIR = $(STMSPDDIR)/inc -CMSISDIR = $(STMLIBDIR)/CMSIS/Core/CM3 -OPDIR = ../OpenPilot -OPUAVOBJ = ../UAVObjects -OPUAVOBJINC = $(OPUAVOBJ)/inc -OPSYSINC = $(OPDIR)/System/inc -BOOT = ../Bootloaders/AHRS -BOOTINC = $(BOOT)/inc -HWDEFSINC = ../board_hw_defs/$(BOARD_NAME) - -OPUAVSYNTHDIR = $(OUTDIR)/../uavobject-synthetics/flight - -# List C source files here. (C dependencies are automatically generated.) -# use file-extension c for "c-only"-files - -## AHRS: -SRC = ahrs.c -SRC += pios_board.c -SRC += ahrs_timer.c -SRC += $(FLIGHTLIB)/ahrs_spi_comm.c -SRC += $(FLIGHTLIB)/ahrs_comm_objects.c -SRC += $(BOOT)/ahrs_spi_program_slave.c -SRC += $(BOOT)/ahrs_slave_test.c -SRC += $(BOOT)/ahrs_spi_program.c -SRC += insgps13state.c -SRC += $(FLIGHTLIB)/CoordinateConversions.c -SRC += $(FLIGHTLIB)/fifo_buffer.c - -## PIOS Hardware (STM32F10x) -SRC += $(PIOSSTM32F10X)/pios_adc.c -SRC += $(PIOSSTM32F10X)/pios_sys.c -SRC += $(PIOSSTM32F10X)/pios_led.c -SRC += $(PIOSSTM32F10X)/pios_delay.c -SRC += $(PIOSSTM32F10X)/pios_usart.c -SRC += $(PIOSSTM32F10X)/pios_irq.c -SRC += $(PIOSSTM32F10X)/pios_i2c.c -SRC += $(PIOSSTM32F10X)/pios_gpio.c -SRC += $(PIOSSTM32F10X)/pios_spi.c -SRC += $(PIOSSTM32F10X)/pios_exti.c - -## PIOS Hardware (Common) -SRC += $(PIOSCOMMON)/pios_com.c -SRC += $(PIOSCOMMON)/pios_hmc5843.c -SRC += $(PIOSCOMMON)/printf-stdarg.c -SRC += $(PIOSCOMMON)/pios_iap.c -SRC += $(PIOSCOMMON)/pios_bl_helper.c - -## CMSIS for STM32 -SRC += $(CMSISDIR)/core_cm3.c -SRC += $(CMSISDIR)/system_stm32f10x.c - -## Used parts of the STM-Library -SRC += $(STMSPDSRCDIR)/stm32f10x_adc.c -SRC += $(STMSPDSRCDIR)/stm32f10x_bkp.c -SRC += $(STMSPDSRCDIR)/stm32f10x_crc.c -SRC += $(STMSPDSRCDIR)/stm32f10x_dac.c -SRC += $(STMSPDSRCDIR)/stm32f10x_dma.c -SRC += $(STMSPDSRCDIR)/stm32f10x_exti.c -SRC += $(STMSPDSRCDIR)/stm32f10x_flash.c -SRC += $(STMSPDSRCDIR)/stm32f10x_gpio.c -SRC += $(STMSPDSRCDIR)/stm32f10x_i2c.c -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)/misc.c - -# List C source files here which must be compiled in ARM-Mode (no -mthumb). -# use file-extension c for "c-only"-files -## just for testing, timer.c could be compiled in thumb-mode too -SRCARM = - -# List C++ source files here. -# use file-extension .cpp for C++-files (not .C) -CPPSRC = - -# List C++ source files here which must be compiled in ARM-Mode. -# use file-extension .cpp for C++-files (not .C) -#CPPSRCARM = $(TARGET).cpp -CPPSRCARM = - -# List Assembler source files here. -# Make them always end in a capital .S. Files ending in a lowercase .s -# will not be considered source files but generated files (assembler -# output from the compiler), and will be deleted upon "make clean"! -# 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)$(MODEL_SUFFIX).S - -# List Assembler source files here which must be assembled in ARM-Mode.. -ASRCARM = - -# List any extra directories to look for include files here. -# Each directory must be seperated by a space. -EXTRAINCDIRS += $(PIOS) -EXTRAINCDIRS += $(PIOSINC) -EXTRAINCDIRS += $(FLIGHTLIBINC) -EXTRAINCDIRS += $(PIOSSTM32F10X) -EXTRAINCDIRS += $(PIOSCOMMON) -EXTRAINCDIRS += $(PIOSBOARDS) -EXTRAINCDIRS += $(STMSPDINCDIR) -EXTRAINCDIRS += $(CMSISDIR) -EXTRAINCDIRS += $(AHRSINC) -EXTRAINCDIRS += $(OPUAVSYNTHDIR) -EXTRAINCDIRS += $(BOOTINC) -EXTRAINCDIRS += $(HWDEFSINC) - -# List any extra directories to look for library files here. -# Also add directories where the linker should search for -# includes from linker-script to the list -# Each directory must be seperated by a space. -EXTRA_LIBDIRS = - -# Extra Libraries -# Each library-name must be seperated by a space. -# i.e. to link with libxyz.a, libabc.a and libefsl.a: -# EXTRA_LIBS = xyz abc efsl -# for newlib-lpc (file: libnewlibc-lpc.a): -# EXTRA_LIBS = newlib-lpc -EXTRA_LIBS = - -# Path to Linker-Scripts -LINKERSCRIPTPATH = $(PIOSSTM32F10X) - -# Optimization level, can be [0, 1, 2, 3, s]. -# 0 = turn off optimization. s = optimize for size. -# (Note: 3 is not always the best optimization level. See avr-libc FAQ.) - -ifeq ($(DEBUG),YES) -CFLAGS += -O0 -CFLAGS += -DGENERAL_COV -else -CFLAGS += -Os -endif - -# Output format. (can be ihex or binary or both) -# binary to create a load-image in raw-binary format i.e. for SAM-BA, -# ihex to create a load-image in Intel hex format -#LOADFORMAT = ihex -#LOADFORMAT = binary -LOADFORMAT = both - -# Debugging format. -DEBUGF = dwarf-2 - -# Place project-specific -D (define) and/or -# -U options for C here. -CDEFS = -DSTM32F10X_$(MODEL) -CDEFS += -DUSE_STDPERIPH_DRIVER -CDEFS += -DUSE_$(BOARD) -CDEFS += -DIN_AHRS - -# Place project-specific -D and/or -U options for -# Assembler with preprocessor here. -#ADEFS = -DUSE_IRQ_ASM_WRAPPER -ADEFS = -D__ASSEMBLY__ - -# Compiler flag to set the C Standard level. -# c89 - "ANSI" C -# gnu89 - c89 plus GCC extensions -# c99 - ISO C99 standard (not yet fully implemented) -# gnu99 - c99 plus GCC extensions -CSTANDARD = -std=gnu99 - -#----- - -# Compiler flags. - -# -g*: generate debugging information -# -O*: optimization level -# -f...: tuning, see GCC manual and avr-libc documentation -# -Wall...: warning level -# -Wa,...: tell GCC to pass this to the assembler. -# -adhlns...: create assembler listing -# -# Flags for C and C++ (arm-elf-gcc/arm-elf-g++) - -CFLAGS += -g$(DEBUGF) - -CFLAGS += -ffast-math - -CFLAGS += -mcpu=$(MCU) -CFLAGS += $(CDEFS) -CFLAGS += $(patsubst %,-I%,$(EXTRAINCDIRS)) -I. - -CFLAGS += -mapcs-frame -CFLAGS += -fomit-frame-pointer -ifeq ($(CODE_SOURCERY), YES) -CFLAGS += -fpromote-loop-indices -endif - -CFLAGS += -Wall -CFLAGS += -Werror -CFLAGS += -Wa,-adhlns=$(addprefix $(OUTDIR)/, $(notdir $(addsuffix .lst, $(basename $<)))) -# Compiler flags to generate dependency files: -CFLAGS += -MD -MP -MF $(OUTDIR)/dep/$(@F).d - -# flags only for C -#CONLYFLAGS += -Wnested-externs -CONLYFLAGS += $(CSTANDARD) - -# Assembler flags. -# -Wa,...: tell GCC to pass this to the assembler. -# -ahlns: create listing -ASFLAGS = -mcpu=$(MCU) -I. -x assembler-with-cpp -ASFLAGS += $(ADEFS) -ASFLAGS += -Wa,-adhlns=$(addprefix $(OUTDIR)/, $(notdir $(addsuffix .lst, $(basename $<)))) -ASFLAGS += $(patsubst %,-I%,$(EXTRAINCDIRS)) - -MATH_LIB = -lm - -# Linker flags. -# -Wl,...: tell GCC to pass this to linker. -# -Map: create map file -# --cref: add cross reference to map file -LDFLAGS = -nostartfiles -Wl,-Map=$(OUTDIR)/$(TARGET).map,--cref,--gc-sections -LDFLAGS += $(patsubst %,-L%,$(EXTRA_LIBDIRS)) -LDFLAGS += -lc -LDFLAGS += $(patsubst %,-l%,$(EXTRA_LIBS)) -LDFLAGS += $(MATH_LIB) -LDFLAGS += -lc -lgcc - -# Set linker-script name depending on selected submodel name -LDFLAGS += -T$(LINKERSCRIPTPATH)/link_$(BOARD)_memory.ld -LDFLAGS += -T$(LINKERSCRIPTPATH)/link_$(BOARD)_sections.ld - -# Define programs and commands. -REMOVE = $(REMOVE_CMD) -f - -# List of all source files. -ALLSRC = $(ASRCARM) $(ASRC) $(SRCARM) $(SRC) $(CPPSRCARM) $(CPPSRC) -# List of all source files without directory and file-extension. -ALLSRCBASE = $(notdir $(basename $(ALLSRC))) - -# Define all object files. -ALLOBJ = $(addprefix $(OUTDIR)/, $(addsuffix .o, $(ALLSRCBASE))) - -# Define all listing files (used for make clean). -LSTFILES = $(addprefix $(OUTDIR)/, $(addsuffix .lst, $(ALLSRCBASE))) -# Define all depedency-files (used for make clean). -DEPFILES = $(addprefix $(OUTDIR)/dep/, $(addsuffix .o.d, $(ALLSRCBASE))) - -# Default target. -all: gccversion build - -ifeq ($(LOADFORMAT),ihex) -build: elf hex lss sym -else -ifeq ($(LOADFORMAT),binary) -build: elf bin lss sym -else -ifeq ($(LOADFORMAT),both) -build: elf hex bin lss sym -else -$(error "$(MSG_FORMATERROR) $(FORMAT)") -endif -endif -endif - -# Link: create ELF output file from object files. -$(eval $(call LINK_TEMPLATE, $(OUTDIR)/$(TARGET).elf, $(ALLOBJ))) - -# Assemble: create object files from assembler source files. -$(foreach src, $(ASRC), $(eval $(call ASSEMBLE_TEMPLATE, $(src)))) - -# Assemble: create object files from assembler source files. ARM-only -$(foreach src, $(ASRCARM), $(eval $(call ASSEMBLE_ARM_TEMPLATE, $(src)))) - -# Compile: create object files from C source files. -$(foreach src, $(SRC), $(eval $(call COMPILE_C_TEMPLATE, $(src)))) - -# Compile: create object files from C source files. ARM-only -$(foreach src, $(SRCARM), $(eval $(call COMPILE_C_ARM_TEMPLATE, $(src)))) - -# Compile: create object files from C++ source files. -$(foreach src, $(CPPSRC), $(eval $(call COMPILE_CPP_TEMPLATE, $(src)))) - -# Compile: create object files from C++ source files. ARM-only -$(foreach src, $(CPPSRCARM), $(eval $(call COMPILE_CPP_ARM_TEMPLATE, $(src)))) - -# Compile: create assembler files from C source files. ARM/Thumb -$(eval $(call PARTIAL_COMPILE_TEMPLATE, SRC)) - -# Compile: create assembler files from C source files. ARM only -$(eval $(call PARTIAL_COMPILE_ARM_TEMPLATE, SRCARM)) - -$(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),$(OPENOCD_CONFIG))) - -.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)) - -# 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 - -clean_list : - @echo $(MSG_CLEANING) - $(V1) $(REMOVE) $(OUTDIR)/$(TARGET).map - $(V1) $(REMOVE) $(OUTDIR)/$(TARGET).elf - $(V1) $(REMOVE) $(OUTDIR)/$(TARGET).hex - $(V1) $(REMOVE) $(OUTDIR)/$(TARGET).bin - $(V1) $(REMOVE) $(OUTDIR)/$(TARGET).sym - $(V1) $(REMOVE) $(OUTDIR)/$(TARGET).lss - $(V1) $(REMOVE) $(OUTDIR)/$(TARGET).bin.o - $(V1) $(REMOVE) $(ALLOBJ) - $(V1) $(REMOVE) $(LSTFILES) - $(V1) $(REMOVE) $(DEPFILES) - $(V1) $(REMOVE) $(SRC:.c=.s) - $(V1) $(REMOVE) $(SRCARM:.c=.s) - $(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 -$(shell md $(subst /,\\,$(OUTDIR)) 2>NUL) -else -$(shell mkdir -p $(OUTDIR) 2>/dev/null) -endif - -# Include the dependency files. -ifdef ComSpec --include $(shell md $(subst /,\\,$(OUTDIR))\dep 2>NUL) $(wildcard $(OUTDIR)/dep/*) -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 install diff --git a/flight/AHRS/ahrs.c b/flight/AHRS/ahrs.c deleted file mode 100644 index e8b5742e3..000000000 --- a/flight/AHRS/ahrs.c +++ /dev/null @@ -1,1265 +0,0 @@ -/** - ****************************************************************************** - * @addtogroup AHRS AHRS - * @brief The AHRS Modules perform - * - * @{ - * @addtogroup AHRS_Main - * @brief Main function which does the hardware dependent stuff - * @{ - * - * - * @file ahrs.c - * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010. - * @brief INSGPS Test Program - * @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 - */ - -/* OpenPilot Includes */ -#include "ahrs.h" -#include -#include "pios.h" -#include "ahrs_timer.h" -#include "ahrs_spi_comm.h" -#include "insgps.h" -#include "CoordinateConversions.h" -#include -#include "fifo_buffer.h" - -#define DEG_TO_RAD (M_PI / 180.0) -#define RAD_TO_DEG (180.0 / M_PI) - -#define INSGPS_GPS_TIMEOUT 2 /* 2 seconds triggers reinit of position */ -#define INSGPS_GPS_MINSAT 6 /* 2 seconds triggers reinit of position */ -#define INSGPS_GPS_MINPDOP 3.5 /* minimum PDOP for postition updates */ -#define INSGPS_MAGLEN 1000 -#define INSGPS_MAGTOL 0.5 /* error in magnetic vector length to use */ - -#define GYRO_OOB(x) ((x > (1000 * DEG_TO_RAD)) || (x < (-1000 * DEG_TO_RAD))) -#define ACCEL_OOB(x) (((x > 12*9.81) || (x < -12*9.81))) -#define ISNAN(x) (x != x) -// down-sampled data index -#define ACCEL_RAW_X_IDX 2 -#define ACCEL_RAW_Y_IDX 0 -#define ACCEL_RAW_Z_IDX 4 -#define GYRO_RAW_X_IDX 1 -#define GYRO_RAW_Y_IDX 3 -#define GYRO_RAW_Z_IDX 5 -#define GYRO_TEMP_RAW_XY_IDX 6 -#define GYRO_TEMP_RAW_Z_IDX 7 -#define MAG_RAW_X_IDX 1 -#define MAG_RAW_Y_IDX 0 -#define MAG_RAW_Z_IDX 2 - -// For debugging the raw sensors -//#define DUMP_RAW -//#define DUMP_EKF -//#define PIP_DUMP_RAW - -volatile int8_t ahrs_algorithm; - -/* INS functions */ -void ins_outdoor_update(); -void ins_indoor_update(); -void simple_update(); - -/* Data accessors */ -void adc_callback(float *); -bool get_accel_gyro_data(); -void process_mag_data(); -void reset_values(); -void calibrate_sensors(void); - -/* Communication functions */ -void send_calibration(void); -void send_attitude(void); -void send_velocity(void); -void send_position(void); -void homelocation_callback(AhrsObjHandle obj); -void altitude_callback(AhrsObjHandle obj); -void calibration_callback(AhrsObjHandle obj); -void gps_callback(AhrsObjHandle obj); -void settings_callback(AhrsObjHandle obj); -void affine_rotate(float scale[3][4], float rotation[3]); -void calibration(float result[3], float scale[3][4], float arg[3]); - -/* Bootloader related functions and var*/ -void firmwareiapobj_callback(AhrsObjHandle obj); -volatile uint8_t reset_count=0; - -/** - * @addtogroup AHRS_Global_Data AHRS Global Data - * @{ - * Public data. Used by both EKF and the sender - */ - -//! Contains the data from the mag sensor chip -struct mag_sensor mag_data; - -//! Contains the data from the accelerometer -struct accel_sensor accel_data; - -//! Contains the data from the gyro -struct gyro_sensor gyro_data; - -//! Conains the current estimate of the attitude -struct attitude_solution attitude_data; - -//! Contains data from the altitude sensor -struct altitude_sensor altitude_data; - -//! Contains data from the GPS (via the SPI link) -struct gps_sensor gps_data; - -//! The oversampling rate, ekf is 2k / this -uint8_t adc_oversampling = 15; - -//! Offset correction of barometric alt, to match gps data -static float baro_offset = 0; - -static float mag_len = 0; - -typedef enum { AHRS_IDLE, AHRS_DATA_READY, AHRS_PROCESSING } states; -volatile int32_t ekf_too_slow; -volatile int32_t total_conversion_blocks; - -//! Buffer to allow ADC to run a bit faster than EKF -t_fifo_buffer adc_fifo_buffer; - - -/** - * @} - */ - -/* INS functions */ - -/** - * @brief Update the EKF when in outdoor mode. The primary difference is using the GPS values. - */ -void ins_outdoor_update() -{ - float gyro[3], accel[3], vel[3]; - static uint32_t last_gps_time = 0; - uint16_t sensors; - - // format data for INS algo - gyro[0] = gyro_data.filtered.x; - gyro[1] = gyro_data.filtered.y; - gyro[2] = gyro_data.filtered.z; - accel[0] = accel_data.filtered.x, - accel[1] = accel_data.filtered.y, - accel[2] = accel_data.filtered.z, - - INSStatePrediction(gyro, accel, 1 / (float)EKF_RATE); - attitude_data.quaternion.q1 = Nav.q[0]; - attitude_data.quaternion.q2 = Nav.q[1]; - attitude_data.quaternion.q3 = Nav.q[2]; - attitude_data.quaternion.q4 = Nav.q[3]; - send_attitude(); // get message out quickly - send_velocity(); - send_position(); - INSCovariancePrediction(1 / (float)EKF_RATE); - - sensors = 0; - - /* - * Detect if greater than certain time since last gps update and if so - * reset EKF to that position since probably drifted too far for safe - * update - */ - uint32_t this_gps_time = timer_count(); - float gps_delay; - - if (this_gps_time < last_gps_time) - gps_delay = ((0xFFFF - last_gps_time) - this_gps_time) / timer_rate(); - else - gps_delay = (this_gps_time - last_gps_time) / timer_rate(); - last_gps_time = this_gps_time; - - if (gps_data.updated) - { - vel[0] = gps_data.groundspeed * cos(gps_data.heading * DEG_TO_RAD); - vel[1] = gps_data.groundspeed * sin(gps_data.heading * DEG_TO_RAD); - vel[2] = 0; - - if(gps_delay > INSGPS_GPS_TIMEOUT) - INSPosVelReset(gps_data.NED,vel); // position stale, reset - else { - sensors |= HORIZ_SENSORS | POS_SENSORS; - } - - /* - * When using gps need to make sure that barometer is brought into NED frame - * we should try and see if the altitude from the home location is good enough - * to use for the offset but for now starting with this conservative filter - */ - if(fabs(gps_data.NED[2] + (altitude_data.altitude - baro_offset)) > 10) { - baro_offset = gps_data.NED[2] + altitude_data.altitude; - } else { - /* IIR filter with 100 second or so tau to keep them crudely in the same frame */ - baro_offset = baro_offset * 0.999 + (gps_data.NED[2] + altitude_data.altitude) * 0.001; - } - gps_data.updated = false; - } else if (gps_delay > INSGPS_GPS_TIMEOUT) { - vel[0] = 0; - vel[1] = 0; - vel[2] = 0; - sensors |= VERT_SENSORS | HORIZ_SENSORS; - } - - if(mag_data.updated) { - sensors |= MAG_SENSORS; - mag_data.updated = false; - } - - if(altitude_data.updated) { - sensors |= BARO_SENSOR; - altitude_data.updated = false; - } - - /* - * TODO: Need to add a general sanity check for all the inputs to make sure their kosher - * although probably should occur within INS itself - */ - INSCorrection(mag_data.scaled.axis, gps_data.NED, vel, altitude_data.altitude - baro_offset, sensors); -} - -/** - * @brief Update the EKF when in indoor mode - */ -void ins_indoor_update() -{ - float gyro[3], accel[3], vel[3]; - static uint32_t last_indoor_time = 0; - uint16_t sensors = 0; - - // format data for INS algo - gyro[0] = gyro_data.filtered.x; - gyro[1] = gyro_data.filtered.y; - gyro[2] = gyro_data.filtered.z; - accel[0] = accel_data.filtered.x, - accel[1] = accel_data.filtered.y, - accel[2] = accel_data.filtered.z, - - INSStatePrediction(gyro, accel, 1 / (float)EKF_RATE); - attitude_data.quaternion.q1 = Nav.q[0]; - attitude_data.quaternion.q2 = Nav.q[1]; - attitude_data.quaternion.q3 = Nav.q[2]; - attitude_data.quaternion.q4 = Nav.q[3]; - send_attitude(); // get message out quickly - send_velocity(); - send_position(); - INSCovariancePrediction(1 / (float)EKF_RATE); - - /* Indoors, update with zero position and velocity and high covariance */ - vel[0] = 0; - vel[1] = 0; - vel[2] = 0; - - uint32_t this_indoor_time = timer_count(); - float indoor_delay; - - /* - * Detect if greater than certain time since last gps update and if so - * reset EKF to that position since probably drifted too far for safe - * update - */ - if (this_indoor_time < last_indoor_time) - indoor_delay = ((0xFFFF - last_indoor_time) - this_indoor_time) / timer_rate(); - else - indoor_delay = (this_indoor_time - last_indoor_time) / timer_rate(); - last_indoor_time = this_indoor_time; - - if(indoor_delay > INSGPS_GPS_TIMEOUT) - INSPosVelReset(vel,vel); - else - sensors = HORIZ_SENSORS | VERT_SENSORS; - - if(mag_data.updated && (ahrs_algorithm == AHRSSETTINGS_ALGORITHM_INSGPS_INDOOR)) { - sensors |= MAG_SENSORS; - mag_data.updated = false; - } - - if(altitude_data.updated) { - sensors |= BARO_SENSOR; - altitude_data.updated = false; - } - - /* - * TODO: Need to add a general sanity check for all the inputs to make sure their kosher - * although probably should occur within INS itself - */ - INSCorrection(mag_data.scaled.axis, gps_data.NED, vel, altitude_data.altitude, sensors | HORIZ_SENSORS | VERT_SENSORS); -} - -/** - * @brief Initialize the EKF assuming stationary - */ -void ins_init_algorithm() -{ - float Rbe[3][3], q[4], accels[3], rpy[3], mag; - float ge[3]={0,0,-9.81}, zeros[3]={0,0,0}, Pdiag[16]={25,25,25,5,5,5,1e-5,1e-5,1e-5,1e-5,1e-5,1e-5,1e-5,1e-4,1e-4,1e-4}; - bool using_mags, using_gps; - - INSGPSInit(); - - HomeLocationData home; - HomeLocationGet(&home); - - accels[0]=accel_data.filtered.x; - accels[1]=accel_data.filtered.y; - accels[2]=accel_data.filtered.z; - - using_mags = (ahrs_algorithm == AHRSSETTINGS_ALGORITHM_INSGPS_OUTDOOR) || (ahrs_algorithm == AHRSSETTINGS_ALGORITHM_INSGPS_INDOOR); - using_mags &= (home.Be[0] != 0) || (home.Be[1] != 0) || (home.Be[2] != 0); /* only use mags when valid home location */ - - using_gps = (ahrs_algorithm == AHRSSETTINGS_ALGORITHM_INSGPS_OUTDOOR) && (gps_data.quality != 0); - - /* Block till a data update */ - get_accel_gyro_data(); - - /* Ensure we get mag data in a timely manner */ - uint16_t fail_count = 50; // 50 at 200 Hz is up to 0.25 sec - while(using_mags && !mag_data.updated && fail_count--) { - get_accel_gyro_data(); - AhrsPoll(); - } - using_mags &= mag_data.updated; - - if (using_mags) { - /* Spin waiting for mag data */ - while(!mag_data.updated) { - get_accel_gyro_data(); - AhrsPoll(); - } - mag_data.updated = false; - - RotFrom2Vectors(accels, ge, mag_data.scaled.axis, home.Be, Rbe); - R2Quaternion(Rbe,q); - if (using_gps) - INSSetState(gps_data.NED, zeros, q, zeros, zeros); - else - INSSetState(zeros, zeros, q, zeros, zeros); - } else { - // assume yaw = 0 - mag = VectorMagnitude(accels); - rpy[1] = asinf(-accels[0]/mag); - rpy[0] = atan2(accels[1]/mag,accels[2]/mag); - rpy[2] = 0; - RPY2Quaternion(rpy,q); - if (using_gps) - INSSetState(gps_data.NED, zeros, q, zeros, zeros); - else - INSSetState(zeros, zeros, q, zeros, zeros); - } - - INSResetP(Pdiag); - - // TODO: include initial estimate of gyro bias? -} - -/** - * @brief Simple update using just mag and accel. Yaw biased and big attitude changes. - */ -void simple_update() { - float q[4]; - float rpy[3]; - /***************** SIMPLE ATTITUDE FROM NORTH AND ACCEL ************/ - /* Very simple computation of the heading and attitude from accel. */ - rpy[2] = atan2((mag_data.raw.axis[MAG_RAW_Y_IDX]), (-1 * mag_data.raw.axis[MAG_RAW_X_IDX])) * RAD_TO_DEG; - rpy[1] = atan2(accel_data.filtered.x, accel_data.filtered.z) * RAD_TO_DEG; - rpy[0] = atan2(accel_data.filtered.y, accel_data.filtered.z) * RAD_TO_DEG; - - RPY2Quaternion(rpy, q); - attitude_data.quaternion.q1 = q[0]; - attitude_data.quaternion.q2 = q[1]; - attitude_data.quaternion.q3 = q[2]; - attitude_data.quaternion.q4 = q[3]; - send_attitude(); -} - -/** - * @brief Output all the important inputs and states of the ekf through serial port - */ -#ifdef DUMP_EKF - -extern float **P, *X; // covariance matrix and state vector - -void print_ekf_binary() -{ - uint16_t states = ins_get_num_states(); - uint8_t framing[16] = { 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 }; - // Dump raw buffer - PIOS_COM_SendBuffer(PIOS_COM_AUX, &framing[0], 16); // framing header (1:16) - PIOS_COM_SendBuffer(PIOS_COM_AUX, (uint8_t *) & total_conversion_blocks, sizeof(total_conversion_blocks)); // dump block number (17:20) - - PIOS_COM_SendBufferNonBlocking(PIOS_COM_AUX, (uint8_t *) & accel_data.filtered.x, 4*3); // accel data (21:32) - PIOS_COM_SendBufferNonBlocking(PIOS_COM_AUX, (uint8_t *) & gyro_data.filtered.x, 4*3); // gyro data (33:44) - - PIOS_COM_SendBuffer(PIOS_COM_AUX, (uint8_t *) & mag_data.updated, 1); // mag update (45) - PIOS_COM_SendBuffer(PIOS_COM_AUX, (uint8_t *) & mag_data.scaled.axis, 3*4); // mag data (46:57) - - PIOS_COM_SendBuffer(PIOS_COM_AUX, (uint8_t *) & gps_data, sizeof(gps_data)); // gps data (58:85) - - PIOS_COM_SendBuffer(PIOS_COM_AUX, (uint8_t *) & X, 4 * states); // X (86:149) - for(uint8_t i = 0; i < states; i++) - PIOS_COM_SendBuffer(PIOS_COM_AUX, (uint8_t *) &((*P)[i + i * states]), 4); // diag(P) (150:213) - - PIOS_COM_SendBuffer(PIOS_COM_AUX, (uint8_t *) & altitude_data.altitude, 4); // BaroAlt (214:217) - PIOS_COM_SendBuffer(PIOS_COM_AUX, (uint8_t *) & baro_offset, 4); // baro_offset (218:221) -} -#else -void print_ekf_binary() {} -#endif - -/** - * @brief Debugging function to output all the ADC samples - */ -#if defined(DUMP_RAW) -void print_ahrs_raw() -{ - int result; - static int previous_conversion = 0; - int16_t * valid_data_buffer; - - uint8_t framing[16] = - { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 15 }; - - get_accel_gyro_data(); - - valid_data_buffer = PIOS_ADC_GetRawBuffer(); - - if (total_conversion_blocks != previous_conversion + 1) - PIOS_LED_On(PIOS_LED_HEARTBEAT); // not keeping up - else - PIOS_LED_Off(PIOS_LED_HEARTBEAT); - previous_conversion = total_conversion_blocks; - - - // Dump raw buffer - result = PIOS_COM_SendBufferNonBlocking(PIOS_COM_AUX, &framing[0], 16); // framing header - result += PIOS_COM_SendBufferNonBlocking(PIOS_COM_AUX, (uint8_t *) & total_conversion_blocks, sizeof(total_conversion_blocks)); // dump block number - result += - PIOS_COM_SendBufferNonBlocking(PIOS_COM_AUX, - (uint8_t *) & valid_data_buffer[0], - adc_oversampling * - PIOS_ADC_NUM_PINS * - sizeof(valid_data_buffer[0])); - if (result == 0) - PIOS_LED_Off(PIOS_LED_HEARTBEAT); - else { - PIOS_LED_On(PIOS_LED_HEARTBEAT); - } -} -#endif - -#if defined(PIP_DUMP_RAW) - - #define MAX_OVERSAMPLING PIOS_ADC_MAX_OVERSAMPLING - - void print_ahrs_raw() - { - int16_t accel_x[MAX_OVERSAMPLING], accel_y[MAX_OVERSAMPLING], accel_z[MAX_OVERSAMPLING]; - int16_t gyro_x[MAX_OVERSAMPLING], gyro_y[MAX_OVERSAMPLING], gyro_z[MAX_OVERSAMPLING]; - #if defined(PIOS_INCLUDE_HMC5843) && defined(PIOS_INCLUDE_I2C) - int16_t mag[3]; - int16_t mag_x, mag_y, mag_z; - #endif - - static int previous_conversion = 0; - - uint8_t framing[3] = {0xD2, 0x73, 0x00}; - - // wait for new raw samples - while (previous_conversion == total_conversion_blocks); - if ((previous_conversion + 1) != total_conversion_blocks) - PIOS_LED_On(PIOS_LED_HEARTBEAT); // we are not keeping up - previous_conversion = total_conversion_blocks; - - // fetch the buffer address for the new samples - int16_t *valid_data_buffer = PIOS_ADC_GetRawBuffer(); - - // fetch number of raw samples in the buffer (per channel) - int over_sampling = PIOS_ADC_GetOverSampling(); - - framing[2] = over_sampling; - - // copy the raw samples into their own buffers - for (uint16_t i = 0, j = 0; i < over_sampling; i++, j += PIOS_ADC_NUM_CHANNELS) - { - accel_x[i] = valid_data_buffer[ACCEL_RAW_X_IDX + j]; - accel_y[i] = valid_data_buffer[ACCEL_RAW_Y_IDX + j]; - accel_z[i] = valid_data_buffer[ACCEL_RAW_Z_IDX + j]; - - gyro_x[i] = valid_data_buffer[GYRO_RAW_X_IDX + j]; - gyro_y[i] = valid_data_buffer[GYRO_RAW_Y_IDX + j]; - gyro_z[i] = valid_data_buffer[GYRO_RAW_Z_IDX + j]; - } - - #if defined(PIOS_INCLUDE_HMC5843) && defined(PIOS_INCLUDE_I2C) - if (PIOS_HMC5843_NewDataAvailable()) - { - PIOS_HMC5843_ReadMag(mag); - - mag_x = mag[MAG_RAW_X_IDX]; - mag_y = mag[MAG_RAW_Y_IDX]; - mag_z = mag[MAG_RAW_Z_IDX]; - } - #endif - - // send the raw samples - int result = PIOS_COM_SendBufferNonBlocking(PIOS_COM_AUX, framing, sizeof(framing)); - result += PIOS_COM_SendBufferNonBlocking(PIOS_COM_AUX, (uint8_t *)accel_x, over_sampling * sizeof(accel_x[0])); - result += PIOS_COM_SendBufferNonBlocking(PIOS_COM_AUX, (uint8_t *)accel_y, over_sampling * sizeof(accel_y[0])); - result += PIOS_COM_SendBufferNonBlocking(PIOS_COM_AUX, (uint8_t *)accel_z, over_sampling * sizeof(accel_z[0])); - result += PIOS_COM_SendBufferNonBlocking(PIOS_COM_AUX, (uint8_t *)gyro_x, over_sampling * sizeof(gyro_x[0])); - result += PIOS_COM_SendBufferNonBlocking(PIOS_COM_AUX, (uint8_t *)gyro_y, over_sampling * sizeof(gyro_y[0])); - result += PIOS_COM_SendBufferNonBlocking(PIOS_COM_AUX, (uint8_t *)gyro_z, over_sampling * sizeof(gyro_z[0])); - - if (result != 0) - PIOS_LED_On(PIOS_LED_HEARTBEAT); // all data not sent - else - PIOS_LED_Off(PIOS_LED_HEARTBEAT); - } -#endif - -extern void PIOS_Board_Init(void); - -/** - * @brief AHRS Main function - */ -int main() -{ - gps_data.quality = -1; - uint32_t up_time_real = 0; - uint32_t up_time = 0; - uint32_t last_up_time = 0; - static int8_t last_ahrs_algorithm; - uint32_t last_counter_idle_start = 0; - uint32_t last_counter_idle_end = 0; - uint32_t idle_counts = 0; - uint32_t running_counts = 0; - uint32_t counter_val = 0; - ahrs_algorithm = AHRSSETTINGS_ALGORITHM_SIMPLE; - - reset_values(); - - PIOS_Board_Init(); - -#if defined(PIOS_INCLUDE_HMC5843) && defined(PIOS_INCLUDE_I2C) - // Get 3 ID bytes - strcpy((char *)mag_data.id, "ZZZ"); - PIOS_HMC5843_ReadID(mag_data.id); -#endif - - while(!AhrsLinkReady()) { - AhrsPoll(); - } -/* we didn't connect the callbacks before because we have to wait -for all data to be up to date before doing anything*/ - - AHRSCalibrationConnectCallback(calibration_callback); - GPSPositionConnectCallback(gps_callback); - BaroAltitudeConnectCallback(altitude_callback); - AHRSSettingsConnectCallback(settings_callback); - HomeLocationConnectCallback(homelocation_callback); - FirmwareIAPObjConnectCallback(firmwareiapobj_callback); - - calibration_callback(AHRSCalibrationHandle()); //force an update - -#if defined(DUMP_RAW) || defined(PIP_DUMP_RAW) - while (1) { - AhrsPoll(); - print_ahrs_raw(); - } -#endif - - timer_start(); - - /******************* Main EKF loop ****************************/ - while(1) { - - - AhrsPoll(); - AhrsStatusData status; - AhrsStatusGet(&status); - status.CPULoad = ((float)running_counts / - (float)(idle_counts + running_counts)) * 100; - status.IdleTimePerCyle = idle_counts / (timer_rate() / 10000); - status.RunningTimePerCyle = running_counts / (timer_rate() / 10000); - status.DroppedUpdates = ekf_too_slow; - up_time = timer_count(); - if(up_time >= last_up_time) // normal condition - up_time_real += ((up_time - last_up_time) * 1000) / timer_rate(); - else - up_time_real += ((0xFFFF - last_up_time + up_time) * 1000) / timer_rate(); - last_up_time = up_time; - status.RunningTime = up_time_real; - AhrsStatusSet(&status); - - // Alive signal - if (((total_conversion_blocks % 100) & 0xFFFE) == 0) - PIOS_LED_Toggle(PIOS_LED_HEARTBEAT); - - // Delay for valid data - - counter_val = timer_count(); - running_counts = counter_val - last_counter_idle_end; - last_counter_idle_start = counter_val; - - // This function blocks till data avilable - get_accel_gyro_data(); - - // Get any mag data available - process_mag_data(); - - counter_val = timer_count(); - idle_counts = counter_val - last_counter_idle_start; - last_counter_idle_end = counter_val; - - - if(ISNAN(accel_data.filtered.x + accel_data.filtered.y + accel_data.filtered.z) || - ISNAN(gyro_data.filtered.x + gyro_data.filtered.y + gyro_data.filtered.z) || - ACCEL_OOB(accel_data.filtered.x + accel_data.filtered.y + accel_data.filtered.z) || - GYRO_OOB(gyro_data.filtered.x + gyro_data.filtered.y + gyro_data.filtered.z)) { - // If any values are NaN or huge don't update -//TODO: add field to ahrs status to track number of these events - continue; - } - - print_ekf_binary(); - - /* If algorithm changed reinit. This could go in callback but wouldn't be synchronous */ - if (ahrs_algorithm != last_ahrs_algorithm) - ins_init_algorithm(); - last_ahrs_algorithm = ahrs_algorithm; - - switch(ahrs_algorithm) { - case AHRSSETTINGS_ALGORITHM_SIMPLE: - simple_update(); - break; - case AHRSSETTINGS_ALGORITHM_INSGPS_OUTDOOR: - ins_outdoor_update(); - break; - case AHRSSETTINGS_ALGORITHM_INSGPS_INDOOR: - case AHRSSETTINGS_ALGORITHM_INSGPS_INDOOR_NOMAG: - ins_indoor_update(); - break; - } - } - - return 0; -} - -/** - * @brief Get the accel and gyro data from whichever source when available - * - * This function will act as the HAL for the new INS sensors - */ -bool get_accel_gyro_data() -{ - float accel[6]; - float gyro[6]; - uint16_t spin_count = 1; - while(fifoBuf_getUsed(&adc_fifo_buffer) < (sizeof(accel) + sizeof(gyro))) { - if(spin_count++ == 0) - AhrsPoll(); - } - - fifoBuf_getData(&adc_fifo_buffer, &accel[0], sizeof(float) * 3); - fifoBuf_getData(&adc_fifo_buffer, &gyro[0], sizeof(float) * 3); - fifoBuf_getData(&adc_fifo_buffer, &accel[3], sizeof(float) * 3); - fifoBuf_getData(&adc_fifo_buffer, &gyro[3], sizeof(float) * 3); - - accel_data.filtered.x = (accel[0] + accel[3]) / 2; - accel_data.filtered.y = (accel[1] + accel[4]) / 2; - accel_data.filtered.z = (accel[2] + accel[5]) / 2; - gyro_data.filtered.x = (gyro[0] + gyro[3]) / 2; - gyro_data.filtered.y = (gyro[1] + gyro[4]) / 2; - gyro_data.filtered.z = (gyro[2] + gyro[5]) / 2; - return true; -} - -/** - * @brief Perform calibration of a 3-axis field sensor using an affine transformation - * matrix. - * - * Computes result = scale * arg. - * - * @param result[out] The three-axis resultant field. - * @param scale[in] The 4x4 affine transformation matrix. The fourth row is implicitly - * [0 0 0 1] - * @param arg[in] The 3-axis input field. The 'w' component is implicitly 1. - */ -void calibration(float result[3], float scale[3][4], float arg[3]) -{ - for (int row = 0; row < 3; ++row) { - result[row] = 0.0f; - int col; - for (col = 0; col < 3; ++col) { - result[row] += scale[row][col] * arg[col]; - } - // fourth column: arg has an implicit w value of 1.0f. - result[row] += scale[row][col]; - } -} - -/** - * @brief Scale an affine transformation matrix by a rotation, defined by a - * rotation vector. scale <- rotation * scale - * - * @param scale[in,out] The affine transformation matrix to be rotated - * @param rotation[in] The rotation vector defining the rotation - */ -void affine_rotate(float scale[3][4], float rotation[3]) -{ - // Rotate the scale factor matrix in-place - float rmatrix[3][3]; - Rv2Rot(rotation, rmatrix); - - float ret[3][4]; - for (int row = 0; row < 3; ++row) { - for (int col = 0; col < 4; ++col) { - ret[row][col] = 0.0f; - for (int i = 0; i < 3; ++i) { - ret[row][col] += rmatrix[row][i] * scale[i][col]; - } - } - } - // copy output to argument - for (int row = 0; row < 3; ++row) { - for (int col = 0; col < 4; ++col) { - scale[row][col] = ret[row][col]; - } - } -} - -/** - * @brief Downsample the analog data - * @return none - * - * Tried to make as much of the filtering fixed point when possible. Need to account - * for offset for each sample before the multiplication if filter not a boxcar. Could - * precompute fixed offset as sum[fir_coeffs[i]] * ACCEL_OFFSET. Puts data into global - * data structures @ref accel_data and @ref gyro_data. - * - * The accel_data values are converted into a coordinate system where X is forwards along - * the fuselage, Y is along right the wing, and Z is down. - */ -void adc_callback(float * downsampled_data) -{ - AHRSSettingsData settings; - AHRSSettingsGet(&settings); - -#if 0 - // Get the Y data. Third byte in. Convert to m/s - float accel_filtered[3]; - accel_filtered[1] = 0; - for (i = 0; i < adc_oversampling; i++) - accel_filtered[1] += valid_data_buffer[0 + i * PIOS_ADC_NUM_PINS] * fir_coeffs[i]; - accel_filtered[1] /= (float) fir_coeffs[adc_oversampling]; - // Get the X data which projects forward/backwards. Fifth byte in. Convert to m/s - accel_filtered[0] = 0; - for (i = 0; i < adc_oversampling; i++) - accel_filtered[0] += valid_data_buffer[2 + i * PIOS_ADC_NUM_PINS] * fir_coeffs[i]; - accel_filtered[0] /= (float) fir_coeffs[adc_oversampling]; - - // Get the Z data. Third byte in. Convert to m/s - accel_filtered[2] = 0; - for (i = 0; i < adc_oversampling; i++) - accel_filtered[2] += valid_data_buffer[4 + i * PIOS_ADC_NUM_PINS] * fir_coeffs[i]; - accel_filtered[2] /= (float) fir_coeffs[adc_oversampling]; - - float accel_scaled[3]; - calibration(accel_scaled, accel_data.calibration.scale, accel_filtered); - accel_data.filtered.x = accel_scaled[0]; - accel_data.filtered.y = accel_scaled[1]; - accel_data.filtered.z = accel_scaled[2]; -#else - float accel[3], gyro[3]; - - float raw_accel[3] = { - downsampled_data[ACCEL_RAW_X_IDX], - downsampled_data[ACCEL_RAW_Y_IDX], - -downsampled_data[ACCEL_RAW_Z_IDX] - }; - - // Accel data is (y,x,z) in first third and fifth byte. Convert to m/s^2 - calibration(accel, accel_data.calibration.scale, raw_accel); - - // Gyro data is (x,y,z) in second, fifth and seventh byte. Convert to rad/s - gyro[0] = ( ( downsampled_data[GYRO_RAW_X_IDX] + gyro_data.calibration.tempcompfactor[0] * downsampled_data[GYRO_TEMP_RAW_XY_IDX] ) * gyro_data.calibration.scale[0]) + gyro_data.calibration.bias[0]; - gyro[1] = ( ( downsampled_data[GYRO_RAW_Y_IDX] + gyro_data.calibration.tempcompfactor[1] * downsampled_data[GYRO_TEMP_RAW_XY_IDX] ) * gyro_data.calibration.scale[1]) + gyro_data.calibration.bias[1]; - gyro[2] = ( ( downsampled_data[GYRO_RAW_Z_IDX] + gyro_data.calibration.tempcompfactor[2] * downsampled_data[GYRO_TEMP_RAW_Z_IDX] ) * gyro_data.calibration.scale[2]) + gyro_data.calibration.bias[2]; - -#endif -#if 0 - static float gravity_tracking[3] = {0,0,0}; - const float tau = 0.9999; - gravity_tracking[0] = tau * gravity_tracking[0] + (1-tau) * accel[0]; - gravity_tracking[1] = tau * gravity_tracking[1] + (1-tau) * accel[1]; - gravity_tracking[2] = tau * gravity_tracking[2] + (1-tau) * (accel[2] + 9.81); - if(settings.BiasCorrectedRaw == AHRSSETTINGS_BIASCORRECTEDRAW_TRUE) { - accel[0] -= gravity_tracking[0]; - accel[1] -= gravity_tracking[1]; - accel[2] -= gravity_tracking[2]; - } -#endif - if(fifoBuf_getFree(&adc_fifo_buffer) >= (sizeof(accel) + sizeof(gyro))) { - fifoBuf_putData(&adc_fifo_buffer, (uint8_t *) &accel[0], sizeof(accel)); - fifoBuf_putData(&adc_fifo_buffer, (uint8_t *) &gyro[0], sizeof(gyro)); - } else { - ekf_too_slow++; - } - - AttitudeRawData raw; - - raw.gyrotemp[0] = downsampled_data[GYRO_TEMP_RAW_XY_IDX]; - raw.gyrotemp[1] = downsampled_data[GYRO_TEMP_RAW_Z_IDX]; - - raw.gyros[0] = gyro[0] * RAD_TO_DEG; - raw.gyros[1] = gyro[1] * RAD_TO_DEG; - raw.gyros[2] = gyro[2] * RAD_TO_DEG; - - raw.accels[0] = accel[0]; - raw.accels[1] = accel[1]; - raw.accels[2] = accel[2]; - - raw.magnetometers[0] = mag_data.scaled.axis[0]; - raw.magnetometers[1] = mag_data.scaled.axis[1]; - raw.magnetometers[2] = mag_data.scaled.axis[2]; - - if (settings.BiasCorrectedRaw == AHRSSETTINGS_BIASCORRECTEDRAW_TRUE) - { - raw.gyros[0] -= Nav.gyro_bias[0] * RAD_TO_DEG; - raw.gyros[1] -= Nav.gyro_bias[1] * RAD_TO_DEG; - raw.gyros[2] -= Nav.gyro_bias[2] * RAD_TO_DEG; - - raw.accels[0] -= Nav.accel_bias[0]; - raw.accels[1] -= Nav.accel_bias[1]; - raw.accels[2] -= Nav.accel_bias[2]; - } - - AttitudeRawSet(&raw); - - total_conversion_blocks++; -} - -#if defined(PIOS_INCLUDE_HMC5843) && defined(PIOS_INCLUDE_I2C) -/** - * @brief Get the mag data from the I2C sensor and load into structure - * @return none - * - * This function also considers if the home location is set and has a valid - * magnetic field before updating the mag data to prevent data being used that - * cannot be interpreted. In addition the mag data is not used for the first - * five seconds to allow the filter to start to converge - */ -void process_mag_data() -{ - // Get magnetic readings - // For now don't use mags until the magnetic field is set AND until 5 seconds - // after initialization otherwise it seems to have problems - // TODO: Follow up this initialization issue - HomeLocationData home; - HomeLocationGet(&home); - if (PIOS_HMC5843_NewDataAvailable()) { - PIOS_HMC5843_ReadMag(mag_data.raw.axis); - - // Swap the axis here to acount for orientation of mag chip (notice 0 and 1 swapped in raw) - mag_data.scaled.axis[0] = (mag_data.raw.axis[MAG_RAW_X_IDX] * mag_data.calibration.scale[0]) + mag_data.calibration.bias[0]; - mag_data.scaled.axis[1] = (mag_data.raw.axis[MAG_RAW_Y_IDX] * mag_data.calibration.scale[1]) + mag_data.calibration.bias[1]; - mag_data.scaled.axis[2] = (mag_data.raw.axis[MAG_RAW_Z_IDX] * mag_data.calibration.scale[2]) + mag_data.calibration.bias[2]; - - // Only use if magnetic length reasonable - float Blen = sqrt(pow(mag_data.scaled.axis[0],2) + pow(mag_data.scaled.axis[1],2) + pow(mag_data.scaled.axis[2],2)); - - mag_data.updated = (home.Set == HOMELOCATION_SET_TRUE) && - ((home.Be[0] != 0) || (home.Be[1] != 0) || (home.Be[2] != 0)) && - ((mag_data.raw.axis[MAG_RAW_X_IDX] != 0) || (mag_data.raw.axis[MAG_RAW_Y_IDX] != 0) || (mag_data.raw.axis[MAG_RAW_Z_IDX] != 0)) && - ((Blen < mag_len * (1 + INSGPS_MAGTOL)) && (Blen > mag_len * (1 - INSGPS_MAGTOL))); - } -} -#else -void process_mag_data() { } -#endif - -/** - * @brief Assumes board is not moving computes biases and variances of sensors - * @returns None - * - * All data is stored in global structures. This function should be called from OP when - * aircraft is in stable state and then the data stored to SD card. - * - * After this function the bias for each sensor will be the mean value. This doesn't make - * sense for the z accel so make sure 6 point calibration is also run and those values set - * after these read. - */ -#define NBIAS 100 -#define NVAR 500 -void calibrate_sensors() -{ - int i,j; - float accel_bias[3] = {0, 0, 0}; - float gyro_bias[3] = {0, 0, 0}; - float mag_bias[3] = {0, 0, 0}; - - - for (i = 0, j = 0; i < NBIAS; i++) { - - get_accel_gyro_data(); - - gyro_bias[0] += gyro_data.filtered.x / NBIAS; - gyro_bias[1] += gyro_data.filtered.y / NBIAS; - gyro_bias[2] += gyro_data.filtered.z / NBIAS; - accel_bias[0] += accel_data.filtered.x / NBIAS; - accel_bias[1] += accel_data.filtered.y / NBIAS; - accel_bias[2] += accel_data.filtered.z / NBIAS; - -#if defined(PIOS_INCLUDE_HMC5843) && defined(PIOS_INCLUDE_I2C) - if(PIOS_HMC5843_NewDataAvailable()) { - j ++; - PIOS_HMC5843_ReadMag(mag_data.raw.axis); - mag_data.scaled.axis[0] = (mag_data.raw.axis[MAG_RAW_X_IDX] * mag_data.calibration.scale[0]) + mag_data.calibration.bias[0]; - mag_data.scaled.axis[1] = (mag_data.raw.axis[MAG_RAW_Y_IDX] * mag_data.calibration.scale[1]) + mag_data.calibration.bias[1]; - mag_data.scaled.axis[2] = (mag_data.raw.axis[MAG_RAW_Z_IDX] * mag_data.calibration.scale[2]) + mag_data.calibration.bias[2]; - mag_bias[0] += mag_data.scaled.axis[0]; - mag_bias[1] += mag_data.scaled.axis[1]; - mag_bias[2] += mag_data.scaled.axis[2]; - } -#endif - - } - mag_bias[0] /= j; - mag_bias[1] /= j; - mag_bias[2] /= j; - - gyro_data.calibration.variance[0] = 0; - gyro_data.calibration.variance[1] = 0; - gyro_data.calibration.variance[2] = 0; - mag_data.calibration.variance[0] = 0; - mag_data.calibration.variance[1] = 0; - mag_data.calibration.variance[2] = 0; - accel_data.calibration.variance[0] = 0; - accel_data.calibration.variance[1] = 0; - accel_data.calibration.variance[2] = 0; - - for (i = 0, j = 0; j < NVAR; j++) { - get_accel_gyro_data(); - - gyro_data.calibration.variance[0] += pow(gyro_data.filtered.x-gyro_bias[0],2) / NVAR; - gyro_data.calibration.variance[1] += pow(gyro_data.filtered.y-gyro_bias[1],2) / NVAR; - gyro_data.calibration.variance[2] += pow(gyro_data.filtered.z-gyro_bias[2],2) / NVAR; - accel_data.calibration.variance[0] += pow(accel_data.filtered.x-accel_bias[0],2) / NVAR; - accel_data.calibration.variance[1] += pow(accel_data.filtered.y-accel_bias[1],2) / NVAR; - accel_data.calibration.variance[2] += pow(accel_data.filtered.z-accel_bias[2],2) / NVAR; - -#if defined(PIOS_INCLUDE_HMC5843) && defined(PIOS_INCLUDE_I2C) - if(PIOS_HMC5843_NewDataAvailable()) { - j ++; - PIOS_HMC5843_ReadMag(mag_data.raw.axis); - mag_data.scaled.axis[0] = (mag_data.raw.axis[MAG_RAW_X_IDX] * mag_data.calibration.scale[0]) + mag_data.calibration.bias[0]; - mag_data.scaled.axis[1] = (mag_data.raw.axis[MAG_RAW_Y_IDX] * mag_data.calibration.scale[1]) + mag_data.calibration.bias[1]; - mag_data.scaled.axis[2] = (mag_data.raw.axis[MAG_RAW_Z_IDX] * mag_data.calibration.scale[2]) + mag_data.calibration.bias[2]; - mag_data.calibration.variance[0] += pow(mag_data.scaled.axis[0]-mag_bias[0],2); - mag_data.calibration.variance[1] += pow(mag_data.scaled.axis[1]-mag_bias[1],2); - mag_data.calibration.variance[2] += pow(mag_data.scaled.axis[2]-mag_bias[2],2); - } -#endif - - } - - mag_data.calibration.variance[0] /= j; - mag_data.calibration.variance[1] /= j; - mag_data.calibration.variance[2] /= j; - - gyro_data.calibration.bias[0] -= gyro_bias[0]; - gyro_data.calibration.bias[1] -= gyro_bias[1]; - gyro_data.calibration.bias[2] -= gyro_bias[2]; -} - -/** - * @brief Populate fields with initial values - */ -void reset_values() -{ - accel_data.calibration.scale[0][1] = 0; - accel_data.calibration.scale[1][0] = 0; - accel_data.calibration.scale[0][2] = 0; - accel_data.calibration.scale[2][0] = 0; - accel_data.calibration.scale[1][2] = 0; - accel_data.calibration.scale[2][1] = 0; - - accel_data.calibration.scale[0][0] = 0.0359; - accel_data.calibration.scale[1][1] = 0.0359; - accel_data.calibration.scale[2][2] = 0.0359; - accel_data.calibration.scale[0][3] = -73.5; - accel_data.calibration.scale[1][3] = -73.5; - accel_data.calibration.scale[2][3] = -73.5; - - accel_data.calibration.variance[0] = 1e-4; - accel_data.calibration.variance[1] = 1e-4; - accel_data.calibration.variance[2] = 1e-4; - - gyro_data.calibration.scale[0] = -0.014; - gyro_data.calibration.scale[1] = 0.014; - gyro_data.calibration.scale[2] = -0.014; - gyro_data.calibration.bias[0] = -24; - gyro_data.calibration.bias[1] = -24; - gyro_data.calibration.bias[2] = -24; - gyro_data.calibration.variance[0] = 1; - gyro_data.calibration.variance[1] = 1; - gyro_data.calibration.variance[2] = 1; - mag_data.calibration.scale[0] = 1; - mag_data.calibration.scale[1] = 1; - mag_data.calibration.scale[2] = 1; - mag_data.calibration.bias[0] = 0; - mag_data.calibration.bias[1] = 0; - mag_data.calibration.bias[2] = 0; - mag_data.calibration.variance[0] = 50; - mag_data.calibration.variance[1] = 50; - mag_data.calibration.variance[2] = 50; -} - - -void send_attitude(void) -{ - AttitudeActualData attitude; - AHRSSettingsData settings; - AHRSSettingsGet(&settings); - - attitude.q1 = attitude_data.quaternion.q1; - attitude.q2 = attitude_data.quaternion.q2; - attitude.q3 = attitude_data.quaternion.q3; - attitude.q4 = attitude_data.quaternion.q4; - float rpy[3]; - Quaternion2RPY(&attitude_data.quaternion.q1, rpy); - attitude.Roll = rpy[0] + settings.RollBias; - attitude.Pitch = rpy[1] + settings.PitchBias; - attitude.Yaw = rpy[2] + settings.YawBias; - if(attitude.Yaw > 360) - attitude.Yaw -= 360; - AttitudeActualSet(&attitude); -} - -void send_velocity(void) -{ - VelocityActualData velocityActual; - VelocityActualGet(&velocityActual); - - // convert into cm - velocityActual.North = Nav.Vel[0] * 100; - velocityActual.East = Nav.Vel[1] * 100; - velocityActual.Down = Nav.Vel[2] * 100; - - VelocityActualSet(&velocityActual); -} - -void send_position(void) -{ - PositionActualData positionActual; - PositionActualGet(&positionActual); - - // convert into cm - positionActual.North = Nav.Pos[0] * 100; - positionActual.East = Nav.Pos[1] * 100; - positionActual.Down = Nav.Pos[2] * 100; - - PositionActualSet(&positionActual); -} - -void send_calibration(void) -{ - AHRSCalibrationData cal; - AHRSCalibrationGet(&cal); - for(int ct=0; ct<3; ct++) - { - cal.accel_var[ct] = accel_data.calibration.variance[ct]; - cal.gyro_bias[ct] = gyro_data.calibration.bias[ct]; - cal.gyro_var[ct] = gyro_data.calibration.variance[ct]; - cal.mag_var[ct] = mag_data.calibration.variance[ct]; - } - cal.measure_var = AHRSCALIBRATION_MEASURE_VAR_SET; - AHRSCalibrationSet(&cal); -} - -/** - * @brief AHRS calibration callback - * - * Called when the OP board sets the calibration - */ -void calibration_callback(AhrsObjHandle obj) -{ - AHRSCalibrationData cal; - AHRSCalibrationGet(&cal); - if(cal.measure_var == AHRSCALIBRATION_MEASURE_VAR_SET){ - - accel_data.calibration.scale[0][1] = cal.accel_ortho[0]; - accel_data.calibration.scale[1][0] = cal.accel_ortho[0]; - - accel_data.calibration.scale[0][2] = cal.accel_ortho[1]; - accel_data.calibration.scale[2][0] = cal.accel_ortho[1]; - - accel_data.calibration.scale[1][2] = cal.accel_ortho[2]; - accel_data.calibration.scale[2][1] = cal.accel_ortho[2]; - -#if 0 - // TODO: Enable after v1.0 feature freeze. - float rotation[3] = { cal.accel_rotation[0], - cal.accel_rotation[1], - cal.accel_rotation[2], - }; - - affine_rotate(accel_data.calibration.scale, rotation); -#endif - - for(int ct=0; ct<3; ct++) - { - accel_data.calibration.scale[ct][ct] = cal.accel_scale[ct]; - accel_data.calibration.scale[ct][3] = cal.accel_bias[ct]; - accel_data.calibration.variance[ct] = cal.accel_var[ct]; - - gyro_data.calibration.scale[ct] = cal.gyro_scale[ct]; - gyro_data.calibration.bias[ct] = cal.gyro_bias[ct]; - gyro_data.calibration.variance[ct] = cal.gyro_var[ct]; -#if 1 - gyro_data.calibration.tempcompfactor[ct] = cal.gyro_tempcompfactor[ct]; -#endif - mag_data.calibration.bias[ct] = cal.mag_bias[ct]; - mag_data.calibration.scale[ct] = cal.mag_scale[ct]; - mag_data.calibration.variance[ct] = cal.mag_var[ct]; - } - // Note: We need the divided by 1000^2 since we scale mags to have a norm of 1000 and they are scaled to - // one in code - float mag_var[3] = {mag_data.calibration.variance[0] / INSGPS_MAGLEN / INSGPS_MAGLEN, - mag_data.calibration.variance[1] / INSGPS_MAGLEN / INSGPS_MAGLEN, - mag_data.calibration.variance[2] / INSGPS_MAGLEN / INSGPS_MAGLEN}; - INSSetMagVar(mag_var); - INSSetAccelVar(accel_data.calibration.variance); - INSSetGyroVar(gyro_data.calibration.variance); - } - else if(cal.measure_var == AHRSCALIBRATION_MEASURE_VAR_MEASURE) { - calibrate_sensors(); - send_calibration(); - } - - INSSetPosVelVar(cal.pos_var, cal.vel_var); - -} - -void gps_callback(AhrsObjHandle obj) -{ - GPSPositionData pos; - GPSPositionGet(&pos); - HomeLocationData home; - HomeLocationGet(&home); - - // convert from cm back to meters - double LLA[3] = {(double) pos.Latitude / 1e7, (double) pos.Longitude / 1e7, (double) (pos.GeoidSeparation + pos.Altitude)}; - // put in local NED frame - double ECEF[3] = {(double) (home.ECEF[0] / 100), (double) (home.ECEF[1] / 100), (double) (home.ECEF[2] / 100)}; - LLA2Base(LLA, ECEF, (float (*)[3]) home.RNE, gps_data.NED); - - gps_data.heading = pos.Heading; - gps_data.groundspeed = pos.Groundspeed; - gps_data.quality = 1; /* currently unused */ - gps_data.updated = true; - - // if poor don't use this update - if((ahrs_algorithm != AHRSSETTINGS_ALGORITHM_INSGPS_OUTDOOR) || - (pos.Satellites < INSGPS_GPS_MINSAT) || - (pos.PDOP >= INSGPS_GPS_MINPDOP) || - (home.Set == FALSE) || - ((home.ECEF[0] == 0) && (home.ECEF[1] == 0) && (home.ECEF[2] == 0))) - { - gps_data.quality = 0; - gps_data.updated = false; - } - -} - -void altitude_callback(AhrsObjHandle obj) -{ - BaroAltitudeData alt; - BaroAltitudeGet(&alt); - altitude_data.altitude = alt.Altitude; - altitude_data.updated = true; -} - -void settings_callback(AhrsObjHandle obj) -{ - AHRSSettingsData settings; - AHRSSettingsGet(&settings); - - ahrs_algorithm = settings.Algorithm; - - if(settings.Downsampling != adc_oversampling) { - adc_oversampling = settings.Downsampling; - PIOS_ADC_Config(adc_oversampling); - } -} - -void homelocation_callback(AhrsObjHandle obj) -{ - HomeLocationData data; - HomeLocationGet(&data); - - mag_len = sqrt(pow(data.Be[0],2) + pow(data.Be[1],2) + pow(data.Be[2],2)); - float Be[3] = {data.Be[0] / mag_len, data.Be[1] / mag_len, data.Be[2] / mag_len}; - - INSSetMagNorth(Be); -} - -void firmwareiapobj_callback(AhrsObjHandle obj) -{ - const struct pios_board_info * bdinfo = &pios_board_info_blob; - - FirmwareIAPObjData firmwareIAPObj; - FirmwareIAPObjGet(&firmwareIAPObj); - if(firmwareIAPObj.ArmReset==0) - reset_count=0; - if(firmwareIAPObj.ArmReset==1) - { - - if((firmwareIAPObj.BoardType==bdinfo->board_type) || (firmwareIAPObj.BoardType==0xFF)) - { - - ++reset_count; - if(reset_count>2) - { - PIOS_IAP_SetRequest1(); - PIOS_IAP_SetRequest2(); - PIOS_SYS_Reset(); - } - } - } - else if(firmwareIAPObj.BoardType==bdinfo->board_type && firmwareIAPObj.crc!=PIOS_BL_HELPER_CRC_Memory_Calc()) - { - PIOS_BL_HELPER_FLASH_Read_Description(firmwareIAPObj.Description,bdinfo->desc_size); - firmwareIAPObj.crc=PIOS_BL_HELPER_CRC_Memory_Calc(); - firmwareIAPObj.BoardRevision=bdinfo->board_rev; - FirmwareIAPObjSet(&firmwareIAPObj); - } -} - -/** - * @} - */ - diff --git a/flight/AHRS/ahrs_timer.c b/flight/AHRS/ahrs_timer.c deleted file mode 100644 index d30a6c9f6..000000000 --- a/flight/AHRS/ahrs_timer.c +++ /dev/null @@ -1,61 +0,0 @@ -/** - ****************************************************************************** - * @addtogroup AHRS AHRS - * @brief The AHRS Modules perform - * - * @{ - * @addtogroup AHRS_TIMER AHRS Timer - * @brief Sets up a simple timer that can be polled to estimate idle time - * @{ - * - * - * @file ahrs.c - * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010. - * @brief INSGPS Test Program - * @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 - */ - -#include "ahrs_timer.h" - -void timer_start() -{ - RCC_APB1PeriphClockCmd(RCC_APB1Periph_BKP | RCC_APB1Periph_PWR, - ENABLE); - PWR_BackupAccessCmd(ENABLE); - - RCC_RTCCLKConfig(RCC_RTCCLKSource_HSE_Div128); - RCC_RTCCLKCmd(ENABLE); - RTC_WaitForLastTask(); - RTC_WaitForSynchro(); - RTC_WaitForLastTask(); - RTC_SetPrescaler(0); // counting at 8e6 / 128 - RTC_WaitForLastTask(); - RTC_SetCounter(0); - RTC_WaitForLastTask(); -} - -uint32_t timer_count() -{ - return RTC_GetCounter(); -} - -uint32_t timer_rate() -{ - return TIMER_RATE; -} diff --git a/flight/AHRS/inc/ahrs.h b/flight/AHRS/inc/ahrs.h deleted file mode 100644 index 99c0656e6..000000000 --- a/flight/AHRS/inc/ahrs.h +++ /dev/null @@ -1,115 +0,0 @@ -/** - ****************************************************************************** - * - * @file ahrs.h - * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010. - * @brief Main AHRS header. - * @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 - */ - -#ifndef AHRS_H -#define AHRS_H - -/* PIOS Includes */ -#include - -struct mag_sensor { - uint8_t id[4]; - uint8_t updated; - struct { - int16_t axis[3]; - } raw; - struct { - float axis[3]; - } scaled; - struct { - float bias[3]; - float scale[3]; - float variance[3]; - } calibration; -}; - -//! Contains the data from the accelerometer -struct accel_sensor { - struct { - uint16_t x; - uint16_t y; - uint16_t z; - } raw; - struct { - float x; - float y; - float z; - } filtered; - struct { - float scale[3][4]; - float variance[3]; - } calibration; -}; - -//! Contains the data from the gyro -struct gyro_sensor { - struct { - uint16_t x; - uint16_t y; - uint16_t z; - } raw; - struct { - float x; - float y; - float z; - } filtered; - struct { - float bias[3]; - float scale[3]; - float variance[3]; - float tempcompfactor[3]; - } calibration; - struct { - uint16_t xy; - uint16_t z; - } temp; -}; - -//! Conains the current estimate of the attitude -struct attitude_solution { - struct { - float q1; - float q2; - float q3; - float q4; - } quaternion; -}; - -//! Contains data from the altitude sensor -struct altitude_sensor { - float altitude; - bool updated; -}; - -//! Contains data from the GPS (via the SPI link) -struct gps_sensor { - float NED[3]; - float heading; - float groundspeed; - float quality; - bool updated; -}; - -#endif /* AHRS_H */ diff --git a/flight/AHRS/inc/ahrs_fsm.h b/flight/AHRS/inc/ahrs_fsm.h deleted file mode 100644 index dd9d24b21..000000000 --- a/flight/AHRS/inc/ahrs_fsm.h +++ /dev/null @@ -1,94 +0,0 @@ - /** - ****************************************************************************** - * - * @file ahrs_fsm.h - * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010. - * @brief - * @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 - */ - -#ifndef AHRS_FSM_H -#define AHRS_FSM_H - -#include "pios_opahrs_proto.h" - -enum lfsm_state { - LFSM_STATE_FAULTED = 0, /* Must be zero so undefined transitions land here */ - LFSM_STATE_STOPPED, - LFSM_STATE_STOPPING, - LFSM_STATE_INACTIVE, - LFSM_STATE_USER_BUSY, - LFSM_STATE_USER_BUSY_RX_PENDING, - LFSM_STATE_USER_BUSY_TX_PENDING, - LFSM_STATE_USER_BUSY_RXTX_PENDING, - LFSM_STATE_USER_RX_PENDING, - LFSM_STATE_USER_TX_PENDING, - LFSM_STATE_USER_RXTX_PENDING, - LFSM_STATE_USER_RX_ACTIVE, - LFSM_STATE_USER_TX_ACTIVE, - LFSM_STATE_USER_RXTX_ACTIVE, - - LFSM_STATE_NUM_STATES /* Must be last */ -}; - -enum lfsm_event { - LFSM_EVENT_INIT_LINK, - LFSM_EVENT_STOP, - LFSM_EVENT_USER_SET_RX, - LFSM_EVENT_USER_SET_TX, - LFSM_EVENT_USER_DONE, - LFSM_EVENT_RX_LINK, - LFSM_EVENT_RX_USER, - LFSM_EVENT_RX_UNKNOWN, - - LFSM_EVENT_NUM_EVENTS /* Must be last */ -}; - -struct lfsm_link_stats { - uint32_t rx_badcrc; - uint32_t rx_badmagic_head; - uint32_t rx_badmagic_tail; - uint32_t rx_link; - uint32_t rx_user; - uint32_t tx_user; - uint32_t rx_badtype; - uint32_t rx_badver; -}; - -extern void lfsm_init(void); -extern void lfsm_inject_event(enum lfsm_event event); - -extern void lfsm_irq_callback(uint8_t crc_ok, uint8_t crc_val); - -extern void lfsm_get_link_stats(struct lfsm_link_stats *stats); -extern enum lfsm_state lfsm_get_state(void); - -extern void lfsm_set_link_proto_v0(struct opahrs_msg_v0 *link_tx, - struct opahrs_msg_v0 *link_rx); -extern void lfsm_user_set_rx_v0(struct opahrs_msg_v0 *user_rx); -extern void lfsm_user_set_tx_v0(struct opahrs_msg_v0 *user_tx); - -extern void lfsm_set_link_proto_v1(struct opahrs_msg_v1 *link_tx, - struct opahrs_msg_v1 *link_rx); -extern void lfsm_user_set_rx_v1(struct opahrs_msg_v1 *user_rx); -extern void lfsm_user_set_tx_v1(struct opahrs_msg_v1 *user_tx); - -extern void lfsm_user_done(void); - -#endif /* AHRS_FSM_H */ diff --git a/flight/AHRS/inc/ahrs_timer.h b/flight/AHRS/inc/ahrs_timer.h deleted file mode 100644 index aaddf5769..000000000 --- a/flight/AHRS/inc/ahrs_timer.h +++ /dev/null @@ -1,45 +0,0 @@ -/** - ****************************************************************************** - * @addtogroup AHRS AHRS Control - * @brief The AHRS Modules perform - * - * @{ - * @addtogroup AHRS_TIMER - * @brief Sets up a simple timer that can be polled to estimate idle time - * @{ - * - * - * @file ahrs.c - * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010. - * @brief INSGPS Test Program - * @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 - */ - -#ifndef AHRS_TIMER -#define AHRS_TIMER - -#include - -#define TIMER_RATE (8e6 / 128) - -void timer_start(); -uint32_t timer_count(); -uint32_t timer_rate(); - -#endif diff --git a/flight/AHRS/inc/insgps.h b/flight/AHRS/inc/insgps.h deleted file mode 100644 index bf4faae4b..000000000 --- a/flight/AHRS/inc/insgps.h +++ /dev/null @@ -1,93 +0,0 @@ -/** - ****************************************************************************** - * @addtogroup AHRS - * @{ - * @addtogroup INSGPS - * @{ - * @brief INSGPS is a joint attitude and position estimation EKF - * - * @file insgps.h - * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010. - * @brief Include file of the INSGPS exposed functionality. - * - * @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 - */ - -#ifndef INSGPS_H_ -#define INSGPS_H_ - -#include "stdint.h" - -/** - * @addtogroup Constants - * @{ - */ -#define POS_SENSORS 0x007 -#define HORIZ_SENSORS 0x018 -#define VERT_SENSORS 0x020 -#define MAG_SENSORS 0x1C0 -#define BARO_SENSOR 0x200 - -#define FULL_SENSORS 0x3FF - -/** - * @} - */ - -// Exposed Function Prototypes -void INSGPSInit(); -void INSStatePrediction(float gyro_data[3], float accel_data[3], float dT); -void INSCovariancePrediction(float dT); -void INSCorrection(float mag_data[3], float Pos[3], float Vel[3], float BaroAlt, uint16_t SensorsUsed); - -void INSResetP(float PDiag[13]); -void INSSetState(float pos[3], float vel[3], float q[4], float gyro_bias[3], float accel_bias[3]); -void INSSetPosVelVar(float PosVar, float VelVar); -void INSSetGyroBias(float gyro_bias[3]); -void INSSetAccelVar(float accel_var[3]); -void INSSetGyroVar(float gyro_var[3]); -void INSSetMagNorth(float B[3]); -void INSSetMagVar(float scaled_mag_var[3]); -void INSPosVelReset(float pos[3], float vel[3]); - -void MagCorrection(float mag_data[3]); -void MagVelBaroCorrection(float mag_data[3], float Vel[3], float BaroAlt); -void FullCorrection(float mag_data[3], float Pos[3], float Vel[3], - float BaroAlt); -void GpsBaroCorrection(float Pos[3], float Vel[3], float BaroAlt); -void GpsMagCorrection(float mag_data[3], float Pos[3], float Vel[2]); -void VelBaroCorrection(float Vel[3], float BaroAlt); - -uint16_t ins_get_num_states(); - -// Nav structure containing current solution -struct NavStruct { - float Pos[3]; // Position in meters and relative to a local NED frame - float Vel[3]; // Velocity in meters and in NED - float q[4]; // unit quaternion rotation relative to NED - float gyro_bias[3]; - float accel_bias[3]; -} Nav; - -/** - * @} - * @} - */ - -#endif /* EKF_H_ */ diff --git a/flight/AHRS/inc/pios_config.h b/flight/AHRS/inc/pios_config.h deleted file mode 100644 index 77ddf0f2f..000000000 --- a/flight/AHRS/inc/pios_config.h +++ /dev/null @@ -1,46 +0,0 @@ -/** - ****************************************************************************** - * - * @file pios_config.h - * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010. - * @brief PiOS configuration header. - * - Central compile time config for the project. - * @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 - */ - -#ifndef PIOS_CONFIG_H -#define PIOS_CONFIG_H - -/* Enable/Disable PiOS Modules */ -#define PIOS_INCLUDE_ADC -#define PIOS_INCLUDE_DELAY -#define PIOS_INCLUDE_I2C -#define PIOS_INCLUDE_IRQ -#define PIOS_INCLUDE_LED -#define PIOS_INCLUDE_SPI -#define PIOS_INCLUDE_SYS -#define PIOS_INCLUDE_USART -#define PIOS_INCLUDE_COM -#define PIOS_INCLUDE_HMC5843 -#define PIOS_INCLUDE_GPIO -#define PIOS_INCLUDE_EXTI -#define PIOS_INCLUDE_BL_HELPER -#define PIOS_INCLUDE_IAP - -#endif /* PIOS_CONFIG_H */ diff --git a/flight/AHRS/insgps13state.c b/flight/AHRS/insgps13state.c deleted file mode 100644 index 24ffab1db..000000000 --- a/flight/AHRS/insgps13state.c +++ /dev/null @@ -1,1644 +0,0 @@ -/** - ****************************************************************************** - * @addtogroup AHRS - * @{ - * @addtogroup INSGPS - * @{ - * @brief INSGPS is a joint attitude and position estimation EKF - * - * @file insgps.c - * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010. - * @brief An INS/GPS algorithm implemented with an EKF. - * - * @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 - */ - -#include "insgps.h" -#include -#include - -// constants/macros/typdefs -#define NUMX 13 // number of states, X is the state vector -#define NUMW 9 // number of plant noise inputs, w is disturbance noise vector -#define NUMV 10 // number of measurements, v is the measurement noise vector -#define NUMU 6 // number of deterministic inputs, U is the input vector - -#if defined(GENERAL_COV) -// This might trick people so I have a note here. There is a slower but bigger version of the -// code here but won't fit when debugging disabled (requires -Os) -#define COVARIANCE_PREDICTION_GENERAL -#endif - -// Private functions -void CovariancePrediction(float F[NUMX][NUMX], float G[NUMX][NUMW], - float Q[NUMW], float dT, float P[NUMX][NUMX]); -void SerialUpdate(float H[NUMV][NUMX], float R[NUMV], float Z[NUMV], - float Y[NUMV], float P[NUMX][NUMX], float X[NUMX], - uint16_t SensorsUsed); -void RungeKutta(float X[NUMX], float U[NUMU], float dT); -void StateEq(float X[NUMX], float U[NUMU], float Xdot[NUMX]); -void LinearizeFG(float X[NUMX], float U[NUMU], float F[NUMX][NUMX], - float G[NUMX][NUMW]); -void MeasurementEq(float X[NUMX], float Be[3], float Y[NUMV]); -void LinearizeH(float X[NUMX], float Be[3], float H[NUMV][NUMX]); - -// Private variables -float F[NUMX][NUMX], G[NUMX][NUMW], H[NUMV][NUMX]; // linearized system matrices - // global to init to zero and maintain zero elements -float Be[3]; // local magnetic unit vector in NED frame -float P[NUMX][NUMX], X[NUMX]; // covariance matrix and state vector -float Q[NUMW], R[NUMV]; // input noise and measurement noise variances -float K[NUMX][NUMV]; // feedback gain matrix - -// ************* Exposed Functions **************** -// ************************************************* - -uint16_t ins_get_num_states() -{ - return NUMX; -} - -void INSGPSInit() //pretty much just a place holder for now -{ - Be[0] = 1; - Be[1] = 0; - Be[2] = 0; // local magnetic unit vector - - for (int i = 0; i < NUMX; i++) { - for (int j = 0; j < NUMX; j++) { - P[i][j] = 0; // zero all terms - } - } - - P[0][0] = P[1][1] = P[2][2] = 25; // initial position variance (m^2) - P[3][3] = P[4][4] = P[5][5] = 5; // initial velocity variance (m/s)^2 - P[6][6] = P[7][7] = P[8][8] = P[9][9] = 1e-5; // initial quaternion variance - P[10][10] = P[11][11] = P[12][12] = 1e-5; // initial gyro bias variance (rad/s)^2 - - X[0] = X[1] = X[2] = X[3] = X[4] = X[5] = 0; // initial pos and vel (m) - X[6] = 1; - X[7] = X[8] = X[9] = 0; // initial quaternion (level and North) (m/s) - X[10] = X[11] = X[12] = 0; // initial gyro bias (rad/s) - - Q[0] = Q[1] = Q[2] = 50e-8; // gyro noise variance (rad/s)^2 - Q[3] = Q[4] = Q[5] = 0.01; // accelerometer noise variance (m/s^2)^2 - Q[6] = Q[7] = Q[8] = 2e-9; // gyro bias random walk variance (rad/s^2)^2 - - R[0] = R[1] = 0.004; // High freq GPS horizontal position noise variance (m^2) - R[2] = 0.036; // High freq GPS vertical position noise variance (m^2) - R[3] = R[4] = 0.004; // High freq GPS horizontal velocity noise variance (m/s)^2 - R[5] = 100; // High freq GPS vertical velocity noise variance (m/s)^2 - R[6] = R[7] = R[8] = 0.005; // magnetometer unit vector noise variance - R[9] = .05; // High freq altimeter noise variance (m^2) -} - -void INSResetP(float PDiag[NUMX]) -{ - uint8_t i,j; - - // if PDiag[i] nonzero then clear row and column and set diagonal element - for (i=0;i -#include - -// constants/macros/typdefs -#define NUMX 16 // number of states, X is the state vector -#define NUMW 12 // number of plant noise inputs, w is disturbance noise vector -#define NUMV 10 // number of measurements, v is the measurement noise vector -#define NUMU 6 // number of deterministic inputs, U is the input vector - -#if defined(GENERAL_COV) -// This might trick people so I have a note here. There is a slower but bigger version of the -// code here but won't fit when debugging disabled (requires -Os) -#define COVARIANCE_PREDICTION_GENERAL -#endif - -// Private functions -void CovariancePrediction(float F[NUMX][NUMX], float G[NUMX][NUMW], - float Q[NUMW], float dT, float P[NUMX][NUMX]); -void SerialUpdate(float H[NUMV][NUMX], float R[NUMV], float Z[NUMV], - float Y[NUMV], float P[NUMX][NUMX], float X[NUMX], - uint16_t SensorsUsed); -void RungeKutta(float X[NUMX], float U[NUMU], float dT); -void StateEq(float X[NUMX], float U[NUMU], float Xdot[NUMX]); -void LinearizeFG(float X[NUMX], float U[NUMU], float F[NUMX][NUMX], - float G[NUMX][NUMW]); -void MeasurementEq(float X[NUMX], float Be[3], float Y[NUMV]); -void LinearizeH(float X[NUMX], float Be[3], float H[NUMV][NUMX]); - -// Private variables -float F[NUMX][NUMX], G[NUMX][NUMW], H[NUMV][NUMX]; // linearized system matrices - // global to init to zero and maintain zero elements -float Be[3]; // local magnetic unit vector in NED frame -float P[NUMX][NUMX], X[NUMX]; // covariance matrix and state vector -float Q[NUMW], R[NUMV]; // input noise and measurement noise variances -float K[NUMX][NUMV]; // feedback gain matrix - -// ************* Exposed Functions **************** -// ************************************************* - -uint16_t ins_get_num_states() -{ - return NUMX; -} - -void INSGPSInit() //pretty much just a place holder for now -{ - Be[0] = 1; - Be[1] = 0; - Be[2] = 0; // local magnetic unit vector - - for (int i = 0; i < NUMX; i++) { - for (int j = 0; j < NUMX; j++) { - P[i][j] = 0; // zero all terms - } - } - - P[0][0] = P[1][1] = P[2][2] = 25; // initial position variance (m^2) - P[3][3] = P[4][4] = P[5][5] = 5; // initial velocity variance (m/s)^2 - P[6][6] = P[7][7] = P[8][8] = P[9][9] = 1e-5; // initial quaternion variance - P[10][10] = P[11][11] = P[12][12] = 1e-5; // initial gyro bias variance (rad/s)^2 - - X[0] = X[1] = X[2] = X[3] = X[4] = X[5] = 0; // initial pos and vel (m) - X[6] = 1; - X[7] = X[8] = X[9] = 0; // initial quaternion (level and North) (m/s) - X[10] = X[11] = X[12] = 0; // initial gyro bias (rad/s) - - Q[0] = Q[1] = Q[2] = 50e-8; // gyro noise variance (rad/s)^2 - Q[3] = Q[4] = Q[5] = 0.01; // accelerometer noise variance (m/s^2)^2 - Q[6] = Q[7] = Q[8] = 2e-9; // gyro bias random walk variance (rad/s^2)^2 - Q[9] = Q[10] = Q[11] = 2e-20; // accel bias random walk variance (m/s^3)^2 - - R[0] = R[1] = 0.004; // High freq GPS horizontal position noise variance (m^2) - R[2] = 0.036; // High freq GPS vertical position noise variance (m^2) - R[3] = R[4] = 0.004; // High freq GPS horizontal velocity noise variance (m/s)^2 - R[5] = 100; // High freq GPS vertical velocity noise variance (m/s)^2 - R[6] = R[7] = R[8] = 0.005; // magnetometer unit vector noise variance - R[9] = .05; // High freq altimeter noise variance (m^2) -} - -void INSResetP(float PDiag[NUMX]) -{ - uint8_t i,j; - - // if PDiag[i] nonzero then clear row and column and set diagonal element - for (i=0;i - -#define PIOS_COM_AUX_TX_BUF_LEN 192 -static uint8_t pios_com_aux_tx_buffer[PIOS_COM_AUX_TX_BUF_LEN]; - -uint32_t pios_com_aux_id; -uint8_t adc_fifo_buf[sizeof(float) * 6 * 4] __attribute__ ((aligned(4))); // align to 32-bit to try and provide speed improvement - -/** - * PIOS_Board_Init() - * initializes all the core subsystems on this specific hardware - * called from System/openpilot.c - */ -void PIOS_Board_Init(void) { - /* Brings up System using CMSIS functions, enables the LEDs. */ - PIOS_SYS_Init(); - -#if defined(PIOS_INCLUDE_LED) - PIOS_LED_Init(&pios_led_cfg); -#endif /* PIOS_INCLUDE_LED */ - -#if defined(PIOS_LED_HEARTBEAT) - PIOS_LED_On(PIOS_LED_HEARTBEAT); -#endif /* PIOS_LED_HEARTBEAT */ - - /* Delay system */ - PIOS_DELAY_Init(); - - /* 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, - NULL, 0, - pios_com_aux_tx_buffer, sizeof(pios_com_aux_tx_buffer))) { - PIOS_DEBUG_Assert(0); - } - } -#endif /* PIOS_INCLUDE_COM */ -#endif - - /* IAP System Setup */ - PIOS_IAP_Init(); - - /* ADC system */ - PIOS_ADC_Init(); - extern uint8_t adc_oversampling; - PIOS_ADC_Config(adc_oversampling); - extern void adc_callback(float *); - PIOS_ADC_SetCallback(adc_callback); - - /* ADC buffer */ - extern t_fifo_buffer adc_fifo_buffer; - fifoBuf_init(&adc_fifo_buffer, adc_fifo_buf, sizeof(adc_fifo_buf)); - - /* Setup the Accelerometer FS (Full-Scale) GPIO */ - PIOS_GPIO_Enable(0); - SET_ACCEL_6G; - -#if defined(PIOS_INCLUDE_HMC5843) && defined(PIOS_INCLUDE_I2C) - /* Magnetic sensor system */ - if (PIOS_I2C_Init(&pios_i2c_main_adapter_id, &pios_i2c_main_adapter_cfg)) { - PIOS_DEBUG_Assert(0); - } - PIOS_HMC5843_Init(); -#endif - -#if defined(PIOS_INCLUDE_SPI) -#include "ahrs_spi_comm.h" - AhrsInitComms(); - - /* 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); - } - - AhrsConnect(pios_spi_op_id); -#endif -} - diff --git a/flight/AHRS/test.c b/flight/AHRS/test.c deleted file mode 100644 index 6ad7707ec..000000000 --- a/flight/AHRS/test.c +++ /dev/null @@ -1,37 +0,0 @@ -#include "inc/insgps.h" -#include "stdio.h" -#include "math.h" - -extern struct NavStruct Nav; -extern float X[13]; - -int main() -{ - float gyro[3] = { 2.47, -0.25, 7.71 }, accel[3] = { - -1.02, 0.70, -10.11}, dT = 0.04, mags[3] = { - -50, -180, -376}; - float Pos[3] = { 0, 0, 0 }, Vel[3] = { - 0, 0, 0}, BaroAlt = 2.66, Speed = 4.4, Heading = 0; - float yaw; - int i, j; - - INSGPSInit(); - - for (i = 0; i < 10000000; i++) { - INSPrediction(gyro, accel, dT); - //MagCorrection(mags); - FullCorrection(mags, Pos, Vel, BaroAlt); - yaw = - atan2((float)2 * - (Nav.q[0] * Nav.q[3] + Nav.q[1] * Nav.q[2]), - (float)(1 - - 2 * (Nav.q[2] * Nav.q[2] + - Nav.q[3] * Nav.q[3]))) * 180 / M_PI; - - printf("%0.3f ", yaw); - for (j = 0; j < 13; j++) - printf("%f ", X[j]); - printf("\r\n"); - } - return 0; -} diff --git a/flight/Bootloaders/AHRS/Makefile b/flight/Bootloaders/AHRS/Makefile deleted file mode 100644 index b4a060373..000000000 --- a/flight/Bootloaders/AHRS/Makefile +++ /dev/null @@ -1,422 +0,0 @@ - ##### - # Project: OpenPilot AHRS_BOOTLOADER - # - # - # Makefile for OpenPilot AHRS_BOOTLOADER project - # - # The OpenPilot Team, http://www.openpilot.org, Copyright (C) 2009. - # - # - # 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 - ##### - -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 -DEBUG ?= NO - -# Set to YES when using Code Sourcery toolchain -CODE_SOURCERY ?= YES - -ifeq ($(CODE_SOURCERY), YES) -REMOVE_CMD = cs-rm -else -REMOVE_CMD = rm -endif - -FLASH_TOOL = OPENOCD - -# Paths -AHRS_BL = ./ -AHRS_BLINC = $(AHRS_BL)/inc -PIOS = ../../PiOS -PIOSINC = $(PIOS)/inc -FLIGHTLIB = ../Libraries -FLIGHTLIBINC = ../Libraries/inc -PIOSSTM32F10X = $(PIOS)/STM32F10x -PIOSCOMMON = $(PIOS)/Common -PIOSBOARDS = $(PIOS)/Boards -APPLIBDIR = $(PIOSSTM32F10X)/Libraries -STMLIBDIR = $(APPLIBDIR) -STMSPDDIR = $(STMLIBDIR)/STM32F10x_StdPeriph_Driver -STMUSBDIR = $(STMLIBDIR)/STM32_USB-FS-Device_Driver -STMSPDSRCDIR = $(STMSPDDIR)/src -STMSPDINCDIR = $(STMSPDDIR)/inc -CMSISDIR = $(STMLIBDIR)/CMSIS/Core/CM3 -HWDEFSINC = ../../board_hw_defs/$(BOARD_NAME) - -# List C source files here. (C dependencies are automatically generated.) -# use file-extension c for "c-only"-files - -## BOOTLOADER: -SRC = main.c -SRC += pios_board.c -SRC += bl_fsm.c -#SRC += insgps.c -#SRC += $(FLIGHTLIB)/CoordinateConversions.c - -## PIOS Hardware (STM32F10x) -SRC += $(PIOSSTM32F10X)/pios_sys.c -SRC += $(PIOSSTM32F10X)/pios_led.c -SRC += $(PIOSSTM32F10X)/pios_delay.c -SRC += $(PIOSSTM32F10X)/pios_usart.c -SRC += $(PIOSSTM32F10X)/pios_irq.c -#SRC += $(PIOSSTM32F10X)/pios_i2c.c -SRC += $(PIOSSTM32F10X)/pios_gpio.c -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 -SRC += $(PIOSCOMMON)/pios_iap.c - -## CMSIS for STM32 -SRC += $(CMSISDIR)/core_cm3.c -SRC += $(CMSISDIR)/system_stm32f10x.c - -## Used parts of the STM-Library -SRC += $(STMSPDSRCDIR)/stm32f10x_adc.c -SRC += $(STMSPDSRCDIR)/stm32f10x_bkp.c -SRC += $(STMSPDSRCDIR)/stm32f10x_crc.c -SRC += $(STMSPDSRCDIR)/stm32f10x_dac.c -SRC += $(STMSPDSRCDIR)/stm32f10x_dma.c -SRC += $(STMSPDSRCDIR)/stm32f10x_exti.c -SRC += $(STMSPDSRCDIR)/stm32f10x_flash.c -SRC += $(STMSPDSRCDIR)/stm32f10x_gpio.c -SRC += $(STMSPDSRCDIR)/stm32f10x_i2c.c -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)/misc.c - -# List C source files here which must be compiled in ARM-Mode (no -mthumb). -# use file-extension c for "c-only"-files -## just for testing, timer.c could be compiled in thumb-mode too -SRCARM = - -# List C++ source files here. -# use file-extension .cpp for C++-files (not .C) -CPPSRC = - -# List C++ source files here which must be compiled in ARM-Mode. -# use file-extension .cpp for C++-files (not .C) -#CPPSRCARM = $(TARGET).cpp -CPPSRCARM = - -# List Assembler source files here. -# Make them always end in a capital .S. Files ending in a lowercase .s -# will not be considered source files but generated files (assembler -# output from the compiler), and will be deleted upon "make clean"! -# 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)$(MODEL_SUFFIX).S - -# List Assembler source files here which must be assembled in ARM-Mode.. -ASRCARM = - -# List any extra directories to look for include files here. -# Each directory must be seperated by a space. -EXTRAINCDIRS += $(PIOS) -EXTRAINCDIRS += $(PIOSINC) -EXTRAINCDIRS += $(FLIGHTLIBINC) -EXTRAINCDIRS += $(PIOSSTM32F10X) -EXTRAINCDIRS += $(PIOSCOMMON) -EXTRAINCDIRS += $(PIOSBOARDS) -EXTRAINCDIRS += $(STMSPDINCDIR) -EXTRAINCDIRS += $(CMSISDIR) -EXTRAINCDIRS += $(AHRS_BLINC) -EXTRAINCDIRS += $(HWDEFSINC) - -# List any extra directories to look for library files here. -# Also add directories where the linker should search for -# includes from linker-script to the list -# Each directory must be seperated by a space. -EXTRA_LIBDIRS = - -# Extra Libraries -# Each library-name must be seperated by a space. -# i.e. to link with libxyz.a, libabc.a and libefsl.a: -# EXTRA_LIBS = xyz abc efsl -# for newlib-lpc (file: libnewlibc-lpc.a): -# EXTRA_LIBS = newlib-lpc -EXTRA_LIBS = - -# Path to Linker-Scripts -LINKERSCRIPTPATH = $(PIOSSTM32F10X) - -# Optimization level, can be [0, 1, 2, 3, s]. -# 0 = turn off optimization. s = optimize for size. -# (Note: 3 is not always the best optimization level. See avr-libc FAQ.) - -ifeq ($(DEBUG),YES) -OPT = 0 -else -OPT = s -endif - -# Output format. (can be ihex or binary or both) -# binary to create a load-image in raw-binary format i.e. for SAM-BA, -# ihex to create a load-image in Intel hex format -#LOADFORMAT = ihex -#LOADFORMAT = binary -LOADFORMAT = both - -# Debugging format. -DEBUGF = dwarf-2 - -# Place project-specific -D (define) and/or -# -U options for C here. -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 -ADEFS = -D__ASSEMBLY__ - -# Compiler flag to set the C Standard level. -# c89 - "ANSI" C -# gnu89 - c89 plus GCC extensions -# c99 - ISO C99 standard (not yet fully implemented) -# gnu99 - c99 plus GCC extensions -CSTANDARD = -std=gnu99 - -#----- - -# Compiler flags. - -# -g*: generate debugging information -# -O*: optimization level -# -f...: tuning, see GCC manual and avr-libc documentation -# -Wall...: warning level -# -Wa,...: tell GCC to pass this to the assembler. -# -adhlns...: create assembler listing -# -# Flags for C and C++ (arm-elf-gcc/arm-elf-g++) - -ifeq ($(DEBUG),YES) -CFLAGS = -endif - -CFLAGS += -g$(DEBUGF) -CFLAGS += -O$(OPT) -ifeq ($(DEBUG),NO) -CFLAGS += -fdata-sections -ffunction-sections -endif -CFLAGS += -mcpu=$(MCU) -CFLAGS += $(CDEFS) -CFLAGS += $(BLONLY_CDEFS) -CFLAGS += $(patsubst %,-I%,$(EXTRAINCDIRS)) -I. - -CFLAGS += -mapcs-frame -CFLAGS += -fomit-frame-pointer -ifeq ($(CODE_SOURCERY), YES) -CFLAGS += -fpromote-loop-indices -endif - -CFLAGS += -Wall -CFLAGS += -Werror -CFLAGS += -Wa,-adhlns=$(addprefix $(OUTDIR)/, $(notdir $(addsuffix .lst, $(basename $<)))) -# Compiler flags to generate dependency files: -CFLAGS += -MD -MP -MF $(OUTDIR)/dep/$(@F).d - -# flags only for C -#CONLYFLAGS += -Wnested-externs -CONLYFLAGS += $(CSTANDARD) - -# Assembler flags. -# -Wa,...: tell GCC to pass this to the assembler. -# -ahlns: create listing -ASFLAGS = -mcpu=$(MCU) -I. -x assembler-with-cpp -ASFLAGS += $(ADEFS) -ASFLAGS += -Wa,-adhlns=$(addprefix $(OUTDIR)/, $(notdir $(addsuffix .lst, $(basename $<)))) -ASFLAGS += $(patsubst %,-I%,$(EXTRAINCDIRS)) - -MATH_LIB = -lm - -# Linker flags. -# -Wl,...: tell GCC to pass this to linker. -# -Map: create map file -# --cref: add cross reference to map file -LDFLAGS = -nostartfiles -Wl,-Map=$(OUTDIR)/$(TARGET).map,--cref,--gc-sections -ifeq ($(DEBUG),NO) -LDFLAGS += -Wl,-static -endif -LDFLAGS += $(patsubst %,-L%,$(EXTRA_LIBDIRS)) -LDFLAGS += -lc -LDFLAGS += $(patsubst %,-l%,$(EXTRA_LIBS)) -LDFLAGS += $(MATH_LIB) -LDFLAGS += -lc -lgcc - -# Set linker-script name depending on selected submodel name -LDFLAGS += -T$(LINKERSCRIPTPATH)/link_$(BOARD)_memory.ld -LDFLAGS += -T$(LINKERSCRIPTPATH)/link_$(BOARD)_BL_sections.ld - -# Define programs and commands. -REMOVE = $(REMOVE_CMD) -f - -# List of all source files. -ALLSRC = $(ASRCARM) $(ASRC) $(SRCARM) $(SRC) $(CPPSRCARM) $(CPPSRC) -# List of all source files without directory and file-extension. -ALLSRCBASE = $(notdir $(basename $(ALLSRC))) - -# Define all object files. -ALLOBJ = $(addprefix $(OUTDIR)/, $(addsuffix .o, $(ALLSRCBASE))) - -# Define all listing files (used for make clean). -LSTFILES = $(addprefix $(OUTDIR)/, $(addsuffix .lst, $(ALLSRCBASE))) -# Define all depedency-files (used for make clean). -DEPFILES = $(addprefix $(OUTDIR)/dep/, $(addsuffix .o.d, $(ALLSRCBASE))) - -# Default target. -all: build - -ifeq ($(LOADFORMAT),ihex) -build: elf hex sym -else -ifeq ($(LOADFORMAT),binary) -build: elf bin sym -else -ifeq ($(LOADFORMAT),both) -build: elf hex bin sym -else -$(error "$(MSG_FORMATERROR) $(FORMAT)") -endif -endif -endif - -# Link: create ELF output file from object files. -$(eval $(call LINK_TEMPLATE, $(OUTDIR)/$(TARGET).elf, $(ALLOBJ))) - -# Assemble: create object files from assembler source files. -$(foreach src, $(ASRC), $(eval $(call ASSEMBLE_TEMPLATE, $(src)))) - -# Assemble: create object files from assembler source files. ARM-only -$(foreach src, $(ASRCARM), $(eval $(call ASSEMBLE_ARM_TEMPLATE, $(src)))) - -# Compile: create object files from C source files. -$(foreach src, $(SRC), $(eval $(call COMPILE_C_TEMPLATE, $(src)))) - -# Compile: create object files from C source files. ARM-only -$(foreach src, $(SRCARM), $(eval $(call COMPILE_C_ARM_TEMPLATE, $(src)))) - -# Compile: create object files from C++ source files. -$(foreach src, $(CPPSRC), $(eval $(call COMPILE_CPP_TEMPLATE, $(src)))) - -# Compile: create object files from C++ source files. ARM-only -$(foreach src, $(CPPSRCARM), $(eval $(call COMPILE_CPP_ARM_TEMPLATE, $(src)))) - -# Compile: create assembler files from C source files. ARM/Thumb -$(eval $(call PARTIAL_COMPILE_TEMPLATE, SRC)) - -# Compile: create assembler files from C source files. ARM only -$(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),$(OPENOCD_CONFIG))) - -.PHONY: elf lss sym hex bin bino -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 - -# Display sizes of sections. -$(eval $(call SIZE_TEMPLATE, $(OUTDIR)/$(TARGET).elf)) - -# 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 - -clean_list : - @echo $(MSG_CLEANING) - $(V1) $(REMOVE) $(OUTDIR)/$(TARGET).map - $(V1) $(REMOVE) $(OUTDIR)/$(TARGET).elf - $(V1) $(REMOVE) $(OUTDIR)/$(TARGET).hex - $(V1) $(REMOVE) $(OUTDIR)/$(TARGET).bin - $(V1) $(REMOVE) $(OUTDIR)/$(TARGET).sym - $(V1) $(REMOVE) $(OUTDIR)/$(TARGET).lss - $(V1) $(REMOVE) $(OUTDIR)/$(TARGET).bin.o - $(V1) $(REMOVE) $(ALLOBJ) - $(V1) $(REMOVE) $(LSTFILES) - $(V1) $(REMOVE) $(DEPFILES) - $(V1) $(REMOVE) $(SRC:.c=.s) - $(V1) $(REMOVE) $(SRCARM:.c=.s) - $(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 -$(shell md $(subst /,\\,$(OUTDIR)) 2>NUL) -else -$(shell mkdir -p $(OUTDIR) 2>/dev/null) -endif - -# Include the dependency files. -ifdef ComSpec --include $(shell md $(subst /,\\,$(OUTDIR))\dep 2>NUL) $(wildcard $(OUTDIR)/dep/*) -else --include $(shell mkdir -p $(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 install diff --git a/flight/Bootloaders/AHRS/ahrs_slave_test.c b/flight/Bootloaders/AHRS/ahrs_slave_test.c deleted file mode 100644 index d26957f1c..000000000 --- a/flight/Bootloaders/AHRS/ahrs_slave_test.c +++ /dev/null @@ -1,34 +0,0 @@ -#include "ahrs_bl.h" -#include "ahrs_spi_program.h" - -uint8_t buf[256]; - -bool StartProgramming(void) { - PIOS_COM_SendFormattedString(PIOS_COM_AUX, "Started programming\r\n"); - return (true); -} - -bool WriteData(uint32_t offset, uint8_t *buffer, uint32_t size) { - if (size > SPI_MAX_PROGRAM_DATA_SIZE) { - PIOS_COM_SendFormattedString(PIOS_COM_AUX, "oversize: %d\r\n", size); - return (false); - } - PIOS_COM_SendFormattedString(PIOS_COM_AUX, "Wrote %d bytes to %d\r\n", - size, offset); - memcpy(buf, buffer, size); - PIOS_LED_Toggle(PIOS_LED_HEARTBEAT); - return (true); -} - -bool ReadData(uint32_t offset, uint8_t *buffer, uint32_t size) { - if (size > SPI_MAX_PROGRAM_DATA_SIZE) { - PIOS_COM_SendFormattedString(PIOS_COM_AUX, "oversize: %d\r\n", size); - return (false); - } - PIOS_COM_SendFormattedString(PIOS_COM_AUX, "Read %d bytes from %d\r\n", - size, offset); - memcpy(buffer, buf, size); - PIOS_LED_Toggle(PIOS_LED_HEARTBEAT); - return (true); -} - diff --git a/flight/Bootloaders/AHRS/ahrs_spi_program.c b/flight/Bootloaders/AHRS/ahrs_spi_program.c deleted file mode 100644 index c29e9c609..000000000 --- a/flight/Bootloaders/AHRS/ahrs_spi_program.c +++ /dev/null @@ -1,65 +0,0 @@ -#include -#include "ahrs_spi_program.h" - -// Static CRC polynomial table -static uint32_t crcTable[256] = { 0x00000000, 0x77073096, 0xEE0E612C, - 0x990951BA, 0x076DC419, 0x706AF48F, 0xE963A535, 0x9E6495A3, 0x0EDB8832, - 0x79DCB8A4, 0xE0D5E91E, 0x97D2D988, 0x09B64C2B, 0x7EB17CBD, 0xE7B82D07, - 0x90BF1D91, 0x1DB71064, 0x6AB020F2, 0xF3B97148, 0x84BE41DE, 0x1ADAD47D, - 0x6DDDE4EB, 0xF4D4B551, 0x83D385C7, 0x136C9856, 0x646BA8C0, 0xFD62F97A, - 0x8A65C9EC, 0x14015C4F, 0x63066CD9, 0xFA0F3D63, 0x8D080DF5, 0x3B6E20C8, - 0x4C69105E, 0xD56041E4, 0xA2677172, 0x3C03E4D1, 0x4B04D447, 0xD20D85FD, - 0xA50AB56B, 0x35B5A8FA, 0x42B2986C, 0xDBBBC9D6, 0xACBCF940, 0x32D86CE3, - 0x45DF5C75, 0xDCD60DCF, 0xABD13D59, 0x26D930AC, 0x51DE003A, 0xC8D75180, - 0xBFD06116, 0x21B4F4B5, 0x56B3C423, 0xCFBA9599, 0xB8BDA50F, 0x2802B89E, - 0x5F058808, 0xC60CD9B2, 0xB10BE924, 0x2F6F7C87, 0x58684C11, 0xC1611DAB, - 0xB6662D3D, - - 0x76DC4190, 0x01DB7106, 0x98D220BC, 0xEFD5102A, 0x71B18589, 0x06B6B51F, - 0x9FBFE4A5, 0xE8B8D433, 0x7807C9A2, 0x0F00F934, 0x9609A88E, 0xE10E9818, - 0x7F6A0DBB, 0x086D3D2D, 0x91646C97, 0xE6635C01, 0x6B6B51F4, 0x1C6C6162, - 0x856530D8, 0xF262004E, 0x6C0695ED, 0x1B01A57B, 0x8208F4C1, 0xF50FC457, - 0x65B0D9C6, 0x12B7E950, 0x8BBEB8EA, 0xFCB9887C, 0x62DD1DDF, 0x15DA2D49, - 0x8CD37CF3, 0xFBD44C65, 0x4DB26158, 0x3AB551CE, 0xA3BC0074, 0xD4BB30E2, - 0x4ADFA541, 0x3DD895D7, 0xA4D1C46D, 0xD3D6F4FB, 0x4369E96A, 0x346ED9FC, - 0xAD678846, 0xDA60B8D0, 0x44042D73, 0x33031DE5, 0xAA0A4C5F, 0xDD0D7CC9, - 0x5005713C, 0x270241AA, 0xBE0B1010, 0xC90C2086, 0x5768B525, 0x206F85B3, - 0xB966D409, 0xCE61E49F, 0x5EDEF90E, 0x29D9C998, 0xB0D09822, 0xC7D7A8B4, - 0x59B33D17, 0x2EB40D81, 0xB7BD5C3B, 0xC0BA6CAD, - - 0xEDB88320, 0x9ABFB3B6, 0x03B6E20C, 0x74B1D29A, 0xEAD54739, 0x9DD277AF, - 0x04DB2615, 0x73DC1683, 0xE3630B12, 0x94643B84, 0x0D6D6A3E, 0x7A6A5AA8, - 0xE40ECF0B, 0x9309FF9D, 0x0A00AE27, 0x7D079EB1, 0xF00F9344, 0x8708A3D2, - 0x1E01F268, 0x6906C2FE, 0xF762575D, 0x806567CB, 0x196C3671, 0x6E6B06E7, - 0xFED41B76, 0x89D32BE0, 0x10DA7A5A, 0x67DD4ACC, 0xF9B9DF6F, 0x8EBEEFF9, - 0x17B7BE43, 0x60B08ED5, 0xD6D6A3E8, 0xA1D1937E, 0x38D8C2C4, 0x4FDFF252, - 0xD1BB67F1, 0xA6BC5767, 0x3FB506DD, 0x48B2364B, 0xD80D2BDA, 0xAF0A1B4C, - 0x36034AF6, 0x41047A60, 0xDF60EFC3, 0xA867DF55, 0x316E8EEF, 0x4669BE79, - 0xCB61B38C, 0xBC66831A, 0x256FD2A0, 0x5268E236, 0xCC0C7795, 0xBB0B4703, - 0x220216B9, 0x5505262F, 0xC5BA3BBE, 0xB2BD0B28, 0x2BB45A92, 0x5CB36A04, - 0xC2D7FFA7, 0xB5D0CF31, 0x2CD99E8B, 0x5BDEAE1D, - - 0x9B64C2B0, 0xEC63F226, 0x756AA39C, 0x026D930A, 0x9C0906A9, 0xEB0E363F, - 0x72076785, 0x05005713, 0x95BF4A82, 0xE2B87A14, 0x7BB12BAE, 0x0CB61B38, - 0x92D28E9B, 0xE5D5BE0D, 0x7CDCEFB7, 0x0BDBDF21, 0x86D3D2D4, 0xF1D4E242, - 0x68DDB3F8, 0x1FDA836E, 0x81BE16CD, 0xF6B9265B, 0x6FB077E1, 0x18B74777, - 0x88085AE6, 0xFF0F6A70, 0x66063BCA, 0x11010B5C, 0x8F659EFF, 0xF862AE69, - 0x616BFFD3, 0x166CCF45, 0xA00AE278, 0xD70DD2EE, 0x4E048354, 0x3903B3C2, - 0xA7672661, 0xD06016F7, 0x4969474D, 0x3E6E77DB, 0xAED16A4A, 0xD9D65ADC, - 0x40DF0B66, 0x37D83BF0, 0xA9BCAE53, 0xDEBB9EC5, 0x47B2CF7F, 0x30B5FFE9, - 0xBDBDF21C, 0xCABAC28A, 0x53B39330, 0x24B4A3A6, 0xBAD03605, 0xCDD70693, - 0x54DE5729, 0x23D967BF, 0xB3667A2E, 0xC4614AB8, 0x5D681B02, 0x2A6F2B94, - 0xB40BBE37, 0xC30C8EA1, 0x5A05DF1B, 0x2D02EF8D, }; - -/**generate CRC32 from a program packet - this is slightly overkill but we want to be sure - */ -uint32_t GenerateCRC(AhrsProgramPacket * packet) { - uint8_t * ptr = (uint8_t *) packet; - int size = ((int) &packet->crc) - (int) packet; - uint32_t crc = 0xFFFFFFFF; - for (int ct = 0; ct < size; ct++) { - crc = ((crc) >> 8) ^ crcTable[(*ptr++) ^ ((crc) & 0x000000FF)]; - } - return (~crc); -} diff --git a/flight/Bootloaders/AHRS/ahrs_spi_program_master.c b/flight/Bootloaders/AHRS/ahrs_spi_program_master.c deleted file mode 100644 index 8227771c0..000000000 --- a/flight/Bootloaders/AHRS/ahrs_spi_program_master.c +++ /dev/null @@ -1,131 +0,0 @@ -/** - ****************************************************************************** - * - * @file ahrs_spi_program_master.c - * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010. - * @brief AHRS programming over SPI link - master(OpenPilot) end. - * - * @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 - */ - -#include "openpilot.h" -#include "ahrs_spi_program_master.h" -#include "ahrs_spi_program.h" -#include "pios_spi.h" - -PROGERR TransferPacket(uint32_t spi_id, AhrsProgramPacket *txBuf, - AhrsProgramPacket *rxBuf); - -#define MAX_CONNECT_TRIES 500 //half a second -bool AhrsProgramConnect(uint32_t spi_id) { - AhrsProgramPacket rxBuf; - AhrsProgramPacket txBuf; - memset(&rxBuf, 0, sizeof(AhrsProgramPacket)); - memcpy(&txBuf, SPI_PROGRAM_REQUEST, SPI_PROGRAM_REQUEST_LENGTH); - for (int ct = 0; ct < MAX_CONNECT_TRIES; ct++) { - PIOS_SPI_RC_PinSet(spi_id, 0); - uint32_t res = PIOS_SPI_TransferBlock(spi_id, (uint8_t *) &txBuf, - (uint8_t *) &rxBuf, SPI_PROGRAM_REQUEST_LENGTH + 1, NULL); - PIOS_SPI_RC_PinSet(spi_id, 1); - if (res == 0 && memcmp(&rxBuf, SPI_PROGRAM_ACK, - SPI_PROGRAM_REQUEST_LENGTH) == 0) { - return (true); - } - - vTaskDelay(1 / portTICK_RATE_MS); - } - return (false); -} - -PROGERR AhrsProgramWrite(uint32_t spi_id, uint32_t address, void * data, - uint32_t size) { - AhrsProgramPacket rxBuf; - AhrsProgramPacket txBuf; - memset(&rxBuf, 0, sizeof(AhrsProgramPacket)); - memcpy(txBuf.data, data, size); - txBuf.size = size; - txBuf.type = PROGRAM_WRITE; - txBuf.address = address; - PROGERR ret = TransferPacket(spi_id, &txBuf, &rxBuf); - if (ret != PROGRAM_ERR_OK) { - return (ret); - } - return (PROGRAM_ERR_OK); -} - -PROGERR AhrsProgramRead(uint32_t spi_id, uint32_t address, void * data, - uint32_t size) { - AhrsProgramPacket rxBuf; - AhrsProgramPacket txBuf; - memset(&rxBuf, 0, sizeof(AhrsProgramPacket)); - txBuf.size = size; - txBuf.type = PROGRAM_READ; - txBuf.address = address; - PROGERR ret = TransferPacket(spi_id, &txBuf, &rxBuf); - if (ret != PROGRAM_ERR_OK) { - return (ret); - } - memcpy(data, rxBuf.data, size); - return (PROGRAM_ERR_OK); -} - -PROGERR AhrsProgramReboot(uint32_t spi_id) { - AhrsProgramPacket rxBuf; - AhrsProgramPacket txBuf; - memset(&rxBuf, 0, sizeof(AhrsProgramPacket)); - txBuf.type = PROGRAM_REBOOT; - memcpy(txBuf.data, REBOOT_CONFIRMATION, REBOOT_CONFIRMATION_LENGTH); - PROGERR ret = TransferPacket(spi_id, &txBuf, &rxBuf); - //If AHRS has rebooted we will get comms errors - if (ret == PROGRAM_ERR_LINK) { - return (PROGRAM_ERR_OK); - } - return (PROGRAM_ERR_FUNCTION); -} - -PROGERR TransferPacket(uint32_t spi_id, AhrsProgramPacket *txBuf, - AhrsProgramPacket *rxBuf) { - static uint32_t pktId = 0; - pktId++; - txBuf->packetId = pktId; - txBuf->crc = GenerateCRC(txBuf); - int ct = 0; - for (; ct < MAX_CONNECT_TRIES; ct++) { - PIOS_SPI_RC_PinSet(spi_id, 0); - uint32_t res = PIOS_SPI_TransferBlock(spi_id, (uint8_t *) txBuf, - (uint8_t *) rxBuf, sizeof(AhrsProgramPacket), NULL); - PIOS_SPI_RC_PinSet(spi_id, 1); - if (res == 0) { - if (rxBuf->type != PROGRAM_NULL && rxBuf->crc == GenerateCRC(rxBuf) - && rxBuf->packetId == pktId) { - break; - } - } - - vTaskDelay(1 / portTICK_RATE_MS); - } - if (ct == MAX_CONNECT_TRIES) { - return (PROGRAM_ERR_LINK); - } - if (rxBuf->type != PROGRAM_ACK) { - return (PROGRAM_ERR_FUNCTION); - } - return (PROGRAM_ERR_OK); -} - diff --git a/flight/Bootloaders/AHRS/ahrs_spi_program_slave.c b/flight/Bootloaders/AHRS/ahrs_spi_program_slave.c deleted file mode 100644 index 8fc3de482..000000000 --- a/flight/Bootloaders/AHRS/ahrs_spi_program_slave.c +++ /dev/null @@ -1,137 +0,0 @@ -/** - ****************************************************************************** - * - * @file ahrs_spi_program_slave.c - * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010. - * @brief AHRS programming over SPI link - slave(AHRS) end. - * - * @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 - */ - -#include -#include - -#include "pios_opahrs_proto.h" -#include "pios_spi.h" -#include "STM32103CB_AHRS.h" - -#include "ahrs_bl.h" -#include "ahrs_spi_program_slave.h" -#include "ahrs_spi_program.h" - -static AhrsProgramPacket txBuf; -static AhrsProgramPacket rxBuf; -static bool done = false; - -static void ProcessPacket(); - -#define WAIT_IF_RECEIVING() while(!(GPIOB->IDR & GPIO_Pin_12)){}; //NSS must be high -//Number of crc failures to allow before giving up -#define PROGRAM_PACKET_TRIES 4 - -void AhrsProgramReceive(uint32_t spi_id) { - done = false; - memset(&txBuf, 0, sizeof(AhrsProgramPacket)); - //wait for a program request - int count = PROGRAM_PACKET_TRIES; - while (1) { - WAIT_IF_RECEIVING(); - while ((PIOS_SPI_Busy(spi_id) != 0)) { - }; - memset(&rxBuf, 'a', sizeof(AhrsProgramPacket)); - int32_t res = PIOS_SPI_TransferBlock(spi_id, NULL, (uint8_t*) &rxBuf, - SPI_PROGRAM_REQUEST_LENGTH + 1, NULL); - - if (res == 0 && memcmp(&rxBuf, SPI_PROGRAM_REQUEST, - SPI_PROGRAM_REQUEST_LENGTH) == 0) { - break; - } - if (count-- == 0) { - return; - } - } - - if (!StartProgramming()) { - //Couldn't erase FLASH. Nothing we can do. - return; - } - - //send ack - memcpy(&txBuf, SPI_PROGRAM_ACK, SPI_PROGRAM_REQUEST_LENGTH); - WAIT_IF_RECEIVING(); - while (0 != PIOS_SPI_TransferBlock(spi_id, (uint8_t*) &txBuf, NULL, - SPI_PROGRAM_REQUEST_LENGTH + 1, NULL)) { - }; - - txBuf.type = PROGRAM_NULL; - - while (!done) { - WAIT_IF_RECEIVING(); - if (0 == PIOS_SPI_TransferBlock(spi_id, (uint8_t*) &txBuf, - (uint8_t*) &rxBuf, sizeof(AhrsProgramPacket), NULL)) { - - uint32_t crc = GenerateCRC(&rxBuf); - if (crc != rxBuf.crc || txBuf.packetId == rxBuf.packetId) { - continue; - } - ProcessPacket(); - txBuf.packetId = rxBuf.packetId; - txBuf.crc = GenerateCRC(&txBuf); - } - } -} - -void ProcessPacket() { - switch (rxBuf.type) { - case PROGRAM_NULL: - txBuf.type = PROGRAM_NULL; - break; - - case PROGRAM_WRITE: - if (WriteData(rxBuf.address, rxBuf.data, rxBuf.size)) { - txBuf.type = PROGRAM_ACK; - txBuf.size = rxBuf.size; - } else { - txBuf.type = PROGRAM_ERR; - } - break; - - case PROGRAM_READ: - if (ReadData(rxBuf.address, txBuf.data, rxBuf.size)) { - txBuf.type = PROGRAM_ACK; - txBuf.size = rxBuf.size; - } else { - txBuf.type = PROGRAM_ERR; - } - break; - - case PROGRAM_REBOOT: - if (0 == memcmp(rxBuf.data, REBOOT_CONFIRMATION, - REBOOT_CONFIRMATION_LENGTH)) { - done = true; - txBuf.type = PROGRAM_ACK; - } else { - txBuf.type = PROGRAM_ERR; - } - break; - - default: - txBuf.type = PROGRAM_ERR; - } -} diff --git a/flight/Bootloaders/AHRS/bl_fsm.c b/flight/Bootloaders/AHRS/bl_fsm.c deleted file mode 100644 index 10e26a46e..000000000 --- a/flight/Bootloaders/AHRS/bl_fsm.c +++ /dev/null @@ -1,591 +0,0 @@ -#include /* uint*_t */ -#include /* NULL */ - -#include "bl_fsm.h" - -#include "pios_opahrs_proto.h" - -#include "pios.h" - -struct lfsm_context { - enum lfsm_state curr_state; - enum opahrs_msg_link_state link_state; - enum opahrs_msg_type user_payload_type; - uint32_t user_payload_len; - - uint32_t errors; - - uint8_t * rx; - uint8_t * tx; - - uint8_t * link_rx; - uint8_t * link_tx; - - uint8_t * user_rx; - uint8_t * user_tx; - - struct lfsm_link_stats stats; -}; - -static struct lfsm_context context = { 0 }; - -static void lfsm_update_link_tx(struct lfsm_context * context); -static void lfsm_init_rx(struct lfsm_context * context); - -static uint32_t PIOS_SPI_OP; -void lfsm_attach(uint32_t spi_id) { - PIOS_SPI_OP = spi_id; -} - -/* - * - * Link Finite State Machine - * - */ - -struct lfsm_transition { - void (*entry_fn)(struct lfsm_context * context); - enum lfsm_state next_state[LFSM_EVENT_NUM_EVENTS]; -}; - -static void go_faulted(struct lfsm_context * context); -static void go_stopped(struct lfsm_context * context); -static void go_stopping(struct lfsm_context * context); -static void go_inactive(struct lfsm_context * context); -static void go_user_busy(struct lfsm_context * context); -static void go_user_busy_rx_pending(struct lfsm_context * context); -static void go_user_busy_tx_pending(struct lfsm_context * context); -static void go_user_busy_rxtx_pending(struct lfsm_context * context); -static void go_user_rx_pending(struct lfsm_context * context); -static void go_user_tx_pending(struct lfsm_context * context); -static void go_user_rxtx_pending(struct lfsm_context * context); -static void go_user_rx_active(struct lfsm_context * context); -static void go_user_tx_active(struct lfsm_context * context); -static void go_user_rxtx_active(struct lfsm_context * context); - -const static struct lfsm_transition lfsm_transitions[LFSM_STATE_NUM_STATES] = { - [LFSM_STATE_FAULTED] = { - .entry_fn = go_faulted, - }, [LFSM_STATE_STOPPED] = { - .entry_fn = go_stopped, - .next_state = { - [LFSM_EVENT_INIT_LINK] = LFSM_STATE_INACTIVE, - [LFSM_EVENT_RX_UNKNOWN] = LFSM_STATE_STOPPED, - }, - }, [LFSM_STATE_STOPPING] = { - .entry_fn = go_stopping, - .next_state = { - [LFSM_EVENT_RX_LINK] = LFSM_STATE_STOPPED, - [LFSM_EVENT_RX_USER] = LFSM_STATE_STOPPED, - [LFSM_EVENT_RX_UNKNOWN] = LFSM_STATE_STOPPED, - }, - }, [LFSM_STATE_INACTIVE] = { - .entry_fn = go_inactive, - .next_state = { - [LFSM_EVENT_STOP] = LFSM_STATE_STOPPING, - [LFSM_EVENT_USER_SET_RX] = LFSM_STATE_USER_BUSY_RX_PENDING, - [LFSM_EVENT_USER_SET_TX] = LFSM_STATE_USER_BUSY_TX_PENDING, - [LFSM_EVENT_RX_LINK] = LFSM_STATE_INACTIVE, - [LFSM_EVENT_RX_USER] = LFSM_STATE_INACTIVE, - [LFSM_EVENT_RX_UNKNOWN] = LFSM_STATE_INACTIVE, - }, - }, [LFSM_STATE_USER_BUSY] = { - .entry_fn = go_user_busy, - .next_state = { - [LFSM_EVENT_STOP] = LFSM_STATE_STOPPING, - [LFSM_EVENT_USER_SET_RX] = LFSM_STATE_USER_BUSY_RX_PENDING, - [LFSM_EVENT_USER_SET_TX] = LFSM_STATE_USER_BUSY_TX_PENDING, - [LFSM_EVENT_USER_DONE] = LFSM_STATE_INACTIVE, - [LFSM_EVENT_RX_LINK] = LFSM_STATE_USER_BUSY, - [LFSM_EVENT_RX_USER] = LFSM_STATE_USER_BUSY, - [LFSM_EVENT_RX_UNKNOWN] = LFSM_STATE_USER_BUSY, - }, - }, [LFSM_STATE_USER_BUSY_RX_PENDING] = { - .entry_fn = go_user_busy_rx_pending, - .next_state = { - [LFSM_EVENT_USER_SET_TX] = LFSM_STATE_USER_BUSY_RXTX_PENDING, - [LFSM_EVENT_USER_DONE] = LFSM_STATE_USER_RX_PENDING, - [LFSM_EVENT_RX_LINK] = LFSM_STATE_USER_BUSY_RX_PENDING, - [LFSM_EVENT_RX_USER] = LFSM_STATE_USER_BUSY_RX_PENDING, - [LFSM_EVENT_RX_UNKNOWN] = LFSM_STATE_USER_BUSY_RX_PENDING, - }, - }, [LFSM_STATE_USER_BUSY_TX_PENDING] = { - .entry_fn = go_user_busy_tx_pending, - .next_state = { - [LFSM_EVENT_USER_SET_RX] = LFSM_STATE_USER_BUSY_RXTX_PENDING, - [LFSM_EVENT_USER_DONE] = LFSM_STATE_USER_TX_PENDING, - [LFSM_EVENT_RX_LINK] = LFSM_STATE_USER_BUSY_TX_PENDING, - [LFSM_EVENT_RX_USER] = LFSM_STATE_USER_BUSY_TX_PENDING, - [LFSM_EVENT_RX_UNKNOWN] = LFSM_STATE_USER_BUSY_TX_PENDING, - }, - }, [LFSM_STATE_USER_BUSY_RXTX_PENDING] = { - .entry_fn = go_user_busy_rxtx_pending, - .next_state = { - [LFSM_EVENT_USER_DONE] = LFSM_STATE_USER_RXTX_PENDING, - [LFSM_EVENT_RX_LINK] = LFSM_STATE_USER_BUSY_RXTX_PENDING, - [LFSM_EVENT_RX_USER] = LFSM_STATE_USER_BUSY_RXTX_PENDING, - [LFSM_EVENT_RX_UNKNOWN] = LFSM_STATE_USER_BUSY_RXTX_PENDING, - }, - }, [LFSM_STATE_USER_RX_PENDING] = { - .entry_fn = go_user_rx_pending, - .next_state = { - [LFSM_EVENT_RX_LINK] = LFSM_STATE_USER_RX_ACTIVE, - [LFSM_EVENT_RX_USER] = LFSM_STATE_USER_RX_ACTIVE, - [LFSM_EVENT_RX_UNKNOWN] = LFSM_STATE_USER_RX_ACTIVE, - }, - }, [LFSM_STATE_USER_TX_PENDING] = { - .entry_fn = go_user_tx_pending, - .next_state = { - [LFSM_EVENT_RX_LINK] = LFSM_STATE_USER_TX_ACTIVE, - [LFSM_EVENT_RX_USER] = LFSM_STATE_USER_TX_ACTIVE, - [LFSM_EVENT_RX_UNKNOWN] = LFSM_STATE_USER_TX_ACTIVE, - }, - }, [LFSM_STATE_USER_RXTX_PENDING] = { - .entry_fn = go_user_rxtx_pending, - .next_state = { - [LFSM_EVENT_RX_LINK] = LFSM_STATE_USER_RXTX_ACTIVE, - [LFSM_EVENT_RX_USER] = LFSM_STATE_USER_RXTX_ACTIVE, - [LFSM_EVENT_RX_UNKNOWN] = LFSM_STATE_USER_RXTX_ACTIVE, - }, - }, [LFSM_STATE_USER_RX_ACTIVE] = { - .entry_fn = go_user_rx_active, - .next_state = { - [LFSM_EVENT_RX_LINK] = LFSM_STATE_USER_RX_ACTIVE, - [LFSM_EVENT_RX_USER] = LFSM_STATE_USER_BUSY, - [LFSM_EVENT_RX_UNKNOWN] = LFSM_STATE_USER_RX_ACTIVE, - }, - }, [LFSM_STATE_USER_TX_ACTIVE] = { - .entry_fn = go_user_tx_active, - .next_state = { - [LFSM_EVENT_RX_LINK] = LFSM_STATE_INACTIVE, - [LFSM_EVENT_RX_USER] = LFSM_STATE_INACTIVE, - [LFSM_EVENT_RX_UNKNOWN] = LFSM_STATE_INACTIVE, - }, - }, [LFSM_STATE_USER_RXTX_ACTIVE] = { - .entry_fn = go_user_rxtx_active, - .next_state = { - [LFSM_EVENT_RX_LINK] = LFSM_STATE_USER_RX_ACTIVE, - [LFSM_EVENT_RX_USER] = LFSM_STATE_USER_BUSY, - [LFSM_EVENT_RX_UNKNOWN] = LFSM_STATE_USER_RX_ACTIVE, - }, - }, }; - -/* - * FSM State Entry Functions - */ - -static void go_faulted(struct lfsm_context * context) { - PIOS_DEBUG_Assert(0); -} - -static void go_stopped(struct lfsm_context * context) { -#if 0 - PIOS_SPI_Stop(PIOS_SPI_OP); -#endif -} - -static void go_stopping(struct lfsm_context * context) { - context->link_tx = NULL; - context->tx = NULL; -} - -static void go_inactive(struct lfsm_context * context) { - context->link_state = OPAHRS_MSG_LINK_STATE_INACTIVE; - lfsm_update_link_tx(context); - - context->user_rx = NULL; - context->user_tx = NULL; - - context->rx = context->link_rx; - context->tx = context->link_tx; - - lfsm_init_rx(context); - PIOS_SPI_TransferBlock(PIOS_SPI_OP, context->tx, context->rx, - context->user_payload_len, lfsm_irq_callback); -} - -static void go_user_busy(struct lfsm_context * context) { - /* Sanity checks */ - PIOS_DEBUG_Assert(context->user_rx); - - context->user_rx = NULL; - context->user_tx = NULL; - - context->link_state = OPAHRS_MSG_LINK_STATE_BUSY; - lfsm_update_link_tx(context); - - context->rx = context->link_rx; - context->tx = context->link_tx; - - lfsm_init_rx(context); - PIOS_SPI_TransferBlock(PIOS_SPI_OP, context->tx, context->rx, - context->user_payload_len, lfsm_irq_callback); -} - -static void go_user_busy_rx_pending(struct lfsm_context * context) { - /* Sanity checks */ - PIOS_DEBUG_Assert(context->user_rx); - - context->link_state = OPAHRS_MSG_LINK_STATE_BUSY; - lfsm_update_link_tx(context); - - context->rx = context->link_rx; - context->tx = context->link_tx; - - lfsm_init_rx(context); - PIOS_SPI_TransferBlock(PIOS_SPI_OP, context->tx, context->rx, - context->user_payload_len, lfsm_irq_callback); -} - -static void go_user_busy_tx_pending(struct lfsm_context * context) { - /* Sanity checks */ - PIOS_DEBUG_Assert(context->user_tx); - - context->link_state = OPAHRS_MSG_LINK_STATE_BUSY; - lfsm_update_link_tx(context); - - context->rx = context->link_rx; - context->tx = context->link_tx; - - lfsm_init_rx(context); - PIOS_SPI_TransferBlock(PIOS_SPI_OP, context->tx, context->rx, - context->user_payload_len, lfsm_irq_callback); -} - -static void go_user_busy_rxtx_pending(struct lfsm_context * context) { - /* Sanity checks */ - PIOS_DEBUG_Assert(context->user_rx); PIOS_DEBUG_Assert(context->user_tx); - - context->link_state = OPAHRS_MSG_LINK_STATE_BUSY; - lfsm_update_link_tx(context); - - context->rx = context->link_rx; - context->tx = context->link_tx; - - lfsm_init_rx(context); - PIOS_SPI_TransferBlock(PIOS_SPI_OP, context->tx, context->rx, - context->user_payload_len, lfsm_irq_callback); -} - -static void go_user_rx_pending(struct lfsm_context * context) { - /* Sanity checks */ - PIOS_DEBUG_Assert(context->user_rx); - - context->link_state = OPAHRS_MSG_LINK_STATE_BUSY; - lfsm_update_link_tx(context); - - context->rx = context->link_rx; - context->tx = context->link_tx; - - lfsm_init_rx(context); - PIOS_SPI_TransferBlock(PIOS_SPI_OP, context->tx, context->rx, - context->user_payload_len, lfsm_irq_callback); -} - -static void go_user_tx_pending(struct lfsm_context * context) { - /* Sanity checks */ - PIOS_DEBUG_Assert(context->user_tx); - - context->link_state = OPAHRS_MSG_LINK_STATE_BUSY; - lfsm_update_link_tx(context); - - context->rx = context->link_rx; - context->tx = context->link_tx; - - lfsm_init_rx(context); - PIOS_SPI_TransferBlock(PIOS_SPI_OP, context->tx, context->rx, - context->user_payload_len, lfsm_irq_callback); -} - -static void go_user_rxtx_pending(struct lfsm_context * context) { - /* Sanity checks */ - PIOS_DEBUG_Assert(context->user_rx); PIOS_DEBUG_Assert(context->user_tx); - - context->link_state = OPAHRS_MSG_LINK_STATE_BUSY; - lfsm_update_link_tx(context); - - context->rx = context->link_rx; - context->tx = context->link_tx; - - lfsm_init_rx(context); - PIOS_SPI_TransferBlock(PIOS_SPI_OP, context->tx, context->rx, - context->user_payload_len, lfsm_irq_callback); -} - -static void go_user_rx_active(struct lfsm_context * context) { - /* Sanity checks */ - PIOS_DEBUG_Assert(context->user_rx); - - context->rx = context->user_rx; - context->tx = context->link_tx; - context->link_state = OPAHRS_MSG_LINK_STATE_READY; - - lfsm_update_link_tx(context); - lfsm_init_rx(context); - PIOS_SPI_TransferBlock(PIOS_SPI_OP, context->tx, context->rx, - context->user_payload_len, lfsm_irq_callback); -} - -static void go_user_tx_active(struct lfsm_context * context) { - /* Sanity checks */ - PIOS_DEBUG_Assert(context->user_tx); - - context->link_state = OPAHRS_MSG_LINK_STATE_BUSY; - context->rx = context->link_rx; - context->tx = context->user_tx; - - lfsm_init_rx(context); - PIOS_SPI_TransferBlock(PIOS_SPI_OP, context->tx, context->rx, - context->user_payload_len, lfsm_irq_callback); -} - -static void go_user_rxtx_active(struct lfsm_context * context) { - /* Sanity checks */ - PIOS_DEBUG_Assert(context->user_rx); PIOS_DEBUG_Assert(context->user_tx); - - context->link_state = OPAHRS_MSG_LINK_STATE_READY; - context->rx = context->user_rx; - context->tx = context->user_tx; - - lfsm_init_rx(context); - PIOS_SPI_TransferBlock(PIOS_SPI_OP, context->tx, context->rx, - context->user_payload_len, lfsm_irq_callback); -} - -/* - * - * Misc Helper Functions - * - */ - -static void lfsm_update_link_tx_v0(struct opahrs_msg_v0 * msg, - enum opahrs_msg_link_state state, uint16_t errors) { - opahrs_msg_v0_init_link_tx(msg, OPAHRS_MSG_LINK_TAG_NOP); - - msg->payload.link.state = state; - msg->payload.link.errors = errors; -} - -static void lfsm_update_link_tx_v1(struct opahrs_msg_v1 * msg, - enum opahrs_msg_link_state state, uint16_t errors) { - opahrs_msg_v1_init_link_tx(msg, OPAHRS_MSG_LINK_TAG_NOP); - - msg->payload.link.state = state; - msg->payload.link.errors = errors; -} - -static void lfsm_update_link_tx(struct lfsm_context * context) { - PIOS_DEBUG_Assert(context->link_tx); - - switch (context->user_payload_type) { - case OPAHRS_MSG_TYPE_USER_V0: - lfsm_update_link_tx_v0((struct opahrs_msg_v0 *) context->link_tx, - context->link_state, context->errors); - break; - case OPAHRS_MSG_TYPE_USER_V1: - lfsm_update_link_tx_v1((struct opahrs_msg_v1 *) context->link_tx, - context->link_state, context->errors); - break; - case OPAHRS_MSG_TYPE_LINK: - PIOS_DEBUG_Assert(0); - } -} - -static void lfsm_init_rx(struct lfsm_context * context) { - PIOS_DEBUG_Assert(context->rx); - - switch (context->user_payload_type) { - case OPAHRS_MSG_TYPE_USER_V0: - opahrs_msg_v0_init_rx((struct opahrs_msg_v0 *) context->rx); - break; - case OPAHRS_MSG_TYPE_USER_V1: - opahrs_msg_v1_init_rx((struct opahrs_msg_v1 *) context->rx); - break; - case OPAHRS_MSG_TYPE_LINK: - PIOS_DEBUG_Assert(0); - } -} - -/* - * - * External API - * - */ - -void lfsm_inject_event(enum lfsm_event event) { - PIOS_IRQ_Disable(); - - /* - * Move to the next state - * - * This is done prior to calling the new state's entry function to - * guarantee that the entry function never depends on the previous - * state. This way, it cannot ever know what the previous state was. - */ - context.curr_state = lfsm_transitions[context.curr_state].next_state[event]; - - /* Call the entry function (if any) for the next state. */ - if (lfsm_transitions[context.curr_state].entry_fn) { - lfsm_transitions[context.curr_state].entry_fn(&context); - } - PIOS_IRQ_Enable(); -} - -void lfsm_init(void) { - context.curr_state = LFSM_STATE_STOPPED; - go_stopped(&context); -} - -void lfsm_set_link_proto_v0(struct opahrs_msg_v0 * link_tx, - struct opahrs_msg_v0 * link_rx) { - PIOS_DEBUG_Assert(link_tx); - - context.link_tx = (uint8_t *) link_tx; - context.link_rx = (uint8_t *) link_rx; - context.user_payload_type = OPAHRS_MSG_TYPE_USER_V0; - context.user_payload_len = sizeof(*link_tx); - - lfsm_update_link_tx_v0(link_tx, context.link_state, context.errors); - - lfsm_inject_event(LFSM_EVENT_INIT_LINK); -} - -void lfsm_set_link_proto_v1(struct opahrs_msg_v1 * link_tx, - struct opahrs_msg_v1 * link_rx) { - PIOS_DEBUG_Assert(link_tx); - - context.link_tx = (uint8_t *) link_tx; - context.link_rx = (uint8_t *) link_rx; - context.user_payload_type = OPAHRS_MSG_TYPE_USER_V1; - context.user_payload_len = sizeof(*link_tx); - - lfsm_update_link_tx_v1(link_tx, context.link_state, context.errors); - - lfsm_inject_event(LFSM_EVENT_INIT_LINK); -} - -void lfsm_user_set_tx_v0(struct opahrs_msg_v0 * user_tx) { - PIOS_DEBUG_Assert(user_tx); - - PIOS_DEBUG_Assert(context.user_payload_type == OPAHRS_MSG_TYPE_USER_V0); - context.user_tx = (uint8_t *) user_tx; - - lfsm_inject_event(LFSM_EVENT_USER_SET_TX); -} - -void lfsm_user_set_rx_v0(struct opahrs_msg_v0 * user_rx) { - PIOS_DEBUG_Assert(user_rx); PIOS_DEBUG_Assert(context.user_payload_type == OPAHRS_MSG_TYPE_USER_V0); - - context.user_rx = (uint8_t *) user_rx; - - lfsm_inject_event(LFSM_EVENT_USER_SET_RX); -} - -void lfsm_user_set_tx_v1(struct opahrs_msg_v1 * user_tx) { - PIOS_DEBUG_Assert(user_tx); PIOS_DEBUG_Assert(context.user_payload_type == OPAHRS_MSG_TYPE_USER_V1); - - context.user_tx = (uint8_t *) user_tx; - - lfsm_inject_event(LFSM_EVENT_USER_SET_TX); -} - -void lfsm_user_set_rx_v1(struct opahrs_msg_v1 * user_rx) { - PIOS_DEBUG_Assert(user_rx); PIOS_DEBUG_Assert(context.user_payload_type == OPAHRS_MSG_TYPE_USER_V1); - - context.user_rx = (uint8_t *) user_rx; - - lfsm_inject_event(LFSM_EVENT_USER_SET_RX); -} - -void lfsm_user_done(void) { - lfsm_inject_event(LFSM_EVENT_USER_DONE); -} - -void lfsm_stop(void) { - lfsm_inject_event(LFSM_EVENT_STOP); -} - -void lfsm_get_link_stats(struct lfsm_link_stats * stats) { - PIOS_DEBUG_Assert(stats); - - *stats = context.stats; -} - -enum lfsm_state lfsm_get_state(void) { - return context.curr_state; -} - -/* - * - * ISR Callback - * - */ - -void lfsm_irq_callback(uint8_t crc_ok, uint8_t crc_val) { - if (!crc_ok) { - context.stats.rx_badcrc++; - lfsm_inject_event(LFSM_EVENT_RX_UNKNOWN); - return; - } - - if (!context.rx) { - /* No way to know what we just received, assume invalid */ - lfsm_inject_event(LFSM_EVENT_RX_UNKNOWN); - return; - } - - /* Recover the head and tail pointers from the message */ - struct opahrs_msg_link_head * head = 0; - struct opahrs_msg_link_tail * tail = 0; - - switch (context.user_payload_type) { - case OPAHRS_MSG_TYPE_USER_V0: - head = &((struct opahrs_msg_v0 *) context.rx)->head; - tail = &((struct opahrs_msg_v0 *) context.rx)->tail; - break; - case OPAHRS_MSG_TYPE_USER_V1: - head = &((struct opahrs_msg_v1 *) context.rx)->head; - tail = &((struct opahrs_msg_v1 *) context.rx)->tail; - break; - case OPAHRS_MSG_TYPE_LINK: - /* Should never be rx'ing before the link protocol version is known */ - PIOS_DEBUG_Assert(0); - break; - } - - /* Check for bad magic */ - if ((head->magic != OPAHRS_MSG_MAGIC_HEAD) || (tail->magic - != OPAHRS_MSG_MAGIC_TAIL)) { - if (head->magic != OPAHRS_MSG_MAGIC_HEAD) { - context.stats.rx_badmagic_head++; - } - if (tail->magic != OPAHRS_MSG_MAGIC_TAIL) { - context.stats.rx_badmagic_tail++; - } - lfsm_inject_event(LFSM_EVENT_RX_UNKNOWN); - return; - } - - /* Good magic, find out what type of payload we've got */ - switch (head->type) { - case OPAHRS_MSG_TYPE_LINK: - context.stats.rx_link++; - lfsm_inject_event(LFSM_EVENT_RX_LINK); - break; - case OPAHRS_MSG_TYPE_USER_V0: - case OPAHRS_MSG_TYPE_USER_V1: - if (head->type == context.user_payload_type) { - context.stats.rx_user++; - lfsm_inject_event(LFSM_EVENT_RX_USER); - } else { - /* Mismatched user payload type */ - context.stats.rx_badver++; - lfsm_inject_event(LFSM_EVENT_RX_UNKNOWN); - } - break; - default: - /* Unidentifiable payload type */ - context.stats.rx_badtype++; - lfsm_inject_event(LFSM_EVENT_RX_UNKNOWN); - } -} diff --git a/flight/Bootloaders/AHRS/inc/ahrs_bl.h b/flight/Bootloaders/AHRS/inc/ahrs_bl.h deleted file mode 100644 index 2d96385ab..000000000 --- a/flight/Bootloaders/AHRS/inc/ahrs_bl.h +++ /dev/null @@ -1,52 +0,0 @@ -/** - ****************************************************************************** - * - * @file ahrs_bl.h - * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010. - * @brief Main AHRS_BL header. - * @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 - */ - -#ifndef AHRS_BL_H -#define AHRS_BL_H - -/* PIOS Includes */ -#include - -/** Start programming - returns: true if FLASH erased and ready to program - */ -bool -StartProgramming(void); - -/** Write a block to FLASH - buffer contains the data to be written - returns: true if FLASH programmed correctly - */ -bool -WriteData(uint32_t offset, uint8_t *buffer, uint32_t size); - -/** Read a block from FLASH - returns: true if FLASH read correctly. - Buffer is set to the read data - */ -bool -ReadData(uint32_t offset, uint8_t *buffer, uint32_t size); - -#endif /* AHRS_BL_H */ diff --git a/flight/Bootloaders/AHRS/inc/ahrs_spi_program.h b/flight/Bootloaders/AHRS/inc/ahrs_spi_program.h deleted file mode 100644 index 024d1b061..000000000 --- a/flight/Bootloaders/AHRS/inc/ahrs_spi_program.h +++ /dev/null @@ -1,65 +0,0 @@ -#ifndef AHRS_SPI_PROGRAM_H -#define AHRS_SPI_PROGRAM_H - -/* Special packets to enter programming mode. - Note: these must both be SPI_PROGRAM_REQUEST_LENGTH long. - Pad with spaces if needed. - */ -#define SPI_PROGRAM_REQUEST "AHRS START PROGRAMMING " -#define SPI_PROGRAM_ACK "AHRS PROGRAMMING STARTED" -#define SPI_PROGRAM_REQUEST_LENGTH 24 - -/**Proposed programming protocol: - In the master: - 1) Send a AhrsProgramPacket containing the relevant data. - Note crc is a CRC32 as the CRC8 used in hardware can be fooled. - 2) Keep sending PROGRAM_NULL packets and wait for an ack. - Time out if we waited too long. - 3) Compare ack packet with transmitted packet. The data - should be the bitwise inverse of the data transmitted. - packetId should correspond to the transmitted packet. - 4) repeat for next packet until finished - 5) Repeat using verify packets - Returned data should be exactly as read from memory - - In the slave: - 1) Wait for an AhrsProgramPacket - 2) Check CRC then write to memory - 3) Bitwise invert data and add it to the return packet - 4) Copy packetId from received packet - 5) Transmit packet. - 6) repeat until we receive a read packet - 7) read memory as requested until we receive a reboot packet - Reboot packets had better have some sort of magic number in the data, - just to be absolutely sure - - */ - -typedef enum { - PROGRAM_NULL, - PROGRAM_WRITE, - PROGRAM_READ, - PROGRAM_ACK, - PROGRAM_REBOOT, - PROGRAM_ERR -} ProgramType; -#define SPI_MAX_PROGRAM_DATA_SIZE (14 * 4) //USB comms uses 14x 32 bit words -#define REBOOT_CONFIRMATION "AHRS REBOOT" -#define REBOOT_CONFIRMATION_LENGTH 11 - -/** Proposed program packet defintion - */ - -typedef struct { - ProgramType type; - uint32_t packetId; //Transmission packet ID - uint32_t address; //base address to place data - uint32_t size; //Size of data (0 to SPI_MAX_PROGRAM_DATA_SIZE) - uint8_t data[SPI_MAX_PROGRAM_DATA_SIZE]; - uint32_t crc; //CRC32 - hardware CRC8 can be fooled - uint8_t dummy; //for some reason comms trashes the last byte sent -} AhrsProgramPacket; - -uint32_t GenerateCRC(AhrsProgramPacket * packet); - -#endif diff --git a/flight/Bootloaders/AHRS/inc/ahrs_spi_program_master.h b/flight/Bootloaders/AHRS/inc/ahrs_spi_program_master.h deleted file mode 100644 index 87a3f9ac7..000000000 --- a/flight/Bootloaders/AHRS/inc/ahrs_spi_program_master.h +++ /dev/null @@ -1,66 +0,0 @@ -/** - ****************************************************************************** - * - * @file ahrs_spi_program_master.h - * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010. - * @brief AHRS programming over SPI link - master(OpenPilot) end. - * - * @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 - */ - -#ifndef AHRS_PROGRAM_MASTER_H -#define AHRS_PROGRAM_MASTER_H - -typedef enum { - PROGRAM_ERR_OK, //OK - PROGRAM_ERR_LINK, //comms error - PROGRAM_ERR_FUNCTION, -//function failed -} PROGERR; - -/** Connect to AHRS and request programming mode - * returns: false if failed. - */ -bool AhrsProgramConnect(uint32_t spi_id); - -/** Write data to AHRS - * size must be between 1 and SPI_MAX_PROGRAM_DATA_SIZE - * returns: error status - */ - -PROGERR AhrsProgramWrite(uint32_t spi_id, uint32_t address, void * data, - uint32_t size); - -/** Read data from AHRS - * size must be between 1 and SPI_MAX_PROGRAM_DATA_SIZE - * returns: error status - */ - -PROGERR AhrsProgramRead(uint32_t spi_id, uint32_t address, void * data, - uint32_t size); - -/** reboot AHRS - * returns: error status - */ - -PROGERR AhrsProgramReboot(uint32_t spi_id); - -//TODO: Implement programming protocol - -#endif //AHRS_PROGRAM_MASTER_H diff --git a/flight/Bootloaders/AHRS/inc/ahrs_spi_program_slave.h b/flight/Bootloaders/AHRS/inc/ahrs_spi_program_slave.h deleted file mode 100644 index 683bfa0f6..000000000 --- a/flight/Bootloaders/AHRS/inc/ahrs_spi_program_slave.h +++ /dev/null @@ -1,35 +0,0 @@ -/** - ****************************************************************************** - * - * @file ahrs_spi_program_slave.h - * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010. - * @brief AHRS programming over SPI link - slave(AHRS) end. - * - * @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 - */ - -#ifndef AHRS_SPI_PROGRAM_SLAVE_H -#define AHRS_SPI_PROGRAM_SLAVE_H - -/** Check if OpenPilot is trying to program AHRS - * If so, it will program the FLASH then return - * If not it just returns. - */ -void AhrsProgramReceive(uint32_t spi_id); -#endif //AHRS_PROGRAM_SLAVE_H diff --git a/flight/Bootloaders/AHRS/inc/bl_fsm.h b/flight/Bootloaders/AHRS/inc/bl_fsm.h deleted file mode 100644 index 7c443edb7..000000000 --- a/flight/Bootloaders/AHRS/inc/bl_fsm.h +++ /dev/null @@ -1,97 +0,0 @@ -/** - ****************************************************************************** - * - * @file ahrs_fsm.h - * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010. - * @brief - * @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 - */ - -#ifndef BL_FSM_H -#define BL_FSM_H - -#include "pios_opahrs_proto.h" - -enum lfsm_state { - LFSM_STATE_FAULTED = 0, /* Must be zero so undefined transitions land here */ - LFSM_STATE_STOPPED, - LFSM_STATE_STOPPING, - LFSM_STATE_INACTIVE, - LFSM_STATE_USER_BUSY, - LFSM_STATE_USER_BUSY_RX_PENDING, - LFSM_STATE_USER_BUSY_TX_PENDING, - LFSM_STATE_USER_BUSY_RXTX_PENDING, - LFSM_STATE_USER_RX_PENDING, - LFSM_STATE_USER_TX_PENDING, - LFSM_STATE_USER_RXTX_PENDING, - LFSM_STATE_USER_RX_ACTIVE, - LFSM_STATE_USER_TX_ACTIVE, - LFSM_STATE_USER_RXTX_ACTIVE, - - LFSM_STATE_NUM_STATES -/* Must be last */ -}; - -enum lfsm_event { - LFSM_EVENT_INIT_LINK, - LFSM_EVENT_STOP, - LFSM_EVENT_USER_SET_RX, - LFSM_EVENT_USER_SET_TX, - LFSM_EVENT_USER_DONE, - LFSM_EVENT_RX_LINK, - LFSM_EVENT_RX_USER, - LFSM_EVENT_RX_UNKNOWN, - - LFSM_EVENT_NUM_EVENTS -/* Must be last */ -}; - -struct lfsm_link_stats { - uint32_t rx_badcrc; - uint32_t rx_badmagic_head; - uint32_t rx_badmagic_tail; - uint32_t rx_link; - uint32_t rx_user; - uint32_t tx_user; - uint32_t rx_badtype; - uint32_t rx_badver; -}; - -extern void lfsm_attach(uint32_t spi_id); -extern void lfsm_init(void); -extern void lfsm_inject_event(enum lfsm_event event); - -extern void lfsm_irq_callback(uint8_t crc_ok, uint8_t crc_val); - -extern void lfsm_get_link_stats(struct lfsm_link_stats * stats); -extern enum lfsm_state lfsm_get_state(void); - -extern void lfsm_set_link_proto_v0(struct opahrs_msg_v0 * link_tx, - struct opahrs_msg_v0 * link_rx); -extern void lfsm_user_set_rx_v0(struct opahrs_msg_v0 * user_rx); -extern void lfsm_user_set_tx_v0(struct opahrs_msg_v0 * user_tx); - -extern void lfsm_set_link_proto_v1(struct opahrs_msg_v1 * link_tx, - struct opahrs_msg_v1 * link_rx); -extern void lfsm_user_set_rx_v1(struct opahrs_msg_v1 * user_rx); -extern void lfsm_user_set_tx_v1(struct opahrs_msg_v1 * user_tx); - -extern void lfsm_user_done(void); - -#endif /* BL_FSM_H */ diff --git a/flight/Bootloaders/AHRS/inc/pios_config.h b/flight/Bootloaders/AHRS/inc/pios_config.h deleted file mode 100644 index 82344e2ad..000000000 --- a/flight/Bootloaders/AHRS/inc/pios_config.h +++ /dev/null @@ -1,41 +0,0 @@ -/** - ****************************************************************************** - * - * @file pios_config.h - * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010. - * @brief PiOS configuration header. - * - Central compile time config for the project. - * @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 - */ - -#ifndef PIOS_CONFIG_H -#define PIOS_CONFIG_H - -/* Enable/Disable PiOS Modules */ -#define PIOS_INCLUDE_DELAY -#define PIOS_INCLUDE_IRQ -#define PIOS_INCLUDE_LED -#define PIOS_INCLUDE_SPI -#define PIOS_INCLUDE_SYS -#define PIOS_INCLUDE_BL_HELPER -#define PIOS_INCLUDE_BL_HELPER_WRITE_SUPPORT -#define PIOS_INCLUDE_GPIO -#define PIOS_INCLUDE_IAP - -#endif /* PIOS_CONFIG_H */ diff --git a/flight/Bootloaders/AHRS/main.c b/flight/Bootloaders/AHRS/main.c deleted file mode 100644 index 756d12566..000000000 --- a/flight/Bootloaders/AHRS/main.c +++ /dev/null @@ -1,268 +0,0 @@ -/** - ****************************************************************************** - * @addtogroup AHRS BOOTLOADER - * @brief The AHRS Modules perform - * - * @{ - * @addtogroup AHRS_BOOTLOADER_Main - * @brief Main function which does the hardware dependent stuff - * @{ - * - * - * @file main.c - * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010. - * @brief - * @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 - */ - -/* OpenPilot Includes */ -#include "ahrs_bl.h" -#include -#include "pios_opahrs_proto.h" -#include "bl_fsm.h" /* lfsm_state */ -#include "stm32f10x_flash.h" - -extern void PIOS_Board_Init(void); - -#define NSS_HOLD_STATE ((GPIOB->IDR & GPIO_Pin_12) ? 0 : 1) -enum bootloader_status boot_status; -/* Private typedef -----------------------------------------------------------*/ -typedef void -(*pFunction)(void); -pFunction Jump_To_Application; -uint32_t JumpAddress; -/* Function Prototypes */ -void -process_spi_request(void); -void -jump_to_app(); -uint8_t jumpFW = FALSE; -uint32_t Fw_crc; -/** - * @brief Bootloader Main function - */ -int main() { - - uint8_t GO_dfu = false; - /* Brings up System using CMSIS functions, enables the LEDs. */ - PIOS_SYS_Init(); - /* Enable Prefetch Buffer */ - FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable); - - /* Flash 2 wait state */ - FLASH_SetLatency(FLASH_Latency_2); - RCC_AHBPeriphClockCmd(RCC_AHBPeriph_CRC, ENABLE); - /* Delay system */ - PIOS_DELAY_Init(); - - for (uint32_t t = 0; t < 10000000; ++t) { - if (NSS_HOLD_STATE == 1) - GO_dfu = TRUE; - else { - GO_dfu = FALSE; - break; - } - } - - PIOS_IAP_Init(); - GO_dfu = GO_dfu | PIOS_IAP_CheckRequest();// OR with app boot request - if (GO_dfu == FALSE) { - jump_to_app(); - } - if (PIOS_IAP_CheckRequest()) { - PIOS_DELAY_WaitmS(1000); - PIOS_IAP_ClearRequest(); - } - PIOS_Board_Init(); - boot_status = idle; - Fw_crc = PIOS_BL_HELPER_CRC_Memory_Calc(); - PIOS_LED_On(PIOS_LED_HEARTBEAT); - while (1) { - process_spi_request(); - } - return 0; -} - -static struct opahrs_msg_v0 link_tx_v0; -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(); - /* Figure out if we're in an interesting stable state */ - switch (lfsm_get_state()) { - case LFSM_STATE_USER_BUSY: - msg_to_process = TRUE; - break; - case LFSM_STATE_INACTIVE: - /* Queue up a receive buffer */ - lfsm_user_set_rx_v0(&user_rx_v0); - lfsm_user_done(); - break; - case LFSM_STATE_STOPPED: - /* Get things going */ - lfsm_set_link_proto_v0(&link_tx_v0, &link_rx_v0); - break; - default: - /* Not a stable state */ - break; - } - PIOS_IRQ_Enable(); - - if (!msg_to_process) { - /* Nothing to do */ - //PIOS_COM_SendFormattedString(PIOS_COM_AUX, "."); - return; - } - - if (user_rx_v0.tail.magic != OPAHRS_MSG_MAGIC_TAIL) { - return; - } - - switch (user_rx_v0.payload.user.t) { - - case OPAHRS_MSG_V0_REQ_FWUP_VERIFY: - opahrs_msg_v0_init_user_tx(&user_tx_v0, OPAHRS_MSG_V0_RSP_FWUP_STATUS); - Fw_crc = PIOS_BL_HELPER_CRC_Memory_Calc(); - lfsm_user_set_tx_v0(&user_tx_v0); - boot_status = idle; - PIOS_LED_Off(PIOS_LED_HEARTBEAT); - user_tx_v0.payload.user.v.rsp.fwup_status.status = boot_status; - break; - case OPAHRS_MSG_V0_REQ_RESET: - PIOS_DELAY_WaitmS(user_rx_v0.payload.user.v.req.reset.reset_delay_in_ms); - PIOS_SYS_Reset(); - break; - case OPAHRS_MSG_V0_REQ_VERSIONS: - opahrs_msg_v0_init_user_tx(&user_tx_v0, OPAHRS_MSG_V0_RSP_VERSIONS); - user_tx_v0.payload.user.v.rsp.versions.bl_version = BOOTLOADER_VERSION; - user_tx_v0.payload.user.v.rsp.versions.hw_version = (BOARD_TYPE << 8) - | BOARD_REVISION; - user_tx_v0.payload.user.v.rsp.versions.fw_crc = Fw_crc; - lfsm_user_set_tx_v0(&user_tx_v0); - 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 = bdinfo->hw_type; - user_tx_v0.payload.user.v.rsp.mem_map.rw_flags = (BOARD_READABLE - | (BOARD_WRITABLE << 1)); - user_tx_v0.payload.user.v.rsp.mem_map.size_of_code_memory - = bdinfo->fw_size; - user_tx_v0.payload.user.v.rsp.mem_map.size_of_description - = bdinfo->desc_size; - user_tx_v0.payload.user.v.rsp.mem_map.start_of_user_code - = bdinfo->fw_base; - lfsm_user_set_tx_v0(&user_tx_v0); - break; - case OPAHRS_MSG_V0_REQ_SERIAL: - opahrs_msg_v0_init_user_tx(&user_tx_v0, OPAHRS_MSG_V0_RSP_SERIAL); - PIOS_SYS_SerialNumberGet( - (char *) &(user_tx_v0.payload.user.v.rsp.serial.serial_bcd)); - lfsm_user_set_tx_v0(&user_tx_v0); - break; - case OPAHRS_MSG_V0_REQ_FWUP_STATUS: - opahrs_msg_v0_init_user_tx(&user_tx_v0, OPAHRS_MSG_V0_RSP_FWUP_STATUS); - user_tx_v0.payload.user.v.rsp.fwup_status.status = boot_status; - lfsm_user_set_tx_v0(&user_tx_v0); - break; - case OPAHRS_MSG_V0_REQ_FWUP_DATA: - PIOS_LED_On(PIOS_LED_HEARTBEAT); - 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 - < bdinfo->fw_base)) { - for (uint8_t x = 0; x - < user_rx_v0.payload.user.v.req.fwup_data.size; ++x) { - if (FLASH_ProgramWord( - (user_rx_v0.payload.user.v.req.fwup_data.adress - + ((uint32_t)(x * 4))), - user_rx_v0.payload.user.v.req.fwup_data.data[x]) - != FLASH_COMPLETE) { - boot_status = write_error; - break; - } - } - } else { - boot_status = outside_dev_capabilities; - } - PIOS_LED_Off(PIOS_LED_HEARTBEAT); - user_tx_v0.payload.user.v.rsp.fwup_status.status = boot_status; - lfsm_user_set_tx_v0(&user_tx_v0); - break; - case OPAHRS_MSG_V0_REQ_FWDN_DATA: - opahrs_msg_v0_init_user_tx(&user_tx_v0, OPAHRS_MSG_V0_RSP_FWDN_DATA); - uint32_t adr = user_rx_v0.payload.user.v.req.fwdn_data.adress; - for (uint8_t x = 0; x < 4; ++x) { - user_tx_v0.payload.user.v.rsp.fw_dn.data[x] - = *PIOS_BL_HELPER_FLASH_If_Read(adr + x); - } - lfsm_user_set_tx_v0(&user_tx_v0); - break; - case OPAHRS_MSG_V0_REQ_FWUP_START: - FLASH_Unlock(); - opahrs_msg_v0_init_user_tx(&user_tx_v0, OPAHRS_MSG_V0_RSP_FWUP_STATUS); - user_tx_v0.payload.user.v.rsp.fwup_status.status = boot_status; - lfsm_user_set_tx_v0(&user_tx_v0); - PIOS_LED_On(PIOS_LED_HEARTBEAT); - if (PIOS_BL_HELPER_FLASH_Start() == TRUE) { - boot_status = started; - PIOS_LED_Off(PIOS_LED_HEARTBEAT); - } else { - boot_status = start_failed; - break; - } - - break; - case OPAHRS_MSG_V0_REQ_BOOT: - PIOS_DELAY_WaitmS(user_rx_v0.payload.user.v.req.boot.boot_delay_in_ms); - FLASH_Lock(); - jump_to_app(); - break; - default: - break; - } - - /* Finished processing the received message, requeue it */ - lfsm_user_set_rx_v0(&user_rx_v0); - lfsm_user_done(); - return; -} -void jump_to_app() { - const struct pios_board_info * bdinfo = &pios_board_info_blob; - - PIOS_LED_On(PIOS_LED_HEARTBEAT); - if (((*(__IO uint32_t*) bdinfo->fw_base) & 0x2FFE0000) == 0x20000000) { /* Jump to user application */ - FLASH_Lock(); - RCC_APB2PeriphResetCmd(0xffffffff, ENABLE); - RCC_APB1PeriphResetCmd(0xffffffff, ENABLE); - RCC_APB2PeriphResetCmd(0xffffffff, DISABLE); - RCC_APB1PeriphResetCmd(0xffffffff, DISABLE); - - JumpAddress = *(__IO uint32_t*) (bdinfo->fw_base + 4); - Jump_To_Application = (pFunction) JumpAddress; - /* Initialize user application's Stack Pointer */ - __set_MSP(*(__IO uint32_t*) bdinfo->fw_base); - Jump_To_Application(); - } else { - boot_status = jump_failed; - return; - } -} diff --git a/flight/Bootloaders/AHRS/pios_board.c b/flight/Bootloaders/AHRS/pios_board.c deleted file mode 100644 index 9b9eac875..000000000 --- a/flight/Bootloaders/AHRS/pios_board.c +++ /dev/null @@ -1,57 +0,0 @@ -/** - ****************************************************************************** - * - * @file pios_board.c - * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010. - * @brief Defines board specific static initializers for hardware for the AHRS board. - * @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 - */ - -/* Pull in the board-specific static HW definitions. - * Including .c files is a bit ugly but this allows all of - * the HW definitions to be const and static to limit their - * scope. - * - * NOTE: THIS IS THE ONLY PLACE THAT SHOULD EVER INCLUDE THIS FILE - */ -#include "board_hw_defs.c" - -#include - -#include "bl_fsm.h" /* lfsm_* */ - -static bool board_init_complete = false; -void PIOS_Board_Init() { - if (board_init_complete) { - return; - } - -#if defined(PIOS_INCLUDE_LED) - PIOS_LED_Init(&pios_led_cfg); -#endif /* PIOS_INCLUDE_LED */ - - /* 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; -} diff --git a/flight/Bootloaders/BootloaderUpdater/pios_board.c b/flight/Bootloaders/BootloaderUpdater/pios_board.c index d19a2ba13..93973b470 100644 --- a/flight/Bootloaders/BootloaderUpdater/pios_board.c +++ b/flight/Bootloaders/BootloaderUpdater/pios_board.c @@ -46,9 +46,4 @@ void PIOS_Board_Init(void) { /* Initialize the PiOS library */ PIOS_GPIO_Init(); - -#if defined(PIOS_INCLUDE_LED) - PIOS_LED_Init(&pios_led_cfg); -#endif /* PIOS_INCLUDE_LED */ - } diff --git a/flight/Bootloaders/CopterControl/Makefile b/flight/Bootloaders/CopterControl/Makefile index be7e98190..d52541791 100644 --- a/flight/Bootloaders/CopterControl/Makefile +++ b/flight/Bootloaders/CopterControl/Makefile @@ -104,6 +104,8 @@ SRC += $(PIOSSTM32F10X)/pios_usart.c SRC += $(PIOSSTM32F10X)/pios_irq.c SRC += $(PIOSSTM32F10X)/pios_debug.c SRC += $(PIOSSTM32F10X)/pios_gpio.c +SRC += $(PIOSSTM32F10X)/pios_iap.c +SRC += $(PIOSSTM32F10X)/pios_bl_helper.c # PIOS USB related files (seperated to make code maintenance more easy) SRC += $(PIOSSTM32F10X)/pios_usb.c @@ -117,8 +119,6 @@ SRC += $(PIOSCOMMON)/pios_usb_desc_hid_only.c ## PIOS Hardware (Common) SRC += $(PIOSCOMMON)/pios_board_info.c SRC += $(PIOSCOMMON)/pios_com_msg.c -SRC += $(PIOSCOMMON)/pios_bl_helper.c -SRC += $(PIOSCOMMON)/pios_iap.c SRC += $(PIOSCOMMON)/printf-stdarg.c ## Libraries for flight calculations @@ -414,7 +414,7 @@ $(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),$(OPENOCD_CONFIG))) +$(eval $(call JTAG_TEMPLATE,$(OUTDIR)/$(TARGET).bin,$(BL_BANK_BASE),$(BL_BANK_SIZE),$(OPENOCD_JTAG_CONFIG),$(OPENOCD_CONFIG))) .PHONY: elf lss sym hex bin bino elf: $(OUTDIR)/$(TARGET).elf diff --git a/flight/Bootloaders/CopterControl/main.c b/flight/Bootloaders/CopterControl/main.c index 17733bbef..9aaa31787 100644 --- a/flight/Bootloaders/CopterControl/main.c +++ b/flight/Bootloaders/CopterControl/main.c @@ -70,14 +70,13 @@ uint8_t processRX(); void jump_to_app(); int main() { - PIOS_SYS_Init(); - if (BSL_HOLD_STATE == 0) - USB_connected = TRUE; - + PIOS_SYS_Init(); + PIOS_Board_Init(); PIOS_IAP_Init(); + + USB_connected = PIOS_USB_CheckAvailable(0); if (PIOS_IAP_CheckRequest() == TRUE) { - PIOS_Board_Init(); PIOS_DELAY_WaitmS(1000); User_DFU_request = TRUE; PIOS_IAP_ClearRequest(); diff --git a/flight/Bootloaders/CopterControl/pios_board.c b/flight/Bootloaders/CopterControl/pios_board.c index f27bb434c..71385f8d7 100644 --- a/flight/Bootloaders/CopterControl/pios_board.c +++ b/flight/Bootloaders/CopterControl/pios_board.c @@ -31,7 +31,7 @@ * NOTE: THIS IS THE ONLY PLACE THAT SHOULD EVER INCLUDE THIS FILE */ #include "board_hw_defs.c" - +#include #include uint32_t pios_com_telem_usb_id; @@ -59,8 +59,20 @@ void PIOS_Board_Init(void) { /* Initialize the PiOS library */ PIOS_GPIO_Init(); + const struct pios_board_info * bdinfo = &pios_board_info_blob; + #if defined(PIOS_INCLUDE_LED) - PIOS_LED_Init(&pios_led_cfg); + switch(bdinfo->board_rev) { + case 0x01: // Revision 1 + PIOS_LED_Init(&pios_led_cfg_cc); + break; + case 0x02: // Revision 2 + GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE); + PIOS_LED_Init(&pios_led_cfg_cc3d); + break; + default: + PIOS_Assert(0); + } #endif /* PIOS_INCLUDE_LED */ #if defined(PIOS_INCLUDE_USB) @@ -71,8 +83,15 @@ void PIOS_Board_Init(void) { PIOS_USB_DESC_HID_ONLY_Init(); uint32_t pios_usb_id; - if (PIOS_USB_Init(&pios_usb_id, &pios_usb_main_cfg)) { - PIOS_Assert(0); + switch(bdinfo->board_rev) { + case 0x01: // Revision 1 + PIOS_USB_Init(&pios_usb_id, &pios_usb_main_cfg_cc); + break; + case 0x02: // Revision 2 + PIOS_USB_Init(&pios_usb_id, &pios_usb_main_cfg_cc3d); + break; + default: + PIOS_Assert(0); } #if defined(PIOS_INCLUDE_USB_HID) && defined(PIOS_INCLUDE_COM_MSG) uint32_t pios_usb_hid_id; @@ -90,3 +109,7 @@ void PIOS_Board_Init(void) { board_init_complete = true; } + +void PIOS_ADC_DMA_Handler() +{ +} diff --git a/flight/Bootloaders/OpenPilot/Makefile b/flight/Bootloaders/OpenPilot/Makefile deleted file mode 100644 index 071b20fec..000000000 --- a/flight/Bootloaders/OpenPilot/Makefile +++ /dev/null @@ -1,491 +0,0 @@ - ##### - # Project: OpenPilot - # - # - # Makefile for OpenPilot project build PiOS and the AP. - # - # The OpenPilot Team, http://www.openpilot.org, Copyright (C) 2009. - # - # - # 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 - ##### - -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 -DEBUG ?= NO - -# Set to YES to use the Servo output pins for debugging via scope or logic analyser -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 - -# Set to YES when using Code Sourcery toolchain -CODE_SOURCERY ?= NO - -# Remove command is different for Code Sourcery on Windows -ifeq ($(CODE_SOURCERY), YES) -REMOVE_CMD = cs-rm -else -REMOVE_CMD = rm -endif - -FLASH_TOOL = OPENOCD - -# Paths -OPSYSTEM = . -OPSYSTEMINC = $(OPSYSTEM)/inc -OPUAVTALK = ./UAVTalk -OPUAVTALKINC = $(OPUAVTALK)/inc -OPUAVOBJ = ./UAVObjects -OPUAVOBJINC = $(OPUAVOBJ)/inc -OPTESTS = ./Tests -OPMODULEDIR = ./Modules -FLIGHTLIB = ../../Libraries -FLIGHTLIBINC = ../../Libraries/inc -PIOS = ../../PiOS -PIOSINC = $(PIOS)/inc -PIOSSTM32F10X = $(PIOS)/STM32F10x -PIOSCOMMON = $(PIOS)/Common -PIOSBOARDS = $(PIOS)/Boards -APPLIBDIR = $(PIOSSTM32F10X)/Libraries -STMLIBDIR = $(APPLIBDIR) -STMSPDDIR = $(STMLIBDIR)/STM32F10x_StdPeriph_Driver -STMUSBDIR = $(STMLIBDIR)/STM32_USB-FS-Device_Driver -STMSPDSRCDIR = $(STMSPDDIR)/src -STMSPDINCDIR = $(STMSPDDIR)/inc -STMUSBSRCDIR = $(STMUSBDIR)/src -STMUSBINCDIR = $(STMUSBDIR)/inc -CMSISDIR = $(STMLIBDIR)/CMSIS/Core/CM3 -DOSFSDIR = $(APPLIBDIR)/dosfs -MSDDIR = $(APPLIBDIR)/msd -RTOSDIR = $(APPLIBDIR)/FreeRTOS -RTOSSRCDIR = $(RTOSDIR)/Source -RTOSINCDIR = $(RTOSSRCDIR)/include -DOXYGENDIR = ../Doc/Doxygen -HWDEFSINC = ../../board_hw_defs/$(BOARD_NAME) - -# List C source files here. (C dependencies are automatically generated.) -# use file-extension c for "c-only"-files - -## OPENPILOT_BL CORE: -SRC += $(OPSYSTEM)/main.c -SRC += $(OPSYSTEM)/pios_board.c -SRC += $(OPSYSTEM)/op_dfu.c -SRC += $(FLIGHTLIB)/stopwatch.c -SRC += $(OPSYSTEM)/ssp.c - - -## PIOS Hardware (STM32F10x) -SRC += $(PIOSSTM32F10X)/pios_sys.c -SRC += $(PIOSSTM32F10X)/pios_led.c -SRC += $(PIOSSTM32F10X)/pios_delay.c -SRC += $(PIOSSTM32F10X)/pios_usart.c -SRC += $(PIOSSTM32F10X)/pios_irq.c -SRC += $(PIOSSTM32F10X)/pios_spi.c -SRC += $(PIOSSTM32F10X)/pios_debug.c -SRC += $(PIOSSTM32F10X)/pios_gpio.c - -# PIOS USB related files (seperated to make code maintenance more easy) -SRC += $(PIOSSTM32F10X)/pios_usb.c -SRC += $(PIOSSTM32F10X)/pios_usbhook.c -SRC += $(PIOSSTM32F10X)/pios_usb_hid.c -SRC += $(PIOSSTM32F10X)/pios_usb_hid_istr.c -SRC += $(PIOSSTM32F10X)/pios_usb_hid_pwr.c -SRC += $(OPSYSTEM)/pios_usb_board_data.c -SRC += $(PIOSCOMMON)/pios_usb_desc_hid_only.c - -## PIOS Hardware (Common) -SRC += $(PIOSCOMMON)/pios_board_info.c -SRC += $(PIOSCOMMON)/pios_com_msg.c -SRC += $(PIOSCOMMON)/pios_com.c -SRC += $(PIOSCOMMON)/pios_opahrs_v0.c -SRC += $(PIOSCOMMON)/pios_bl_helper.c -SRC += $(PIOSCOMMON)/pios_iap.c -SRC += $(PIOSCOMMON)/pios_opahrs_proto.c -SRC += $(PIOSCOMMON)/printf-stdarg.c - -## Libraries for flight calculations -SRC += $(FLIGHTLIB)/fifo_buffer.c - -## CMSIS for STM32 -SRC += $(CMSISDIR)/core_cm3.c -SRC += $(CMSISDIR)/system_stm32f10x.c - -## Used parts of the STM-Library -SRC += $(STMSPDSRCDIR)/stm32f10x_bkp.c -SRC += $(STMSPDSRCDIR)/stm32f10x_crc.c -SRC += $(STMSPDSRCDIR)/stm32f10x_dma.c -SRC += $(STMSPDSRCDIR)/stm32f10x_exti.c -SRC += $(STMSPDSRCDIR)/stm32f10x_flash.c -SRC += $(STMSPDSRCDIR)/stm32f10x_gpio.c -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 - -## STM32 USB Library -SRC += $(STMUSBSRCDIR)/usb_core.c -SRC += $(STMUSBSRCDIR)/usb_init.c -SRC += $(STMUSBSRCDIR)/usb_int.c -SRC += $(STMUSBSRCDIR)/usb_mem.c -SRC += $(STMUSBSRCDIR)/usb_regs.c -SRC += $(STMUSBSRCDIR)/usb_sil.c - -# List C source files here which must be compiled in ARM-Mode (no -mthumb). -# use file-extension c for "c-only"-files -## just for testing, timer.c could be compiled in thumb-mode too -SRCARM = - -# List C++ source files here. -# use file-extension .cpp for C++-files (not .C) -CPPSRC = - -# List C++ source files here which must be compiled in ARM-Mode. -# use file-extension .cpp for C++-files (not .C) -#CPPSRCARM = $(TARGET).cpp -CPPSRCARM = - -# List Assembler source files here. -# Make them always end in a capital .S. Files ending in a lowercase .s -# will not be considered source files but generated files (assembler -# output from the compiler), and will be deleted upon "make clean"! -# 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)$(MODEL_SUFFIX).S - -# List Assembler source files here which must be assembled in ARM-Mode.. -ASRCARM = - -# List any extra directories to look for include files here. -# Each directory must be seperated by a space. -EXTRAINCDIRS = $(OPSYSTEM) -EXTRAINCDIRS += $(OPSYSTEMINC) -EXTRAINCDIRS += $(OPUAVTALK) -EXTRAINCDIRS += $(OPUAVTALKINC) -EXTRAINCDIRS += $(OPUAVOBJ) -EXTRAINCDIRS += $(OPUAVOBJINC) -EXTRAINCDIRS += $(PIOS) -EXTRAINCDIRS += $(PIOSINC) -EXTRAINCDIRS += $(FLIGHTLIBINC) -EXTRAINCDIRS += $(PIOSSTM32F10X) -EXTRAINCDIRS += $(PIOSCOMMON) -EXTRAINCDIRS += $(PIOSBOARDS) -EXTRAINCDIRS += $(STMSPDINCDIR) -EXTRAINCDIRS += $(STMUSBINCDIR) -EXTRAINCDIRS += $(CMSISDIR) -EXTRAINCDIRS += $(DOSFSDIR) -EXTRAINCDIRS += $(MSDDIR) -EXTRAINCDIRS += $(RTOSINCDIR) -EXTRAINCDIRS += $(APPLIBDIR) -EXTRAINCDIRS += $(RTOSSRCDIR)/portable/GCC/ARM_CM3 -EXTRAINCDIRS += $(HWDEFSINC) - - - -# List any extra directories to look for library files here. -# Also add directories where the linker should search for -# includes from linker-script to the list -# Each directory must be seperated by a space. -EXTRA_LIBDIRS = - -# Extra Libraries -# Each library-name must be seperated by a space. -# i.e. to link with libxyz.a, libabc.a and libefsl.a: -# EXTRA_LIBS = xyz abc efsl -# for newlib-lpc (file: libnewlibc-lpc.a): -# EXTRA_LIBS = newlib-lpc -EXTRA_LIBS = - -# Path to Linker-Scripts -LINKERSCRIPTPATH = $(PIOSSTM32F10X) - -# Optimization level, can be [0, 1, 2, 3, s]. -# 0 = turn off optimization. s = optimize for size. -# (Note: 3 is not always the best optimization level. See avr-libc FAQ.) - -ifeq ($(DEBUG),YES) -OPT = 0 -else -OPT = s -endif - -# Output format. (can be ihex or binary or both) -# binary to create a load-image in raw-binary format i.e. for SAM-BA, -# ihex to create a load-image in Intel hex format -#LOADFORMAT = ihex -#LOADFORMAT = binary -LOADFORMAT = both - -# Debugging format. -DEBUGF = dwarf-2 - -# Place project-specific -D (define) and/or -# -U options for C here. -CDEFS = -DSTM32F10X_$(MODEL) -CDEFS += -DUSE_STDPERIPH_DRIVER -CDEFS += -DUSE_$(BOARD) -ifeq ($(ENABLE_DEBUG_PINS), YES) -CDEFS += -DPIOS_ENABLE_DEBUG_PINS -endif -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 -ADEFS = -D__ASSEMBLY__ - -# Compiler flag to set the C Standard level. -# c89 - "ANSI" C -# gnu89 - c89 plus GCC extensions -# c99 - ISO C99 standard (not yet fully implemented) -# gnu99 - c99 plus GCC extensions -CSTANDARD = -std=gnu99 - -#----- - -# Compiler flags. - -# -g*: generate debugging information -# -O*: optimization level -# -f...: tuning, see GCC manual and avr-libc documentation -# -Wall...: warning level -# -Wa,...: tell GCC to pass this to the assembler. -# -adhlns...: create assembler listing -# -# Flags for C and C++ (arm-elf-gcc/arm-elf-g++) - -ifeq ($(DEBUG),YES) -CFLAGS += -DDEBUG -endif - -CFLAGS += -g$(DEBUGF) -CFLAGS += -O$(OPT) -ifeq ($(DEBUG),NO) -CFLAGS += -ffunction-sections -endif - -CFLAGS += -mcpu=$(MCU) -CFLAGS += $(CDEFS) -CFLAGS += $(BLONLY_CDEFS) -CFLAGS += $(patsubst %,-I%,$(EXTRAINCDIRS)) -I. - -CFLAGS += -mapcs-frame -CFLAGS += -fomit-frame-pointer -ifeq ($(CODE_SOURCERY), YES) -CFLAGS += -fpromote-loop-indices -endif - -CFLAGS += -Wall -CFLAGS += -Werror -CFLAGS += -Wa,-adhlns=$(addprefix $(OUTDIR)/, $(notdir $(addsuffix .lst, $(basename $<)))) -# Compiler flags to generate dependency files: -CFLAGS += -MD -MP -MF $(OUTDIR)/dep/$(@F).d - -# flags only for C -#CONLYFLAGS += -Wnested-externs -CONLYFLAGS += $(CSTANDARD) - -# Assembler flags. -# -Wa,...: tell GCC to pass this to the assembler. -# -ahlns: create listing -ASFLAGS = -mcpu=$(MCU) -I. -x assembler-with-cpp -ASFLAGS += $(ADEFS) -ASFLAGS += -Wa,-adhlns=$(addprefix $(OUTDIR)/, $(notdir $(addsuffix .lst, $(basename $<)))) -ASFLAGS += $(patsubst %,-I%,$(EXTRAINCDIRS)) - -MATH_LIB = -lm - -# Linker flags. -# -Wl,...: tell GCC to pass this to linker. -# -Map: create map file -# --cref: add cross reference to map file -LDFLAGS = -nostartfiles -Wl,-Map=$(OUTDIR)/$(TARGET).map,--cref,--gc-sections -ifeq ($(DEBUG),NO) -LDFLAGS += -Wl,-static -endif -LDFLAGS += $(patsubst %,-L%,$(EXTRA_LIBDIRS)) -LDFLAGS += -lc -LDFLAGS += $(patsubst %,-l%,$(EXTRA_LIBS)) -LDFLAGS += $(MATH_LIB) -LDFLAGS += -lc -lgcc - -# Set linker-script name depending on selected submodel name -LDFLAGS += -T$(LINKERSCRIPTPATH)/link_$(BOARD)_memory.ld -LDFLAGS += -T$(LINKERSCRIPTPATH)/link_$(BOARD)_BL_sections.ld - -# Define programs and commands. -REMOVE = $(REMOVE_CMD) -f - -# List of all source files. -ALLSRC = $(ASRCARM) $(ASRC) $(SRCARM) $(SRC) $(CPPSRCARM) $(CPPSRC) -# List of all source files without directory and file-extension. -ALLSRCBASE = $(notdir $(basename $(ALLSRC))) - -# Define all object files. -ALLOBJ = $(addprefix $(OUTDIR)/, $(addsuffix .o, $(ALLSRCBASE))) - -# Define all listing files (used for make clean). -LSTFILES = $(addprefix $(OUTDIR)/, $(addsuffix .lst, $(ALLSRCBASE))) -# Define all depedency-files (used for make clean). -DEPFILES = $(addprefix $(OUTDIR)/dep/, $(addsuffix .o.d, $(ALLSRCBASE))) - -# Default target. -all: build - -ifeq ($(LOADFORMAT),ihex) -build: elf hex sym -else -ifeq ($(LOADFORMAT),binary) -build: elf bin sym -else -ifeq ($(LOADFORMAT),both) -build: elf hex bin sym -else -$(error "$(MSG_FORMATERROR) $(FORMAT)") -endif -endif -endif - -${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 - -# Link: create ELF output file from object files. -$(eval $(call LINK_TEMPLATE, $(OUTDIR)/$(TARGET).elf, $(ALLOBJ))) - -# Assemble: create object files from assembler source files. -$(foreach src, $(ASRC), $(eval $(call ASSEMBLE_TEMPLATE, $(src)))) - -# Assemble: create object files from assembler source files. ARM-only -$(foreach src, $(ASRCARM), $(eval $(call ASSEMBLE_ARM_TEMPLATE, $(src)))) - -# Compile: create object files from C source files. -$(foreach src, $(SRC), $(eval $(call COMPILE_C_TEMPLATE, $(src)))) - -# Compile: create object files from C source files. ARM-only -$(foreach src, $(SRCARM), $(eval $(call COMPILE_C_ARM_TEMPLATE, $(src)))) - -# Compile: create object files from C++ source files. -$(foreach src, $(CPPSRC), $(eval $(call COMPILE_CPP_TEMPLATE, $(src)))) - -# Compile: create object files from C++ source files. ARM-only -$(foreach src, $(CPPSRCARM), $(eval $(call COMPILE_CPP_ARM_TEMPLATE, $(src)))) - -# Compile: create assembler files from C source files. ARM/Thumb -$(eval $(call PARTIAL_COMPILE_TEMPLATE, SRC)) - -# Compile: create assembler files from C source files. ARM only -$(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),$(OPENOCD_CONFIG))) - -.PHONY: elf lss sym hex bin bino -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 - -# Display sizes of sections. -$(eval $(call SIZE_TEMPLATE, $(OUTDIR)/$(TARGET).elf)) - -# 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 - -clean_list : - @echo $(MSG_CLEANING) - $(V1) $(REMOVE) $(OUTDIR)/$(TARGET).map - $(V1) $(REMOVE) $(OUTDIR)/$(TARGET).elf - $(V1) $(REMOVE) $(OUTDIR)/$(TARGET).hex - $(V1) $(REMOVE) $(OUTDIR)/$(TARGET).bin - $(V1) $(REMOVE) $(OUTDIR)/$(TARGET).sym - $(V1) $(REMOVE) $(OUTDIR)/$(TARGET).lss - $(V1) $(REMOVE) $(OUTDIR)/$(TARGET).bin.o - $(V1) $(REMOVE) $(ALLOBJ) - $(V1) $(REMOVE) $(LSTFILES) - $(V1) $(REMOVE) $(DEPFILES) - $(V1) $(REMOVE) $(SRC:.c=.s) - $(V1) $(REMOVE) $(SRCARM:.c=.s) - $(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 -$(shell md $(subst /,\\,$(OUTDIR)) 2>NUL) -else -$(shell mkdir -p $(OUTDIR) 2>/dev/null) -endif - -# Include the dependency files. -ifdef ComSpec --include $(shell md $(subst /,\\,$(OUTDIR))\dep 2>NUL) $(wildcard $(OUTDIR)/dep/*) -else --include $(shell mkdir -p $(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 install diff --git a/flight/Bootloaders/OpenPilot/inc/common.h b/flight/Bootloaders/OpenPilot/inc/common.h deleted file mode 100644 index 085f07061..000000000 --- a/flight/Bootloaders/OpenPilot/inc/common.h +++ /dev/null @@ -1,115 +0,0 @@ -/** - ****************************************************************************** - * @addtogroup OpenPilotBL OpenPilot BootLoader - * @brief These files contain the code to the OpenPilot MB Bootloader. - * - * @{ - * @file common.c - * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010. - * @brief This file contains various common defines for the BootLoader - * @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 - */ -#ifndef COMMON_H_ -#define COMMON_H_ - -//#include "board.h" - -typedef enum { - start, keepgoing, -} DownloadAction; - -/**************************************************/ -/* OP_DFU states */ -/**************************************************/ - -typedef enum { - DFUidle, //0 - uploading, //1 - wrong_packet_received, //2 - too_many_packets, //3 - too_few_packets, //4 - Last_operation_Success, //5 - downloading, //6 - BLidle, //7 - Last_operation_failed, //8 - uploadingStarting, //9 - outsideDevCapabilities, //10 - CRC_Fail,//11 - failed_jump, -//12 -} DFUStates; -/**************************************************/ -/* OP_DFU commands */ -/**************************************************/ -typedef enum { - Reserved, //0 - Req_Capabilities, //1 - Rep_Capabilities, //2 - EnterDFU, //3 - JumpFW, //4 - Reset, //5 - Abort_Operation, //6 - Upload, //7 - Op_END, //8 - Download_Req, //9 - Download, //10 - Status_Request, //11 - Status_Rep -//12 -} DFUCommands; - -typedef enum { - High_Density, Medium_Density -} DeviceType; -/**************************************************/ -/* OP_DFU transfer types */ -/**************************************************/ -typedef enum { - FW, //0 - Descript -//2 -} DFUTransfer; -/**************************************************/ -/* OP_DFU transfer port */ -/**************************************************/ -typedef enum { - Usb, //0 - Serial -//2 -} DFUPort; -/**************************************************/ -/* OP_DFU programable programable HW types */ -/**************************************************/ -typedef enum { - Self_flash, //0 - Remote_flash_via_spi -//1 -} DFUProgType; -/**************************************************/ -/* OP_DFU programable sources */ -/**************************************************/ -#define USB 0 -#define SPI 1 - -#define DownloadDelay 100000 - -#define MAX_DEL_RETRYS 3 -#define MAX_WRI_RETRYS 3 - -#endif /* COMMON_H_ */ diff --git a/flight/Bootloaders/OpenPilot/inc/op_dfu.h b/flight/Bootloaders/OpenPilot/inc/op_dfu.h deleted file mode 100644 index e031c3364..000000000 --- a/flight/Bootloaders/OpenPilot/inc/op_dfu.h +++ /dev/null @@ -1,60 +0,0 @@ -/** - ****************************************************************************** - * - * @file op_dfu.h - * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010. - * @brief - * @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 - */ - -/* Define to prevent recursive inclusion -------------------------------------*/ -#ifndef __OP_DFU_H -#define __OP_DFU_H -#include "common.h" -/* Includes ------------------------------------------------------------------*/ -/* Exported types ------------------------------------------------------------*/ -typedef struct { - uint8_t programmingType; - uint8_t readWriteFlags; - uint32_t startOfUserCode; - uint32_t sizeOfCode; - uint8_t sizeOfDescription; - uint8_t BL_Version; - uint16_t devID; - DeviceType devType; - uint32_t FW_Crc; -} Device; - -/* Exported constants --------------------------------------------------------*/ -/* Exported macro ------------------------------------------------------------*/ -/* Exported define -----------------------------------------------------------*/ -#define COMMAND 0 -#define COUNT 1 -#define DATA 5 - -/* Exported functions ------------------------------------------------------- */ -void processComand(uint8_t *Receive_Buffer); -uint32_t baseOfAdressType(uint8_t type); -uint8_t isBiggerThanAvailable(uint8_t type, uint32_t size); -void OPDfuIni(uint8_t discover); -void DataDownload(DownloadAction); -bool flash_read(uint8_t * buffer, uint32_t adr, DFUProgType type); -#endif /* __OP_DFU_H */ - -/******************* (C) COPYRIGHT 2010 STMicroelectronics *****END OF FILE****/ diff --git a/flight/Bootloaders/OpenPilot/inc/pios_config.h b/flight/Bootloaders/OpenPilot/inc/pios_config.h deleted file mode 100644 index 932c1a913..000000000 --- a/flight/Bootloaders/OpenPilot/inc/pios_config.h +++ /dev/null @@ -1,58 +0,0 @@ -/** - ****************************************************************************** - * @addtogroup OpenPilotBL OpenPilot BootLoader - * @{ - * @file pios_config.h - * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010. - * @brief PiOS configuration header. - * Central compile time config for the project. - * In particular, pios_config.h is where you define which PiOS libraries - * and features are included in the firmware. - * @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 - */ - -#ifndef PIOS_CONFIG_H -#define PIOS_CONFIG_H -#define PIOS_INCLUDE_BL_HELPER -#define PIOS_INCLUDE_BL_HELPER_WRITE_SUPPORT -/* Enable/Disable PiOS Modules */ -#define PIOS_INCLUDE_DELAY -#define PIOS_INCLUDE_IRQ -#define PIOS_INCLUDE_LED -#define PIOS_INCLUDE_SPI -#define PIOS_INCLUDE_SYS -#define PIOS_INCLUDE_USART -#define PIOS_INCLUDE_USB -#define PIOS_INCLUDE_USB_HID -#define PIOS_INCLUDE_OPAHRS -#define PIOS_INCLUDE_COM -#define PIOS_INCLUDE_COM_MSG -#define PIOS_INCLUDE_GPIO -#define PIOS_INCLUDE_IAP -//#define DEBUG_SSP - -/* Defaults for Logging */ -#define LOG_FILENAME "PIOS.LOG" -#define STARTUP_LOG_ENABLED 1 - -#endif /* PIOS_CONFIG_H */ -/** - * @} - * @} - */ diff --git a/flight/Bootloaders/OpenPilot/inc/pios_usb_board_data.h b/flight/Bootloaders/OpenPilot/inc/pios_usb_board_data.h deleted file mode 100644 index ca9c948b0..000000000 --- a/flight/Bootloaders/OpenPilot/inc/pios_usb_board_data.h +++ /dev/null @@ -1,51 +0,0 @@ -/** - ****************************************************************************** - * @addtogroup PIOS PIOS Core hardware abstraction layer - * @{ - * @addtogroup PIOS_USB_BOARD Board specific USB definitions - * @brief Board specific USB definitions - * @{ - * - * @file pios_usb_board_data.h - * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010. - * @brief Board specific USB definitions - * @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 - */ - -#ifndef PIOS_USB_BOARD_DATA_H -#define PIOS_USB_BOARD_DATA_H - -#define PIOS_USB_BOARD_HID_DATA_LENGTH 64 - -#define PIOS_USB_BOARD_EP_NUM 2 - -#include "pios_usb_defs.h" /* struct usb_* */ - -#define PIOS_USB_BOARD_PRODUCT_ID USB_PRODUCT_ID_OPENPILOT_MAIN -#define PIOS_USB_BOARD_DEVICE_VER USB_OP_DEVICE_VER(USB_OP_BOARD_ID_OPENPILOT_MAIN, USB_OP_BOARD_MODE_BL) - -/* - * The bootloader uses a simplified report structure - * BL: ... - * FW: ... - * This define changes the behaviour in pios_usb_hid.c - */ -#define PIOS_USB_BOARD_BL_HID_HAS_NO_LENGTH_BYTE - -#endif /* PIOS_USB_BOARD_DATA_H */ diff --git a/flight/Bootloaders/OpenPilot/inc/ssp.h b/flight/Bootloaders/OpenPilot/inc/ssp.h deleted file mode 100644 index ed700e052..000000000 --- a/flight/Bootloaders/OpenPilot/inc/ssp.h +++ /dev/null @@ -1,117 +0,0 @@ -/******************************************************************* - * - * NAME: ssp.h - * - * - *******************************************************************/ -#ifndef SSP_H -#define SSP_H -/** INCLUDE FILES **/ -#include - -/** LOCAL DEFINITIONS **/ -#ifndef TRUE -#define TRUE 1 -#endif - -#ifndef FALSE -#define FALSE 0 -#endif - -#define SSP_TX_IDLE 0 // not expecting a ACK packet (no current transmissions in progress) -#define SSP_TX_WAITING 1 // waiting for a valid ACK to arrive -#define SSP_TX_TIMEOUT 2 // failed to receive a valid ACK in the timeout period, after retrying. -#define SSP_TX_ACKED 3 // valid ACK received before timeout period. -#define SSP_TX_BUFOVERRUN 4 // amount of data to send execeds the transmission buffer sizeof -#define SSP_TX_BUSY 5 // Attempted to start a transmission while a transmission was already in progress. -//#define SSP_TX_FAIL - failure... - -#define SSP_RX_IDLE 0 -#define SSP_RX_RECEIVING 1 -#define SSP_RX_COMPLETE 2 - -// types of packet that can be received -#define SSP_RX_DATA 5 -#define SSP_RX_ACK 6 -#define SSP_RX_SYNCH 7 - -typedef enum decodeState_ { - decode_len1_e = 0, - decode_seqNo_e, - decode_data_e, - decode_crc1_e, - decode_crc2_e, - decode_idle_e -} DecodeState_t; - -typedef enum ReceiveState { - state_escaped_e = 0, state_unescaped_e -} ReceiveState_t; - -typedef struct { - uint8_t *pbuff; - uint16_t length; - uint16_t crc; - uint8_t seqNo; -} Packet_t; - -typedef struct { - - uint8_t *rxBuf; // Buffer used to store rcv data - uint16_t rxBufSize; // rcv buffer size. - uint8_t *txBuf; // Length of data in buffer - uint16_t txBufSize; // CRC for data in Packet buff - uint16_t max_retry; // Maximum number of retrys for a single transmit. - int32_t timeoutLen; // how long to wait for each retry to succeed - void (*pfCallBack)(uint8_t *, uint16_t); // call back function that is called when a full packet has been received - int16_t (*pfSerialRead)(void); // function to call to read a byte from serial hardware - void (*pfSerialWrite)( uint8_t); // function used to write a byte to serial hardware for transmission - uint32_t (*pfGetTime)(void); // function returns time in number of seconds that has elapsed from a given reference point -} PortConfig_t; - -typedef struct Port_tag { - void (*pfCallBack)(uint8_t *, uint16_t); // call back function that is called when a full packet has been received - int16_t (*pfSerialRead)(void); // function to read a character from the serial input stream - void (*pfSerialWrite)( uint8_t); // function to write a byte to be sent out the serial port - uint32_t (*pfGetTime)(void); // function returns time in number of seconds that has elapsed from a given reference point - uint8_t retryCount; // how many times have we tried to transmit the 'send' packet - uint8_t maxRetryCount; // max. times to try to transmit the 'send' packet - int32_t timeoutLen; // how long to wait for each retry to succeed - int32_t timeout; // current timeout. when 'time' reaches this point we have timed out - uint8_t txSeqNo; // current 'send' packet sequence number - uint16_t rxBufPos; // current buffer position in the receive packet - uint16_t rxBufLen; // number of 'data' bytes in the buffer - uint8_t rxSeqNo; // current 'receive' packet number - uint16_t rxBufSize; // size of the receive buffer. - uint16_t txBufSize; // size of the transmit buffer. - uint8_t *txBuf; // transmit buffer. REquired to store a copy of packet data in case a retry is needed. - uint8_t *rxBuf; // receive buffer. Used to store data as a packet is received. - uint16_t sendSynch; // flag to indicate that we should send a synchronize packet to the host - // this is required when switching from the application to the bootloader - // and vice-versa. This fixes the firwmare download timeout. - // when this flag is set to true, the next time we send a packet we will first - // send a synchronize packet. - ReceiveState_t InputState; - DecodeState_t DecodeState; - uint16_t SendState; - uint16_t crc; - uint32_t RxError; - uint32_t TxError; - uint16_t flags; -} Port_t; - -/** Public Data **/ - -/** PUBLIC FUNCTIONS **/ -int16_t ssp_ReceiveProcess(Port_t *thisport); -int16_t ssp_SendProcess(Port_t *thisport); -uint16_t ssp_SendString(Port_t *thisport, char *str); -int16_t ssp_SendData(Port_t *thisport, const uint8_t * data, - const uint16_t length); -void ssp_Init(Port_t *thisport, const PortConfig_t* const info); -int16_t ssp_ReceiveByte(Port_t *thisport); -uint16_t ssp_Synchronise(Port_t *thisport); - -/** EXTERNAL FUNCTIONS **/ - -#endif diff --git a/flight/Bootloaders/OpenPilot/main.c b/flight/Bootloaders/OpenPilot/main.c deleted file mode 100644 index da39e2521..000000000 --- a/flight/Bootloaders/OpenPilot/main.c +++ /dev/null @@ -1,284 +0,0 @@ -/** - ****************************************************************************** - * @addtogroup OpenPilotBL OpenPilot BootLoader - * @brief These files contain the code to the OpenPilot MB Bootloader. - * - * @{ - * @file main.c - * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010. - * @brief This is the file with the main function of the OpenPilot BootLoader - * @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 - */ -/* Bootloader Includes */ -#include -#include -#include "pios_opahrs.h" -#include "stopwatch.h" -#include "op_dfu.h" -#include "usb_lib.h" -#include "pios_iap.h" -#include "ssp.h" -#include "fifo_buffer.h" -#include "pios_com_msg.h" -/* Prototype of PIOS_Board_Init() function */ -extern void PIOS_Board_Init(void); -extern void FLASH_Download(); -#define BSL_HOLD_STATE ((PIOS_USB_DETECT_GPIO_PORT->IDR & PIOS_USB_DETECT_GPIO_PIN) ? 0 : 1) - -/* Private typedef -----------------------------------------------------------*/ -typedef void (*pFunction)(void); -/* Private define ------------------------------------------------------------*/ -/* Private macro -------------------------------------------------------------*/ -/* Private variables ---------------------------------------------------------*/ -pFunction Jump_To_Application; -uint32_t JumpAddress; - -/// LEDs PWM -uint32_t period1 = 50; // *100 uS -> 5 mS -uint32_t sweep_steps1 = 100; // * 5 mS -> 500 mS -uint32_t period2 = 50; // *100 uS -> 5 mS -uint32_t sweep_steps2 = 100; // * 5 mS -> 500 mS - - -//////////////////////////////////////// -uint8_t tempcount = 0; - -/// SSP SECTION -/// SSP TIME SOURCE -#define SSP_TIMER TIM7 -uint32_t ssp_time = 0; -#define MAX_PACKET_DATA_LEN 255 -#define MAX_PACKET_BUF_SIZE (1+1+MAX_PACKET_DATA_LEN+2) -#define UART_BUFFER_SIZE 1024 -uint8_t rx_buffer[UART_BUFFER_SIZE] __attribute__ ((aligned(4))); -// align to 32-bit to try and provide speed improvement; -// master buffers... -uint8_t SSP_TxBuf[MAX_PACKET_BUF_SIZE]; -uint8_t SSP_RxBuf[MAX_PACKET_BUF_SIZE]; -void SSP_CallBack(uint8_t *buf, uint16_t len); -int16_t SSP_SerialRead(void); -void SSP_SerialWrite( uint8_t); -uint32_t SSP_GetTime(void); -PortConfig_t SSP_PortConfig = { .rxBuf = SSP_RxBuf, - .rxBufSize = MAX_PACKET_DATA_LEN, .txBuf = SSP_TxBuf, - .txBufSize = MAX_PACKET_DATA_LEN, .max_retry = 10, .timeoutLen = 1000, - .pfCallBack = SSP_CallBack, .pfSerialRead = SSP_SerialRead, - .pfSerialWrite = SSP_SerialWrite, .pfGetTime = SSP_GetTime, }; -Port_t ssp_port; -t_fifo_buffer ssp_buffer; - -/* Extern variables ----------------------------------------------------------*/ -DFUStates DeviceState; -DFUPort ProgPort; -int16_t status = 0; -uint8_t JumpToApp = FALSE; -uint8_t GO_dfu = FALSE; -uint8_t USB_connected = FALSE; -uint8_t User_DFU_request = FALSE; -static uint8_t mReceive_Buffer[63]; -/* Private function prototypes -----------------------------------------------*/ -uint32_t LedPWM(uint32_t pwm_period, uint32_t pwm_sweep_steps, uint32_t count); -uint8_t processRX(); -void jump_to_app(); -uint32_t sspTimeSource(); - -#define LED_PWM_TIMER TIM6 -int main() { - PIOS_SYS_Init(); - if (BSL_HOLD_STATE == 0) - USB_connected = TRUE; - - PIOS_IAP_Init(); - - if (PIOS_IAP_CheckRequest() == TRUE) { - PIOS_Board_Init(); - PIOS_DELAY_WaitmS(1000); - User_DFU_request = TRUE; - PIOS_IAP_ClearRequest(); - } - - GO_dfu = (USB_connected == TRUE) || (User_DFU_request == TRUE); - - if (GO_dfu == TRUE) { - if (USB_connected) - ProgPort = Usb; - else - ProgPort = Serial; - PIOS_Board_Init(); - if (User_DFU_request == TRUE) - DeviceState = DFUidle; - else - DeviceState = BLidle; - STOPWATCH_Init(100, LED_PWM_TIMER); - if (ProgPort == Serial) { - fifoBuf_init(&ssp_buffer, rx_buffer, UART_BUFFER_SIZE); - STOPWATCH_Init(100, SSP_TIMER);//nao devia ser 1000? - STOPWATCH_Reset(SSP_TIMER); - ssp_Init(&ssp_port, &SSP_PortConfig); - } - PIOS_OPAHRS_ForceSlaveSelected(true); - } else - JumpToApp = TRUE; - - STOPWATCH_Reset(LED_PWM_TIMER); - while (TRUE) { - if (ProgPort == Serial) { - ssp_ReceiveProcess(&ssp_port); - status = ssp_SendProcess(&ssp_port); - while ((status != SSP_TX_IDLE) && (status != SSP_TX_ACKED)) { - ssp_ReceiveProcess(&ssp_port); - status = ssp_SendProcess(&ssp_port); - } - } - 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; - sweep_steps1 = 100; - PIOS_LED_Off(PIOS_LED_ALARM); - period2 = 0; - break; - case uploading: - period1 = 50; - sweep_steps1 = 100; - period2 = 25; - sweep_steps2 = 50; - break; - case downloading: - period1 = 25; - sweep_steps1 = 50; - PIOS_LED_Off(PIOS_LED_ALARM); - period2 = 0; - break; - case BLidle: - period1 = 0; - PIOS_LED_On(PIOS_LED_HEARTBEAT); - period2 = 0; - break; - default://error - period1 = 50; - sweep_steps1 = 100; - period2 = 50; - sweep_steps2 = 100; - } - - if (period1 != 0) { - if (LedPWM(period1, sweep_steps1, STOPWATCH_ValueGet(LED_PWM_TIMER))) - PIOS_LED_On(PIOS_LED_HEARTBEAT); - else - PIOS_LED_Off(PIOS_LED_HEARTBEAT); - } else - PIOS_LED_On(PIOS_LED_HEARTBEAT); - - if (period2 != 0) { - if (LedPWM(period2, sweep_steps2, STOPWATCH_ValueGet(LED_PWM_TIMER))) - PIOS_LED_On(PIOS_LED_ALARM); - else - PIOS_LED_Off(PIOS_LED_ALARM); - } else - PIOS_LED_Off(PIOS_LED_ALARM); - - if (STOPWATCH_ValueGet(LED_PWM_TIMER) > 100 * 50 * 100) - STOPWATCH_Reset(LED_PWM_TIMER); - if ((STOPWATCH_ValueGet(LED_PWM_TIMER) > 60000) && (DeviceState - == BLidle)) - JumpToApp = TRUE; - - processRX(); - DataDownload(start); - } -} - -void jump_to_app() { - 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); - RCC_APB2PeriphResetCmd(0xffffffff, DISABLE); - RCC_APB1PeriphResetCmd(0xffffffff, DISABLE); - _SetCNTR(0); // clear interrupt mask - _SetISTR(0); // clear all requests - JumpAddress = *(__IO uint32_t*) (bdinfo->fw_base + 4); - Jump_To_Application = (pFunction) JumpAddress; - /* Initialize user application's Stack Pointer */ - __set_MSP(*(__IO uint32_t*) bdinfo->fw_base); - Jump_To_Application(); - } else { - DeviceState = failed_jump; - return; - } -} -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 - return ((count % pwm_period) > pwm_duty) ? 1 : 0; -} - -uint8_t processRX() { - if (ProgPort == Usb) { - if (PIOS_COM_MSG_Receive(PIOS_COM_TELEM_USB, mReceive_Buffer, sizeof(mReceive_Buffer))) { - processComand(mReceive_Buffer); - } - } else if (ProgPort == Serial) { - - if (fifoBuf_getUsed(&ssp_buffer) >= 63) { - for (int32_t x = 0; x < 63; ++x) { - mReceive_Buffer[x] = fifoBuf_getByte(&ssp_buffer); - } - processComand(mReceive_Buffer); - } - } - return TRUE; -} - -uint32_t sspTimeSource() { - if (STOPWATCH_ValueGet(SSP_TIMER) > 5000) { - ++ssp_time; - STOPWATCH_Reset(SSP_TIMER); - } - return ssp_time; -} -void SSP_CallBack(uint8_t *buf, uint16_t len) { - fifoBuf_putData(&ssp_buffer, buf, len); -} -int16_t SSP_SerialRead(void) { - uint8_t byte; - if (PIOS_COM_ReceiveBuffer(PIOS_COM_TELEM_RF, &byte, 1, 0) == 1) { - return byte; - } else { - return -1; - } -} -void SSP_SerialWrite(uint8_t value) { - PIOS_COM_SendChar(PIOS_COM_TELEM_RF, value); -} -uint32_t SSP_GetTime(void) { - return sspTimeSource(); -} diff --git a/flight/Bootloaders/OpenPilot/op_dfu.c b/flight/Bootloaders/OpenPilot/op_dfu.c deleted file mode 100644 index ef30e4897..000000000 --- a/flight/Bootloaders/OpenPilot/op_dfu.c +++ /dev/null @@ -1,586 +0,0 @@ -/** - ****************************************************************************** - * @addtogroup OpenPilotBL OpenPilot BootLoader - * @brief These files contain the code to the OpenPilot MB Bootloader. - * - * @{ - * @file op_dfu.c - * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010. - * @brief This file contains the DFU commands handling code - * @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 - */ - -/* Includes ------------------------------------------------------------------*/ -#include "pios.h" -#include "op_dfu.h" -#include "pios_bl_helper.h" -#include "pios_com_msg.h" -#include -#include "pios_opahrs.h" -#include "ssp.h" -//programmable devices -Device devicesTable[10]; -uint8_t numberOfDevices = 0; - -DFUProgType currentProgrammingDestination; //flash, flash_trough spi -uint8_t currentDeviceCanRead; -uint8_t currentDeviceCanWrite; -Device currentDevice; - -uint8_t Buffer[64]; -uint8_t echoBuffer[64]; -uint8_t SendBuffer[64]; -uint8_t Command = 0; -uint8_t EchoReqFlag = 0; -uint8_t EchoAnsFlag = 0; -uint8_t StartFlag = 0; -uint32_t Aditionals = 0; -uint32_t SizeOfTransfer = 0; -uint32_t Expected_CRC = 0; -uint8_t SizeOfLastPacket = 0; -uint32_t Next_Packet = 0; -uint8_t TransferType; -uint32_t Count = 0; -uint32_t Data; -uint8_t Data0; -uint8_t Data1; -uint8_t Data2; -uint8_t Data3; -uint8_t offset = 0; -uint32_t aux; -//Download vars -uint32_t downSizeOfLastPacket = 0; -uint32_t downPacketTotal = 0; -uint32_t downPacketCurrent = 0; -DFUTransfer downType = 0; -/* Extern variables ----------------------------------------------------------*/ -extern DFUStates DeviceState; -extern uint8_t JumpToApp; -extern Port_t ssp_port; -extern DFUPort ProgPort; -/* Private function prototypes -----------------------------------------------*/ -/* Private functions ---------------------------------------------------------*/ -void sendData(uint8_t * buf, uint16_t size); -uint32_t CalcFirmCRC(void); - -void DataDownload(DownloadAction action) { - if ((DeviceState == downloading)) { - - uint8_t packetSize; - uint32_t offset; - uint32_t partoffset; - SendBuffer[0] = 0x01; - SendBuffer[1] = Download; - SendBuffer[2] = downPacketCurrent >> 24; - SendBuffer[3] = downPacketCurrent >> 16; - SendBuffer[4] = downPacketCurrent >> 8; - SendBuffer[5] = downPacketCurrent; - if (downPacketCurrent == downPacketTotal - 1) { - packetSize = downSizeOfLastPacket; - } else { - packetSize = 14; - } - for (uint8_t x = 0; x < packetSize; ++x) { - partoffset = (downPacketCurrent * 14 * 4) + (x * 4); - offset = baseOfAdressType(downType) + partoffset; - if (!flash_read(SendBuffer + (6 + x * 4), offset, - currentProgrammingDestination)) { - DeviceState = Last_operation_failed; - } - } - downPacketCurrent = downPacketCurrent + 1; - if (downPacketCurrent > downPacketTotal - 1) { - DeviceState = Last_operation_Success; - Aditionals = (uint32_t) Download; - } - sendData(SendBuffer + 1, 63); - } -} -void processComand(uint8_t *xReceive_Buffer) { - - Command = xReceive_Buffer[COMMAND]; -#ifdef DEBUG_SSP - char str[63]= {0}; - sprintf(str,"Received COMMAND:%d|",Command); - PIOS_COM_SendString(PIOS_COM_TELEM_USB,str); -#endif - EchoReqFlag = (Command >> 7); - EchoAnsFlag = (Command >> 6) & 0x01; - StartFlag = (Command >> 5) & 0x01; - Count = xReceive_Buffer[COUNT] << 24; - Count += xReceive_Buffer[COUNT + 1] << 16; - Count += xReceive_Buffer[COUNT + 2] << 8; - Count += xReceive_Buffer[COUNT + 3]; - - Data = xReceive_Buffer[DATA] << 24; - Data += xReceive_Buffer[DATA + 1] << 16; - Data += xReceive_Buffer[DATA + 2] << 8; - Data += xReceive_Buffer[DATA + 3]; - Data0 = xReceive_Buffer[DATA]; - Data1 = xReceive_Buffer[DATA + 1]; - Data2 = xReceive_Buffer[DATA + 2]; - Data3 = xReceive_Buffer[DATA + 3]; - Command = Command & 0b00011111; - - if (EchoReqFlag == 1) { - memcpy(echoBuffer, Buffer, 64); - } - switch (Command) { - case EnterDFU: - if (((DeviceState == BLidle) && (Data0 < numberOfDevices)) - || (DeviceState == DFUidle)) { - if (Data0 > 0) - OPDfuIni(TRUE); - DeviceState = DFUidle; - currentProgrammingDestination = devicesTable[Data0].programmingType; - currentDeviceCanRead = devicesTable[Data0].readWriteFlags & 0x01; - currentDeviceCanWrite = devicesTable[Data0].readWriteFlags >> 1 - & 0x01; - currentDevice = devicesTable[Data0]; - uint8_t result = 0; - switch (currentProgrammingDestination) { - case Self_flash: - result = PIOS_BL_HELPER_FLASH_Ini(); - break; - case Remote_flash_via_spi: - result = TRUE; - break; - default: - DeviceState = Last_operation_failed; - Aditionals = (uint16_t) Command; - } - if (result != 1) { - DeviceState = Last_operation_failed; - Aditionals = (uint32_t) Command; - } - } - break; - case Upload: - if ((DeviceState == DFUidle) || (DeviceState == uploading)) { - if ((StartFlag == 1) && (Next_Packet == 0)) { - TransferType = Data0; - SizeOfTransfer = Count; - Next_Packet = 1; - Expected_CRC = Data2 << 24; - Expected_CRC += Data3 << 16; - Expected_CRC += xReceive_Buffer[DATA + 4] << 8; - Expected_CRC += xReceive_Buffer[DATA + 5]; - SizeOfLastPacket = Data1; - - if (isBiggerThanAvailable(TransferType, (SizeOfTransfer - 1) - * 14 * 4 + SizeOfLastPacket * 4) == TRUE) { - DeviceState = outsideDevCapabilities; - Aditionals = (uint32_t) Command; - } else { - uint8_t result = 1; - struct opahrs_msg_v0 rsp; - if (TransferType == FW) { - switch (currentProgrammingDestination) { - case Self_flash: - result = PIOS_BL_HELPER_FLASH_Start(); - break; - case Remote_flash_via_spi: - PIOS_OPAHRS_bl_FwupStart(&rsp); - result = FALSE; - for (int i = 0; i < 5; ++i) { - PIOS_DELAY_WaitmS(1000); - PIOS_OPAHRS_bl_resync(); - if (PIOS_OPAHRS_bl_FwupStatus(&rsp) - == OPAHRS_RESULT_OK) { - if (rsp.payload.user.v.rsp.fwup_status.status - == started) { - result = TRUE; - break; - } else { - result = FALSE; - break; - } - } - } - break; - default: - break; - } - } - if (result != 1) { - DeviceState = Last_operation_failed; - Aditionals = (uint32_t) Command; - } else { - - DeviceState = uploading; - } - } - } else if ((StartFlag != 1) && (Next_Packet != 0)) { - if (Count > SizeOfTransfer) { - DeviceState = too_many_packets; - Aditionals = Count; - } else if (Count == Next_Packet - 1) { - uint8_t numberOfWords = 14; - if (Count == SizeOfTransfer - 1)//is this the last packet? - { - numberOfWords = SizeOfLastPacket; - } - struct opahrs_msg_v0 rsp; - struct opahrs_msg_v0 req; - uint8_t result = 0; - switch (currentProgrammingDestination) { - case Self_flash: - for (uint8_t x = 0; x < numberOfWords; ++x) { - offset = 4 * x; - Data = xReceive_Buffer[DATA + offset] << 24; - Data += xReceive_Buffer[DATA + 1 + offset] << 16; - Data += xReceive_Buffer[DATA + 2 + offset] << 8; - Data += xReceive_Buffer[DATA + 3 + offset]; - aux = baseOfAdressType(TransferType) + (uint32_t)( - Count * 14 * 4 + x * 4); - result = 0; - for (int retry = 0; retry < MAX_WRI_RETRYS; ++retry) { - if (result == 0) { - result = (FLASH_ProgramWord(aux, Data) - == FLASH_COMPLETE) ? 1 : 0; - } - } - } - break; - case Remote_flash_via_spi: - for (uint8_t x = 0; x < numberOfWords; ++x) { - offset = 4 * x; - Data = xReceive_Buffer[DATA + offset] << 24; - Data += xReceive_Buffer[DATA + 1 + offset] << 16; - Data += xReceive_Buffer[DATA + 2 + offset] << 8; - Data += xReceive_Buffer[DATA + 3 + offset]; - req.payload.user.v.req.fwup_data.data[x] = Data; - } - aux = (baseOfAdressType(TransferType) + (uint32_t)( - Count * 14 * 4)); - req.payload.user.v.req.fwup_data.adress = aux; - req.payload.user.v.req.fwup_data.size = numberOfWords; - if (PIOS_OPAHRS_bl_FwupData(&req, &rsp) - == OPAHRS_RESULT_OK) { - if (rsp.payload.user.v.rsp.fwup_status.status - == write_error) { - result = FALSE; - } else if (rsp.payload.user.v.rsp.fwup_status.status - == outside_dev_capabilities) { - result = TRUE; - DeviceState = outsideDevCapabilities; - } else - result = TRUE; - } else - result = FALSE; - break; - default: - result = 0; - break; - } - if (result != 1) { - DeviceState = Last_operation_failed; - Aditionals = (uint32_t) Command; - } - - ++Next_Packet; - } else { - DeviceState = wrong_packet_received; - Aditionals = Count; - } - } else { - DeviceState = Last_operation_failed; - Aditionals = (uint32_t) Command; - } - } - break; - case Req_Capabilities: - OPDfuIni(TRUE); - Buffer[0] = 0x01; - Buffer[1] = Rep_Capabilities; - if (Data0 == 0) { - Buffer[2] = 0; - Buffer[3] = 0; - Buffer[4] = 0; - Buffer[5] = 0; - Buffer[6] = 0; - Buffer[7] = numberOfDevices; - uint16_t WRFlags = 0; - for (int x = 0; x < numberOfDevices; ++x) { - WRFlags = ((devicesTable[x].readWriteFlags << (x * 2)) - | WRFlags); - } - Buffer[8] = WRFlags >> 8; - Buffer[9] = WRFlags; - } else { - Buffer[2] = devicesTable[Data0 - 1].sizeOfCode >> 24; - Buffer[3] = devicesTable[Data0 - 1].sizeOfCode >> 16; - Buffer[4] = devicesTable[Data0 - 1].sizeOfCode >> 8; - Buffer[5] = devicesTable[Data0 - 1].sizeOfCode; - Buffer[6] = Data0; - Buffer[7] = devicesTable[Data0 - 1].BL_Version; - Buffer[8] = devicesTable[Data0 - 1].sizeOfDescription; - Buffer[9] = devicesTable[Data0 - 1].devID; - Buffer[10] = devicesTable[Data0 - 1].FW_Crc >> 24; - Buffer[11] = devicesTable[Data0 - 1].FW_Crc >> 16; - Buffer[12] = devicesTable[Data0 - 1].FW_Crc >> 8; - Buffer[13] = devicesTable[Data0 - 1].FW_Crc; - Buffer[14] = devicesTable[Data0 - 1].devID >> 8; - Buffer[15] = devicesTable[Data0 - 1].devID; - } - sendData(Buffer + 1, 63); - break; - case JumpFW: - if (numberOfDevices > 1) { - struct opahrs_msg_v0 rsp; - PIOS_OPAHRS_bl_boot(0); - if (PIOS_OPAHRS_bl_FwupStatus(&rsp) == OPAHRS_RESULT_OK) { - DeviceState = failed_jump; - break; - } else { - if (Data == 0x5AFE) { - /* Force board into safe mode */ - PIOS_IAP_WriteBootCount(0xFFFF); - } - FLASH_Lock(); - JumpToApp = 1; - } - } else { - if (Data == 0x5AFE) { - /* Force board into safe mode */ - PIOS_IAP_WriteBootCount(0xFFFF); - } - FLASH_Lock(); - JumpToApp = 1; - } - break; - case Reset: - PIOS_SYS_Reset(); - break; - case Abort_Operation: - Next_Packet = 0; - DeviceState = DFUidle; - break; - - case Op_END: - if (DeviceState == uploading) { - if (Next_Packet - 1 == SizeOfTransfer) { - Next_Packet = 0; - if ((TransferType != FW) || (Expected_CRC == CalcFirmCRC())) { - DeviceState = Last_operation_Success; - } else { - DeviceState = CRC_Fail; - } - } - if (Next_Packet - 1 < SizeOfTransfer) { - Next_Packet = 0; - DeviceState = too_few_packets; - } - } - break; - case Download_Req: -#ifdef DEBUG_SSP - sprintf(str,"COMMAND:DOWNLOAD_REQ 1 Status=%d|",DeviceState); - PIOS_COM_SendString(PIOS_COM_TELEM_USB,str); -#endif - if (DeviceState == DFUidle) { -#ifdef DEBUG_SSP - PIOS_COM_SendString(PIOS_COM_TELEM_USB,"COMMAND:DOWNLOAD_REQ 1|"); -#endif - downType = Data0; - downPacketTotal = Count; - downSizeOfLastPacket = Data1; - if (isBiggerThanAvailable(downType, (downPacketTotal - 1) * 14 - + downSizeOfLastPacket) == 1) { - DeviceState = outsideDevCapabilities; - Aditionals = (uint32_t) Command; - - } else { - downPacketCurrent = 0; - DeviceState = downloading; - } - } else { - DeviceState = Last_operation_failed; - Aditionals = (uint32_t) Command; - } - break; - - case Status_Request: - Buffer[0] = 0x01; - Buffer[1] = Status_Rep; - if (DeviceState == wrong_packet_received) { - Buffer[2] = Aditionals >> 24; - Buffer[3] = Aditionals >> 16; - Buffer[4] = Aditionals >> 8; - Buffer[5] = Aditionals; - } else { - Buffer[2] = 0; - Buffer[3] = ((uint16_t) Aditionals) >> 8; - Buffer[4] = ((uint16_t) Aditionals); - Buffer[5] = 0; - } - Buffer[6] = DeviceState; - Buffer[7] = 0; - Buffer[8] = 0; - Buffer[9] = 0; - sendData(Buffer + 1, 63); - if (DeviceState == Last_operation_Success) { - DeviceState = DFUidle; - } - break; - case Status_Rep: - - break; - - } - if (EchoReqFlag == 1) { - echoBuffer[1] = echoBuffer[1] | EchoAnsFlag; - sendData(echoBuffer + 1, 63); - } - 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_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 = (bdinfo->board_type << 8) | (bdinfo->board_rev); - dev.devType = bdinfo->hw_type; - numberOfDevices = 1; - devicesTable[0] = dev; - if (discover) { - uint8_t found_spi_device = FALSE; - - for (int t = 0; t < 3; ++t) { - if (PIOS_OPAHRS_bl_resync() == OPAHRS_RESULT_OK) { - found_spi_device = TRUE; - dev.FW_Crc = 0; - break; - } - PIOS_DELAY_WaitmS(100); - } - if (found_spi_device == TRUE) { - struct opahrs_msg_v0 rsp; - if (PIOS_OPAHRS_bl_GetVersions(&rsp) == OPAHRS_RESULT_OK) { - dev.programmingType = Remote_flash_via_spi; - dev.BL_Version = rsp.payload.user.v.rsp.versions.bl_version; - dev.FW_Crc = rsp.payload.user.v.rsp.versions.fw_crc; - dev.devID = rsp.payload.user.v.rsp.versions.hw_version; - if (PIOS_OPAHRS_bl_GetMemMap(&rsp) == OPAHRS_RESULT_OK) { - dev.readWriteFlags - = rsp.payload.user.v.rsp.mem_map.rw_flags; - dev.startOfUserCode - = rsp.payload.user.v.rsp.mem_map.start_of_user_code; - dev.sizeOfCode - = rsp.payload.user.v.rsp.mem_map.size_of_code_memory; - dev.sizeOfDescription - = rsp.payload.user.v.rsp.mem_map.size_of_description; - dev.devType = rsp.payload.user.v.rsp.mem_map.density; - numberOfDevices = 2; - devicesTable[1] = dev; - } - } - } else - PIOS_OPAHRS_ForceSlaveSelected(true); - } - //TODO check other devices trough spi or whatever -} -uint32_t baseOfAdressType(DFUTransfer type) { - switch (type) { - case FW: - return currentDevice.startOfUserCode; - break; - case Descript: - return currentDevice.startOfUserCode + currentDevice.sizeOfCode; - break; - default: - - return 0; - } -} -uint8_t isBiggerThanAvailable(DFUTransfer type, uint32_t size) { - switch (type) { - case FW: - return (size > currentDevice.sizeOfCode) ? 1 : 0; - break; - case Descript: - return (size > currentDevice.sizeOfDescription) ? 1 : 0; - break; - default: - return TRUE; - } -} - -uint32_t CalcFirmCRC() { - struct opahrs_msg_v0 rsp; - switch (currentProgrammingDestination) { - case Self_flash: - return PIOS_BL_HELPER_CRC_Memory_Calc(); - break; - case Remote_flash_via_spi: - PIOS_OPAHRS_bl_FwupVerify(&rsp); - for (int i = 0; i < 5; ++i) { - PIOS_DELAY_WaitmS(1000); - PIOS_OPAHRS_bl_resync(); - if (PIOS_OPAHRS_bl_GetVersions(&rsp) == OPAHRS_RESULT_OK) { - return rsp.payload.user.v.rsp.versions.fw_crc; - } - } - - return 0; - break; - default: - return 0; - break; - } - -} -void sendData(uint8_t * buf, uint16_t size) { - if (ProgPort == Usb) { - PIOS_COM_MSG_Send(PIOS_COM_TELEM_USB, buf, size); - } else if (ProgPort == Serial) { - ssp_SendData(&ssp_port, buf, size); - } -} - -bool flash_read(uint8_t * buffer, uint32_t adr, DFUProgType type) { - struct opahrs_msg_v0 rsp; - struct opahrs_msg_v0 req; - switch (type) { - case Remote_flash_via_spi: - req.payload.user.v.req.fwdn_data.adress = adr; - if (PIOS_OPAHRS_bl_FwDlData(&req, &rsp) == OPAHRS_RESULT_OK) { - for (uint8_t x = 0; x < 4; ++x) { - buffer[x] = rsp.payload.user.v.rsp.fw_dn.data[x]; - } - return TRUE; - } - return FALSE; - break; - case Self_flash: - for (uint8_t x = 0; x < 4; ++x) { - buffer[x] = *PIOS_BL_HELPER_FLASH_If_Read(adr + x); - } - return TRUE; - break; - default: - return FALSE; - } -} diff --git a/flight/Bootloaders/OpenPilot/pios_board.c b/flight/Bootloaders/OpenPilot/pios_board.c deleted file mode 100644 index beee6ea7f..000000000 --- a/flight/Bootloaders/OpenPilot/pios_board.c +++ /dev/null @@ -1,128 +0,0 @@ -/** - ****************************************************************************** - * @addtogroup OpenPilotBL OpenPilot BootLoader - * @{ - * - * @file pios_board.c - * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010. - * @brief Defines board specific static initialisers for hardware for the OpenPilot board. - * @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 - */ - -/* Pull in the board-specific static HW definitions. - * Including .c files is a bit ugly but this allows all of - * the HW definitions to be const and static to limit their - * scope. - * - * NOTE: THIS IS THE ONLY PLACE THAT SHOULD EVER INCLUDE THIS FILE - */ -#include "board_hw_defs.c" - -#include - -#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]; - -uint32_t pios_com_telem_rf_id; -uint32_t pios_com_telem_usb_id; - -#include "pios_opahrs.h" - -/** - * PIOS_Board_Init() - * 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); - - /* Flash 2 wait state */ - FLASH_SetLatency(FLASH_Latency_2); - - /* Delay system */ - PIOS_DELAY_Init(); - - /* 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_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 */ - - PIOS_GPIO_Init(); - -#if defined(PIOS_INCLUDE_LED) - PIOS_LED_Init(&pios_led_cfg); -#endif /* PIOS_INCLUDE_LED */ - -#if defined(PIOS_INCLUDE_USB) - /* Initialize board specific USB data */ - PIOS_USB_BOARD_DATA_Init(); - - /* Activate the HID-only USB configuration */ - PIOS_USB_DESC_HID_ONLY_Init(); - - uint32_t pios_usb_id; - if (PIOS_USB_Init(&pios_usb_id, &pios_usb_main_cfg)) { - PIOS_Assert(0); - } -#if defined(PIOS_INCLUDE_USB_HID) && defined(PIOS_INCLUDE_COM_MSG) - uint32_t pios_usb_hid_id; - if (PIOS_USB_HID_Init(&pios_usb_hid_id, &pios_usb_hid_cfg, pios_usb_id)) { - PIOS_Assert(0); - } - if (PIOS_COM_MSG_Init(&pios_com_telem_usb_id, &pios_usb_hid_com_driver, pios_usb_hid_id)) { - PIOS_Assert(0); - } -#endif /* PIOS_INCLUDE_USB_HID && PIOS_INCLUDE_COM_MSG */ - -#endif /* PIOS_INCLUDE_USB */ - - RCC_AHBPeriphClockCmd(RCC_AHBPeriph_CRC, ENABLE);//TODO Tirar - - /* Set up the SPI interface to the AHRS */ - if (PIOS_SPI_Init(&pios_spi_ahrs_id, &pios_spi_ahrs_cfg)) { - PIOS_DEBUG_Assert(0); - } - - /* Bind the AHRS comms layer to the AHRS SPI link */ - PIOS_OPAHRS_Attach(pios_spi_ahrs_id); - - board_init_complete = true; -} - -/** - * @} - */ diff --git a/flight/Bootloaders/OpenPilot/pios_usb_board_data.c b/flight/Bootloaders/OpenPilot/pios_usb_board_data.c deleted file mode 100644 index b73419ba4..000000000 --- a/flight/Bootloaders/OpenPilot/pios_usb_board_data.c +++ /dev/null @@ -1,119 +0,0 @@ -/** - ****************************************************************************** - * @addtogroup PIOS PIOS Core hardware abstraction layer - * @{ - * @addtogroup PIOS_USB_BOARD Board specific USB definitions - * @brief Board specific USB definitions - * @{ - * - * @file pios_usb_board_data.c - * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010. - * @brief Board specific USB definitions - * @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 - */ - -#include "pios_usb_board_data.h" /* struct usb_*, USB_* */ -#include "pios_sys.h" /* PIOS_SYS_SerialNumberGet */ -#include "pios_usbhook.h" /* PIOS_USBHOOK_* */ - -static const uint8_t usb_product_id[20] = { - sizeof(usb_product_id), - USB_DESC_TYPE_STRING, - 'O', 0, - 'p', 0, - 'e', 0, - 'n', 0, - 'P', 0, - 'i', 0, - 'l', 0, - 'o', 0, - 't', 0, -}; - -static uint8_t usb_serial_number[52] = { - sizeof(usb_serial_number), - USB_DESC_TYPE_STRING, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0, - 0, 0 -}; - -static const struct usb_string_langid usb_lang_id = { - .bLength = sizeof(usb_lang_id), - .bDescriptorType = USB_DESC_TYPE_STRING, - .bLangID = htousbs(USB_LANGID_ENGLISH_UK), -}; - -static const uint8_t usb_vendor_id[28] = { - sizeof(usb_vendor_id), - USB_DESC_TYPE_STRING, - 'o', 0, - 'p', 0, - 'e', 0, - 'n', 0, - 'p', 0, - 'i', 0, - 'l', 0, - 'o', 0, - 't', 0, - '.', 0, - 'o', 0, - 'r', 0, - 'g', 0 -}; - -int32_t PIOS_USB_BOARD_DATA_Init(void) -{ - /* Load device serial number into serial number string */ - uint8_t sn[25]; - PIOS_SYS_SerialNumberGet((char *)sn); - for (uint8_t i = 0; sn[i] != '\0' && (2 * i) < usb_serial_number[0]; i++) { - usb_serial_number[2 + 2 * i] = sn[i]; - } - - PIOS_USBHOOK_RegisterString(USB_STRING_DESC_PRODUCT, (uint8_t *)&usb_product_id, sizeof(usb_product_id)); - PIOS_USBHOOK_RegisterString(USB_STRING_DESC_SERIAL, (uint8_t *)&usb_serial_number, sizeof(usb_serial_number)); - - PIOS_USBHOOK_RegisterString(USB_STRING_DESC_LANG, (uint8_t *)&usb_lang_id, sizeof(usb_lang_id)); - PIOS_USBHOOK_RegisterString(USB_STRING_DESC_VENDOR, (uint8_t *)&usb_vendor_id, sizeof(usb_vendor_id)); - - return 0; -} diff --git a/flight/Bootloaders/OpenPilot/ssp.c b/flight/Bootloaders/OpenPilot/ssp.c deleted file mode 100644 index df052bbaf..000000000 --- a/flight/Bootloaders/OpenPilot/ssp.c +++ /dev/null @@ -1,821 +0,0 @@ -/*********************************************************************************************************** - * - * NAME: ssp.c - * DESCRIPTION: simple serial protocol - packet based serial transport layer. - * AUTHOR: Joe Hlebasko - * HISTORY: Created 1/1/2010 - * - * Packet Formats - * Format: - * +------+----+------+---------------------------+--------+ - * | 225 | L1 | S# | App Data (0-254 bytes) | CRC 16 | - * +------+----+------+---------------------------+--------+ - * - * 225 = sync byte, indicates start of a packet - * L1 = 1 byte for size of data payload. (sequence number is part of data payload.) - * S# = 1 byte for sequence number. - * Seq of 0 = seq # synchronise request, forces other end to reset receive sequence number to 1. - * sender of synchronise request will reset the tx seq number to 1 - * Seq # of 1..127 = normal data packets. Sequence number is incremented by for each transmitted - * packet. Rolls over from 127 to 1. - * if most sig. bit is set then the packet is an ACK packet of data packet sequence number of the - * lower 7 bits (1..127) - * App Data may contain 0..254 bytes. The sequence number is consider part of the payload. - * CRC 16 - 16 bits of CRC values of Sequence # and data bytes. - * - * Protocol has two types of packets: data and ack packets. ACK packets have the most sig. bit set in the - * sequence number, this implies that valid sequence numbers are 1..127 - * - * This protocol uses the concept of sequences numbers to determine if a given packet has been received. This - * requires both devices to be able to synchronize sequence numbers. This is accomplished by sending a packet - * length 1 and sequence number = 0. The receive then resets it's transmit sequence number to 1. - * - * ACTIVE_SYNCH is a version that will automatically send a synch request if it receives a synch packet. Only - * one device in the communication should do otherwise you end up with an endless loops of synchronization. - * Right now each side needs to manually issues a synch request. - * - * This protocol is best used in cases where one device is the master and the other is the slave, or a don't - * speak unless spoken to type of approach. - * - * The following are items are required to initialize a port for communications: - * 1. The number attempts for each packet - * 2. time to wait for an ack. - * 3. pointer to buffer to be used for receiving. - * 4. pointer to a buffer to be used for transmission - * 5. length of each buffer (rx and tx) - * 6. Four functions: - * 1. write byte = writes a byte out the serial port (or other comm device) - * 2. read byte = retrieves a byte from the serial port. Returns -1 if a byte is not available - * 3. callback = function to call when a valid data packet has been received. This function is responsible - * to do what needs to be done with the data when it is received. The primary mission of this function - * should be to copy the data to a private buffer out of the working receive buffer to prevent overrun. - * processing should be kept to a minimum. - * 4. get time = function should return the current time. Note that time units are not specified it just - * needs to be some measure of time that increments as time passes by. The timeout values for a given - * port should the units used/returned by the get time function. - * - * All of the state information of a communication port is contained in a Port_t structure. This allows this - * module to operature on multiple communication ports with a single code base. - * - * The ssp_ReceiveProcess and ssp_SendProcess functions need to be called to process data through the - * respective state machines. Typical implementation would have a serial ISR to pull bytes out of the UART - * and place into a circular buffer. The serial read function would then pull bytes out this buffer - * processing. The TX side has the write function placing bytes into a circular buffer with the TX ISR - * pulling bytes out of the buffer and putting into the UART. It is possible to run the receive process from - * the receive ISR but care must be taken on processing data when it is received to avoid holding up the ISR - * and sending ACK packets from the receive ISR. - * - ***********************************************************************************************************/ - -/** INCLUDE FILES **/ - -#include -#include -#include -#include -#include "ssp.h" -/** PRIVATE DEFINITIONS **/ -#define SYNC 225 // Sync character used in Serial Protocol -#define ESC 224 // ESC character used in Serial Protocol -#define ESC_SYNC 1 // ESC_SYNC character used in Serial Protocol -#define ACK_BIT 0x80 // Ack bit, bit 7 of sequence number, 1 = Acknowledge, 0 = -// new packet -// packet location definitions. -#define LENGTH 0 -#define SEQNUM 1 -#define DATA 2 - -// Make larger sized integers from smaller sized integers -#define MAKEWORD16( ub, lb ) ((uint16_t)0x0000 | ((uint16_t)(ub) << 8) | (uint16_t)(lb) ) -#define MAKEWORD32( uw, lw ) ((uint32_t)(0x0UL | ((uint32_t)(uw) << 16) | (uint32_t)(lw)) ) -#define MAKEWORD32B( b3, b2, b1, b0 ) ((uint32_t)((uint32_t)(b3)<< 24) | ((uint32_t)(b2)<<16) | ((uint32_t)(b1)<<8) | ((uint32_t)(b0) ) - -// Used to extract smaller integers from larger sized intergers -#define LOWERBYTE( w ) (uint8_t)((w) & 0x00ff ) -#define UPPERBYTE( w ) (uint8_t)(((w) & 0xff00) >> 8 ) -#define UPPERWORD(lw) (uint16_t)(((lw) & 0xffff0000) >> 16 ) -#define LOWERWORD(lw) (uint16_t)((lw) & 0x0000ffff) - -// Macros to operate on a target and bitmask. -#define CLEARBIT( a, b ) ((a) = (a) & ~(b)) -#define SETBIT( a, b ) ((a) = (a) | (b) ) -#define TOGGLEBIT(a,b) ((a) = (a) ^ (b) ) - -// test bit macros operate using a bit mask. -#define ISBITSET( a, b ) ( ((a) & (b)) == (b) ? TRUE : FALSE ) -#define ISBITCLEAR( a, b) ( (~(a) & (b)) == (b) ? TRUE : FALSE ) - -/** PRIVATE FUNCTIONS **/ -//static void sf_SendSynchPacket( Port_t *thisport ); -static uint16_t sf_crc16(uint16_t crc, uint8_t data); -static void sf_write_byte(Port_t *thisport, uint8_t c); -static void sf_SetSendTimeout(Port_t *thisport); -static uint16_t sf_CheckTimeout(Port_t *thisport); -static int16_t sf_DecodeState(Port_t *thisport, uint8_t c); -static int16_t sf_ReceiveState(Port_t *thisport, uint8_t c); - -static void sf_SendPacket(Port_t *thisport); -static void sf_SendAckPacket(Port_t *thisport, uint8_t seqNumber); -static void sf_MakePacket(uint8_t *buf, const uint8_t * pdata, uint16_t length, - uint8_t seqNo); -static int16_t sf_ReceivePacket(Port_t *thisport); - -/* Flag bit masks...*/ -#define SENT_SYNCH (0x01) -#define ACK_RECEIVED (0x02) -#define ACK_EXPECTED (0x04) - -#define SSP_AWAITING_ACK 0 -#define SSP_ACKED 1 -#define SSP_IDLE 2 - -/** PRIVATE DATA **/ -static const uint16_t CRC_TABLE[] = { 0x0000, 0xC0C1, 0xC181, 0x0140, 0xC301, - 0x03C0, 0x0280, 0xC241, 0xC601, 0x06C0, 0x0780, 0xC741, 0x0500, 0xC5C1, - 0xC481, 0x0440, 0xCC01, 0x0CC0, 0x0D80, 0xCD41, 0x0F00, 0xCFC1, 0xCE81, - 0x0E40, 0x0A00, 0xCAC1, 0xCB81, 0x0B40, 0xC901, 0x09C0, 0x0880, 0xC841, - 0xD801, 0x18C0, 0x1980, 0xD941, 0x1B00, 0xDBC1, 0xDA81, 0x1A40, 0x1E00, - 0xDEC1, 0xDF81, 0x1F40, 0xDD01, 0x1DC0, 0x1C80, 0xDC41, 0x1400, 0xD4C1, - 0xD581, 0x1540, 0xD701, 0x17C0, 0x1680, 0xD641, 0xD201, 0x12C0, 0x1380, - 0xD341, 0x1100, 0xD1C1, 0xD081, 0x1040, 0xF001, 0x30C0, 0x3180, 0xF141, - 0x3300, 0xF3C1, 0xF281, 0x3240, 0x3600, 0xF6C1, 0xF781, 0x3740, 0xF501, - 0x35C0, 0x3480, 0xF441, 0x3C00, 0xFCC1, 0xFD81, 0x3D40, 0xFF01, 0x3FC0, - 0x3E80, 0xFE41, 0xFA01, 0x3AC0, 0x3B80, 0xFB41, 0x3900, 0xF9C1, 0xF881, - 0x3840, 0x2800, 0xE8C1, 0xE981, 0x2940, 0xEB01, 0x2BC0, 0x2A80, 0xEA41, - 0xEE01, 0x2EC0, 0x2F80, 0xEF41, 0x2D00, 0xEDC1, 0xEC81, 0x2C40, 0xE401, - 0x24C0, 0x2580, 0xE541, 0x2700, 0xE7C1, 0xE681, 0x2640, 0x2200, 0xE2C1, - 0xE381, 0x2340, 0xE101, 0x21C0, 0x2080, 0xE041, 0xA001, 0x60C0, 0x6180, - 0xA141, 0x6300, 0xA3C1, 0xA281, 0x6240, 0x6600, 0xA6C1, 0xA781, 0x6740, - 0xA501, 0x65C0, 0x6480, 0xA441, 0x6C00, 0xACC1, 0xAD81, 0x6D40, 0xAF01, - 0x6FC0, 0x6E80, 0xAE41, 0xAA01, 0x6AC0, 0x6B80, 0xAB41, 0x6900, 0xA9C1, - 0xA881, 0x6840, 0x7800, 0xB8C1, 0xB981, 0x7940, 0xBB01, 0x7BC0, 0x7A80, - 0xBA41, 0xBE01, 0x7EC0, 0x7F80, 0xBF41, 0x7D00, 0xBDC1, 0xBC81, 0x7C40, - 0xB401, 0x74C0, 0x7580, 0xB541, 0x7700, 0xB7C1, 0xB681, 0x7640, 0x7200, - 0xB2C1, 0xB381, 0x7340, 0xB101, 0x71C0, 0x7080, 0xB041, 0x5000, 0x90C1, - 0x9181, 0x5140, 0x9301, 0x53C0, 0x5280, 0x9241, 0x9601, 0x56C0, 0x5780, - 0x9741, 0x5500, 0x95C1, 0x9481, 0x5440, 0x9C01, 0x5CC0, 0x5D80, 0x9D41, - 0x5F00, 0x9FC1, 0x9E81, 0x5E40, 0x5A00, 0x9AC1, 0x9B81, 0x5B40, 0x9901, - 0x59C0, 0x5880, 0x9841, 0x8801, 0x48C0, 0x4980, 0x8941, 0x4B00, 0x8BC1, - 0x8A81, 0x4A40, 0x4E00, 0x8EC1, 0x8F81, 0x4F40, 0x8D01, 0x4DC0, 0x4C80, - 0x8C41, 0x4400, 0x84C1, 0x8581, 0x4540, 0x8701, 0x47C0, 0x4680, 0x8641, - 0x8201, 0x42C0, 0x4380, 0x8341, 0x4100, 0x81C1, 0x8081, 0x4040 }; - -/** EXTERNAL DATA **/ - -/** EXTERNAL FUNCTIONS **/ - -/** VERIFICATION FUNCTIONS **/ - -/***********************************************************************************************************/ - -/*! - * \brief Initializes the communication port for use - * \param thisport = pointer to port structure to initialize - * \param info = config struct with default values. - * \return None. - * - * \note - * Must be called before calling the Send or REceive process functions. - */ - -void ssp_Init(Port_t *thisport, const PortConfig_t* const info) { - thisport->pfCallBack = info->pfCallBack; - thisport->pfSerialRead = info->pfSerialRead; - thisport->pfSerialWrite = info->pfSerialWrite; - thisport->pfGetTime = info->pfGetTime; - - thisport->maxRetryCount = info->max_retry; - thisport->timeoutLen = info->timeoutLen; - thisport->txBufSize = info->txBufSize; - thisport->rxBufSize = info->rxBufSize; - thisport->txBuf = info->txBuf; - thisport->rxBuf = info->rxBuf; - thisport->retryCount = 0; - thisport->sendSynch = FALSE; //TRUE; - thisport->rxSeqNo = 255; - thisport->txSeqNo = 255; - thisport->SendState = SSP_IDLE; -} - -/*! - * \brief Runs the send process, checks for receipt of ack, timeouts and resends if needed. - * \param thisport = which port to use - * \return SSP_TX_WAITING - waiting for a valid ACK to arrive - * \return SSP_TX_TIMEOUT - failed to receive a valid ACK in the timeout period, after retrying. - * \return SSP_TX_IDLE - not expecting a ACK packet (no current transmissions in progress) - * \return SSP_TX_ACKED - valid ACK received before timeout period. - * - * \note - * - */ -int16_t ssp_SendProcess(Port_t *thisport) { - int16_t value = SSP_TX_WAITING; - - if (thisport->SendState == SSP_AWAITING_ACK) { - if (sf_CheckTimeout(thisport) == TRUE) { - if (thisport->retryCount < thisport->maxRetryCount) { - // Try again - sf_SendPacket(thisport); - sf_SetSendTimeout(thisport); - value = SSP_TX_WAITING; - } else { - // Give up, # of trys has exceded the limit -#ifdef DEBUG_SSP - char str[63]= {0}; - sprintf(str,"Send Timeout|"); - PIOS_COM_SendString(PIOS_COM_TELEM_USB,str); -#endif - value = SSP_TX_TIMEOUT; - CLEARBIT( thisport->flags, ACK_RECEIVED); - thisport->SendState = SSP_IDLE; - } - } else { - value = SSP_TX_WAITING; - } - } else if (thisport->SendState == SSP_ACKED) { - SETBIT( thisport->flags, ACK_RECEIVED); - value = SSP_TX_ACKED; - thisport->SendState = SSP_IDLE; - } else { - thisport->SendState = SSP_IDLE; - value = SSP_TX_IDLE; - } - return value; -} - -/*! - * \brief Runs the receive process. fetches a byte at a time and runs the byte through the protocol receive state machine. - * \param thisport - which port to use. - * \return receive status. - * - * \note - * - */ -int16_t ssp_ReceiveProcess(Port_t *thisport) { - int16_t b; - int16_t packet_status = SSP_RX_IDLE; - - do { - b = thisport->pfSerialRead(); // attempt to read a char from the serial buffer - if (b != -1) { - packet_status = sf_ReceiveState(thisport, b); // process the newly received byte in the receive state machine - } - // keep going until either we received a full packet or there are no more bytes to process - } while (packet_status != SSP_RX_COMPLETE && b != -1); - return packet_status; -} - -/*! - * \brief processes a single byte through the receive state machine. - * \param thisport = which port to use - * \return current receive status - * - * \note - * - */ - -int16_t ssp_ReceiveByte(Port_t *thisport) { - int16_t b; - int16_t packet_status = SSP_RX_IDLE; - - b = thisport->pfSerialRead(); - if (b != -1) { - packet_status = sf_ReceiveState(thisport, b); - } - return packet_status; -} - -/*! - * \brief Sends a data packet and blocks until timeout or ack is received. - * \param thisport = which port to use - * \param data = pointer to data to send - * \param length = number of data bytes to send. Must be less than 254 - * \return true = ack was received within number of retries - * \return false = ack was not received. - * - * \note - * - */ -uint16_t ssp_SendDataBlock(Port_t *thisport, uint8_t *data, uint16_t length) { - int16_t packet_status = SSP_TX_WAITING; - uint16_t retval = FALSE; - - packet_status = ssp_SendData(thisport, data, length); // send the data - while (packet_status == SSP_TX_WAITING) { // check the status - (void) ssp_ReceiveProcess(thisport); // process any bytes received. - packet_status = ssp_SendProcess(thisport); // check the send status - } - if (packet_status == SSP_TX_ACKED) { // figure out what happened to the packet - retval = TRUE; - } else { - retval = FALSE; - } - return retval; -} - -/*! - * \brief sends a chunk of data and does not block - * \param thisport = which port to use - * \param data = pointer to data to send - * \param length = number of bytes to send - * \return SSP_TX_BUFOVERRUN = tried to send too much data - * \return SSP_TX_WAITING = data sent and waiting for an ack to arrive - * \return SSP_TX_BUSY = a packet has already been sent, but not yet acked - * - * \note - * - */ -int16_t ssp_SendData(Port_t *thisport, const uint8_t *data, - const uint16_t length) { - - int16_t value = SSP_TX_WAITING; - - if ((length + 2) > thisport->txBufSize) { - // TRYING to send too much data. - value = SSP_TX_BUFOVERRUN; - } else if (thisport->SendState == SSP_IDLE) { -#ifdef ACTIVE_SYNCH - if( thisport->sendSynch == TRUE ) { - sf_SendSynchPacket(thisport); - } -#endif - -#ifdef SYNCH_SEND - if( length == 0 ) { - // TODO this method could allow a task/user to start a synchronisation step if a zero is mistakenly passed to this function. - // could add a check for a NULL data pointer, or use some sort of static flag that can only be accessed by a static function - // that must be called before calling this function. - // we are attempting to send a synch packet - thisport->txSeqNo = 0; // make this zero to cause the other end to re-synch with us - SETBIT(thisport->flags, SENT_SYNCH); - } else { - // we are sending a data packet - CLEARBIT( thisport->txSeqNo, ACK_BIT ); // make sure we are not sending a ACK packet - thisport->txSeqNo++; // update the sequence number. - if( thisport->txSeqNo > 0x7F) { // check for sequence number rollover - thisport->txSeqNo = 1; // if we do have rollover then reset to 1 not zero, - // zero is reserviced for synchronization requests - } - } - -#else - CLEARBIT( thisport->txSeqNo, ACK_BIT ); // make sure we are not sending a ACK packet - thisport->txSeqNo++; // update the sequence number. - if (thisport->txSeqNo > 0x7F) { // check for sequence number rollover - thisport->txSeqNo = 1; // if we do have rollover then reset to 1 not zero, - // zero is reserved for synchronization requests - } -#endif - CLEARBIT( thisport->flags, ACK_RECEIVED); - thisport->SendState = SSP_AWAITING_ACK; - value = SSP_TX_WAITING; - thisport->retryCount = 0; // zero out the retry counter for this transmission - sf_MakePacket(thisport->txBuf, data, length, thisport->txSeqNo); - sf_SendPacket(thisport); // punch out the packet to the serial port - sf_SetSendTimeout(thisport); // do the timeout values -#ifdef DEBUG_SSP - char str[63]= {0}; - sprintf(str,"Sent DATA PACKET:%d|",thisport->txSeqNo); - PIOS_COM_SendString(PIOS_COM_TELEM_USB,str); -#endif - } else { - // error we are already sending a packet. Need to wait for the current packet to be acked or timeout. -#ifdef DEBUG_SSP - char str[63]= {0}; - sprintf(str,"Error sending TX was busy|"); - PIOS_COM_SendString(PIOS_COM_TELEM_USB,str); -#endif - value = SSP_TX_BUSY; - } - return value; -} - -/*! - * \brief Attempts to synchronize the sequence numbers with the other end of the connectin. - * \param thisport = which port to use - * \return true = success - * \return false = failed to receive an ACK to our synch request - * - * \note - * A. send a packet with a sequence number equal to zero - * B. if timed out then: - * send synch packet again - * increment try counter - * if number of tries exceed maximum try limit then exit - * C. goto A - */ -uint16_t ssp_Synchronise(Port_t *thisport) { - int16_t packet_status; - uint16_t retval = FALSE; - -#ifndef USE_SENDPACKET_DATA - thisport->txSeqNo = 0; // make this zero to cause the other end to re-synch with us - SETBIT(thisport->flags, SENT_SYNCH); - // TODO - should this be using ssp_SendPacketData()?? - sf_MakePacket(thisport->txBuf, NULL, 0, thisport->txSeqNo); // construct the packet - sf_SendPacket(thisport); - sf_SetSendTimeout(thisport); - thisport->SendState = SSP_AWAITING_ACK; - packet_status = SSP_TX_WAITING; -#else - packet_status = ssp_SendData( thisport, NULL, 0 ); -#endif - while (packet_status == SSP_TX_WAITING) { // we loop until we time out. - (void) ssp_ReceiveProcess(thisport); // do the receive process - packet_status = ssp_SendProcess(thisport); // do the send process - } - thisport->sendSynch = FALSE; - switch (packet_status) { - case SSP_TX_ACKED: - retval = TRUE; - break; - case SSP_TX_BUSY: // intentional fall through. - case SSP_TX_TIMEOUT: // intentional fall through. - case SSP_TX_BUFOVERRUN: - retval = FALSE; - break; - default: - retval = FALSE; - break; - }; - return retval; -} - -/*! - * \brief sends out a preformatted packet for a give port - * \param thisport = which port to use. - * \return none. - * - * \note - * Packet should be formed through the use of sf_MakePacket before calling this function. - */ -static void sf_SendPacket(Port_t *thisport) { - // add 3 to packet data length for: 1 length + 2 CRC (packet overhead) - uint8_t packetLen = thisport->txBuf[LENGTH] + 3; - - // use the raw serial write function so the SYNC byte does not get 'escaped' - thisport->pfSerialWrite(SYNC); - for (uint8_t x = 0; x < packetLen; x++) { - sf_write_byte(thisport, thisport->txBuf[x]); - } - thisport->retryCount++; -} - -/*! - * \brief converts data to transport layer protocol packet format. - * \param txbuf = buffer to use when forming the packet - * \param pdata = pointer to data to use - * \param length = number of bytes to use - * \param seqNo = sequence number of this packet - * \return none. - * - * \note - * 1. This function does not try to interpret ACK or SYNCH packets. This should - * be done by the caller of this function. - * 2. This function will attempt to format all data upto the size of the tx buffer. - * Any extra data beyond that will be ignored. - * 3. TODO: Should this function return an error if data length to be sent is greater th tx buffer size? - * - */ -void sf_MakePacket(uint8_t *txBuf, const uint8_t * pdata, uint16_t length, - uint8_t seqNo) { - uint16_t crc = 0xffff; - uint16_t bufPos = 0; - uint8_t b; - - // add 1 for the seq. number - txBuf[LENGTH] = length + 1; - txBuf[SEQNUM] = seqNo; - crc = sf_crc16(crc, seqNo); - - length = length + 2; // add two for the length and seqno bytes which are added before the loop. - for (bufPos = 2; bufPos < length; bufPos++) { - b = *pdata++; - txBuf[bufPos] = b; - crc = sf_crc16(crc, b); // update CRC value - } - txBuf[bufPos++] = LOWERBYTE(crc); - txBuf[bufPos] = UPPERBYTE(crc); - -} - -/*! - * \brief sends out an ack packet to given sequence number - * \param thisport = which port to use - * \param seqNumber = sequence number of the packet we would like to ack - * \return none. - * - * \note - * - */ - -static void sf_SendAckPacket(Port_t *thisport, uint8_t seqNumber) { -#ifdef DEBUG_SSP - char str[63]= {0}; - sprintf(str,"Sent ACK PACKET:%d|",seqNumber); - PIOS_COM_SendString(PIOS_COM_TELEM_USB,str); -#endif - uint8_t AckSeqNumber = SETBIT( seqNumber, ACK_BIT ); - - // create the packet, note we pass AckSequenceNumber directly - sf_MakePacket(thisport->txBuf, NULL, 0, AckSeqNumber); - sf_SendPacket(thisport); - // we don't set the timeout for an ACK because we don't ACK our ACKs in this protocol -} - -/*! - * \brief writes a byte out the output channel. Adds escape byte where needed - * \param thisport = which port to use - * \param c = byte to send - * \return none. - * - * \note - * - */ -static void sf_write_byte(Port_t *thisport, uint8_t c) { - if (c == SYNC) { // check for SYNC byte - thisport->pfSerialWrite(ESC); // since we are not starting a packet we must ESCAPE the SYNCH byte - thisport->pfSerialWrite(ESC_SYNC); // now send the escaped synch char - } else if (c == ESC) { // Check for ESC character - thisport->pfSerialWrite(ESC); // if it is, we need to send it twice - thisport->pfSerialWrite(ESC); - } else { - thisport->pfSerialWrite(c); // otherwise write the byte to serial port - } -} - -/************************************************************************************************************ - * - * NAME: uint16_t ssp_crc16( uint16_t crc, uint16_t data ) - * DESCRIPTION: Uses crc_table to calculate new crc - * ARGUMENTS: - * arg1: crc - * arg2: data - byte to calculate into CRC - * RETURN: New crc - * CREATED: 5/8/02 - * - *************************************************************************************************************/ -/*! - * \brief calculates the new CRC value for 'data' - * \param crc = current CRC value - * \param data = new byte - * \return updated CRC value - * - * \note - * - */ - -static uint16_t sf_crc16(uint16_t crc, uint8_t data) { - return (crc >> 8) ^ CRC_TABLE[(crc ^ data) & 0x00FF]; -} - -/*! - * \brief sets the timeout for the given packet - * \param thisport = which port to use - * \return none. - * - * \note - * - */ - -static void sf_SetSendTimeout(Port_t *thisport) { - uint32_t timeout; - timeout = thisport->pfGetTime() + thisport->timeoutLen; - thisport->timeout = timeout; -} - -/*! - * \brief checks to see if a timeout occured - * \param thisport = which port to use - * \return true = a timeout has occurred - * \return false = has not timed out - * - * \note - * - */ -static uint16_t sf_CheckTimeout(Port_t *thisport) { - uint16_t retval = FALSE; - uint32_t current_time; - - current_time = thisport->pfGetTime(); - if (current_time > thisport->timeout) { - retval = TRUE; - } - return retval; -} - -/**************************************************************************** - * NAME: sf_ReceiveState - * DESC: Implements the receive state handling code for escaped and unescaped data - * ARGS: thisport - which port to operate on - * c - incoming byte - * RETURN: - * CREATED: - * NOTES: - * 1. change from using pointer to functions. - ****************************************************************************/ -/*! - * \brief implements the receive state handling code for escaped and unescaped data - * \param thisport = which port to use - * \param c = byte to process through the receive state machine - * \return receive status - * - * \note - * - */ -static int16_t sf_ReceiveState(Port_t *thisport, uint8_t c) { - int16_t retval = SSP_RX_RECEIVING; - - switch (thisport->InputState) { - case state_unescaped_e: - if (c == SYNC) { - thisport->DecodeState = decode_len1_e; - } else if (c == ESC) { - thisport->InputState = state_escaped_e; - } else { - retval = sf_DecodeState(thisport, c); - } - break; // end of unescaped state. - case state_escaped_e: - thisport->InputState = state_unescaped_e; - if (c == SYNC) { - thisport->DecodeState = decode_len1_e; - } else if (c == ESC_SYNC) { - retval = sf_DecodeState(thisport, SYNC); - } else { - retval = sf_DecodeState(thisport, c); - } - break; // end of the escaped state. - default: - break; - } - return retval; -} - -/**************************************************************************** - * NAME: sf_DecodeState - * DESC: Implements the receive state finite state machine - * ARGS: thisport - which port to operate on - * c - incoming byte - * RETURN: - * CREATED: - * NOTES: - * 1. change from using pointer to functions. - ****************************************************************************/ - -/*! - * \brief implements the receiving decoding state machine - * \param thisport = which port to use - * \param c = byte to process - * \return receive status - * - * \note - * - */ -static int16_t sf_DecodeState(Port_t *thisport, uint8_t c) { - int16_t retval; - switch (thisport->DecodeState) { - case decode_idle_e: - // 'c' is ignored in this state as the only way to leave the idle state is - // recognition of the SYNC byte in the sf_ReceiveState function. - retval = SSP_RX_IDLE; - break; - case decode_len1_e: - thisport->rxBuf[LENGTH] = c; - thisport->rxBufLen = c; - if (thisport->rxBufLen <= thisport->rxBufSize) { - thisport->DecodeState = decode_seqNo_e; - retval = SSP_RX_RECEIVING; - } else { - thisport->DecodeState = decode_idle_e; - retval = SSP_RX_IDLE; - } - break; - case decode_seqNo_e: - thisport->rxBuf[SEQNUM] = c; - thisport->crc = 0xffff; - thisport->rxBufLen--; // subtract 1 for the seq. no. - thisport->rxBufPos = 2; - - thisport->crc = sf_crc16(thisport->crc, c); - if (thisport->rxBufLen > 0) { - thisport->DecodeState = decode_data_e; - } else { - thisport->DecodeState = decode_crc1_e; - } - retval = SSP_RX_RECEIVING; - break; - case decode_data_e: - thisport->rxBuf[(thisport->rxBufPos)++] = c; - thisport->crc = sf_crc16(thisport->crc, c); - if (thisport->rxBufPos == (thisport->rxBufLen + 2)) { - thisport->DecodeState = decode_crc1_e; - } - retval = SSP_RX_RECEIVING; - break; - case decode_crc1_e: - thisport->crc = sf_crc16(thisport->crc, c); - thisport->DecodeState = decode_crc2_e; - retval = SSP_RX_RECEIVING; - break; - case decode_crc2_e: - thisport->DecodeState = decode_idle_e; - // verify the CRC value for the packet - if (sf_crc16(thisport->crc, c) == 0) { - // TODO shouldn't the return value of sf_ReceivePacket() be checked? - sf_ReceivePacket(thisport); - retval = SSP_RX_COMPLETE; - } else { - thisport->RxError++; - retval = SSP_RX_IDLE; - } - break; - default: - thisport->DecodeState = decode_idle_e; // unknown state so reset to idle state and wait for the next start of a packet. - retval = SSP_RX_IDLE; - break; - } - return retval; -} - -/************************************************************************************************************ - * - * NAME: int16_t sf_ReceivePacket( ) - * DESCRIPTION: Receive one packet, assumed that data is in rec.buff[] - * ARGUMENTS: - * RETURN: 0 . no new packet was received, could be ack or same packet - * 1 . new packet received - * SSP_PACKET_? - * SSP_PACKET_COMPLETE - * SSP_PACKET_ACK - * CREATED: 5/8/02 - * - *************************************************************************************************************/ -/*! - * \brief receive one packet. calls the callback function if needed. - * \param thisport = which port to use - * \return true = valid data packet received. - * \return false = otherwise - * - * \note - * - * Created: Oct 7, 2010 12:07:22 AM by joe - */ - -static int16_t sf_ReceivePacket(Port_t *thisport) { - int16_t value = FALSE; - - if (ISBITSET(thisport->rxBuf[SEQNUM], ACK_BIT )) { - // Received an ACK packet, need to check if it matches the previous sent packet - if ((thisport->rxBuf[SEQNUM] & 0x7F) == (thisport->txSeqNo & 0x7f)) { - // It matches the last packet sent by us - SETBIT( thisport->txSeqNo, ACK_BIT ); - thisport->SendState = SSP_ACKED; -#ifdef DEBUG_SSP - char str[63]= {0}; - sprintf(str,"Received ACK:%d|",(thisport->txSeqNo & 0x7F)); - PIOS_COM_SendString(PIOS_COM_TELEM_USB,str); -#endif - value = FALSE; - } - // else ignore the ACK packet - } else { - // Received a 'data' packet, figure out what type of packet we received... - if (thisport->rxBuf[SEQNUM] == 0) { -#ifdef DEBUG_SSP - PIOS_COM_SendString(PIOS_COM_TELEM_USB,"Received SYNC Request|"); -#endif - // Synchronize sequence number with host -#ifdef ACTIVE_SYNCH - thisport->sendSynch = TRUE; -#endif - sf_SendAckPacket(thisport, thisport->rxBuf[SEQNUM]); - thisport->rxSeqNo = 0; - value = FALSE; - } else if (thisport->rxBuf[SEQNUM] == thisport->rxSeqNo) { - // Already seen this packet, just ack it, don't act on the packet. - sf_SendAckPacket(thisport, thisport->rxBuf[SEQNUM]); - value = FALSE; - } else { - //New Packet - thisport->rxSeqNo = thisport->rxBuf[SEQNUM]; - // Let the application do something with the data/packet. - if (thisport->pfCallBack != NULL) { -#ifdef DEBUG_SSP - char str[63]= {0}; - sprintf(str,"Received DATA PACKET:%d [0]=%d %d %d|",thisport->rxSeqNo,(uint8_t)thisport->rxBuf[2],(uint8_t)thisport->rxBuf[3],(uint8_t)thisport->rxBuf[4]); - PIOS_COM_SendString(PIOS_COM_TELEM_USB,str); -#endif - // skip the first two bytes (length and seq. no.) in the buffer. - thisport->pfCallBack(&(thisport->rxBuf[2]), thisport->rxBufLen); - } - // after we send the ACK, it is possible for the host to send a new packet. - // Thus the application needs to copy the data and reset the receive buffer - // inside of thisport->pfCallBack() - sf_SendAckPacket(thisport, thisport->rxBuf[SEQNUM]); - value = TRUE; - } - } - return value; -} - diff --git a/flight/Bootloaders/OpenPilot/ssp_timer.c b/flight/Bootloaders/OpenPilot/ssp_timer.c deleted file mode 100644 index 3506923e5..000000000 --- a/flight/Bootloaders/OpenPilot/ssp_timer.c +++ /dev/null @@ -1,91 +0,0 @@ -/** - ****************************************************************************** - * @addtogroup OpenPilotBL OpenPilot BootLoader - * @{ - * - * @file ssp_timer.c - * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010. - * @brief Timer functions to be used with the SSP. - * @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 - */ - -///////////////////////////////////////////////////////////////////////////// -// Include files -///////////////////////////////////////////////////////////////////////////// - -#include "stm32f10x_tim.h" - -///////////////////////////////////////////////////////////////////////////// -// Local definitions -///////////////////////////////////////////////////////////////////////////// - -#define SSP_TIMER_TIMER_BASE TIM7 -#define SSP_TIMER_TIMER_RCC RCC_APB1Periph_TIM7 - -uint32_t SSP_TIMER_Init(u32 resolution) { - // enable timer clock - if (SSP_TIMER_TIMER_RCC == RCC_APB2Periph_TIM1 || SSP_TIMER_TIMER_RCC - == RCC_APB2Periph_TIM8) - RCC_APB2PeriphClockCmd(SSP_TIMER_TIMER_RCC, ENABLE); - else - RCC_APB1PeriphClockCmd(SSP_TIMER_TIMER_RCC, ENABLE); - - // time base configuration - TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; - TIM_TimeBaseStructure.TIM_Period = 0xffff; // max period - TIM_TimeBaseStructure.TIM_Prescaler = (72 * resolution) - 1; // uS accuracy @ 72 MHz - TIM_TimeBaseStructure.TIM_ClockDivision = 0; - TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; - TIM_TimeBaseInit(SSP_TIMER_TIMER_BASE, &TIM_TimeBaseStructure); - - // enable interrupt request - TIM_ITConfig(SSP_TIMER_TIMER_BASE, TIM_IT_Update, ENABLE); - - // start counter - TIM_Cmd(SSP_TIMER_TIMER_BASE, ENABLE); - - return 0; // no error -} - -///////////////////////////////////////////////////////////////////////////// -//! Resets the SSP_TIMER -//! \return < 0 on errors -///////////////////////////////////////////////////////////////////////////// -uint32_t SSP_TIMER_Reset(void) { - // reset counter - SSP_TIMER_TIMER_BASE->CNT = 1; // set to 1 instead of 0 to avoid new IRQ request - TIM_ClearITPendingBit(SSP_TIMER_TIMER_BASE, TIM_IT_Update); - - return 0; // no error -} - -///////////////////////////////////////////////////////////////////////////// -//! Returns current value of SSP_TIMER -//! \return 1..65535: valid SSP_TIMER value -//! \return 0xffffffff: counter overrun -///////////////////////////////////////////////////////////////////////////// -uint32_t SSP_TIMER_ValueGet(void) { - uint32_t value = SSP_TIMER_TIMER_BASE->CNT; - - if (TIM_GetITStatus(SSP_TIMER_TIMER_BASE, TIM_IT_Update) != RESET) - SSP_TIMER_Reset(); - - return value; -} - diff --git a/flight/Bootloaders/PipXtreme/Makefile b/flight/Bootloaders/PipXtreme/Makefile index a411b6403..8711ccbd9 100644 --- a/flight/Bootloaders/PipXtreme/Makefile +++ b/flight/Bootloaders/PipXtreme/Makefile @@ -103,6 +103,8 @@ SRC += $(PIOSSTM32F10X)/pios_usart.c SRC += $(PIOSSTM32F10X)/pios_irq.c SRC += $(PIOSSTM32F10X)/pios_debug.c SRC += $(PIOSSTM32F10X)/pios_gpio.c +SRC += $(PIOSSTM32F10X)/pios_iap.c +SRC += $(PIOSSTM32F10X)/pios_bl_helper.c # PIOS USB related files (seperated to make code maintenance more easy) SRC += $(PIOSSTM32F10X)/pios_usb.c @@ -416,7 +418,7 @@ $(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),$(OPENOCD_CONFIG))) +$(eval $(call JTAG_TEMPLATE,$(OUTDIR)/$(TARGET).bin,$(BL_BANK_BASE),$(BL_BANK_SIZE),$(OPENOCD_JTAG_CONFIG),$(OPENOCD_CONFIG))) .PHONY: elf lss sym hex bin bino elf: $(OUTDIR)/$(TARGET).elf diff --git a/flight/CopterControl/Makefile b/flight/CopterControl/Makefile index e8467ab55..7de345bb1 100644 --- a/flight/CopterControl/Makefile +++ b/flight/CopterControl/Makefile @@ -39,6 +39,7 @@ DEBUG ?= NO # Include objects that are just nice information to show DIAGNOSTICS ?= NO +DIAG_TASKS ?= NO # Set to YES to build a FW version that will erase all flash memory ERASE_FLASH ?= NO @@ -49,7 +50,7 @@ ENABLE_DEBUG_PINS ?= NO ENABLE_AUX_UART ?= NO # Set to YES when using Code Sourcery toolchain -CODE_SOURCERY ?= YES +CODE_SOURCERY ?= NO # Remove command is different for Code Sourcery on Windows ifeq ($(CODE_SOURCERY), YES) @@ -185,7 +186,8 @@ SRC += $(OPUAVSYNTHDIR)/stabilizationsettings.c SRC += $(OPUAVSYNTHDIR)/actuatorcommand.c SRC += $(OPUAVSYNTHDIR)/actuatordesired.c SRC += $(OPUAVSYNTHDIR)/actuatorsettings.c -SRC += $(OPUAVSYNTHDIR)/attituderaw.c +SRC += $(OPUAVSYNTHDIR)/accels.c +SRC += $(OPUAVSYNTHDIR)/gyros.c SRC += $(OPUAVSYNTHDIR)/attitudeactual.c SRC += $(OPUAVSYNTHDIR)/manualcontrolcommand.c SRC += $(OPUAVSYNTHDIR)/i2cstats.c @@ -227,8 +229,9 @@ SRC += $(PIOSSTM32F10X)/pios_gpio.c SRC += $(PIOSSTM32F10X)/pios_exti.c SRC += $(PIOSSTM32F10X)/pios_rtc.c SRC += $(PIOSSTM32F10X)/pios_wdg.c +SRC += $(PIOSSTM32F10X)/pios_iap.c SRC += $(PIOSSTM32F10X)/pios_tim.c - +SRC += $(PIOSSTM32F10X)/pios_bl_helper.c # PIOS USB related files (separated to make code maintenance more easy) SRC += $(PIOSSTM32F10X)/pios_usb.c @@ -244,13 +247,12 @@ SRC += $(PIOSCOMMON)/pios_usb_desc_hid_only.c ## PIOS Hardware (Common) SRC += $(PIOSCOMMON)/pios_crc.c SRC += $(PIOSCOMMON)/pios_flashfs_objlist.c -SRC += $(PIOSCOMMON)/pios_flash_w25x.c +SRC += $(PIOSCOMMON)/pios_flash_jedec.c SRC += $(PIOSCOMMON)/pios_adxl345.c +SRC += $(PIOSCOMMON)/pios_mpu6000.c SRC += $(PIOSCOMMON)/pios_com.c -SRC += $(PIOSCOMMON)/pios_i2c_esc.c -SRC += $(PIOSCOMMON)/pios_bmp085.c -SRC += $(PIOSCOMMON)/pios_iap.c -SRC += $(PIOSCOMMON)/pios_bl_helper.c +#SRC += $(PIOSCOMMON)/pios_i2c_esc.c +#SRC += $(PIOSCOMMON)/pios_bmp085.c SRC += $(PIOSCOMMON)/pios_rcvr.c SRC += $(PIOSCOMMON)/pios_gcsrcvr.c SRC += $(PIOSCOMMON)/printf-stdarg.c @@ -603,7 +605,7 @@ $(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),$(OPENOCD_CONFIG))) +$(eval $(call JTAG_TEMPLATE,$(OUTDIR)/$(TARGET).bin,$(FW_BANK_BASE),$(FW_BANK_SIZE),$(OPENOCD_JTAG_CONFIG),$(OPENOCD_CONFIG))) .PHONY: elf lss sym hex bin bino opfw elf: $(OUTDIR)/$(TARGET).elf diff --git a/flight/CopterControl/System/coptercontrol.c b/flight/CopterControl/System/coptercontrol.c index 3c64141ec..9cc651e0f 100644 --- a/flight/CopterControl/System/coptercontrol.c +++ b/flight/CopterControl/System/coptercontrol.c @@ -71,7 +71,7 @@ int main() PIOS_Board_Init(); #ifdef ERASE_FLASH - PIOS_Flash_W25X_EraseChip(); + PIOS_Flash_Jedec_EraseChip(); #if defined(PIOS_LED_HEARTBEAT) PIOS_LED_Off(PIOS_LED_HEARTBEAT); #endif /* PIOS_LED_HEARTBEAT */ diff --git a/flight/CopterControl/System/inc/FreeRTOSConfig.h b/flight/CopterControl/System/inc/FreeRTOSConfig.h index 68bb9da0e..996726133 100644 --- a/flight/CopterControl/System/inc/FreeRTOSConfig.h +++ b/flight/CopterControl/System/inc/FreeRTOSConfig.h @@ -31,7 +31,7 @@ #define configTICK_RATE_HZ ( ( portTickType ) 1000 ) #define configMAX_PRIORITIES ( ( unsigned portBASE_TYPE ) 5 ) #define configMINIMAL_STACK_SIZE ( ( unsigned short ) 48 ) -#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 54 * 256) ) +#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 53 * 256) ) #define configMAX_TASK_NAME_LEN ( 16 ) #define configUSE_TRACE_FACILITY 0 #define configUSE_16_BIT_TICKS 0 diff --git a/flight/CopterControl/System/inc/pios_config.h b/flight/CopterControl/System/inc/pios_config.h index 1d701a1af..e4b70e931 100644 --- a/flight/CopterControl/System/inc/pios_config.h +++ b/flight/CopterControl/System/inc/pios_config.h @@ -36,10 +36,10 @@ /* Enable/Disable PiOS Modules */ #define PIOS_INCLUDE_ADC #define PIOS_INCLUDE_DELAY -#if defined(USE_I2C) -#define PIOS_INCLUDE_I2C -#define PIOS_INCLUDE_I2C_ESC -#endif +//#if defined(USE_I2C) +//#define PIOS_INCLUDE_I2C +//#define PIOS_INCLUDE_I2C_ESC +//#endif #define PIOS_INCLUDE_IRQ #define PIOS_INCLUDE_LED #define PIOS_INCLUDE_IAP @@ -77,8 +77,8 @@ #define PIOS_INCLUDE_ADXL345 #define PIOS_INCLUDE_FLASH - -#define PIOS_INCLUDE_BMP085 +#define PIOS_INCLUDE_MPU6000 +#define PIOS_MPU6000_ACCEL /* A really shitty setting saving implementation */ #define PIOS_INCLUDE_FLASH_SECTOR_SETTINGS diff --git a/flight/CopterControl/System/pios_board.c b/flight/CopterControl/System/pios_board.c index d0b8ce8dc..78e316cb5 100644 --- a/flight/CopterControl/System/pios_board.c +++ b/flight/CopterControl/System/pios_board.c @@ -43,6 +43,7 @@ #include #include + /* One slot per selectable receiver group. * eg. PWM, PPM, GCS, DSMMAINPORT, DSMFLEXIPORT, SBUS * NOTE: No slot in this map for NONE. @@ -66,25 +67,140 @@ uint32_t pios_com_vcp_id; uint32_t pios_com_gps_id; uint32_t pios_com_bridge_id; +/** + * Configuration for MPU6000 chip + */ +#if defined(PIOS_INCLUDE_MPU6000) +#include "pios_mpu6000.h" +static const struct pios_exti_cfg pios_exti_mpu6000_cfg __exti_config = { + .vector = PIOS_MPU6000_IRQHandler, + .line = EXTI_Line3, + .pin = { + .gpio = GPIOA, + .init = { + .GPIO_Pin = GPIO_Pin_3, + .GPIO_Speed = GPIO_Speed_10MHz, + .GPIO_Mode = GPIO_Mode_IN_FLOATING, + }, + }, + .irq = { + .init = { + .NVIC_IRQChannel = EXTI3_IRQn, + .NVIC_IRQChannelPreemptionPriority = PIOS_IRQ_PRIO_HIGH, + .NVIC_IRQChannelSubPriority = 0, + .NVIC_IRQChannelCmd = ENABLE, + }, + }, + .exti = { + .init = { + .EXTI_Line = EXTI_Line3, // matches above GPIO pin + .EXTI_Mode = EXTI_Mode_Interrupt, + .EXTI_Trigger = EXTI_Trigger_Rising, + .EXTI_LineCmd = ENABLE, + }, + }, +}; + +static const struct pios_mpu6000_cfg pios_mpu6000_cfg = { + .exti_cfg = &pios_exti_mpu6000_cfg, + .Fifo_store = PIOS_MPU6000_FIFO_TEMP_OUT | PIOS_MPU6000_FIFO_GYRO_X_OUT | PIOS_MPU6000_FIFO_GYRO_Y_OUT | PIOS_MPU6000_FIFO_GYRO_Z_OUT, + // Clock at 8 khz, downsampled by 8 for 1khz + .Smpl_rate_div = 15, + .interrupt_cfg = PIOS_MPU6000_INT_CLR_ANYRD, + .interrupt_en = PIOS_MPU6000_INTEN_DATA_RDY, + .User_ctl = PIOS_MPU6000_USERCTL_FIFO_EN, + .Pwr_mgmt_clk = PIOS_MPU6000_PWRMGMT_PLL_X_CLK, + .accel_range = PIOS_MPU6000_ACCEL_8G, + .gyro_range = PIOS_MPU6000_SCALE_500_DEG, + .filter = PIOS_MPU6000_LOWPASS_256_HZ +}; +#endif /* PIOS_INCLUDE_MPU6000 */ + +static const struct flashfs_cfg flashfs_w25x_cfg = { + .table_magic = 0x85FB3C35, + .obj_magic = 0x3015AE71, + .obj_table_start = 0x00000010, + .obj_table_end = 0x00001000, + .sector_size = 0x00001000, +}; + +static const struct pios_flash_jedec_cfg flash_w25x_cfg = { + .sector_erase = 0x20, + .chip_erase = 0x60 +}; + +static const struct flashfs_cfg flashfs_m25p_cfg = { + .table_magic = 0x85FB3D35, + .obj_magic = 0x3015A371, + .obj_table_start = 0x00000010, + .obj_table_end = 0x00010000, + .sector_size = 0x00010000, +}; + +static const struct pios_flash_jedec_cfg flash_m25p_cfg = { + .sector_erase = 0xD8, + .chip_erase = 0xC7 +}; +#include /** * PIOS_Board_Init() * initializes all the core subsystems on this specific hardware * called from System/openpilot.c */ +int32_t init_test; void PIOS_Board_Init(void) { /* Delay system */ PIOS_DELAY_Init(); + const struct pios_board_info * bdinfo = &pios_board_info_blob; + +#if defined(PIOS_INCLUDE_LED) + switch(bdinfo->board_rev) { + case 0x01: // Revision 1 + PIOS_LED_Init(&pios_led_cfg_cc); + break; + case 0x02: // Revision 2 + GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE); + PIOS_LED_Init(&pios_led_cfg_cc3d); + break; + default: + PIOS_Assert(0); + } +#endif /* PIOS_INCLUDE_LED */ + +#if defined(PIOS_INCLUDE_SPI) /* Set up the SPI interface to the serial flash */ - if (PIOS_SPI_Init(&pios_spi_flash_accel_id, &pios_spi_flash_accel_cfg)) { - PIOS_Assert(0); + + switch(bdinfo->board_rev) { + case 0x01: // Revision 1 + if (PIOS_SPI_Init(&pios_spi_flash_accel_id, &pios_spi_flash_accel_cfg_cc)) { + PIOS_Assert(0); + } + break; + case 0x02: // Revision 2 + if (PIOS_SPI_Init(&pios_spi_flash_accel_id, &pios_spi_flash_accel_cfg_cc3d)) { + PIOS_Assert(0); + } + break; + default: + PIOS_Assert(0); } - PIOS_Flash_W25X_Init(pios_spi_flash_accel_id); - PIOS_ADXL345_Attach(pios_spi_flash_accel_id); +#endif - PIOS_FLASHFS_Init(); + switch(bdinfo->board_rev) { + case 0x01: // Revision 1 + PIOS_Flash_Jedec_Init(pios_spi_flash_accel_id, 1, &flash_w25x_cfg); + PIOS_FLASHFS_Init(&flashfs_w25x_cfg); + break; + case 0x02: // Revision 2 + PIOS_Flash_Jedec_Init(pios_spi_flash_accel_id, 0, &flash_m25p_cfg); + PIOS_FLASHFS_Init(&flashfs_m25p_cfg); + break; + default: + PIOS_DEBUG_Assert(0); + } /* Initialize UAVObject libraries */ EventDispatcherInitialize(); @@ -95,10 +211,6 @@ void PIOS_Board_Init(void) { PIOS_RTC_Init(&pios_rtc_main_cfg); #endif -#if defined(PIOS_INCLUDE_LED) - PIOS_LED_Init(&pios_led_cfg); -#endif /* PIOS_INCLUDE_LED */ - HwSettingsInitialize(); #ifndef ERASE_FLASH @@ -162,7 +274,17 @@ void PIOS_Board_Init(void) { } uint32_t pios_usb_id; - PIOS_USB_Init(&pios_usb_id, &pios_usb_main_cfg); + + switch(bdinfo->board_rev) { + case 0x01: // Revision 1 + PIOS_USB_Init(&pios_usb_id, &pios_usb_main_cfg_cc); + break; + case 0x02: // Revision 2 + PIOS_USB_Init(&pios_usb_id, &pios_usb_main_cfg_cc3d); + break; + default: + PIOS_Assert(0); + } #if defined(PIOS_INCLUDE_USB_CDC) @@ -575,8 +697,35 @@ void PIOS_Board_Init(void) { #else PIOS_DEBUG_Init(&pios_tim_servo_all_channels, NELEMENTS(pios_tim_servo_all_channels)); #endif /* PIOS_DEBUG_ENABLE_DEBUG_PINS */ - - PIOS_ADC_Init(); + + switch(bdinfo->board_rev) { + case 0x01: + // Revision 1 with invensense gyros, start the ADC +#if defined(PIOS_INCLUDE_ADC) + PIOS_ADC_Init(&pios_adc_cfg); +#endif +#if defined(PIOS_INCLUDE_ADXL345) + PIOS_ADXL345_Init(pios_spi_flash_accel_id, 0); +#endif + break; + case 0x02: + // Revision 2 with L3GD20 gyros, start a SPI interface and connect to it + GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE); + +#if defined(PIOS_INCLUDE_MPU6000) + // Set up the SPI interface to the serial flash + if (PIOS_SPI_Init(&pios_spi_gyro_id, &pios_spi_gyro_cfg)) { + PIOS_Assert(0); + } + PIOS_MPU6000_Init(pios_spi_gyro_id,0,&pios_mpu6000_cfg); + init_test = PIOS_MPU6000_Test(); +#endif /* PIOS_INCLUDE_MPU6000 */ + + break; + default: + PIOS_Assert(0); + } + PIOS_GPIO_Init(); /* Make sure we have at least one telemetry link configured or else fail initialization */ diff --git a/flight/Doc/Doxygen/doxygen.cfg b/flight/Doc/Doxygen/doxygen.cfg index 71a779d48..dec54aa81 100644 --- a/flight/Doc/Doxygen/doxygen.cfg +++ b/flight/Doc/Doxygen/doxygen.cfg @@ -574,7 +574,7 @@ WARN_LOGFILE = # directories like "/usr/src/myproject". Separate the files or directories # with spaces. -INPUT = OpenPilot PiOS PiOS/STM32F10x +INPUT = OpenPilot PiOS PiOS/STM32F10x PiOS/STM32F2xx # This tag can be used to specify the character encoding of the source files # that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is diff --git a/flight/INS/Makefile b/flight/INS/Makefile deleted file mode 100644 index a58f71b9b..000000000 --- a/flight/INS/Makefile +++ /dev/null @@ -1,431 +0,0 @@ - ##### - # Project: OpenPilot INS - # - # - # Makefile for OpenPilot INS project - # - # The OpenPilot Team, http://www.openpilot.org, Copyright (C) 2011. - # - # - # 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 - ##### - -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 - -# Set to YES when using Code Sourcery toolchain -CODE_SOURCERY ?= YES - -ifeq ($(CODE_SOURCERY), YES) -REMOVE_CMD = cs-rm -else -REMOVE_CMD = rm -endif - -FLASH_TOOL = OPENOCD - -# Paths -INS = ./ -INSINC = $(INS)/inc -PIOS = ../PiOS -PIOSINC = $(PIOS)/inc -FLIGHTLIB = ../Libraries -FLIGHTLIBINC = ../Libraries/inc -PIOSSTM32F10X = $(PIOS)/STM32F10x -PIOSCOMMON = $(PIOS)/Common -PIOSBOARDS = $(PIOS)/Boards -APPLIBDIR = $(PIOSSTM32F10X)/Libraries -STMLIBDIR = $(APPLIBDIR) -STMSPDDIR = $(STMLIBDIR)/STM32F10x_StdPeriph_Driver -STMUSBDIR = $(STMLIBDIR)/STM32_USB-FS-Device_Driver -STMSPDSRCDIR = $(STMSPDDIR)/src -STMSPDINCDIR = $(STMSPDDIR)/inc -CMSISDIR = $(STMLIBDIR)/CMSIS/Core/CM3 -OPDIR = ../OpenPilot -OPUAVOBJ = ../UAVObjects -OPUAVOBJINC = $(OPUAVOBJ)/inc -OPSYSINC = $(OPDIR)/System/inc -BOOT = ../Bootloaders/INS -BOOTINC = $(BOOT)/inc -HWDEFSINC = ../board_hw_defs/$(BOARD_NAME) - -OPUAVSYNTHDIR = $(OUTDIR)/../uavobject-synthetics/flight - -# List C source files here. (C dependencies are automatically generated.) -# use file-extension c for "c-only"-files - -## INS: -SRC = ins.c -SRC += pios_board.c -#SRC += ins_timer.c -#SRC += insgps13state.c -SRC += $(FLIGHTLIB)/fifo_buffer.c -#SRC += $(FLIGHTLIB)/ins_spi_comm.c -#SRC += $(FLIGHTLIB)/ins_comm_objects.c -#SRC += $(FLIGHTLIB)/CoordinateConversions.c -#SRC += $(BOOT)/ins_spi_program_slave.c -#SRC += $(BOOT)/ins_slave_test.c -#SRC += $(BOOT)/ins_spi_program.c - -## PIOS Hardware (STM32F10x) -SRC += $(PIOSSTM32F10X)/pios_sys.c -SRC += $(PIOSSTM32F10X)/pios_led.c -SRC += $(PIOSSTM32F10X)/pios_delay.c -SRC += $(PIOSSTM32F10X)/pios_usart.c -SRC += $(PIOSSTM32F10X)/pios_irq.c -SRC += $(PIOSSTM32F10X)/pios_i2c.c -SRC += $(PIOSSTM32F10X)/pios_debug.c -SRC += $(PIOSSTM32F10X)/pios_gpio.c -SRC += $(PIOSSTM32F10X)/pios_spi.c -SRC += $(PIOSSTM32F10X)/pios_exti.c - -## PIOS Hardware (Common) -SRC += $(PIOSCOMMON)/pios_com.c -SRC += $(PIOSCOMMON)/printf-stdarg.c -SRC += $(PIOSCOMMON)/pios_iap.c -SRC += $(PIOSCOMMON)/pios_bma180.c -SRC += $(PIOSCOMMON)/pios_hmc5883.c -SRC += $(PIOSCOMMON)/pios_bmp085.c -SRC += $(PIOSCOMMON)/pios_imu3000.c - -## CMSIS for STM32 -SRC += $(CMSISDIR)/core_cm3.c -SRC += $(CMSISDIR)/system_stm32f10x.c - -## Used parts of the STM-Library -SRC += $(STMSPDSRCDIR)/stm32f10x_adc.c -SRC += $(STMSPDSRCDIR)/stm32f10x_bkp.c -SRC += $(STMSPDSRCDIR)/stm32f10x_crc.c -SRC += $(STMSPDSRCDIR)/stm32f10x_dac.c -SRC += $(STMSPDSRCDIR)/stm32f10x_dma.c -SRC += $(STMSPDSRCDIR)/stm32f10x_exti.c -SRC += $(STMSPDSRCDIR)/stm32f10x_flash.c -SRC += $(STMSPDSRCDIR)/stm32f10x_gpio.c -SRC += $(STMSPDSRCDIR)/stm32f10x_i2c.c -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)/misc.c - -# List C source files here which must be compiled in ARM-Mode (no -mthumb). -# use file-extension c for "c-only"-files -## just for testing, timer.c could be compiled in thumb-mode too -SRCARM = - -# List C++ source files here. -# use file-extension .cpp for C++-files (not .C) -CPPSRC = - -# List C++ source files here which must be compiled in ARM-Mode. -# use file-extension .cpp for C++-files (not .C) -#CPPSRCARM = $(TARGET).cpp -CPPSRCARM = - -# List Assembler source files here. -# Make them always end in a capital .S. Files ending in a lowercase .s -# will not be considered source files but generated files (assembler -# output from the compiler), and will be deleted upon "make clean"! -# 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)$(MODEL_SUFFIX).S - -# List Assembler source files here which must be assembled in ARM-Mode.. -ASRCARM = - -# List any extra directories to look for include files here. -# Each directory must be seperated by a space. -EXTRAINCDIRS += $(PIOS) -EXTRAINCDIRS += $(PIOSINC) -EXTRAINCDIRS += $(FLIGHTLIBINC) -EXTRAINCDIRS += $(PIOSSTM32F10X) -EXTRAINCDIRS += $(PIOSCOMMON) -EXTRAINCDIRS += $(PIOSBOARDS) -EXTRAINCDIRS += $(STMSPDINCDIR) -EXTRAINCDIRS += $(CMSISDIR) -EXTRAINCDIRS += $(INSINC) -EXTRAINCDIRS += $(OPUAVSYNTHDIR) -EXTRAINCDIRS += $(BOOTINC) -EXTRAINCDIRS += $(HWDEFSINC) - -# List any extra directories to look for library files here. -# Also add directories where the linker should search for -# includes from linker-script to the list -# Each directory must be seperated by a space. -EXTRA_LIBDIRS = - -# Extra Libraries -# Each library-name must be seperated by a space. -# i.e. to link with libxyz.a, libabc.a and libefsl.a: -# EXTRA_LIBS = xyz abc efsl -# for newlib-lpc (file: libnewlibc-lpc.a): -# EXTRA_LIBS = newlib-lpc -EXTRA_LIBS = - -# Path to Linker-Scripts -LINKERSCRIPTPATH = $(PIOSSTM32F10X) - -# Optimization level, can be [0, 1, 2, 3, s]. -# 0 = turn off optimization. s = optimize for size. -# (Note: 3 is not always the best optimization level. See avr-libc FAQ.) - -ifeq ($(DEBUG),YES) -CFLAGS += -Os -CFLAGS += -DGENERAL_COV -else -CFLAGS += -Os -endif - -# Output format. (can be ihex or binary or both) -# binary to create a load-image in raw-binary format i.e. for SAM-BA, -# ihex to create a load-image in Intel hex format -#LOADFORMAT = ihex -#LOADFORMAT = binary -LOADFORMAT = both - -# Debugging format. -DEBUGF = dwarf-2 - -# Place project-specific -D (define) and/or -# -U options for C here. -CDEFS = -DSTM32F10X_$(MODEL) -CDEFS += -DUSE_STDPERIPH_DRIVER -CDEFS += -DUSE_$(BOARD) -CDEFS += -DIN_INS - -# Place project-specific -D and/or -U options for -# Assembler with preprocessor here. -#ADEFS = -DUSE_IRQ_ASM_WRAPPER -ADEFS = -D__ASSEMBLY__ - -# Compiler flag to set the C Standard level. -# c89 - "ANSI" C -# gnu89 - c89 plus GCC extensions -# c99 - ISO C99 standard (not yet fully implemented) -# gnu99 - c99 plus GCC extensions -CSTANDARD = -std=gnu99 - -#----- - -# Compiler flags. - -# -g*: generate debugging information -# -O*: optimization level -# -f...: tuning, see GCC manual and avr-libc documentation -# -Wall...: warning level -# -Wa,...: tell GCC to pass this to the assembler. -# -adhlns...: create assembler listing -# -# Flags for C and C++ (arm-elf-gcc/arm-elf-g++) - - -ifeq ($(DEBUG),YES) -CFLAGS += -g$(DEBUGF) #-DDEBUG -else -CFLAGS += -g$(DEBUGF) -endif - - -CFLAGS += -ffast-math - -CFLAGS += -mcpu=$(MCU) -CFLAGS += $(CDEFS) -CFLAGS += $(patsubst %,-I%,$(EXTRAINCDIRS)) -I. - -CFLAGS += -mapcs-frame -CFLAGS += -fomit-frame-pointer -ifeq ($(CODE_SOURCERY), YES) -CFLAGS += -fpromote-loop-indices -endif - -CFLAGS += -Wall -#CFLAGS += -Werror -CFLAGS += -Wa,-adhlns=$(addprefix $(OUTDIR)/, $(notdir $(addsuffix .lst, $(basename $<)))) -# Compiler flags to generate dependency files: -CFLAGS += -MD -MP -MF $(OUTDIR)/dep/$(@F).d - -# flags only for C -#CONLYFLAGS += -Wnested-externs -CONLYFLAGS += $(CSTANDARD) - -# Assembler flags. -# -Wa,...: tell GCC to pass this to the assembler. -# -ahlns: create listing -ASFLAGS = -mcpu=$(MCU) -I. -x assembler-with-cpp -ASFLAGS += $(ADEFS) -ASFLAGS += -Wa,-adhlns=$(addprefix $(OUTDIR)/, $(notdir $(addsuffix .lst, $(basename $<)))) -ASFLAGS += $(patsubst %,-I%,$(EXTRAINCDIRS)) - -MATH_LIB = -lm - -# Linker flags. -# -Wl,...: tell GCC to pass this to linker. -# -Map: create map file -# --cref: add cross reference to map file -LDFLAGS = -nostartfiles -Wl,-Map=$(OUTDIR)/$(TARGET).map,--cref,--gc-sections -LDFLAGS += $(patsubst %,-L%,$(EXTRA_LIBDIRS)) -LDFLAGS += -lc -LDFLAGS += $(patsubst %,-l%,$(EXTRA_LIBS)) -LDFLAGS += $(MATH_LIB) -LDFLAGS += -lc -lgcc - -# Set linker-script name depending on selected submodel name -LDFLAGS += -T$(LINKERSCRIPTPATH)/link_$(BOARD)_memory.ld -LDFLAGS += -T$(LINKERSCRIPTPATH)/link_$(BOARD)_sections.ld - -# Define programs and commands. -REMOVE = $(REMOVE_CMD) -f - -# List of all source files. -ALLSRC = $(ASRCARM) $(ASRC) $(SRCARM) $(SRC) $(CPPSRCARM) $(CPPSRC) -# List of all source files without directory and file-extension. -ALLSRCBASE = $(notdir $(basename $(ALLSRC))) - -# Define all object files. -ALLOBJ = $(addprefix $(OUTDIR)/, $(addsuffix .o, $(ALLSRCBASE))) - -# Define all listing files (used for make clean). -LSTFILES = $(addprefix $(OUTDIR)/, $(addsuffix .lst, $(ALLSRCBASE))) -# Define all depedency-files (used for make clean). -DEPFILES = $(addprefix $(OUTDIR)/dep/, $(addsuffix .o.d, $(ALLSRCBASE))) - -# Default target. -all: gccversion build - -ifeq ($(LOADFORMAT),ihex) -build: elf hex lss sym -else -ifeq ($(LOADFORMAT),binary) -build: elf bin lss sym -else -ifeq ($(LOADFORMAT),both) -build: elf hex bin lss sym -else -$(error "$(MSG_FORMATERROR) $(FORMAT)") -endif -endif -endif - -# Link: create ELF output file from object files. -$(eval $(call LINK_TEMPLATE, $(OUTDIR)/$(TARGET).elf, $(ALLOBJ))) - -# Assemble: create object files from assembler source files. -$(foreach src, $(ASRC), $(eval $(call ASSEMBLE_TEMPLATE, $(src)))) - -# Assemble: create object files from assembler source files. ARM-only -$(foreach src, $(ASRCARM), $(eval $(call ASSEMBLE_ARM_TEMPLATE, $(src)))) - -# Compile: create object files from C source files. -$(foreach src, $(SRC), $(eval $(call COMPILE_C_TEMPLATE, $(src)))) - -# Compile: create object files from C source files. ARM-only -$(foreach src, $(SRCARM), $(eval $(call COMPILE_C_ARM_TEMPLATE, $(src)))) - -# Compile: create object files from C++ source files. -$(foreach src, $(CPPSRC), $(eval $(call COMPILE_CPP_TEMPLATE, $(src)))) - -# Compile: create object files from C++ source files. ARM-only -$(foreach src, $(CPPSRCARM), $(eval $(call COMPILE_CPP_ARM_TEMPLATE, $(src)))) - -# Compile: create assembler files from C source files. ARM/Thumb -$(eval $(call PARTIAL_COMPILE_TEMPLATE, SRC)) - -# Compile: create assembler files from C source files. ARM only -$(eval $(call PARTIAL_COMPILE_ARM_TEMPLATE, SRCARM)) - -$(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),$(OPENOCD_CONFIG))) - -.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)) - -# 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 - -clean_list : - @echo $(MSG_CLEANING) - $(V1) $(REMOVE) $(OUTDIR)/$(TARGET).map - $(V1) $(REMOVE) $(OUTDIR)/$(TARGET).elf - $(V1) $(REMOVE) $(OUTDIR)/$(TARGET).hex - $(V1) $(REMOVE) $(OUTDIR)/$(TARGET).bin - $(V1) $(REMOVE) $(OUTDIR)/$(TARGET).sym - $(V1) $(REMOVE) $(OUTDIR)/$(TARGET).lss - $(V1) $(REMOVE) $(ALLOBJ) - $(V1) $(REMOVE) $(LSTFILES) - $(V1) $(REMOVE) $(DEPFILES) - $(V1) $(REMOVE) $(SRC:.c=.s) - $(V1) $(REMOVE) $(SRCARM:.c=.s) - $(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 -$(shell md $(subst /,\\,$(OUTDIR)) 2>NUL) -else -$(shell mkdir -p $(OUTDIR) 2>/dev/null) -endif - -# Include the dependency files. -ifdef ComSpec --include $(shell md $(subst /,\\,$(OUTDIR))\dep 2>NUL) $(wildcard $(OUTDIR)/dep/*) -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 install diff --git a/flight/INS/inc/ins.h b/flight/INS/inc/ins.h deleted file mode 100644 index 90fd57476..000000000 --- a/flight/INS/inc/ins.h +++ /dev/null @@ -1,129 +0,0 @@ -/** - ****************************************************************************** - * @addtogroup INS INS - - * @brief The main INS headers - * - * @{ - * @addtogroup INS_Main - * @brief INS headers - * @{ - * - * @file ins.h - * @author David "Buzz" Carlson (buzz@chebuzz.com) - * The OpenPilot Team, http://www.openpilot.org Copyright (C) 2011. - * @brief INS Headers - * @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 - */ - -#ifndef INS_H -#define INS_H - -/* PIOS Includes */ -#include - -struct mag_sensor { - uint8_t id[4]; - uint8_t updated; - struct { - int16_t axis[3]; - } raw; - struct { - float axis[3]; - } scaled; - struct { - float bias[3]; - float scale[3]; - float variance[3]; - } calibration; -}; - -//! Contains the data from the accelerometer -struct accel_sensor { - struct { - uint16_t x; - uint16_t y; - uint16_t z; - } raw; - struct { - float x; - float y; - float z; - } filtered; - struct { - float scale[3][4]; - float variance[3]; - } calibration; -}; - -//! Contains the data from the gyro -struct gyro_sensor { - struct { - uint16_t x; - uint16_t y; - uint16_t z; - } raw; - struct { - float x; - float y; - float z; - } filtered; - struct { - float bias[3]; - float scale[3]; - float variance[3]; - float tempcompfactor[3]; - } calibration; - struct { - uint16_t xy; - uint16_t z; - } temp; -}; - -//! Conains the current estimate of the attitude -struct attitude_solution { - struct { - float q1; - float q2; - float q3; - float q4; - } quaternion; -}; - -//! Contains data from the altitude sensor -struct altitude_sensor { - float altitude; - bool updated; -}; - -//! Contains data from the GPS (via the SPI link) -struct gps_sensor { - float NED[3]; - float heading; - float groundspeed; - float quality; - bool updated; -}; - -#endif /* INS_H */ - -/** - * @} - * @} - */ diff --git a/flight/INS/inc/pios_config.h b/flight/INS/inc/pios_config.h deleted file mode 100644 index a13394179..000000000 --- a/flight/INS/inc/pios_config.h +++ /dev/null @@ -1,62 +0,0 @@ -/** - ****************************************************************************** - * @addtogroup INS INS - - * @brief The INS configuration - * - * @{ - * @addtogroup INS_Main - * @brief INS configuration - * @{ - * - * @file pios_config.h - * @author David "Buzz" Carlson (buzz@chebuzz.com) - * The OpenPilot Team, http://www.openpilot.org Copyright (C) 2011. - * @brief PiOS configuration header. - * - Central compile time config for the project. - * @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 - */ - -#ifndef PIOS_CONFIG_H -#define PIOS_CONFIG_H - -/* Enable/Disable PiOS Modules */ -#define PIOS_INCLUDE_DELAY -#define PIOS_INCLUDE_I2C -#define PIOS_INCLUDE_IRQ -#define PIOS_INCLUDE_LED -#define PIOS_INCLUDE_SPI -#define PIOS_INCLUDE_SYS -#define PIOS_INCLUDE_USART -#define PIOS_INCLUDE_COM -#define PIOS_INCLUDE_GPS -#define PIOS_INCLUDE_HMC5883 -#define PIOS_INCLUDE_BMP085 -#define PIOS_INCLUDE_IMU3000 -#define PIOS_INCLUDE_GPIO -#define PIOS_INCLUDE_EXTI -#define PIOS_INCLUDE_IAP - -#define PIOS_INCLUDE_BMA180 - -#endif /* PIOS_CONFIG_H */ -/** - * @} - * @} - */ diff --git a/flight/INS/ins.c b/flight/INS/ins.c deleted file mode 100644 index 2fe538acc..000000000 --- a/flight/INS/ins.c +++ /dev/null @@ -1,218 +0,0 @@ -/** - ****************************************************************************** - * @addtogroup INS INS - - * @brief The INS Modules perform - * - * @{ - * @addtogroup INS_Main - * @brief Main function which does the hardware dependent stuff - * @{ - * - * - * @file ins.c - * @author David "Buzz" Carlson (buzz@chebuzz.com) - * The OpenPilot Team, http://www.openpilot.org Copyright (C) 2011. - * @brief INSGPS Test Program - * @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 - */ - -/* OpenPilot Includes */ -#include "ins.h" -#include "pios.h" -#include -#include "fifo_buffer.h" - -void reset_values(); - -/** - * @addtogroup INS_Global_Data INS Global Data - * @{ - * Public data. Used by both EKF and the sender - */ - -//! Contains the data from the mag sensor chip -struct mag_sensor mag_data; - -//! Contains the data from the accelerometer -struct accel_sensor accel_data; - -//! Contains the data from the gyro -struct gyro_sensor gyro_data; - -//! Conains the current estimate of the attitude -struct attitude_solution attitude_data; - -//! Contains data from the altitude sensor -struct altitude_sensor altitude_data; - -//! Contains data from the GPS (via the SPI link) -struct gps_sensor gps_data; - -//! Offset correction of barometric alt, to match gps data -//static float baro_offset = 0; - -//static float mag_len = 0; - -typedef enum { INS_IDLE, INS_DATA_READY, INS_PROCESSING } states; -volatile int32_t ekf_too_slow; -volatile int32_t total_conversion_blocks; - -/** - * @} - */ - -/* INS functions */ -void blink(int led, int times) -{ - for(int i=0; i - -#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]; - -uint32_t pios_com_aux_id; -uint32_t pios_com_gps_id; - -/** - * PIOS_Board_Init() - * initializes all the core subsystems on this specific hardware - * called from System/openpilot.c - */ -void PIOS_Board_Init(void) { - /* Brings up System using CMSIS functions, enables the LEDs. */ - PIOS_SYS_Init(); - -#if defined(PIOS_INCLUDE_LED) - PIOS_LED_Init(&pios_led_cfg); -#endif /* PIOS_INCLUDE_LED */ - - /* Delay system */ - PIOS_DELAY_Init(); - - /* IAP System Setup */ - PIOS_IAP_Init(); - -#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, - pios_com_gps_rx_buffer, sizeof(pios_com_gps_rx_buffer), - NULL, 0)) { - PIOS_DEBUG_Assert(0); - } -#endif /* PIOS_INCLUDE_GPS */ -#endif /* PIOS_INCLUDE_COM */ - -#if defined (PIOS_INCLUDE_I2C) - if (PIOS_I2C_Init(&pios_i2c_pres_mag_adapter_id, &pios_i2c_pres_mag_adapter_cfg)) { - PIOS_DEBUG_Assert(0); - } -#if defined (PIOS_INCLUDE_BMP085) - PIOS_BMP085_Init(); -#endif /* PIOS_INCLUDE_BMP085 */ -#if defined (PIOS_INCLUDE_HMC5883) - PIOS_HMC5883_Init(); -#endif /* PIOS_INCLUDE_HMC5883 */ - -#if defined(PIOS_INCLUDE_IMU3000) - if (PIOS_I2C_Init(&pios_i2c_gyro_adapter_id, &pios_i2c_gyro_adapter_cfg)) { - PIOS_DEBUG_Assert(0); - } - PIOS_IMU3000_Init(); -#endif /* PIOS_INCLUDE_IMU3000 */ -#endif /* PIOS_INCLUDE_I2C */ - -#if defined(PIOS_INCLUDE_SPI) - /* Set up the SPI interface to the accelerometer*/ - if (PIOS_SPI_Init(&pios_spi_accel_id, &pios_spi_accel_cfg)) { - PIOS_DEBUG_Assert(0); - } - - PIOS_BMA180_Attach(pios_spi_accel_id); - -// #include "ahrs_spi_comm.h" -// InsInitComms(); -// -// /* 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); -// } -// -// InsConnect(pios_spi_op_id); -#endif /* PIOS_INCLUDE_SPI */ -} - -/** - * @} - * @} - */ - diff --git a/flight/Libraries/CoordinateConversions.c b/flight/Libraries/CoordinateConversions.c index be8f03a15..732dcb92d 100644 --- a/flight/Libraries/CoordinateConversions.c +++ b/flight/Libraries/CoordinateConversions.c @@ -31,16 +31,17 @@ #include #include "CoordinateConversions.h" -#define RAD2DEG (180.0/M_PI) -#define DEG2RAD (M_PI/180.0) +#define F_PI 3.14159265358979323846f +#define RAD2DEG (180.0f/ F_PI) +#define DEG2RAD (F_PI /180.0f) // ****** convert Lat,Lon,Alt to ECEF ************ -void LLA2ECEF(double LLA[3], double ECEF[3]) +void LLA2ECEF(float LLA[3], float ECEF[3]) { - const double a = 6378137.0; // Equatorial Radius - const double e = 8.1819190842622e-2; // Eccentricity - double sinLat, sinLon, cosLat, cosLon; - double N; + const float a = 6378137.0; // Equatorial Radius + const float e = 8.1819190842622e-2; // Eccentricity + float sinLat, sinLon, cosLat, cosLon; + float N; sinLat = sin(DEG2RAD * LLA[0]); sinLon = sin(DEG2RAD * LLA[1]); @@ -55,7 +56,7 @@ void LLA2ECEF(double LLA[3], double ECEF[3]) } // ****** convert ECEF to Lat,Lon,Alt (ITERATIVE!) ********* -uint16_t ECEF2LLA(double ECEF[3], double LLA[3]) +uint16_t ECEF2LLA(float ECEF[3], float LLA[3]) { /** * LLA parameter is used to prime the iteration. @@ -66,10 +67,10 @@ uint16_t ECEF2LLA(double ECEF[3], double LLA[3]) * Suggestion: [0,0,0] **/ - const double a = 6378137.0; // Equatorial Radius - const double e = 8.1819190842622e-2; // Eccentricity - double x = ECEF[0], y = ECEF[1], z = ECEF[2]; - double Lat, N, NplusH, delta, esLat; + const float a = 6378137.0; // Equatorial Radius + const float e = 8.1819190842622e-2; // Eccentricity + float x = ECEF[0], y = ECEF[1], z = ECEF[2]; + float Lat, N, NplusH, delta, esLat; uint16_t iter; #define MAX_ITER 10 // should not take more than 5 for valid coordinates #define ACCURACY 1.0e-11 // used to be e-14, but we don't need sub micrometer exact calculations @@ -99,7 +100,7 @@ uint16_t ECEF2LLA(double ECEF[3], double LLA[3]) } // ****** find ECEF to NED rotation matrix ******** -void RneFromLLA(double LLA[3], float Rne[3][3]) +void RneFromLLA(float LLA[3], float Rne[3][3]) { float sinLat, sinLon, cosLat, cosLon; @@ -128,10 +129,10 @@ void Quaternion2RPY(const float q[4], float rpy[3]) float q2s = q[2] * q[2]; float q3s = q[3] * q[3]; - R13 = 2 * (q[1] * q[3] - q[0] * q[2]); + R13 = 2.0f * (q[1] * q[3] - q[0] * q[2]); R11 = q0s + q1s - q2s - q3s; - R12 = 2 * (q[1] * q[2] + q[0] * q[3]); - R23 = 2 * (q[2] * q[3] + q[0] * q[1]); + R12 = 2.0f * (q[1] * q[2] + q[0] * q[3]); + R23 = 2.0f * (q[2] * q[3] + q[0] * q[1]); R33 = q0s - q1s - q2s + q3s; rpy[1] = RAD2DEG * asinf(-R13); // pitch always between -pi/2 to pi/2 @@ -188,9 +189,9 @@ void Quaternion2R(float q[4], float Rbe[3][3]) } // ****** Express LLA in a local NED Base Frame ******** -void LLA2Base(double LLA[3], double BaseECEF[3], float Rne[3][3], float NED[3]) +void LLA2Base(float LLA[3], float BaseECEF[3], float Rne[3][3], float NED[3]) { - double ECEF[3]; + float ECEF[3]; float diff[3]; LLA2ECEF(LLA, ECEF); @@ -205,7 +206,7 @@ void LLA2Base(double LLA[3], double BaseECEF[3], float Rne[3][3], float NED[3]) } // ****** Express ECEF in a local NED Base Frame ******** -void ECEF2Base(double ECEF[3], double BaseECEF[3], float Rne[3][3], float NED[3]) +void ECEF2Base(float ECEF[3], float BaseECEF[3], float Rne[3][3], float NED[3]) { float diff[3]; @@ -239,7 +240,7 @@ void R2Quaternion(float R[3][3], float q[4]) index = i; } } - mag = 2*sqrt(mag); + mag = 2*sqrtf(mag); if (index == 0) { q[0] = mag/4; @@ -373,7 +374,7 @@ void CrossProduct(const float v1[3], const float v2[3], float result[3]) // ****** Vector Magnitude ******** float VectorMagnitude(const float v[3]) { - return(sqrt(v[0]*v[0] + v[1]*v[1] + v[2]*v[2])); + return(sqrtf(v[0]*v[0] + v[1]*v[1] + v[2]*v[2])); } /** diff --git a/flight/Libraries/ahrs_comm_objects.c b/flight/Libraries/ahrs_comm_objects.c index 0f98e6a6c..3bc3bff3c 100644 --- a/flight/Libraries/ahrs_comm_objects.c +++ b/flight/Libraries/ahrs_comm_objects.c @@ -30,15 +30,16 @@ static AttitudeRawData AttitudeRaw; static AttitudeActualData AttitudeActual; -static AHRSCalibrationData AHRSCalibration; -static AhrsStatusData AhrsStatus; static BaroAltitudeData BaroAltitude; static GPSPositionData GPSPosition; +static HomeLocationData HomeLocation; +static InsStatusData InsStatus; +static InsSettingsData InsSettings; +static FirmwareIAPObjData FirmwareIAPObj; static PositionActualData PositionActual; static VelocityActualData VelocityActual; -static HomeLocationData HomeLocation; -static AHRSSettingsData AHRSSettings; -static FirmwareIAPObjData FirmwareIAPObj; +static GPSSatellitesData GPSSatellites; +static GPSTimeData GPSTime; AhrsSharedObject objectHandles[MAX_AHRS_OBJECTS]; @@ -54,17 +55,18 @@ AhrsSharedObject objectHandles[MAX_AHRS_OBJECTS]; CREATEHANDLE(0, AttitudeRaw); CREATEHANDLE(1, AttitudeActual); -CREATEHANDLE(2, AHRSCalibration); -CREATEHANDLE(3, AhrsStatus); +CREATEHANDLE(2, InsSettings); +CREATEHANDLE(3, InsStatus); CREATEHANDLE(4, BaroAltitude); CREATEHANDLE(5, GPSPosition); CREATEHANDLE(6, PositionActual); CREATEHANDLE(7, VelocityActual); CREATEHANDLE(8, HomeLocation); -CREATEHANDLE(9, AHRSSettings); -CREATEHANDLE(10, FirmwareIAPObj); +CREATEHANDLE(9, FirmwareIAPObj); +CREATEHANDLE(10, GPSSatellites); +CREATEHANDLE(11, GPSTime); -#if 11 != MAX_AHRS_OBJECTS //sanity check +#if 12 != MAX_AHRS_OBJECTS //sanity check #error We did not create the correct number of xxxHandle() functions #endif @@ -97,15 +99,17 @@ void AhrsInitHandles(void) //the last has the lowest priority ADDHANDLE(idx++, AttitudeRaw); ADDHANDLE(idx++, AttitudeActual); - ADDHANDLE(idx++, AHRSCalibration); - ADDHANDLE(idx++, AhrsStatus); + ADDHANDLE(idx++, InsSettings); + ADDHANDLE(idx++, InsStatus); ADDHANDLE(idx++, BaroAltitude); ADDHANDLE(idx++, GPSPosition); ADDHANDLE(idx++, PositionActual); ADDHANDLE(idx++, VelocityActual); ADDHANDLE(idx++, HomeLocation); - ADDHANDLE(idx++, AHRSSettings); ADDHANDLE(idx++, FirmwareIAPObj); + ADDHANDLE(idx++, GPSSatellites); + ADDHANDLE(idx++, GPSTime); + if (idx != MAX_AHRS_OBJECTS) { PIOS_DEBUG_Assert(0); } @@ -113,11 +117,8 @@ void AhrsInitHandles(void) //When the AHRS writes to these the data does a round trip //AHRS->OP->AHRS due to these events #ifndef IN_AHRS - AHRSSettingsConnectCallback(ObjectUpdatedCb); - BaroAltitudeConnectCallback(ObjectUpdatedCb); - GPSPositionConnectCallback(ObjectUpdatedCb); + InsSettingsConnectCallback(ObjectUpdatedCb); HomeLocationConnectCallback(ObjectUpdatedCb); - AHRSCalibrationConnectCallback(ObjectUpdatedCb); FirmwareIAPObjConnectCallback(ObjectUpdatedCb); #endif } diff --git a/flight/Libraries/ahrs_spi_comm.c b/flight/Libraries/ahrs_spi_comm.c index 9ee2ea206..9c6f65d70 100644 --- a/flight/Libraries/ahrs_spi_comm.c +++ b/flight/Libraries/ahrs_spi_comm.c @@ -33,7 +33,7 @@ #include "pios_spi.h" #include "pios_irq.h" #include "ahrs_spi_program_slave.h" -#include "STM32103CB_AHRS.h" +//#include "STM32103CB_AHRS.h" #endif /*transmit and receive packet magic numbers. @@ -53,7 +53,7 @@ typedef enum { COMMS_NULL, COMMS_OBJECT } COMMSCOMMAND; //The maximum number of objects that can be updated in one cycle. //Currently the link is capable of sending 3 packets per cycle but 2 is enough -#define MAX_UPDATE_OBJECTS 1 +#define MAX_UPDATE_OBJECTS 2 //Number of transmissions + 1 before we expect to see the data acknowledge //This is controlled by the SPI hardware. @@ -298,13 +298,11 @@ int32_t AhrsConnectCallBack(AhrsObjHandle obj, AhrsEventCallback cb) return (0); } -AhrsCommStatus AhrsGetStatus() +void AhrsGetStatus(AhrsCommStatus * status) { - AhrsCommStatus status; - status.remote = rxPacket.status; - status.local = txPacket.status; - status.linkOk = linkOk; - return (status); + status->remote = rxPacket.status; + status->local = txPacket.status; + status->linkOk = linkOk; } @@ -439,7 +437,9 @@ void AhrsSendObjects(void) void SendPacket(void) { +#ifndef IN_AHRS PIOS_SPI_RC_PinSet(opahrs_spi_id, 0); +#endif //no point checking if this failed. There isn't much we could do about it if it did fail PIOS_SPI_TransferBlock(opahrs_spi_id, (uint8_t *) & txPacket, (uint8_t *) & rxPacket, sizeof(CommsDataPacket), &CommsCallback); } diff --git a/flight/Libraries/fifo_buffer.c b/flight/Libraries/fifo_buffer.c index 7c5262c7d..7b68fcf09 100644 --- a/flight/Libraries/fifo_buffer.c +++ b/flight/Libraries/fifo_buffer.c @@ -1,266 +1,266 @@ -/** - ****************************************************************************** - * - * @file fifo_buffer.c - * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010. - * @brief GPIO input functions - * @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 - */ - -#include - -#include "fifo_buffer.h" - -// ***************************************************************************** -// circular buffer functions - -uint16_t fifoBuf_getSize(t_fifo_buffer *buf) -{ // return the usable size of the buffer - - uint16_t buf_size = buf->buf_size; - - if (buf_size > 0) - return (buf_size - 1); - else - return 0; -} - -uint16_t fifoBuf_getUsed(t_fifo_buffer *buf) -{ // return the number of bytes available in the rx buffer - - uint16_t rd = buf->rd; - uint16_t wr = buf->wr; - uint16_t buf_size = buf->buf_size; - - uint16_t num_bytes = wr - rd; - if (wr < rd) - num_bytes = (buf_size - rd) + wr; - - return num_bytes; -} - -uint16_t fifoBuf_getFree(t_fifo_buffer *buf) -{ // return the free space size in the buffer - - uint16_t buf_size = buf->buf_size; - - uint16_t num_bytes = fifoBuf_getUsed(buf); - - return ((buf_size - num_bytes) - 1); -} - -void fifoBuf_clearData(t_fifo_buffer *buf) -{ // remove all data from the buffer - buf->rd = buf->wr; -} - -void fifoBuf_removeData(t_fifo_buffer *buf, uint16_t len) -{ // remove a number of bytes from the buffer - - uint16_t rd = buf->rd; - uint16_t buf_size = buf->buf_size; - - // get number of bytes available - uint16_t num_bytes = fifoBuf_getUsed(buf); - - if (num_bytes > len) - num_bytes = len; - - if (num_bytes < 1) - return; // nothing to remove - - rd += num_bytes; - if (rd >= buf_size) - rd -= buf_size; - - buf->rd = rd; -} - -int16_t fifoBuf_getBytePeek(t_fifo_buffer *buf) -{ // get a data byte from the buffer without removing it - - uint16_t rd = buf->rd; - - // get number of bytes available - uint16_t num_bytes = fifoBuf_getUsed(buf); - - if (num_bytes < 1) - return -1; // no byte retuened - - return buf->buf_ptr[rd]; // return the byte -} - -int16_t fifoBuf_getByte(t_fifo_buffer *buf) -{ // get a data byte from the buffer - - uint16_t rd = buf->rd; - uint16_t buf_size = buf->buf_size; - uint8_t *buff = buf->buf_ptr; - - // get number of bytes available - uint16_t num_bytes = fifoBuf_getUsed(buf); - - if (num_bytes < 1) - return -1; // no byte returned - - uint8_t b = buff[rd]; - if (++rd >= buf_size) - rd = 0; - - buf->rd = rd; - - return b; // return the byte -} - -uint16_t fifoBuf_getDataPeek(t_fifo_buffer *buf, void *data, uint16_t len) -{ // get data from the buffer without removing it - - uint16_t rd = buf->rd; - uint16_t buf_size = buf->buf_size; - uint8_t *buff = buf->buf_ptr; - - // get number of bytes available - uint16_t num_bytes = fifoBuf_getUsed(buf); - - if (num_bytes > len) - num_bytes = len; - - if (num_bytes < 1) - return 0; // return number of bytes copied - - uint8_t *p = (uint8_t *)data; - uint16_t i = 0; - - while (num_bytes > 0) - { - uint16_t j = buf_size - rd; - if (j > num_bytes) - j = num_bytes; - memcpy(p + i, buff + rd, j); - i += j; - num_bytes -= j; - rd += j; - if (rd >= buf_size) - rd = 0; - } - - return i; // return number of bytes copied -} - -uint16_t fifoBuf_getData(t_fifo_buffer *buf, void *data, uint16_t len) -{ // get data from our rx buffer - - uint16_t rd = buf->rd; - uint16_t buf_size = buf->buf_size; - uint8_t *buff = buf->buf_ptr; - - // get number of bytes available - uint16_t num_bytes = fifoBuf_getUsed(buf); - - if (num_bytes > len) - num_bytes = len; - - if (num_bytes < 1) - return 0; // return number of bytes copied - - uint8_t *p = (uint8_t *)data; - uint16_t i = 0; - - while (num_bytes > 0) - { - uint16_t j = buf_size - rd; - if (j > num_bytes) - j = num_bytes; - memcpy(p + i, buff + rd, j); - i += j; - num_bytes -= j; - rd += j; - if (rd >= buf_size) - rd = 0; - } - - buf->rd = rd; - - return i; // return number of bytes copied -} - -uint16_t fifoBuf_putByte(t_fifo_buffer *buf, const uint8_t b) -{ // add a data byte to the buffer - - uint16_t wr = buf->wr; - uint16_t buf_size = buf->buf_size; - uint8_t *buff = buf->buf_ptr; - - uint16_t num_bytes = fifoBuf_getFree(buf); - if (num_bytes < 1) - return 0; - - buff[wr] = b; - if (++wr >= buf_size) - wr = 0; - - buf->wr = wr; - - return 1; // return number of bytes copied -} - -uint16_t fifoBuf_putData(t_fifo_buffer *buf, const void *data, uint16_t len) -{ // add data to the buffer - - uint16_t wr = buf->wr; - uint16_t buf_size = buf->buf_size; - uint8_t *buff = buf->buf_ptr; - - uint16_t num_bytes = fifoBuf_getFree(buf); - if (num_bytes > len) - num_bytes = len; - - if (num_bytes < 1) - return 0; // return number of bytes copied - - uint8_t *p = (uint8_t *)data; - uint16_t i = 0; - - while (num_bytes > 0) - { - uint16_t j = buf_size - wr; - if (j > num_bytes) - j = num_bytes; - memcpy(buff + wr, p + i, j); - i += j; - num_bytes -= j; - wr += j; - if (wr >= buf_size) - wr = 0; - } - - buf->wr = wr; - - return i; // return number of bytes copied -} - -void fifoBuf_init(t_fifo_buffer *buf, const void *buffer, const uint16_t buffer_size) -{ - buf->buf_ptr = (uint8_t *)buffer; - buf->rd = 0; - buf->wr = 0; - buf->buf_size = buffer_size; -} - -// ***************************************************************************** +/** + ****************************************************************************** + * + * @file fifo_buffer.c + * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010. + * @brief GPIO input functions + * @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 + */ + +#include + +#include "fifo_buffer.h" + +// ***************************************************************************** +// circular buffer functions + +uint16_t fifoBuf_getSize(t_fifo_buffer *buf) +{ // return the usable size of the buffer + + uint16_t buf_size = buf->buf_size; + + if (buf_size > 0) + return (buf_size - 1); + else + return 0; +} + +uint16_t fifoBuf_getUsed(t_fifo_buffer *buf) +{ // return the number of bytes available in the rx buffer + + uint16_t rd = buf->rd; + uint16_t wr = buf->wr; + uint16_t buf_size = buf->buf_size; + + uint16_t num_bytes = wr - rd; + if (wr < rd) + num_bytes = (buf_size - rd) + wr; + + return num_bytes; +} + +uint16_t fifoBuf_getFree(t_fifo_buffer *buf) +{ // return the free space size in the buffer + + uint16_t buf_size = buf->buf_size; + + uint16_t num_bytes = fifoBuf_getUsed(buf); + + return ((buf_size - num_bytes) - 1); +} + +void fifoBuf_clearData(t_fifo_buffer *buf) +{ // remove all data from the buffer + buf->rd = buf->wr; +} + +void fifoBuf_removeData(t_fifo_buffer *buf, uint16_t len) +{ // remove a number of bytes from the buffer + + uint16_t rd = buf->rd; + uint16_t buf_size = buf->buf_size; + + // get number of bytes available + uint16_t num_bytes = fifoBuf_getUsed(buf); + + if (num_bytes > len) + num_bytes = len; + + if (num_bytes < 1) + return; // nothing to remove + + rd += num_bytes; + if (rd >= buf_size) + rd -= buf_size; + + buf->rd = rd; +} + +int16_t fifoBuf_getBytePeek(t_fifo_buffer *buf) +{ // get a data byte from the buffer without removing it + + uint16_t rd = buf->rd; + + // get number of bytes available + uint16_t num_bytes = fifoBuf_getUsed(buf); + + if (num_bytes < 1) + return -1; // no byte retuened + + return buf->buf_ptr[rd]; // return the byte +} + +int16_t fifoBuf_getByte(t_fifo_buffer *buf) +{ // get a data byte from the buffer + + uint16_t rd = buf->rd; + uint16_t buf_size = buf->buf_size; + uint8_t *buff = buf->buf_ptr; + + // get number of bytes available + uint16_t num_bytes = fifoBuf_getUsed(buf); + + if (num_bytes < 1) + return -1; // no byte returned + + uint8_t b = buff[rd]; + if (++rd >= buf_size) + rd = 0; + + buf->rd = rd; + + return b; // return the byte +} + +uint16_t fifoBuf_getDataPeek(t_fifo_buffer *buf, void *data, uint16_t len) +{ // get data from the buffer without removing it + + uint16_t rd = buf->rd; + uint16_t buf_size = buf->buf_size; + uint8_t *buff = buf->buf_ptr; + + // get number of bytes available + uint16_t num_bytes = fifoBuf_getUsed(buf); + + if (num_bytes > len) + num_bytes = len; + + if (num_bytes < 1) + return 0; // return number of bytes copied + + uint8_t *p = (uint8_t *)data; + uint16_t i = 0; + + while (num_bytes > 0) + { + uint16_t j = buf_size - rd; + if (j > num_bytes) + j = num_bytes; + memcpy(p + i, buff + rd, j); + i += j; + num_bytes -= j; + rd += j; + if (rd >= buf_size) + rd = 0; + } + + return i; // return number of bytes copied +} + +uint16_t fifoBuf_getData(t_fifo_buffer *buf, void *data, uint16_t len) +{ // get data from our rx buffer + + uint16_t rd = buf->rd; + uint16_t buf_size = buf->buf_size; + uint8_t *buff = buf->buf_ptr; + + // get number of bytes available + uint16_t num_bytes = fifoBuf_getUsed(buf); + + if (num_bytes > len) + num_bytes = len; + + if (num_bytes < 1) + return 0; // return number of bytes copied + + uint8_t *p = (uint8_t *)data; + uint16_t i = 0; + + while (num_bytes > 0) + { + uint16_t j = buf_size - rd; + if (j > num_bytes) + j = num_bytes; + memcpy(p + i, buff + rd, j); + i += j; + num_bytes -= j; + rd += j; + if (rd >= buf_size) + rd = 0; + } + + buf->rd = rd; + + return i; // return number of bytes copied +} + +uint16_t fifoBuf_putByte(t_fifo_buffer *buf, const uint8_t b) +{ // add a data byte to the buffer + + uint16_t wr = buf->wr; + uint16_t buf_size = buf->buf_size; + uint8_t *buff = buf->buf_ptr; + + uint16_t num_bytes = fifoBuf_getFree(buf); + if (num_bytes < 1) + return 0; + + buff[wr] = b; + if (++wr >= buf_size) + wr = 0; + + buf->wr = wr; + + return 1; // return number of bytes copied +} + +uint16_t fifoBuf_putData(t_fifo_buffer *buf, const void *data, uint16_t len) +{ // add data to the buffer + + uint16_t wr = buf->wr; + uint16_t buf_size = buf->buf_size; + uint8_t *buff = buf->buf_ptr; + + uint16_t num_bytes = fifoBuf_getFree(buf); + if (num_bytes > len) + num_bytes = len; + + if (num_bytes < 1) + return 0; // return number of bytes copied + + uint8_t *p = (uint8_t *)data; + uint16_t i = 0; + + while (num_bytes > 0) + { + uint16_t j = buf_size - wr; + if (j > num_bytes) + j = num_bytes; + memcpy(buff + wr, p + i, j); + i += j; + num_bytes -= j; + wr += j; + if (wr >= buf_size) + wr = 0; + } + + buf->wr = wr; + + return i; // return number of bytes copied +} + +void fifoBuf_init(t_fifo_buffer *buf, const void *buffer, const uint16_t buffer_size) +{ + buf->buf_ptr = (uint8_t *)buffer; + buf->rd = 0; + buf->wr = 0; + buf->buf_size = buffer_size; +} + +// ***************************************************************************** diff --git a/flight/Libraries/inc/CoordinateConversions.h b/flight/Libraries/inc/CoordinateConversions.h index 7f9013b28..020628d72 100644 --- a/flight/Libraries/inc/CoordinateConversions.h +++ b/flight/Libraries/inc/CoordinateConversions.h @@ -31,12 +31,12 @@ #define COORDINATECONVERSIONS_H_ // ****** convert Lat,Lon,Alt to ECEF ************ -void LLA2ECEF(double LLA[3], double ECEF[3]); +void LLA2ECEF(float LLA[3], float ECEF[3]); // ****** convert ECEF to Lat,Lon,Alt (ITERATIVE!) ********* -uint16_t ECEF2LLA(double ECEF[3], double LLA[3]); +uint16_t ECEF2LLA(float ECEF[3], float LLA[3]); -void RneFromLLA(double LLA[3], float Rne[3][3]); +void RneFromLLA(float LLA[3], float Rne[3][3]); // ****** find rotation matrix from rotation vector void Rv2Rot(float Rv[3], float R[3][3]); @@ -51,10 +51,10 @@ void RPY2Quaternion(const float rpy[3], float q[4]); void Quaternion2R(float q[4], float Rbe[3][3]); // ****** Express LLA in a local NED Base Frame ******** -void LLA2Base(double LLA[3], double BaseECEF[3], float Rne[3][3], float NED[3]); +void LLA2Base(float LLA[3], float BaseECEF[3], float Rne[3][3], float NED[3]); // ****** Express ECEF in a local NED Base Frame ******** -void ECEF2Base(double ECEF[3], double BaseECEF[3], float Rne[3][3], float NED[3]); +void ECEF2Base(float ECEF[3], float BaseECEF[3], float Rne[3][3], float NED[3]); // ****** convert Rotation Matrix to Quaternion ******** // ****** if R converts from e to b, q is rotation from e to b **** diff --git a/flight/Libraries/inc/ahrs_comm_objects.h b/flight/Libraries/inc/ahrs_comm_objects.h index 3b4ded2b7..f6c0cb380 100644 --- a/flight/Libraries/inc/ahrs_comm_objects.h +++ b/flight/Libraries/inc/ahrs_comm_objects.h @@ -29,36 +29,38 @@ #include "attitudeactual.h" #include "attituderaw.h" -#include "ahrsstatus.h" #include "baroaltitude.h" #include "gpsposition.h" +#include "homelocation.h" +#include "insstatus.h" +#include "inssettings.h" #include "positionactual.h" #include "velocityactual.h" -#include "homelocation.h" -#include "ahrscalibration.h" -#include "ahrssettings.h" #include "firmwareiapobj.h" - +#include "gpsposition.h" +#include "gpssatellites.h" +#include "gpstime.h" /** union that will fit any UAVObject. */ typedef union { AttitudeRawData AttitudeRaw; AttitudeActualData AttitudeActual; - AHRSCalibrationData AHRSCalibration; - AhrsStatusData AhrsStatus; + InsStatusData AhrsStatus; BaroAltitudeData BaroAltitude; GPSPositionData GPSPosition; PositionActualData PositionActual; VelocityActualData VelocityActual; HomeLocationData HomeLocation; - AHRSSettingsData AHRSSettings; + InsSettingsData InsSettings; FirmwareIAPObjData FirmwareIAPObj; + GPSSatellitesData GPSSatellites; + GPSTimeData GPSTime; } __attribute__ ((packed)) AhrsSharedData; /** The number of UAVObjects we will be dealing with. */ -#define MAX_AHRS_OBJECTS 11 +#define MAX_AHRS_OBJECTS 12 /** Our own version of a UAVObject. */ diff --git a/flight/Libraries/inc/ahrs_spi_comm.h b/flight/Libraries/inc/ahrs_spi_comm.h index 588f873ec..e86a1bb46 100644 --- a/flight/Libraries/inc/ahrs_spi_comm.h +++ b/flight/Libraries/inc/ahrs_spi_comm.h @@ -110,7 +110,7 @@ int32_t AhrsConnectCallBack(AhrsObjHandle obj, AhrsEventCallback cb); Returns: the status. Note: the remote status will only be valid if the link is up and running */ -AhrsCommStatus AhrsGetStatus(); +void AhrsGetStatus(AhrsCommStatus * status); #ifdef IN_AHRS //slave only /** Send the latest objects to the OP diff --git a/flight/Libraries/inc/fifo_buffer.h b/flight/Libraries/inc/fifo_buffer.h index 6e4955f7e..6ba85877e 100644 --- a/flight/Libraries/inc/fifo_buffer.h +++ b/flight/Libraries/inc/fifo_buffer.h @@ -1,65 +1,65 @@ -/** - ****************************************************************************** - * - * @file fifo_buffer.h - * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010. - * @brief GPIO functions header. - * @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 - */ - -#ifndef _FIFO_BUFFER_H_ -#define _FIFO_BUFFER_H_ - -#include - -// ********************* - -typedef struct -{ - uint8_t *buf_ptr; - volatile uint16_t rd; - volatile uint16_t wr; - uint16_t buf_size; -} t_fifo_buffer; - -// ********************* - -uint16_t fifoBuf_getSize(t_fifo_buffer *buf); - -uint16_t fifoBuf_getUsed(t_fifo_buffer *buf); -uint16_t fifoBuf_getFree(t_fifo_buffer *buf); - -void fifoBuf_clearData(t_fifo_buffer *buf); -void fifoBuf_removeData(t_fifo_buffer *buf, uint16_t len); - -int16_t fifoBuf_getBytePeek(t_fifo_buffer *buf); -int16_t fifoBuf_getByte(t_fifo_buffer *buf); - -uint16_t fifoBuf_getDataPeek(t_fifo_buffer *buf, void *data, uint16_t len); -uint16_t fifoBuf_getData(t_fifo_buffer *buf, void *data, uint16_t len); - -uint16_t fifoBuf_putByte(t_fifo_buffer *buf, const uint8_t b); - -uint16_t fifoBuf_putData(t_fifo_buffer *buf, const void *data, uint16_t len); - -void fifoBuf_init(t_fifo_buffer *buf, const void *buffer, const uint16_t buffer_size); - -// ********************* - -#endif +/** + ****************************************************************************** + * + * @file fifo_buffer.h + * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010. + * @brief GPIO functions header. + * @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 + */ + +#ifndef _FIFO_BUFFER_H_ +#define _FIFO_BUFFER_H_ + +#include "stdint.h" + +// ********************* + +typedef struct +{ + uint8_t *buf_ptr; + volatile uint16_t rd; + volatile uint16_t wr; + uint16_t buf_size; +} t_fifo_buffer; + +// ********************* + +uint16_t fifoBuf_getSize(t_fifo_buffer *buf); + +uint16_t fifoBuf_getUsed(t_fifo_buffer *buf); +uint16_t fifoBuf_getFree(t_fifo_buffer *buf); + +void fifoBuf_clearData(t_fifo_buffer *buf); +void fifoBuf_removeData(t_fifo_buffer *buf, uint16_t len); + +int16_t fifoBuf_getBytePeek(t_fifo_buffer *buf); +int16_t fifoBuf_getByte(t_fifo_buffer *buf); + +uint16_t fifoBuf_getDataPeek(t_fifo_buffer *buf, void *data, uint16_t len); +uint16_t fifoBuf_getData(t_fifo_buffer *buf, void *data, uint16_t len); + +uint16_t fifoBuf_putByte(t_fifo_buffer *buf, const uint8_t b); + +uint16_t fifoBuf_putData(t_fifo_buffer *buf, const void *data, uint16_t len); + +void fifoBuf_init(t_fifo_buffer *buf, const void *buffer, const uint16_t buffer_size); + +// ********************* + +#endif diff --git a/flight/Libraries/packet_handler.c b/flight/Libraries/packet_handler.c index 7e75a238b..698c16018 100644 --- a/flight/Libraries/packet_handler.c +++ b/flight/Libraries/packet_handler.c @@ -419,15 +419,14 @@ uint8_t PHReceivePacket(PHInstHandle h, PHPacketHandle p, bool rx_error) if(data->data_handler) data->data_handler(p->data, p->header.data_size); - // Release the packet. - PHReleaseTXPacket(h, p); - break; default: break; } + // Release the packet. + PHReleaseRXPacket(h, p); return 1; } diff --git a/flight/Modules/AHRSComms/ahrs_comms.c b/flight/Modules/AHRSComms/ahrs_comms.c index c3fb45fae..abda58ee0 100644 --- a/flight/Modules/AHRSComms/ahrs_comms.c +++ b/flight/Modules/AHRSComms/ahrs_comms.c @@ -52,11 +52,10 @@ #include "ahrs_comms.h" #include "ahrs_spi_comm.h" -#include "ahrsstatus.h" -#include "ahrscalibration.h" +#include "insstatus.h" // Private constants -#define STACK_SIZE configMINIMAL_STACK_SIZE-128 +#define STACK_SIZE configMINIMAL_STACK_SIZE #define TASK_PRIORITY (tskIDLE_PRIORITY+4) // Private types @@ -87,9 +86,10 @@ int32_t AHRSCommsStart(void) */ int32_t AHRSCommsInitialize(void) { - AhrsStatusInitialize(); - AHRSCalibrationInitialize(); + InsStatusInitialize(); + InsSettingsInitialize(); AttitudeRawInitialize(); + AttitudeActualInitialize(); VelocityActualInitialize(); PositionActualInitialize(); @@ -109,19 +109,17 @@ static void ahrscommsTask(void *parameters) // Main task loop while (1) { PIOS_WDG_UpdateFlag(PIOS_WDG_AHRS); + AhrsCommStatus stat; - AHRSSettingsData settings; - AHRSSettingsGet(&settings); - AhrsSendObjects(); - AhrsCommStatus stat = AhrsGetStatus(); + AhrsGetStatus(&stat); if (stat.linkOk) { AlarmsClear(SYSTEMALARMS_ALARM_AHRSCOMMS); } else { AlarmsSet(SYSTEMALARMS_ALARM_AHRSCOMMS, SYSTEMALARMS_ALARM_WARNING); } - AhrsStatusData sData; - AhrsStatusGet(&sData); + InsStatusData sData; + InsStatusGet(&sData); sData.LinkRunning = stat.linkOk; sData.AhrsKickstarts = stat.remote.kickStarts; @@ -132,9 +130,9 @@ static void ahrscommsTask(void *parameters) sData.OpRetries = stat.local.retries; sData.OpInvalidPackets = stat.local.invalidPacket; - AhrsStatusSet(&sData); + InsStatusSet(&sData); /* Wait for the next update interval */ - vTaskDelayUntil(&lastSysTime, settings.UpdatePeriod / portTICK_RATE_MS); + vTaskDelayUntil(&lastSysTime, 2 / portTICK_RATE_MS); } } diff --git a/flight/Modules/Actuator/actuator.c b/flight/Modules/Actuator/actuator.c index 9cc856487..1995355e3 100644 --- a/flight/Modules/Actuator/actuator.c +++ b/flight/Modules/Actuator/actuator.c @@ -216,7 +216,7 @@ static void actuatorTask(void* parameters) AlarmsClear(SYSTEMALARMS_ALARM_ACTUATOR); bool armed = flightStatus.Armed == FLIGHTSTATUS_ARMED_ARMED; - bool positiveThrottle = desired.Throttle >= 0.00; + bool positiveThrottle = desired.Throttle >= 0.00f; bool spinWhileArmed = MotorsSpinWhileArmed == ACTUATORSETTINGS_MOTORSSPINWHILEARMED_TRUE; float curve1 = MixerCurve(desired.Throttle,mixerSettings.ThrottleCurve1,MIXERSETTINGS_THROTTLECURVE1_NUMELEM); @@ -325,26 +325,29 @@ static void actuatorTask(void* parameters) else status[ct] = -1; } - - command.Channel[ct] = scaleChannel(status[ct], - ChannelMax[ct], - ChannelMin[ct], - ChannelNeutral[ct]); } -#if defined(DIAGNOSTICS) - MixerStatusSet(&mixerStatus); -#endif - + + for(int i = 0; i < MAX_MIX_ACTUATORS; i++) + command.Channel[i] = scaleChannel(status[i], + ChannelMax[i], + ChannelMin[i], + ChannelNeutral[i]); + // Store update time - command.UpdateTime = 1000*dT; - if(1000*dT > command.MaxUpdateTime) - command.MaxUpdateTime = 1000*dT; - + command.UpdateTime = 1000.0f*dT; + if(1000.0f*dT > command.MaxUpdateTime) + command.MaxUpdateTime = 1000.0f*dT; + // Update output object ActuatorCommandSet(&command); // Update in case read only (eg. during servo configuration) ActuatorCommandGet(&command); +#if defined(DIAGNOSTICS) + MixerStatusSet(&mixerStatus); +#endif + + // Update servo outputs bool success = true; @@ -367,22 +370,21 @@ static void actuatorTask(void* parameters) /** *Process mixing for one actuator */ - float ProcessMixer(const int index, const float curve1, const float curve2, MixerSettingsData* mixerSettings, ActuatorDesiredData* desired, const float period) { Mixer_t * mixers = (Mixer_t *)&mixerSettings->Mixer1Type; //pointer to array of mixers in UAVObjects Mixer_t * mixer = &mixers[index]; - float result = ((mixer->matrix[MIXERSETTINGS_MIXER1VECTOR_THROTTLECURVE1] / 128.0f) * curve1) + - ((mixer->matrix[MIXERSETTINGS_MIXER1VECTOR_THROTTLECURVE2] / 128.0f) * curve2) + - ((mixer->matrix[MIXERSETTINGS_MIXER1VECTOR_ROLL] / 128.0f) * desired->Roll) + - ((mixer->matrix[MIXERSETTINGS_MIXER1VECTOR_PITCH] / 128.0f) * desired->Pitch) + - ((mixer->matrix[MIXERSETTINGS_MIXER1VECTOR_YAW] / 128.0f) * desired->Yaw); + float result = (((float)mixer->matrix[MIXERSETTINGS_MIXER1VECTOR_THROTTLECURVE1] / 128.0f) * curve1) + + (((float)mixer->matrix[MIXERSETTINGS_MIXER1VECTOR_THROTTLECURVE2] / 128.0f) * curve2) + + (((float)mixer->matrix[MIXERSETTINGS_MIXER1VECTOR_ROLL] / 128.0f) * desired->Roll) + + (((float)mixer->matrix[MIXERSETTINGS_MIXER1VECTOR_PITCH] / 128.0f) * desired->Pitch) + + (((float)mixer->matrix[MIXERSETTINGS_MIXER1VECTOR_YAW] / 128.0f) * desired->Yaw); if(mixer->type == MIXERSETTINGS_MIXER1TYPE_MOTOR) { - if(result < 0) //idle throttle + if(result < 0.0f) //idle throttle { - result = 0; + result = 0.0f; } //feed forward @@ -392,7 +394,7 @@ float ProcessMixer(const int index, const float curve1, const float curve2, result += accumulator; if(period !=0) { - if(accumulator > 0) + if(accumulator > 0.0f) { float filter = mixerSettings->AccelTime / period; if(filter <1) @@ -422,6 +424,7 @@ float ProcessMixer(const int index, const float curve1, const float curve2, } lastFilteredResult[index] = result; } + return(result); } @@ -432,7 +435,7 @@ float ProcessMixer(const int index, const float curve1, const float curve2, */ static float MixerCurve(const float throttle, const float* curve, uint8_t elements) { - float scale = throttle * (elements - 1); + float scale = throttle * (float) (elements - 1); int idx1 = scale; scale -= (float)idx1; //remainder if(curve[0] < -1) @@ -453,7 +456,7 @@ static float MixerCurve(const float throttle, const float* curve, uint8_t elemen idx1 = elements -1; } } - return((curve[idx1] * (1 - scale)) + (curve[idx2] * scale)); + return curve[idx1] * (1.0f - scale) + curve[idx2] * scale; } @@ -464,7 +467,7 @@ static int16_t scaleChannel(float value, int16_t max, int16_t min, int16_t neutr { int16_t valueScaled; // Scale - if ( value >= 0.0) + if ( value >= 0.0f) { valueScaled = (int16_t)(value*((float)(max-neutral))) + neutral; } @@ -520,6 +523,8 @@ static void setFailsafe() { Channel[n] = 0; } + + } // Set alarm @@ -532,7 +537,7 @@ static void setFailsafe() } // Update output object's parts that we changed - ActuatorCommandChannelGet(Channel); + ActuatorCommandChannelSet(Channel); } diff --git a/flight/Modules/Altitude/altitude.c b/flight/Modules/Altitude/altitude.c index 87a4240b6..4898829b0 100644 --- a/flight/Modules/Altitude/altitude.c +++ b/flight/Modules/Altitude/altitude.c @@ -120,7 +120,7 @@ static void altitudeTask(void *parameters) { BaroAltitudeData data; portTickType lastSysTime; - + #if defined(PIOS_INCLUDE_HCSR04) SonarAltitudeData sonardata; int32_t value=0,timeout=5; @@ -129,7 +129,7 @@ static void altitudeTask(void *parameters) PIOS_HCSR04_Trigger(); #endif PIOS_BMP085_Init(); - + // Main task loop lastSysTime = xTaskGetTickCount(); while (1) @@ -145,7 +145,7 @@ static void altitudeTask(void *parameters) height_out = (height_out * (1 - coeff)) + (height_in * coeff); sonardata.Altitude = height_out; // m/us } - + // Update the AltitudeActual UAVObject SonarAltitudeSet(&sonardata); timeout=5; @@ -167,7 +167,7 @@ static void altitudeTask(void *parameters) #endif PIOS_BMP085_ReadADC(); alt_ds_temp += PIOS_BMP085_GetTemperature(); - + // Update the pressure data PIOS_BMP085_StartADC(PressureConv); #ifdef PIOS_BMP085_HAS_GPIOS @@ -177,7 +177,7 @@ static void altitudeTask(void *parameters) #endif PIOS_BMP085_ReadADC(); alt_ds_pres += PIOS_BMP085_GetPressure(); - + if (++alt_ds_count >= alt_ds_size) { alt_ds_count = 0; @@ -203,6 +203,6 @@ static void altitudeTask(void *parameters) } /** - * @} + * @} * @} */ diff --git a/flight/Modules/Attitude/attitude.c b/flight/Modules/Attitude/attitude.c index fdfa4681c..47604be34 100644 --- a/flight/Modules/Attitude/attitude.c +++ b/flight/Modules/Attitude/attitude.c @@ -50,19 +50,21 @@ #include "pios.h" #include "attitude.h" -#include "attituderaw.h" +#include "gyros.h" +#include "accels.h" #include "attitudeactual.h" #include "attitudesettings.h" #include "flightstatus.h" #include "manualcontrolcommand.h" #include "CoordinateConversions.h" -#include "pios_flash_w25x.h" - +#include + // Private constants #define STACK_SIZE_BYTES 540 #define TASK_PRIORITY (tskIDLE_PRIORITY+3) -#define UPDATE_RATE 2.0f +#define SENSOR_PERIOD 4 +#define UPDATE_RATE 25.0f #define GYRO_NEUTRAL 1665 #define PI_MOD(x) (fmod(x + M_PI, M_PI * 2) - M_PI) @@ -77,8 +79,9 @@ static void AttitudeTask(void *parameters); static float gyro_correct_int[3] = {0,0,0}; static xQueueHandle gyro_queue; -static int8_t updateSensors(AttitudeRawData *); -static void updateAttitude(AttitudeRawData *); +static int32_t updateSensors(AccelsData *, GyrosData *); +static int32_t updateSensorsCC3D(AccelsData * accelsData, GyrosData * gyrosData); +static void updateAttitude(AccelsData *, GyrosData *); static void settingsUpdatedCb(UAVObjEvent * objEv); static float accelKi = 0; @@ -124,8 +127,9 @@ int32_t AttitudeStart(void) int32_t AttitudeInitialize(void) { AttitudeActualInitialize(); - AttitudeRawInitialize(); AttitudeSettingsInitialize(); + AccelsInitialize(); + GyrosInitialize(); // Initialize quaternion AttitudeActualData attitude; @@ -151,14 +155,6 @@ int32_t AttitudeInitialize(void) trim_requested = false; - // 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); return 0; @@ -169,23 +165,42 @@ MODULE_INITCALL(AttitudeInitialize, AttitudeStart) /** * Module thread, should not return. */ + +int32_t accel_test; +int32_t gyro_test; static void AttitudeTask(void *parameters) { uint8_t init = 0; AlarmsClear(SYSTEMALARMS_ALARM_ATTITUDE); - PIOS_ADC_Config((PIOS_ADC_RATE / 1000.0f) * UPDATE_RATE); - - // Keep flash CS pin high while talking accel - PIOS_FLASH_DISABLE; - PIOS_ADXL345_Init(); - // 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); } + const struct pios_board_info * bdinfo = &pios_board_info_blob; + + bool cc3d = bdinfo->board_rev == 0x02; + + if(cc3d) { +#if defined(PIOS_INCLUDE_MPU6000) + gyro_test = PIOS_MPU6000_Test(); +#endif + } else { +#if defined(PIOS_INCLUDE_ADXL345) + accel_test = PIOS_ADXL345_Test(); +#endif + +#if defined(PIOS_INCLUDE_ADC) + // Create queue for passing gyro data, allow 2 back samples in case + gyro_queue = xQueueCreate(1, sizeof(float) * 4); + PIOS_Assert(gyro_queue != NULL); + PIOS_ADC_SetQueue(gyro_queue); + PIOS_ADC_Config((PIOS_ADC_RATE / 1000.0f) * UPDATE_RATE); +#endif + + } // Force settings update to make sure rotation loaded settingsUpdatedCb(AttitudeSettingsHandle()); @@ -216,27 +231,33 @@ static void AttitudeTask(void *parameters) } PIOS_WDG_UpdateFlag(PIOS_WDG_ATTITUDE); - - AttitudeRawData attitudeRaw; - AttitudeRawGet(&attitudeRaw); - if(updateSensors(&attitudeRaw) != 0) + + AccelsData accels; + GyrosData gyros; + int32_t retval; + if(cc3d) + retval = updateSensorsCC3D(&accels, &gyros); + else + retval = updateSensors(&accels, &gyros); + + if(retval != 0) AlarmsSet(SYSTEMALARMS_ALARM_ATTITUDE, SYSTEMALARMS_ALARM_ERROR); else { // Only update attitude when sensor data is good - updateAttitude(&attitudeRaw); - AttitudeRawSet(&attitudeRaw); + updateAttitude(&accels, &gyros); AlarmsClear(SYSTEMALARMS_ALARM_ATTITUDE); } - } } +float gyros_passed[3]; + /** * 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) +static int32_t updateSensors(AccelsData * accels, GyrosData * gyros) { struct pios_adxl345_data accel_data; float gyro[4]; @@ -252,9 +273,9 @@ static int8_t updateSensors(AttitudeRawData * attitudeRaw) return -1; // First sample is temperature - attitudeRaw->gyros[ATTITUDERAW_GYROS_X] = -(gyro[1] - GYRO_NEUTRAL) * gyroGain; - attitudeRaw->gyros[ATTITUDERAW_GYROS_Y] = (gyro[2] - GYRO_NEUTRAL) * gyroGain; - attitudeRaw->gyros[ATTITUDERAW_GYROS_Z] = -(gyro[3] - GYRO_NEUTRAL) * gyroGain; + gyros->x = -(gyro[1] - GYRO_NEUTRAL) * gyroGain; + gyros->y = (gyro[2] - GYRO_NEUTRAL) * gyroGain; + gyros->z = -(gyro[3] - GYRO_NEUTRAL) * gyroGain; int32_t x = 0; int32_t y = 0; @@ -268,26 +289,25 @@ static int8_t updateSensors(AttitudeRawData * attitudeRaw) y += -accel_data.y; z += -accel_data.z; } while ( (i < 32) && (samples_remaining > 0) ); - attitudeRaw->gyrotemp[0] = samples_remaining; - attitudeRaw->gyrotemp[1] = i; - + gyros->temperature = samples_remaining; + float accel[3] = {(float) x / i, (float) y / i, (float) z / i}; if(rotate) { // TODO: rotate sensors too so stabilization is well behaved float vec_out[3]; rot_mult(R, accel, vec_out); - attitudeRaw->accels[0] = vec_out[0]; - attitudeRaw->accels[1] = vec_out[1]; - attitudeRaw->accels[2] = vec_out[2]; - rot_mult(R, attitudeRaw->gyros, vec_out); - attitudeRaw->gyros[0] = vec_out[0]; - attitudeRaw->gyros[1] = vec_out[1]; - attitudeRaw->gyros[2] = vec_out[2]; + accels->x = vec_out[0]; + accels->y = vec_out[1]; + accels->z = vec_out[2]; + rot_mult(R, &gyros->x, vec_out); + gyros->x = vec_out[0]; + gyros->y = vec_out[1]; + gyros->z = vec_out[2]; } else { - attitudeRaw->accels[0] = accel[0]; - attitudeRaw->accels[1] = accel[1]; - attitudeRaw->accels[2] = accel[2]; + accels->x = accel[0]; + accels->y = accel[1]; + accels->z = accel[2]; } if (trim_requested) { @@ -301,33 +321,100 @@ static int8_t updateSensors(AttitudeRawData * attitudeRaw) if ((armed == FLIGHTSTATUS_ARMED_ARMED) && (throttle > 0)) { trim_samples++; // Store the digitally scaled version since that is what we use for bias - trim_accels[0] += attitudeRaw->accels[ATTITUDERAW_ACCELS_X]; - trim_accels[1] += attitudeRaw->accels[ATTITUDERAW_ACCELS_Y]; - trim_accels[2] += attitudeRaw->accels[ATTITUDERAW_ACCELS_Z]; + trim_accels[0] += accels->x; + trim_accels[1] += accels->y; + trim_accels[2] += accels->z; } } } // Scale accels and correct bias - attitudeRaw->accels[ATTITUDERAW_ACCELS_X] = (attitudeRaw->accels[ATTITUDERAW_ACCELS_X] - accelbias[0]) * ACCEL_SCALE; - attitudeRaw->accels[ATTITUDERAW_ACCELS_Y] = (attitudeRaw->accels[ATTITUDERAW_ACCELS_Y] - accelbias[1]) * ACCEL_SCALE; - attitudeRaw->accels[ATTITUDERAW_ACCELS_Z] = (attitudeRaw->accels[ATTITUDERAW_ACCELS_Z] - accelbias[2]) * ACCEL_SCALE; + accels->x = (accels->x - accelbias[0]) * ACCEL_SCALE; + accels->y = (accels->y - accelbias[1]) * ACCEL_SCALE; + accels->z = (accels->z - accelbias[2]) * ACCEL_SCALE; 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]; - attitudeRaw->gyros[ATTITUDERAW_GYROS_Z] += gyro_correct_int[2]; + gyros->x += gyro_correct_int[0]; + gyros->y += gyro_correct_int[1]; + 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; - + gyro_correct_int[2] += - gyros->z * yawBiasRate; + + GyrosSet(gyros); + AccelsSet(accels); + return 0; } -static void updateAttitude(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 + */ +struct pios_mpu6000_data mpu6000_data; +static int32_t updateSensorsCC3D(AccelsData * accelsData, GyrosData * gyrosData) +{ + float accels[3], gyros[3]; + +#if defined(PIOS_INCLUDE_MPU6000) + + xQueueHandle queue = PIOS_MPU6000_GetQueue(); + + if(xQueueReceive(queue, (void *) &mpu6000_data, SENSOR_PERIOD) == errQUEUE_EMPTY) + return -1; // Error, no data + + gyros[0] = -mpu6000_data.gyro_y * PIOS_MPU6000_GetScale(); + gyros[1] = -mpu6000_data.gyro_x * PIOS_MPU6000_GetScale(); + gyros[2] = -mpu6000_data.gyro_z * PIOS_MPU6000_GetScale(); + + accels[0] = -mpu6000_data.accel_y * PIOS_MPU6000_GetAccelScale(); + accels[1] = -mpu6000_data.accel_x * PIOS_MPU6000_GetAccelScale(); + accels[2] = -mpu6000_data.accel_z * PIOS_MPU6000_GetAccelScale(); + + gyrosData->temperature = 35.0f + ((float) mpu6000_data.temperature + 512.0f) / 340.0f; + accelsData->temperature = 35.0f + ((float) mpu6000_data.temperature + 512.0f) / 340.0f; +#endif + + if(rotate) { + // TODO: rotate sensors too so stabilization is well behaved + float vec_out[3]; + rot_mult(R, accels, vec_out); + accels[0] = vec_out[0]; + accels[1] = vec_out[1]; + accels[2] = vec_out[2]; + rot_mult(R, gyros, vec_out); + gyros[0] = vec_out[0]; + gyros[1] = vec_out[1]; + gyros[2] = vec_out[2]; + } + + accelsData->x = accels[0] - accelbias[0] * ACCEL_SCALE; // Applying arbitrary scale here to match CC v1 + accelsData->y = accels[1] - accelbias[1] * ACCEL_SCALE; + accelsData->z = accels[2] - accelbias[2] * ACCEL_SCALE; + AccelsSet(&accelsData); + + gyrosData->x = gyros[0]; + gyrosData->y = gyros[1]; + gyrosData->z = gyros[2]; + + if(bias_correct_gyro) { + // Applying integral component here so it can be seen on the gyros and correct bias + gyrosData->x += gyro_correct_int[0]; + gyrosData->y += gyro_correct_int[1]; + gyrosData->z += gyro_correct_int[2]; + } + + GyrosSet(gyrosData); + AccelsSet(accelsData); + + return 0; +} + +static void updateAttitude(AccelsData * accelsData, GyrosData * gyrosData) { float dT; portTickType thisSysTime = xTaskGetTickCount(); @@ -337,48 +424,46 @@ static void updateAttitude(AttitudeRawData * attitudeRaw) lastSysTime = thisSysTime; // Bad practice to assume structure order, but saves memory - float gyro[3]; - gyro[0] = attitudeRaw->gyros[0]; - gyro[1] = attitudeRaw->gyros[1]; - gyro[2] = attitudeRaw->gyros[2]; + float * gyros = &gyrosData->x; + float * accels = &accelsData->x; - { - float * accels = attitudeRaw->accels; - float grot[3]; - float accel_err[3]; - - // Rotate gravity to body frame and cross with accels - grot[0] = -(2 * (q[1] * q[3] - q[0] * q[2])); - grot[1] = -(2 * (q[2] * q[3] + q[0] * q[1])); - grot[2] = -(q[0] * q[0] - q[1]*q[1] - q[2]*q[2] + q[3]*q[3]); - CrossProduct((const float *) accels, (const float *) grot, accel_err); - - // Account for accel magnitude - float accel_mag = sqrt(accels[0]*accels[0] + accels[1]*accels[1] + accels[2]*accels[2]); - accel_err[0] /= accel_mag; - accel_err[1] /= accel_mag; - accel_err[2] /= accel_mag; - - // 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] * accelKi; - - // Correct rates based on error, integral component dealt with in updateSensors - gyro[0] += accel_err[0] * accelKp / dT; - gyro[1] += accel_err[1] * accelKp / dT; - gyro[2] += accel_err[2] * accelKp / dT; - } + float grot[3]; + float accel_err[3]; + + // Rotate gravity to body frame and cross with accels + grot[0] = -(2 * (q[1] * q[3] - q[0] * q[2])); + grot[1] = -(2 * (q[2] * q[3] + q[0] * q[1])); + grot[2] = -(q[0] * q[0] - q[1]*q[1] - q[2]*q[2] + q[3]*q[3]); + CrossProduct((const float *) accels, (const float *) grot, accel_err); + + // Account for accel magnitude + float accel_mag = sqrtf(accels[0]*accels[0] + accels[1]*accels[1] + accels[2]*accels[2]); + if(accel_mag < 1.0e-3f) + return; + + accel_err[0] /= accel_mag; + accel_err[1] /= accel_mag; + accel_err[2] /= accel_mag; + + // 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] * accelKi; + + // Correct rates based on error, integral component dealt with in updateSensors + gyros[0] += accel_err[0] * accelKp / dT; + gyros[1] += accel_err[1] * accelKp / dT; + gyros[2] += accel_err[2] * accelKp / dT; { // scoping variables to save memory // Work out time derivative from INSAlgo writeup // Also accounts for the fact that gyros are in deg/s float qdot[4]; - qdot[0] = (-q[1] * gyro[0] - q[2] * gyro[1] - q[3] * gyro[2]) * dT * M_PI / 180 / 2; - qdot[1] = (q[0] * gyro[0] - q[3] * gyro[1] + q[2] * gyro[2]) * dT * M_PI / 180 / 2; - qdot[2] = (q[3] * gyro[0] + q[0] * gyro[1] - q[1] * gyro[2]) * dT * M_PI / 180 / 2; - qdot[3] = (-q[2] * gyro[0] + q[1] * gyro[1] + q[0] * gyro[2]) * dT * M_PI / 180 / 2; + qdot[0] = (-q[1] * gyros[0] - q[2] * gyros[1] - q[3] * gyros[2]) * dT * M_PI / 180 / 2; + qdot[1] = (q[0] * gyros[0] - q[3] * gyros[1] + q[2] * gyros[2]) * dT * M_PI / 180 / 2; + qdot[2] = (q[3] * gyros[0] + q[0] * gyros[1] - q[1] * gyros[2]) * dT * M_PI / 180 / 2; + qdot[3] = (-q[2] * gyros[0] + q[1] * gyros[1] + q[0] * gyros[2]) * dT * M_PI / 180 / 2; // Take a time step q[0] = q[0] + qdot[0]; @@ -395,7 +480,7 @@ static void updateAttitude(AttitudeRawData * attitudeRaw) } // Renomalize - float qmag = sqrt(q[0]*q[0] + q[1]*q[1] + q[2]*q[2] + q[3]*q[3]); + float qmag = sqrtf(q[0]*q[0] + q[1]*q[1] + q[2]*q[2] + q[3]*q[3]); q[0] = q[0] / qmag; q[1] = q[1] / qmag; q[2] = q[2] / qmag; diff --git a/flight/Modules/FirmwareIAP/firmwareiap.c b/flight/Modules/FirmwareIAP/firmwareiap.c index aaf2622bd..0a88046b8 100644 --- a/flight/Modules/FirmwareIAP/firmwareiap.c +++ b/flight/Modules/FirmwareIAP/firmwareiap.c @@ -66,8 +66,6 @@ static portTickType lastResetSysTime; // Private functions static void FirmwareIAPCallback(UAVObjEvent* ev); -FirmwareIAPObjData data; - static uint32_t get_time(void); // Private types @@ -96,6 +94,9 @@ int32_t FirmwareIAPInitialize() const struct pios_board_info * bdinfo = &pios_board_info_blob; + FirmwareIAPObjData data; + FirmwareIAPObjGet(&data); + data.BoardType= bdinfo->board_type; PIOS_BL_HELPER_FLASH_Read_Description(data.Description,FIRMWAREIAPOBJ_DESCRIPTION_NUMELEM); PIOS_SYS_SerialNumberGetBinary(data.CPUSerial); @@ -125,6 +126,9 @@ static void FirmwareIAPCallback(UAVObjEvent* ev) if(iap_state == IAP_STATE_RESETTING) return; + + FirmwareIAPObjData data; + FirmwareIAPObjGet(&data); if ( ev->obj == FirmwareIAPObjHandle() ) { // Get the input object data @@ -238,7 +242,10 @@ static void resetTask(UAVObjEvent * ev) #if defined (PIOS_LED_ALARM) PIOS_LED_Toggle(PIOS_LED_ALARM); #endif /* PIOS_LED_ALARM */ - + + FirmwareIAPObjData data; + FirmwareIAPObjGet(&data); + if((portTickType) (xTaskGetTickCount() - lastResetSysTime) > RESET_DELAY / portTICK_RATE_MS) { lastResetSysTime = xTaskGetTickCount(); data.BoardType=0xFF; diff --git a/flight/Modules/GPS/GPS.c b/flight/Modules/GPS/GPS.c index 1f93d6dba..716e47aa3 100644 --- a/flight/Modules/GPS/GPS.c +++ b/flight/Modules/GPS/GPS.c @@ -144,7 +144,6 @@ int32_t GPSInitialize(void) #ifdef PIOS_GPS_SETS_HOMELOCATION HomeLocationInitialize(); #endif - HwSettingsInitialize(); updateSettings(); gps_rx_buffer = pvPortMalloc(NMEA_MAX_PACKET_LENGTH); diff --git a/flight/Modules/GPS/NMEA.c b/flight/Modules/GPS/NMEA.c index 4f78b27a4..59593b807 100644 --- a/flight/Modules/GPS/NMEA.c +++ b/flight/Modules/GPS/NMEA.c @@ -216,7 +216,7 @@ static float NMEA_real_to_float(char *nmea_real) } /* Convert to float */ - return (((float)whole) + fract * pow(10, -fract_units)); + return (((float)whole) + fract * powf(10.0f, -fract_units)); } /* @@ -239,37 +239,38 @@ static bool NMEA_latlon_to_fixed_point(int32_t * latlon, char *nmea_latlon, bool } /* scale up the mmmm[mm] field apropriately depending on # of digits */ + /* not using 1eN notation because that forces fixed point and lost precision */ switch (units) { case 0: /* no digits, value is zero so no scaling */ break; case 1: /* m */ - num_m *= 1e6; /* m000000 */ + num_m *= 1000000; /* m000000 */ break; case 2: /* mm */ - num_m *= 1e5; /* mm00000 */ + num_m *= 100000; /* mm00000 */ break; case 3: /* mmm */ - num_m *= 1e4; /* mmm0000 */ + num_m *= 10000; /* mmm0000 */ break; case 4: /* mmmm */ - num_m *= 1e3; /* mmmm000 */ + num_m *= 1000; /* mmmm000 */ break; case 5: /* mmmmm */ - num_m *= 1e2; /* mmmmm00 */ + num_m *= 100; /* mmmmm00 */ break; case 6: /* mmmmmm */ - num_m *= 1e1; /* mmmmmm0 */ + num_m *= 10; /* mmmmmm0 */ break; default: /* unhandled format */ - num_m = 0; + num_m = 0.0f; break; } - *latlon = (num_DDDMM / 100) * 1e7; /* scale the whole degrees */ - *latlon += (num_DDDMM % 100) * 1e7 / 60; /* add in the scaled decimal whole minutes */ - *latlon += num_m / 60; /* add in the scaled decimal fractional minutes */ + *latlon = (num_DDDMM / 100) * 10000000; /* scale the whole degrees */ + *latlon += (num_DDDMM % 100) * 10000000 / 60; /* add in the scaled decimal whole minutes */ + *latlon += num_m / 60; /* add in the scaled decimal fractional minutes */ if (negative) *latlon *= -1; diff --git a/flight/Modules/Guidance/guidance.c b/flight/Modules/Guidance/guidance.c index b90303928..519abeeb2 100644 --- a/flight/Modules/Guidance/guidance.c +++ b/flight/Modules/Guidance/guidance.c @@ -192,9 +192,9 @@ static void guidanceTask(void *parameters) NedAccelData accelData; NedAccelGet(&accelData); // Convert from m/s to cm/s - accelData.North = accel_ned[0] * 100; - accelData.East = accel_ned[1] * 100; - accelData.Down = accel_ned[2] * 100; + accelData.North = accel_ned[0]; + accelData.East = accel_ned[1]; + accelData.Down = accel_ned[2]; NedAccelSet(&accelData); diff --git a/flight/Modules/ManualControl/inc/manualcontrol.h b/flight/Modules/ManualControl/inc/manualcontrol.h index 1215ca27d..f71cdebde 100644 --- a/flight/Modules/ManualControl/inc/manualcontrol.h +++ b/flight/Modules/ManualControl/inc/manualcontrol.h @@ -39,6 +39,7 @@ typedef enum {FLIGHTMODE_UNDEFINED = 0, FLIGHTMODE_MANUAL = 1, FLIGHTMODE_STABIL (x == FLIGHTSTATUS_FLIGHTMODE_STABILIZED1) ? FLIGHTMODE_STABILIZED : \ (x == FLIGHTSTATUS_FLIGHTMODE_STABILIZED2) ? FLIGHTMODE_STABILIZED : \ (x == FLIGHTSTATUS_FLIGHTMODE_STABILIZED3) ? FLIGHTMODE_STABILIZED : \ + (x == FLIGHTSTATUS_FLIGHTMODE_ALTITUDEHOLD) ? FLIGHTMODE_GUIDANCE : \ (x == FLIGHTSTATUS_FLIGHTMODE_VELOCITYCONTROL) ? FLIGHTMODE_GUIDANCE : \ (x == FLIGHTSTATUS_FLIGHTMODE_POSITIONHOLD) ? FLIGHTMODE_GUIDANCE : FLIGHTMODE_UNDEFINED \ ) diff --git a/flight/Modules/ManualControl/manualcontrol.c b/flight/Modules/ManualControl/manualcontrol.c index cf0073db5..8ffe1a77f 100644 --- a/flight/Modules/ManualControl/manualcontrol.c +++ b/flight/Modules/ManualControl/manualcontrol.c @@ -44,20 +44,23 @@ #include "flightstatus.h" #include "accessorydesired.h" #include "receiveractivity.h" +#include "altitudeholddesired.h" +#include "positionactual.h" +#include "baroaltitude.h" // Private constants #if defined(PIOS_MANUAL_STACK_SIZE) #define STACK_SIZE_BYTES PIOS_MANUAL_STACK_SIZE #else -#define STACK_SIZE_BYTES 824 +#define STACK_SIZE_BYTES 1024 #endif #define TASK_PRIORITY (tskIDLE_PRIORITY+4) #define UPDATE_PERIOD_MS 20 -#define THROTTLE_FAILSAFE -0.1 -#define FLIGHT_MODE_LIMIT 1.0/3.0 +#define THROTTLE_FAILSAFE -0.1f +#define FLIGHT_MODE_LIMIT 1.0f/3.0f #define ARMED_TIME_MS 1000 -#define ARMED_THRESHOLD 0.50 +#define ARMED_THRESHOLD 0.50f //safe band to allow a bit of calibration error or trim offset (in microseconds) #define CONNECTION_OFFSET 150 @@ -79,6 +82,7 @@ static portTickType lastSysTime; // Private functions static void updateActuatorDesired(ManualControlCommandData * cmd); static void updateStabilizationDesired(ManualControlCommandData * cmd, ManualControlSettingsData * settings); +static void altitudeHoldDesired(ManualControlCommandData * cmd); static void processFlightMode(ManualControlSettingsData * settings, float flightMode); static void processArm(ManualControlCommandData * cmd, ManualControlSettingsData * settings); static void setArmedIfChanged(uint8_t val); @@ -383,7 +387,13 @@ static void manualControlTask(void *parameters) updateStabilizationDesired(&cmd, &settings); break; case FLIGHTMODE_GUIDANCE: - // TODO: Implement + switch(flightStatus.FlightMode) { + case FLIGHTSTATUS_FLIGHTMODE_ALTITUDEHOLD: + altitudeHoldDesired(&cmd); + break; + default: + AlarmsSet(SYSTEMALARMS_ALARM_MANUALCONTROL, SYSTEMALARMS_ALARM_CRITICAL); + } break; } } @@ -596,6 +606,52 @@ static void updateStabilizationDesired(ManualControlCommandData * cmd, ManualCon StabilizationDesiredSet(&stabilization); } +#if defined(REVOLUTION) +// TODO: Need compile flag to exclude this from copter control +static void altitudeHoldDesired(ManualControlCommandData * cmd) +{ + const float DEADBAND_HIGH = 0.55; + const float DEADBAND_LOW = 0.45; + + static portTickType lastSysTime; + static bool zeroed = false; + portTickType thisSysTime; + float dT; + AltitudeHoldDesiredData altitudeHoldDesired; + AltitudeHoldDesiredGet(&altitudeHoldDesired); + + StabilizationSettingsData stabSettings; + StabilizationSettingsGet(&stabSettings); + + thisSysTime = xTaskGetTickCount(); + dT = (thisSysTime - lastSysTime) / portTICK_RATE_MS / 1000.0f; + lastSysTime = thisSysTime; + + altitudeHoldDesired.Roll = cmd->Roll * stabSettings.RollMax; + altitudeHoldDesired.Pitch = cmd->Pitch * stabSettings.PitchMax; + altitudeHoldDesired.Yaw = cmd->Yaw * stabSettings.ManualRate[STABILIZATIONSETTINGS_MANUALRATE_YAW]; + + float currentDown; + PositionActualDownGet(¤tDown); + if(dT > 1) { + // After not being in this mode for a while init at current height + altitudeHoldDesired.Altitude = 0; + zeroed = false; + } else if (cmd->Throttle > DEADBAND_HIGH && zeroed) + altitudeHoldDesired.Altitude += (cmd->Throttle - DEADBAND_HIGH) * dT; + else if (cmd->Throttle < DEADBAND_LOW && zeroed) + altitudeHoldDesired.Altitude += (cmd->Throttle - DEADBAND_LOW) * dT; + else if (cmd->Throttle >= DEADBAND_LOW && cmd->Throttle <= DEADBAND_HIGH) // Require the stick to enter the dead band before they can move height + zeroed = true; + + AltitudeHoldDesiredSet(&altitudeHoldDesired); +} +#else +static void altitudeHoldDesired(ManualControlCommandData * cmd) +{ + AlarmsSet(SYSTEMALARMS_ALARM_MANUALCONTROL, SYSTEMALARMS_ALARM_ERROR); +} +#endif /** * Convert channel from servo pulse duration (microseconds) to scaled -1/+1 range. */ diff --git a/flight/Modules/Osd/OsdEtStd/OsdEtStd.c b/flight/Modules/Osd/OsdEtStd/OsdEtStd.c index 69c4c222d..edd148942 100644 --- a/flight/Modules/Osd/OsdEtStd/OsdEtStd.c +++ b/flight/Modules/Osd/OsdEtStd/OsdEtStd.c @@ -248,7 +248,7 @@ static bool Read(uint32_t start, uint8_t length, uint8_t * buffer) cmd[3] = (uint8_t) (start >> 8); cmd[4] = length; - return PIOS_I2C_Transfer(PIOS_I2C_MAIN_ADAPTER, txn_list, NELEMENTS(txn_list)); + return PIOS_I2C_Transfer(PIOS_I2C_MAIN_ADAPTER, txn_list, NELEMENTS(txn_list)) == 0; } static bool Write(uint32_t start, uint8_t length, const uint8_t * buffer) diff --git a/flight/Modules/PipXtreme/pipxtrememod.c b/flight/Modules/PipXtreme/pipxtrememod.c index e6902d8fb..6ae71c76d 100644 --- a/flight/Modules/PipXtreme/pipxtrememod.c +++ b/flight/Modules/PipXtreme/pipxtrememod.c @@ -108,7 +108,7 @@ int32_t PipXtremeModInitialize(void) const struct pios_board_info * bdinfo = &pios_board_info_blob; pipxStatus.BoardType= bdinfo->board_type; - PIOS_BL_HELPER_FLASH_Read_Description(pipxStatus.Description, PIPXSTATUS_DESCRIPTION_NUMELEM); + //PIOS_BL_HELPER_FLASH_Read_Description(pipxStatus.Description, PIPXSTATUS_DESCRIPTION_NUMELEM); PIOS_SYS_SerialNumberGetBinary(pipxStatus.CPUSerial); pipxStatus.BoardRevision= bdinfo->board_rev; @@ -141,11 +141,6 @@ static void systemTask(void *parameters) PIOS_SYS_Reset(); } -#if defined(PIOS_INCLUDE_IAP) - /* Record a successful boot */ - PIOS_IAP_WriteBootCount(0); -#endif - // Initialize vars idleCounter = 0; idleCounterClear = 0; diff --git a/flight/Modules/RadioComBridge/RadioComBridge.c b/flight/Modules/RadioComBridge/RadioComBridge.c index 826e0c3b6..271f4f3ad 100644 --- a/flight/Modules/RadioComBridge/RadioComBridge.c +++ b/flight/Modules/RadioComBridge/RadioComBridge.c @@ -57,11 +57,11 @@ #define STATS_UPDATE_PERIOD_MS 500 #define RADIOSTATS_UPDATE_PERIOD_MS 500 #define MAX_LOST_CONTACT_TIME 10 -#define PACKET_QUEUE_SIZE 5 +#define PACKET_QUEUE_SIZE 10 #define MAX_PORT_DELAY 200 -#define EV_PACKET_RECEIVED 0x10 -#define EV_SEND_ACK 0x20 -#define EV_SEND_NACK 0x40 +#define EV_PACKET_RECEIVED 0x20 +#define EV_SEND_ACK 0x40 +#define EV_SEND_NACK 0x80 // **************** // Private types @@ -137,7 +137,6 @@ static void SendPipXStatus(void); */ static void StatusHandler(PHPacketHandle p); static void PPMHandler(uint16_t *channels); -static void updateSettings(); static BufferedReadHandle BufferedReadInit(uint32_t com_port, uint16_t buffer_length); static bool BufferedRead(BufferedReadHandle h, uint8_t *value, uint32_t timeout_ms); static void BufferedReadSetCom(BufferedReadHandle h, uint32_t com_port); @@ -235,8 +234,6 @@ static int32_t RadioComBridgeInitialize(void) UAVObjConnectQueue(UAVObjGetByName("PipXStatus"), data->objEventQueue, EV_UPDATED | EV_UPDATED_MANUAL | EV_UPDATE_REQ); UAVObjConnectQueue(UAVObjGetByName("GCSReceiver"), data->objEventQueue, EV_UPDATED | EV_UPDATED_MANUAL | EV_UPDATE_REQ); - updateSettings(); - return 0; } MODULE_INITCALL(RadioComBridgeInitialize, RadioComBridgeStart) @@ -387,6 +384,10 @@ static void radioReceiveTask(void *parameters) // Get a RX packet from the packet handler if required. if (p == NULL) p = PHGetRXPacket(pios_packet_handler); + if(p == NULL) { + vTaskDelay(MAX_PORT_DELAY / portTICK_RATE_MS); + continue; + } // Receive data from the radio port rx_bytes = PIOS_COM_ReceiveBuffer(data->radio_port, (uint8_t*)p, PIOS_PH_MAX_PACKET, MAX_PORT_DELAY); @@ -401,6 +402,7 @@ static void radioReceiveTask(void *parameters) xQueueSend(data->objEventQueue, &ev, portMAX_DELAY); } else PHReceivePacket(pios_packet_handler, p, false); + p = NULL; } } @@ -720,12 +722,6 @@ static void PPMHandler(uint16_t *channels) rcvr.Channel[i] = channels[i]; // Set the GCSReceiverData object. - { - UAVObjMetadata metadata; - UAVObjGetMetadata(GCSReceiverHandle(), &metadata); - metadata.access = ACCESS_READWRITE; - UAVObjSetMetadata(GCSReceiverHandle(), &metadata); - } GCSReceiverSet(&rcvr); } @@ -768,40 +764,3 @@ static void BufferedReadSetCom(BufferedReadHandle h, uint32_t com_port) { h->com_port = com_port; } - -static void updateSettings() -{ - if (data->com_port) { - -#ifdef NEVER - // Retrieve settings - uint8_t speed; - HwSettingsRadioComBridgeSpeedGet(&speed); - - // Set port speed - switch (speed) { - case HWSETTINGS_RADIOCOMBRIDGESPEED_2400: - PIOS_COM_ChangeBaud(data->com_port, 2400); - break; - case HWSETTINGS_RADIOCOMBRIDGESPEED_4800: - PIOS_COM_ChangeBaud(data->com_port, 4800); - break; - case HWSETTINGS_RADIOCOMBRIDGESPEED_9600: - PIOS_COM_ChangeBaud(data->com_port, 9600); - break; - case HWSETTINGS_RADIOCOMBRIDGESPEED_19200: - PIOS_COM_ChangeBaud(data->com_port, 19200); - break; - case HWSETTINGS_RADIOCOMBRIDGESPEED_38400: - PIOS_COM_ChangeBaud(data->com_port, 38400); - break; - case HWSETTINGS_RADIOCOMBRIDGESPEED_57600: - PIOS_COM_ChangeBaud(data->com_port, 57600); - break; - case HWSETTINGS_RADIOCOMBRIDGESPEED_115200: - PIOS_COM_ChangeBaud(data->com_port, 115200); - break; - } -#endif - } -} diff --git a/flight/Modules/Stabilization/stabilization.c b/flight/Modules/Stabilization/stabilization.c index ffc3c53be..34a89870f 100644 --- a/flight/Modules/Stabilization/stabilization.c +++ b/flight/Modules/Stabilization/stabilization.c @@ -38,7 +38,7 @@ #include "ratedesired.h" #include "stabilizationdesired.h" #include "attitudeactual.h" -#include "attituderaw.h" +#include "gyros.h" #include "flightstatus.h" #include "manualcontrol.h" // Just to get a macro #include "CoordinateConversions.h" @@ -124,7 +124,7 @@ int32_t StabilizationInitialize() // Listen for updates. // AttitudeActualConnectQueue(queue); - AttitudeRawConnectQueue(queue); + GyrosConnectQueue(queue); StabilizationSettingsConnectCallback(SettingsUpdatedCb); SettingsUpdatedCb(StabilizationSettingsHandle()); @@ -140,22 +140,20 @@ MODULE_INITCALL(StabilizationInitialize, StabilizationStart) */ static void stabilizationTask(void* parameters) { - portTickType lastSysTime; - portTickType thisSysTime; UAVObjEvent ev; + uint32_t timeval = PIOS_DELAY_GetRaw(); ActuatorDesiredData actuatorDesired; StabilizationDesiredData stabDesired; RateDesiredData rateDesired; AttitudeActualData attitudeActual; - AttitudeRawData attitudeRaw; + GyrosData gyrosData; FlightStatusData flightStatus; SettingsUpdatedCb((UAVObjEvent *) NULL); // Main task loop - lastSysTime = xTaskGetTickCount(); ZeroPids(); while(1) { PIOS_WDG_UpdateFlag(PIOS_WDG_STABILIZATION); @@ -167,16 +165,13 @@ static void stabilizationTask(void* parameters) continue; } - // Check how long since last update - thisSysTime = xTaskGetTickCount(); - if(thisSysTime > lastSysTime) // reuse dt in case of wraparound - dT = (thisSysTime - lastSysTime) / portTICK_RATE_MS / 1000.0f; - lastSysTime = thisSysTime; + dT = PIOS_DELAY_DiffuS(timeval) * 1.0e-6f; + timeval = PIOS_DELAY_GetRaw(); FlightStatusGet(&flightStatus); StabilizationDesiredGet(&stabDesired); AttitudeActualGet(&attitudeActual); - AttitudeRawGet(&attitudeRaw); + GyrosGet(&gyrosData); #if defined(DIAGNOSTICS) RateDesiredGet(&rateDesired); @@ -216,13 +211,13 @@ static void stabilizationTask(void* parameters) float local_error[3] = {stabDesired.Roll - attitudeActual.Roll, stabDesired.Pitch - attitudeActual.Pitch, stabDesired.Yaw - attitudeActual.Yaw}; - local_error[2] = fmod(local_error[2] + 180, 360) - 180; + local_error[2] = fmodf(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); - } + gyro_filtered[0] = gyro_filtered[0] * gyro_alpha + gyrosData.x * (1 - gyro_alpha); + gyro_filtered[1] = gyro_filtered[1] * gyro_alpha + gyrosData.y * (1 - gyro_alpha); + gyro_filtered[2] = gyro_filtered[2] * gyro_alpha + gyrosData.z * (1 - gyro_alpha); float *attitudeDesiredAxis = &stabDesired.Roll; float *actuatorDesiredAxis = &actuatorDesired.Roll; @@ -373,24 +368,24 @@ float ApplyPid(pid_type * pid, const float err) pid->lastErr = err; // 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; + pid->iAccumulator += err * (pid->i * dT * 1000.0f); + if(pid->iAccumulator > (pid->iLim * 1000.0f)) { + pid->iAccumulator = pid->iLim * 1000.0f; + } else if (pid->iAccumulator < -(pid->iLim * 1000.0f)) { + pid->iAccumulator = -pid->iLim * 1000.0f; } - return ((err * pid->p) + pid->iAccumulator / 1000 + (diff * pid->d / dT)); + return ((err * pid->p) + pid->iAccumulator / 1000.0f + (diff * pid->d / dT)); } static void ZeroPids(void) { for(int8_t ct = 0; ct < PID_MAX; ct++) { - pids[ct].iAccumulator = 0; - pids[ct].lastErr = 0; + pids[ct].iAccumulator = 0.0f; + pids[ct].lastErr = 0.0f; } for(uint8_t i = 0; i < 3; i++) - axis_lock_accum[i] = 0; + axis_lock_accum[i] = 0.0f; } @@ -399,10 +394,10 @@ static void ZeroPids(void) */ static float bound(float val) { - if(val < -1) { - val = -1; - } else if(val > 1) { - val = 1; + if(val < -1.0f) { + val = -1.0f; + } else if(val > 1.0f) { + val = 1.0f; } return val; } @@ -466,7 +461,7 @@ static void SettingsUpdatedCb(UAVObjEvent * ev) if(settings.GyroTau < 0.0001) gyro_alpha = 0; // not trusting this to resolve to 0 else - gyro_alpha = exp(-fakeDt / settings.GyroTau); + gyro_alpha = expf(-fakeDt / settings.GyroTau); } diff --git a/flight/Modules/System/systemmod.c b/flight/Modules/System/systemmod.c index cae6af590..bf3ae7b01 100644 --- a/flight/Modules/System/systemmod.c +++ b/flight/Modules/System/systemmod.c @@ -384,7 +384,7 @@ static void updateStats() if (now > lastTickCount) { uint32_t dT = (xTaskGetTickCount() - lastTickCount) * portTICK_RATE_MS; // in ms stats.CPULoad = - 100 - (uint8_t) round(100.0 * ((float)idleCounter / ((float)dT / 1000.0)) / (float)IDLE_COUNTS_PER_SEC_AT_NO_LOAD); + 100 - (uint8_t) roundf(100.0f * ((float)idleCounter / ((float)dT / 1000.0f)) / (float)IDLE_COUNTS_PER_SEC_AT_NO_LOAD); } //else: TickCount has wrapped, do not calc now lastTickCount = now; idleCounterClear = 1; @@ -457,11 +457,21 @@ static void updateSystemAlarms() EventGetStats(&evStats); UAVObjClearStats(); EventClearStats(); - if (objStats.eventErrors > 0 || evStats.eventErrors > 0) { + if (objStats.eventCallbackErrors > 0 || objStats.eventQueueErrors > 0 || evStats.eventErrors > 0) { AlarmsSet(SYSTEMALARMS_ALARM_EVENTSYSTEM, SYSTEMALARMS_ALARM_WARNING); } else { AlarmsClear(SYSTEMALARMS_ALARM_EVENTSYSTEM); } + + if (objStats.lastCallbackErrorID || objStats.lastQueueErrorID || evStats.lastErrorID) { + SystemStatsData sysStats; + SystemStatsGet(&sysStats); + sysStats.EventSystemWarningID = evStats.lastErrorID; + sysStats.ObjectManagerCallbackID = objStats.lastCallbackErrorID; + sysStats.ObjectManagerQueueID = objStats.lastQueueErrorID; + SystemStatsSet(&sysStats); + } + } /** diff --git a/flight/Modules/Telemetry/telemetry.c b/flight/Modules/Telemetry/telemetry.c index 854e777df..2b04e0545 100644 --- a/flight/Modules/Telemetry/telemetry.c +++ b/flight/Modules/Telemetry/telemetry.c @@ -531,8 +531,8 @@ static void updateTelemetryStats() */ static void updateSettings() { + if (telemetryPort) { - // Retrieve settings uint8_t speed; HwSettingsTelemetrySpeedGet(&speed); diff --git a/flight/OpenPilot/Makefile b/flight/OpenPilot/Makefile deleted file mode 100644 index 96be8ff31..000000000 --- a/flight/OpenPilot/Makefile +++ /dev/null @@ -1,604 +0,0 @@ - ##### - # Project: OpenPilot - # - # - # Makefile for OpenPilot project build PiOS and the AP. - # - # The OpenPilot Team, http://www.openpilot.org, Copyright (C) 2009. - # - # - # 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 - ##### - -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 ?= YES - -# Include objects that are just nice information to show -DIAGNOSTICS ?= YES -DIAG_TASKS ?= YES - -# Set to YES to use the Servo output pins for debugging via scope or logic analyser -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 - -# Set to YES when using Code Sourcery toolchain -CODE_SOURCERY ?= YES - -# Remove command is different for Code Sourcery on Windows -ifeq ($(CODE_SOURCERY), YES) -REMOVE_CMD = cs-rm -else -REMOVE_CMD = rm -endif - -FLASH_TOOL = OPENOCD - - -# List of modules to include -OPTMODULES = CameraStab GPS -MODULES = Actuator ManualControl Altitude AHRSComms Stabilization Guidance FirmwareIAP -PYMODULES = FlightPlan -#MODULES = Telemetry Example -#MODULES = Telemetry MK/MKSerial -#MODULES = Telemetry -#MODULES += Osd/OsdEtStd -MODULES += Telemetry - -# Paths -OPSYSTEM = ./System -OPSYSTEMINC = $(OPSYSTEM)/inc -OPUAVTALK = ../UAVTalk -OPUAVTALKINC = $(OPUAVTALK)/inc -OPUAVOBJ = ../UAVObjects -OPUAVOBJINC = $(OPUAVOBJ)/inc -OPTESTS = ./Tests -OPMODULEDIR = ../Modules -FLIGHTLIB = ../Libraries -FLIGHTLIBINC = $(FLIGHTLIB)/inc -PIOS = ../PiOS -PIOSINC = $(PIOS)/inc -PIOSSTM32F10X = $(PIOS)/STM32F10x -PIOSCOMMON = $(PIOS)/Common -PIOSBOARDS = $(PIOS)/Boards -APPLIBDIR = $(PIOSSTM32F10X)/Libraries -STMLIBDIR = $(APPLIBDIR) -STMSPDDIR = $(STMLIBDIR)/STM32F10x_StdPeriph_Driver -STMUSBDIR = $(STMLIBDIR)/STM32_USB-FS-Device_Driver -STMSPDSRCDIR = $(STMSPDDIR)/src -STMSPDINCDIR = $(STMSPDDIR)/inc -STMUSBSRCDIR = $(STMUSBDIR)/src -STMUSBINCDIR = $(STMUSBDIR)/inc -CMSISDIR = $(STMLIBDIR)/CMSIS/Core/CM3 -DOSFSDIR = $(APPLIBDIR)/dosfs -MSDDIR = $(APPLIBDIR)/msd -RTOSDIR = $(APPLIBDIR)/FreeRTOS -RTOSSRCDIR = $(RTOSDIR)/Source -RTOSINCDIR = $(RTOSSRCDIR)/include -DOXYGENDIR = ../Doc/Doxygen -AHRSBOOTLOADER = ../Bootloaders/AHRS/ -AHRSBOOTLOADERINC = $(AHRSBOOTLOADER)/inc -PYMITE = $(FLIGHTLIB)/PyMite -PYMITELIB = $(PYMITE)/lib -PYMITEPLAT = $(PYMITE)/platform/openpilot -PYMITETOOLS = $(PYMITE)/tools -PYMITEVM = $(PYMITE)/vm -PYMITEINC = $(PYMITEVM) -PYMITEINC += $(PYMITEPLAT) -PYMITEINC += $(OUTDIR) -FLIGHTPLANLIB = $(OPMODULEDIR)/FlightPlan/lib -FLIGHTPLANS = $(OPMODULEDIR)/FlightPlan/flightplans -HWDEFSINC = ../board_hw_defs/$(BOARD_NAME) - -UAVOBJSYNTHDIR = $(OUTDIR)/../uavobject-synthetics/flight - -# List C source files here. (C dependencies are automatically generated.) -# use file-extension c for "c-only"-files - -ifndef TESTAPP - -## PyMite files and modules -SRC += $(OUTDIR)/pmlib_img.c -SRC += $(OUTDIR)/pmlib_nat.c -SRC += $(OUTDIR)/pmlibusr_img.c -SRC += $(OUTDIR)/pmlibusr_nat.c -PYSRC += $(wildcard ${PYMITEVM}/*.c) -PYSRC += $(wildcard ${PYMITEPLAT}/*.c) -PYSRC += ${foreach MOD, ${PYMODULES}, ${wildcard ${OPMODULEDIR}/${MOD}/*.c}} -SRC += $(PYSRC) - -## MODULES -SRC += ${foreach MOD, ${OPTMODULES}, ${wildcard ${OPMODULEDIR}/${MOD}/*.c}} -SRC += ${foreach MOD, ${MODULES}, ${wildcard ${OPMODULEDIR}/${MOD}/*.c}} -## OPENPILOT CORE: -SRC += ${OPMODULEDIR}/System/systemmod.c -SRC += $(OPSYSTEM)/openpilot.c -SRC += $(OPSYSTEM)/pios_board.c -SRC += $(OPSYSTEM)/alarms.c -SRC += $(OPUAVTALK)/uavtalk.c -SRC += $(OPUAVOBJ)/uavobjectmanager.c -SRC += $(OPUAVOBJ)/eventdispatcher.c -else -## TESTCODE -SRC += $(OPTESTS)/test_common.c -SRC += $(OPTESTS)/$(TESTAPP).c -endif - - - -## UAVOBJECTS -ifndef TESTAPP -#include $(UAVOBJSYNTHDIR)/Makefile.inc -include ./UAVObjects.inc -SRC += $(UAVOBJSRC) -endif - -## PIOS Hardware (STM32F10x) -SRC += $(PIOSSTM32F10X)/pios_sys.c -SRC += $(PIOSSTM32F10X)/pios_led.c -SRC += $(PIOSSTM32F10X)/pios_delay.c -SRC += $(PIOSSTM32F10X)/pios_usart.c -SRC += $(PIOSSTM32F10X)/pios_irq.c -SRC += $(PIOSSTM32F10X)/pios_adc.c -SRC += $(PIOSSTM32F10X)/pios_servo.c -SRC += $(PIOSSTM32F10X)/pios_i2c.c -SRC += $(PIOSSTM32F10X)/pios_spi.c -SRC += $(PIOSSTM32F10X)/pios_ppm.c -SRC += $(PIOSSTM32F10X)/pios_pwm.c -SRC += $(PIOSSTM32F10X)/pios_dsm.c -SRC += $(PIOSSTM32F10X)/pios_sbus.c -SRC += $(PIOSSTM32F10X)/pios_tim.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 - - -# PIOS USB related files (seperated to make code maintenance more easy) -SRC += $(PIOSSTM32F10X)/pios_usb.c -SRC += $(PIOSSTM32F10X)/pios_usbhook.c -SRC += $(PIOSSTM32F10X)/pios_usb_hid.c -SRC += $(PIOSSTM32F10X)/pios_usb_cdc.c -SRC += $(PIOSSTM32F10X)/pios_usb_hid_istr.c -SRC += $(PIOSSTM32F10X)/pios_usb_hid_pwr.c -SRC += $(OPSYSTEM)/pios_usb_board_data.c -SRC += $(PIOSCOMMON)/pios_usb_desc_hid_cdc.c -SRC += $(PIOSCOMMON)/pios_usb_desc_hid_only.c - -## PIOS Hardware (Common) -SRC += $(PIOSCOMMON)/pios_crc.c -SRC += $(PIOSCOMMON)/pios_sdcard.c -SRC += $(PIOSCOMMON)/pios_com.c -SRC += $(PIOSCOMMON)/pios_bmp085.c -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 -## Libraries for flight calculations -SRC += $(FLIGHTLIB)/fifo_buffer.c -SRC += $(FLIGHTLIB)/WorldMagModel.c -SRC += $(FLIGHTLIB)/CoordinateConversions.c -SRC += $(FLIGHTLIB)/taskmonitor.c - -## CMSIS for STM32 -SRC += $(CMSISDIR)/core_cm3.c -SRC += $(CMSISDIR)/system_stm32f10x.c - -## Used parts of the STM-Library -SRC += $(STMSPDSRCDIR)/stm32f10x_adc.c -SRC += $(STMSPDSRCDIR)/stm32f10x_bkp.c -SRC += $(STMSPDSRCDIR)/stm32f10x_crc.c -SRC += $(STMSPDSRCDIR)/stm32f10x_dac.c -SRC += $(STMSPDSRCDIR)/stm32f10x_dma.c -SRC += $(STMSPDSRCDIR)/stm32f10x_exti.c -SRC += $(STMSPDSRCDIR)/stm32f10x_flash.c -SRC += $(STMSPDSRCDIR)/stm32f10x_gpio.c -SRC += $(STMSPDSRCDIR)/stm32f10x_i2c.c -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_iwdg.c -SRC += $(STMSPDSRCDIR)/stm32f10x_dbgmcu.c -SRC += $(STMSPDSRCDIR)/misc.c - -## STM32 USB Library -SRC += $(STMUSBSRCDIR)/usb_core.c -SRC += $(STMUSBSRCDIR)/usb_init.c -SRC += $(STMUSBSRCDIR)/usb_int.c -SRC += $(STMUSBSRCDIR)/usb_mem.c -SRC += $(STMUSBSRCDIR)/usb_regs.c -SRC += $(STMUSBSRCDIR)/usb_sil.c - -## RTOS -SRC += $(RTOSSRCDIR)/list.c -SRC += $(RTOSSRCDIR)/queue.c -SRC += $(RTOSSRCDIR)/tasks.c - -## RTOS Portable -SRC += $(RTOSSRCDIR)/portable/GCC/ARM_CM3/port.c -SRC += $(RTOSSRCDIR)/portable/MemMang/heap_2.c - -## Dosfs file system -SRC += $(DOSFSDIR)/dosfs.c -SRC += $(DOSFSDIR)/dfs_sdcard.c - -## AHRS boot loader comms -SRC += $(AHRSBOOTLOADER)/ahrs_spi_program_master.c -SRC += $(AHRSBOOTLOADER)/ahrs_spi_program.c - -## Mass Storage Device -#SRC += $(MSDDIR)/msd.c -#SRC += $(MSDDIR)/msd_bot.c -#SRC += $(MSDDIR)/msd_desc.c -#SRC += $(MSDDIR)/msd_memory.c -#SRC += $(MSDDIR)/msd_scsi.c -#SRC += $(MSDDIR)/msd_scsi_data.c - -# List C source files here which must be compiled in ARM-Mode (no -mthumb). -# use file-extension c for "c-only"-files -## just for testing, timer.c could be compiled in thumb-mode too -SRCARM = - -# List C++ source files here. -# use file-extension .cpp for C++-files (not .C) -CPPSRC = - -# List C++ source files here which must be compiled in ARM-Mode. -# use file-extension .cpp for C++-files (not .C) -#CPPSRCARM = $(TARGET).cpp -CPPSRCARM = - -# List Assembler source files here. -# Make them always end in a capital .S. Files ending in a lowercase .s -# will not be considered source files but generated files (assembler -# output from the compiler), and will be deleted upon "make clean"! -# 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)$(MODEL_SUFFIX).S - -# List Assembler source files here which must be assembled in ARM-Mode.. -ASRCARM = - -# List any extra directories to look for include files here. -# Each directory must be seperated by a space. -EXTRAINCDIRS = $(OPSYSTEM) -EXTRAINCDIRS += $(OPSYSTEMINC) -EXTRAINCDIRS += $(OPUAVTALK) -EXTRAINCDIRS += $(OPUAVTALKINC) -EXTRAINCDIRS += $(OPUAVOBJ) -EXTRAINCDIRS += $(OPUAVOBJINC) -EXTRAINCDIRS += $(UAVOBJSYNTHDIR) -EXTRAINCDIRS += $(PIOS) -EXTRAINCDIRS += $(PIOSINC) -EXTRAINCDIRS += $(FLIGHTLIBINC) -EXTRAINCDIRS += $(PIOSSTM32F10X) -EXTRAINCDIRS += $(PIOSCOMMON) -EXTRAINCDIRS += $(PIOSBOARDS) -EXTRAINCDIRS += $(STMSPDINCDIR) -EXTRAINCDIRS += $(STMUSBINCDIR) -EXTRAINCDIRS += $(CMSISDIR) -EXTRAINCDIRS += $(DOSFSDIR) -EXTRAINCDIRS += $(MSDDIR) -EXTRAINCDIRS += $(RTOSINCDIR) -EXTRAINCDIRS += $(APPLIBDIR) -EXTRAINCDIRS += $(RTOSSRCDIR)/portable/GCC/ARM_CM3 -EXTRAINCDIRS += $(AHRSBOOTLOADERINC) -EXTRAINCDIRS += $(PYMITEINC) -EXTRAINCDIRS += $(HWDEFSINC) - -EXTRAINCDIRS += ${foreach MOD, ${OPTMODULES} ${MODULES} ${PYMODULES}, $(OPMODULEDIR)/${MOD}/inc} ${OPMODULEDIR}/System/inc - - -# List any extra directories to look for library files here. -# Also add directories where the linker should search for -# includes from linker-script to the list -# Each directory must be seperated by a space. -EXTRA_LIBDIRS = - -# Extra Libraries -# Each library-name must be seperated by a space. -# i.e. to link with libxyz.a, libabc.a and libefsl.a: -# EXTRA_LIBS = xyz abc efsl -# for newlib-lpc (file: libnewlibc-lpc.a): -# EXTRA_LIBS = newlib-lpc -EXTRA_LIBS = - -# Path to Linker-Scripts -LINKERSCRIPTPATH = $(PIOSSTM32F10X) - -# Optimization level, can be [0, 1, 2, 3, s]. -# 0 = turn off optimization. s = optimize for size. -# (Note: 3 is not always the best optimization level. See avr-libc FAQ.) - -ifeq ($(DEBUG),YES) -OPT = 0 -else -OPT = s -endif - -# Output format. (can be ihex or binary or both) -# binary to create a load-image in raw-binary format i.e. for SAM-BA, -# ihex to create a load-image in Intel hex format -#LOADFORMAT = ihex -#LOADFORMAT = binary -LOADFORMAT = both - -# Debugging format. -DEBUGF = dwarf-2 - -# Place project-specific -D (define) and/or -# -U options for C here. -CDEFS = -DSTM32F10X_$(MODEL) -CDEFS += -DUSE_STDPERIPH_DRIVER -CDEFS += -DUSE_$(BOARD) -ifeq ($(ENABLE_DEBUG_PINS), YES) -CDEFS += -DPIOS_ENABLE_DEBUG_PINS -endif -ifeq ($(ENABLE_AUX_UART), YES) -CDEFS += -DPIOS_ENABLE_AUX_UART -endif - -# Declare all non-optional modules as built-in to force inclusion -CDEFS += ${foreach MOD, ${MODULES}, -DMODULE_$(MOD)_BUILTIN } - -# Place project-specific -D and/or -U options for -# Assembler with preprocessor here. -#ADEFS = -DUSE_IRQ_ASM_WRAPPER -ADEFS = -D__ASSEMBLY__ - -# Compiler flag to set the C Standard level. -# c89 - "ANSI" C -# gnu89 - c89 plus GCC extensions -# c99 - ISO C99 standard (not yet fully implemented) -# gnu99 - c99 plus GCC extensions -CSTANDARD = -std=gnu99 - -#----- - -# Compiler flags. - -# -g*: generate debugging information -# -O*: optimization level -# -f...: tuning, see GCC manual and avr-libc documentation -# -Wall...: warning level -# -Wa,...: tell GCC to pass this to the assembler. -# -adhlns...: create assembler listing -# -# Flags for C and C++ (arm-elf-gcc/arm-elf-g++) - -ifeq ($(DEBUG),YES) -CFLAGS += -DDEBUG -endif - -ifeq ($(DIAGNOSTICS),YES) -CFLAGS += -DDIAGNOSTICS -endif - -ifeq ($(DIAG_TASKS),YES) -CFLAGS += -DDIAG_TASKS -endif - -CFLAGS += -g$(DEBUGF) -CFLAGS += -O$(OPT) -CFLAGS += -mcpu=$(MCU) -CFLAGS += $(CDEFS) -CFLAGS += $(patsubst %,-I%,$(EXTRAINCDIRS)) -I. - -CFLAGS += -mapcs-frame -CFLAGS += -fomit-frame-pointer -ifeq ($(CODE_SOURCERY), YES) -CFLAGS += -fpromote-loop-indices -endif - -CFLAGS += -Wall -CFLAGS += -Werror -CFLAGS += -Wa,-adhlns=$(addprefix $(OUTDIR)/, $(notdir $(addsuffix .lst, $(basename $<)))) -# Compiler flags to generate dependency files: -CFLAGS += -MD -MP -MF $(OUTDIR)/dep/$(@F).d - -# flags only for C -#CONLYFLAGS += -Wnested-externs -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 += $(ADEFS) -ASFLAGS += -Wa,-adhlns=$(addprefix $(OUTDIR)/, $(notdir $(addsuffix .lst, $(basename $<)))) -ASFLAGS += $(patsubst %,-I%,$(EXTRAINCDIRS)) - -MATH_LIB = -lm - -# Linker flags. -# -Wl,...: tell GCC to pass this to linker. -# -Map: create map file -# --cref: add cross reference to map file -LDFLAGS = -nostartfiles -Wl,-Map=$(OUTDIR)/$(TARGET).map,--cref,--gc-sections -LDFLAGS += $(patsubst %,-L%,$(EXTRA_LIBDIRS)) -LDFLAGS += -lc -LDFLAGS += $(patsubst %,-l%,$(EXTRA_LIBS)) -LDFLAGS += $(MATH_LIB) -LDFLAGS += -lc -lgcc - -# Set linker-script name depending on selected submodel name -LDFLAGS += -T$(LINKERSCRIPTPATH)/link_$(BOARD)_memory.ld -LDFLAGS += -T$(LINKERSCRIPTPATH)/link_$(BOARD)_sections.ld - -# Define programs and commands. -REMOVE = $(REMOVE_CMD) -f -PYTHON = python - -# List of all source files. -ALLSRC = $(ASRCARM) $(ASRC) $(SRCARM) $(SRC) $(CPPSRCARM) $(CPPSRC) -# List of all source files without directory and file-extension. -ALLSRCBASE = $(notdir $(basename $(ALLSRC))) - -# Define all object files. -ALLOBJ = $(addprefix $(OUTDIR)/, $(addsuffix .o, $(ALLSRCBASE))) - -# Define all listing files (used for make clean). -LSTFILES = $(addprefix $(OUTDIR)/, $(addsuffix .lst, $(ALLSRCBASE))) -# Define all depedency-files (used for make clean). -DEPFILES = $(addprefix $(OUTDIR)/dep/, $(addsuffix .o.d, $(ALLSRCBASE))) - -# Default target. -all: gccversion build - -ifeq ($(LOADFORMAT),ihex) -build: elf hex lss sym -else -ifeq ($(LOADFORMAT),binary) -build: elf bin lss sym -else -ifeq ($(LOADFORMAT),both) -build: elf hex bin lss sym -else -$(error "$(MSG_FORMATERROR) $(FORMAT)") -endif -endif -endif - -# Generate intermediate code - -# 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, $@) - @$(PYTHON) $(PYMITETOOLS)/pmImgCreator.py -f $(PYMITEPLAT)/pmfeatures.py -c -s --memspace=flash -o $(OUTDIR)/pmlib_img.c --native-file=$(OUTDIR)/pmlib_nat.c $(PYMITELIB)/list.py $(PYMITELIB)/dict.py $(PYMITELIB)/__bi.py $(PYMITELIB)/sys.py $(PYMITELIB)/string.py $(wildcard $(FLIGHTPLANLIB)/*.py) - @$(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 - -# Link: create ELF output file from object files. -$(eval $(call LINK_TEMPLATE, $(OUTDIR)/$(TARGET).elf, $(ALLOBJ))) - -# Assemble: create object files from assembler source files. -$(foreach src, $(ASRC), $(eval $(call ASSEMBLE_TEMPLATE, $(src)))) - -# Assemble: create object files from assembler source files. ARM-only -$(foreach src, $(ASRCARM), $(eval $(call ASSEMBLE_ARM_TEMPLATE, $(src)))) - -# Compile: create object files from C source files. -$(foreach src, $(SRC), $(eval $(call COMPILE_C_TEMPLATE, $(src)))) - -# Compile: create object files from C source files. ARM-only -$(foreach src, $(SRCARM), $(eval $(call COMPILE_C_ARM_TEMPLATE, $(src)))) - -# Compile: create object files from C++ source files. -$(foreach src, $(CPPSRC), $(eval $(call COMPILE_CPP_TEMPLATE, $(src)))) - -# Compile: create object files from C++ source files. ARM-only -$(foreach src, $(CPPSRCARM), $(eval $(call COMPILE_CPP_ARM_TEMPLATE, $(src)))) - -# Compile: create assembler files from C source files. ARM/Thumb -$(eval $(call PARTIAL_COMPILE_TEMPLATE, SRC)) - -# Compile: create assembler files from C source files. ARM only -$(eval $(call PARTIAL_COMPILE_ARM_TEMPLATE, SRCARM)) - -$(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),$(OPENOCD_CONFIG))) - -.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)) - -# 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 - -clean_list : - @echo $(MSG_CLEANING) - $(V1) $(REMOVE) $(OUTDIR)/$(TARGET).map - $(V1) $(REMOVE) $(OUTDIR)/$(TARGET).elf - $(V1) $(REMOVE) $(OUTDIR)/$(TARGET).hex - $(V1) $(REMOVE) $(OUTDIR)/$(TARGET).bin - $(V1) $(REMOVE) $(OUTDIR)/$(TARGET).sym - $(V1) $(REMOVE) $(OUTDIR)/$(TARGET).lss - $(V1) $(REMOVE) $(OUTDIR)/$(TARGET).bin.o - $(V1) $(REMOVE) $(wildcard $(OUTDIR)/*.c) - $(V1) $(REMOVE) $(wildcard $(OUTDIR)/*.h) - $(V1) $(REMOVE) $(ALLOBJ) - $(V1) $(REMOVE) $(LSTFILES) - $(V1) $(REMOVE) $(DEPFILES) - $(V1) $(REMOVE) $(SRC:.c=.s) - $(V1) $(REMOVE) $(SRCARM:.c=.s) - $(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 -$(shell md $(subst /,\\,$(OUTDIR)) 2>NUL) -else -$(shell mkdir -p $(OUTDIR) 2>/dev/null) -endif - -# Include the dependency files. -ifdef ComSpec --include $(shell md $(subst /,\\,$(OUTDIR))\dep 2>NUL) $(wildcard $(OUTDIR)/dep/*) -else --include $(shell mkdir -p $(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 install diff --git a/flight/OpenPilot/Makefile.posix b/flight/OpenPilot/Makefile.posix deleted file mode 100644 index 5fbc66b4b..000000000 --- a/flight/OpenPilot/Makefile.posix +++ /dev/null @@ -1,665 +0,0 @@ - ##### - # Project: OpenPilot - # - # - # Makefile for OpenPilot project build PiOS and the AP. - # - # The OpenPilot Team, http://www.openpilot.org, Copyright (C) 2009. - # - # - # 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 - ##### - - -# Set developer code and compile options -# Set to YES to compile for debugging -DEBUG ?= YES - -# Include objects that are just nice information to show -DIAGNOSTICS ?= YES - -# Set to YES to use the Servo output pins for debugging via scope or logic analyser -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_BOOTLOADER ?= NO - - -# Set to YES when using Code Sourcery toolchain -CODE_SOURCERY ?= NO - -# Toolchain prefix (i.e arm-elf- -> arm-elf-gcc.exe) -TCHAIN_PREFIX ?= "" - -# Remove command is different for Code Sourcery on Windows -REMOVE_CMD ?= rm - -FLASH_TOOL = OPENOCD - -# YES enables -mthumb option to flags for source-files listed -# in SRC and CPPSRC -USE_THUMB_MODE = YES - -# List of modules to include -OPTMODULES = CameraStab GPS -MODULES = Telemetry Actuator Stabilization Guidance ManualControl -#MODULES = Telemetry ManualControl Actuator Attitude Stabilization -#MODULES = Telemetry Example -#MODULES = Telemetry MK/MKSerial -PYMODULES = FlightPlan - -#MODULES += Osd/OsdEtStd - - -# MCU name, submodel and board -# - MCU used for compiler-option (-mtune) -# - MODEL used for linker-script name (-T) and passed as define -# - BOARD just passed as define (optional) -MCU = i686 -#CHIP = STM32F103RET -#BOARD = STM3210E_OP -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 = ../../build/sitl_posix - -# Target file name (without extension). -TARGET = OpenPilot - -# Paths -OPSYSTEM = ./System -OPSYSTEMINC = $(OPSYSTEM)/inc -OPUAVTALK = ../UAVTalk -OPUAVTALKINC = $(OPUAVTALK)/inc -OPUAVOBJ = ../UAVObjects -OPUAVOBJINC = $(OPUAVOBJ)/inc -OPTESTS = ./Tests -OPMODULEDIR = ../Modules -FLIGHTLIB = ../Libraries -FLIGHTLIBINC = $(FLIGHTLIB)/inc -PIOS = ../PiOS.posix -PIOSINC = $(PIOS)/inc -PIOSPOSIX = $(PIOS)/posix -APPLIBDIR = $(PIOSPOSIX)/Libraries -RTOSDIR = $(APPLIBDIR)/FreeRTOS -RTOSSRCDIR = $(RTOSDIR)/Source -RTOSINCDIR = $(RTOSSRCDIR)/include -DOXYGENDIR = ../Doc/Doxygen -AHRSBOOTLOADER = ../Bootloaders/AHRS/ -AHRSBOOTLOADERINC = $(AHRSBOOTLOADER)/inc -PYMITE = $(FLIGHTLIB)/PyMite -PYMITELIB = $(PYMITE)/lib -PYMITEPLAT = $(PYMITE)/platform/openpilot_sitl -PYMITETOOLS = $(PYMITE)/tools -PYMITEVM = $(PYMITE)/vm -PYMITEINC = $(PYMITEVM) -PYMITEINC += $(PYMITEPLAT) -PYMITEINC += $(OUTDIR) -FLIGHTPLANLIB = $(OPMODULEDIR)/FlightPlan/lib -FLIGHTPLANS = $(OPMODULEDIR)/FlightPlan/flightplans - -UAVOBJSYNTHDIR = $(OUTDIR)/../uavobject-synthetics/flight -UAVOBJPYTHONSYNTHDIR = $(OUTDIR)/../uavobject-synthetics/python - -# List C source files here. (C dependencies are automatically generated.) -# use file-extension c for "c-only"-files - -MODNAMES = $(notdir ${MODULES}) -MODNAMES += $(notdir ${OPTMODULES}) - -ifndef TESTAPP - -## PyMite files -SRC += $(OUTDIR)/pmlib_img.c -SRC += $(OUTDIR)/pmlib_nat.c -SRC += $(OUTDIR)/pmlibusr_img.c -SRC += $(OUTDIR)/pmlibusr_nat.c -PYSRC += $(wildcard ${PYMITEVM}/*.c) -PYSRC += $(wildcard ${PYMITEPLAT}/*.c) -PYSRC += ${foreach MOD, ${PYMODULES}, ${wildcard ${OPMODULEDIR}/${MOD}/*.c}} -SRC += $(PYSRC) - -## MODULES -SRC += ${foreach MOD, ${OPTMODULES}, ${wildcard ${OPMODULEDIR}/${MOD}/*.c}} -SRC += ${foreach MOD, ${MODULES}, ${wildcard ${OPMODULEDIR}/${MOD}/*.c}} -SRC += ${OUTDIR}/InitMods.c -## OPENPILOT CORE: -SRC += ${OPMODULEDIR}/System/systemmod.c -SRC += $(OPSYSTEM)/openpilot.c -SRC += $(OPSYSTEM)/pios_board_posix.c -SRC += $(OPSYSTEM)/alarms.c -SRC += $(OPUAVTALK)/uavtalk.c -SRC += $(OPUAVOBJ)/uavobjectmanager.c -SRC += $(OPUAVOBJ)/eventdispatcher.c -SRC += $(UAVOBJSYNTHDIR)/uavobjectsinit.c -else -## TESTCODE -SRC += $(OPTESTS)/test_common.c -SRC += $(OPTESTS)/$(TESTAPP).c -endif - - - -## UAVOBJECTS -ifndef TESTAPP -#include $(UAVOBJSYNTHDIR)/Makefile.inc -include ./UAVObjects.inc -SRC += $(UAVOBJSRC) -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 -SRC += $(PIOSPOSIX)/pios_com.c -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)/WorldMagModel.c -SRC += $(FLIGHTLIB)/CoordinateConversions.c -SRC += $(FLIGHTLIB)/taskmonitor.c -## RTOS and RTOS Portable -SRC += $(RTOSSRCDIR)/list.c -SRC += $(RTOSSRCDIR)/queue.c -UNAME := $(shell uname) -ifeq ($(UNAME), Linux) - SRC += $(RTOSSRCDIR)/tasks_linux.c - SRC += $(RTOSSRCDIR)/portable/GCC/Posix/port_linux.c -else - SRC += $(RTOSSRCDIR)/tasks_posix.c - SRC += $(RTOSSRCDIR)/portable/GCC/Posix/port_posix.c -endif -SRC += $(RTOSSRCDIR)/portable/MemMang/heap_3.c - - - -# List C source files here which must be compiled in ARM-Mode (no -mthumb). -# use file-extension c for "c-only"-files -## just for testing, timer.c could be compiled in thumb-mode too -SRCARM = - -# List C++ source files here. -# use file-extension .cpp for C++-files (not .C) -CPPSRC = - -# List C++ source files here which must be compiled in ARM-Mode. -# use file-extension .cpp for C++-files (not .C) -#CPPSRCARM = $(TARGET).cpp -CPPSRCARM = - - -# List any extra directories to look for include files here. -# Each directory must be seperated by a space. -EXTRAINCDIRS = $(OPSYSTEM) -EXTRAINCDIRS += $(OPSYSTEMINC) -EXTRAINCDIRS += $(OPUAVTALK) -EXTRAINCDIRS += $(OPUAVTALKINC) -EXTRAINCDIRS += $(OPUAVOBJ) -EXTRAINCDIRS += $(OPUAVOBJINC) -EXTRAINCDIRS += $(UAVOBJSYNTHDIR) -EXTRAINCDIRS += $(PIOS) -EXTRAINCDIRS += $(PIOSINC) -EXTRAINCDIRS += $(FLIGHTLIBINC) -EXTRAINCDIRS += $(PIOSPOSIX) -EXTRAINCDIRS += $(RTOSINCDIR) -EXTRAINCDIRS += $(APPLIBDIR) -EXTRAINCDIRS += $(RTOSSRCDIR)/portable/GCC/Posix -EXTRAINCDIRS += $(PYMITEINC) - -EXTRAINCDIRS += ${foreach MOD, ${PYMODULES} ${OPTMODULES} ${MODULES}, $(OPMODULEDIR)/${MOD}/inc} ${OPMODULEDIR}/System/inc - - -# List any extra directories to look for library files here. -# Also add directories where the linker should search for -# includes from linker-script to the list -# Each directory must be seperated by a space. -EXTRA_LIBDIRS = - -# Extra Libraries -# Each library-name must be seperated by a space. -# i.e. to link with libxyz.a, libabc.a and libefsl.a: -# EXTRA_LIBS = xyz abc efsl -# for newlib-lpc (file: libnewlibc-lpc.a): -# EXTRA_LIBS = newlib-lpc -EXTRA_LIBS = - -# Path to Linker-Scripts -LINKERSCRIPTPATH = $(PIOSSTM32F10X) - -# Optimization level, can be [0, 1, 2, 3, s]. -# 0 = turn off optimization. s = optimize for size. -# (Note: 3 is not always the best optimization level. See avr-libc FAQ.) - -ifeq ($(DEBUG),YES) -OPT = 0 -else -OPT = s -endif - -# Output format. (can be ihex or binary or both) -# binary to create a load-image in raw-binary format i.e. for SAM-BA, -# ihex to create a load-image in Intel hex format -#LOADFORMAT = ihex -#LOADFORMAT = binary -LOADFORMAT = both - -# Debugging format. -#DEBUGF = dwarf-2 - -# Place project-specific -D (define) and/or -# -U options for C here. -ifeq ($(ENABLE_DEBUG_PINS), YES) -CDEFS += -DPIOS_ENABLE_DEBUG_PINS -endif -ifeq ($(ENABLE_AUX_UART), YES) -CDEFS += -DPIOS_ENABLE_AUX_UART -endif -ifeq ($(USE_BOOTLOADER), YES) -CDEFS += -DUSE_BOOTLOADER -endif - - - -# Compiler flag to set the C Standard level. -# c89 - "ANSI" C -# gnu89 - c89 plus GCC extensions -# c99 - ISO C99 standard (not yet fully implemented) -# gnu99 - c99 plus GCC extensions -CSTANDARD = -std=gnu99 - -#----- - -# Compiler flags. - -# -g*: generate debugging information -# -O*: optimization level -# -f...: tuning, see GCC manual and avr-libc documentation -# -Wall...: warning level -# -Wa,...: tell GCC to pass this to the assembler. -# -adhlns...: create assembler listing -# -# Flags for C and C++ (arm-elf-gcc/arm-elf-g++) - -ifeq ($(DEBUG),YES) -CFLAGS = -g$(DEBUGF) -DDEBUG -endif - -ifeq ($(DIAGNOSTICS),YES) -CFLAGS = -DDIAGNOSTICS -endif - -CFLAGS += $(CFLAGS_UAVOBJECTS) -CFLAGS += -DARCH_POSIX -CFLAGS += -O$(OPT) -CFLAGS += -mtune=$(MCU) -CFLAGS += $(CDEFS) -CFLAGS += $(patsubst %,-I%,$(EXTRAINCDIRS)) -I. - -CFLAGS += -fomit-frame-pointer -ifeq ($(CODE_SOURCERY), YES) -CFLAGS += -fpromote-loop-indices -endif - -CFLAGS += -Wall -CFLAGS += -Werror -# Compiler flags to generate dependency files: -CFLAGS += -MD -MP -MF $(OUTDIR)/dep/$(@F).d - -# flags only for C -#CONLYFLAGS += -Wnested-externs -CONLYFLAGS += $(CSTANDARD) - -# Assembler flags. -# -Wa,...: tell GCC to pass this to the assembler. -# -ahlns: create listing -ASFLAGS = -mtune=$(MCU) -I. -x assembler-with-cpp -ASFLAGS += $(ADEFS) -ASFLAGS += -Wa,-adhlns=$(addprefix $(OUTDIR)/, $(notdir $(addsuffix .lst, $(basename $<)))) -ASFLAGS += $(patsubst %,-I%,$(EXTRAINCDIRS)) - -MATH_LIB = -lm - -# Linker flags. -# -Wl,...: tell GCC to pass this to linker. -# -Map: create map file -# --cref: add cross reference to map file -LDFLAGS += -lpthread -LDFLAGS += $(patsubst %,-L%,$(EXTRA_LIBDIRS)) -LDFLAGS += -lc -LDFLAGS += $(patsubst %,-l%,$(EXTRA_LIBS)) -LDFLAGS += $(MATH_LIB) -LDFLAGS += -lc -lgcc - - - - -# Define programs and commands. -CC = $(TCHAIN_PREFIX)gcc -CPP = $(TCHAIN_PREFIX)g++ -AR = $(TCHAIN_PREFIX)ar -OBJCOPY = $(TCHAIN_PREFIX)objcopy -OBJDUMP = $(TCHAIN_PREFIX)objdump -SIZE = $(TCHAIN_PREFIX)size -NM = $(TCHAIN_PREFIX)nm -REMOVE = $(REMOVE_CMD) -f -PYTHON = python -###SHELL = sh -###COPY = cp - - - -# Define Messages -# English -MSG_ERRORS_NONE = Errors: none -MSG_BEGIN = ${quote}-------- begin (mode: $(RUN_MODE)) --------${quote} -MSG_END = ${quote}-------- end --------${quote} -MSG_MODINIT = ${quote}**** Generating ModInit.c${quote} -MSG_SIZE_BEFORE = ${quote}Size before:${quote} -MSG_SIZE_AFTER = ${quote}Size after build:${quote} -MSG_LOAD_FILE = ${quote}Creating load file:${quote} -MSG_EXTENDED_LISTING = ${quote}Creating Extended Listing/Disassembly:${quote} -MSG_SYMBOL_TABLE = ${quote}Creating Symbol Table:${quote} -MSG_LINKING = ${quote}**** Linking :${quote} -MSG_COMPILING = ${quote}**** Compiling C :${quote} -MSG_COMPILING_ARM = ${quote}**** Compiling C (ARM-only):${quote} -MSG_COMPILINGCPP = ${quote}Compiling C++ :${quote} -MSG_COMPILINGCPP_ARM = ${quote}Compiling C++ (ARM-only):${quote} -MSG_ASSEMBLING = ${quote}**** Assembling:${quote} -MSG_ASSEMBLING_ARM = ${quote}****Assembling (ARM-only):${quote} -MSG_CLEANING = ${quote}Cleaning project:${quote} -MSG_FORMATERROR = ${quote}Can not handle output-format${quote} -MSG_ASMFROMC = ${quote}Creating asm-File from C-Source:${quote} -MSG_ASMFROMC_ARM = ${quote}Creating asm-File from C-Source (ARM-only):${quote} -MSG_PYMITEINIT = ${quote}**** Generating PyMite intermediate code${quote} - -# List of all source files. -ALLSRC = $(ASRCARM) $(ASRC) $(SRCARM) $(SRC) $(CPPSRCARM) $(CPPSRC) -# List of all source files without directory and file-extension. -ALLSRCBASE = $(notdir $(basename $(ALLSRC))) - -# Define all object files. -ALLOBJ = $(addprefix $(OUTDIR)/, $(addsuffix .o, $(ALLSRCBASE))) - -# Define all listing files (used for make clean). -LSTFILES = $(addprefix $(OUTDIR)/, $(addsuffix .lst, $(ALLSRCBASE))) -# Define all depedency-files (used for make clean). -DEPFILES = $(addprefix $(OUTDIR)/dep/, $(addsuffix .o.d, $(ALLSRCBASE))) - -elf: $(OUTDIR)/$(TARGET).elf -lss: $(OUTDIR)/$(TARGET).lss -sym: $(OUTDIR)/$(TARGET).sym -hex: $(OUTDIR)/$(TARGET).hex -bin: $(OUTDIR)/$(TARGET).bin - -# Default target. -#all: begin gccversion sizebefore build sizeafter finished end -#all: begin gencode gccversion build sizeafter finished end -all: elf - -ifeq ($(LOADFORMAT),ihex) -build: elf hex lss sym -else -ifeq ($(LOADFORMAT),binary) -build: elf bin lss sym -else -ifeq ($(LOADFORMAT),both) -build: elf hex bin lss sym -else -$(error "$(MSG_FORMATERROR) $(FORMAT)") -endif -endif -endif - -# Test if quotes are needed for the echo-command -result = ${shell echo "test"} -ifeq (${result}, test) - quote = ' -else - quote = -endif - -# Generate code for module initialization -${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) - @echo $(MSG_PYMITEINIT) $(call toprel, $@) - @$(PYTHON) $(PYMITETOOLS)/pmImgCreator.py -f $(PYMITEPLAT)/pmfeatures.py -c -s --memspace=flash -o $(OUTDIR)/pmlib_img.c --native-file=$(OUTDIR)/pmlib_nat.c $(PYMITELIB)/list.py $(PYMITELIB)/dict.py $(PYMITELIB)/__bi.py $(PYMITELIB)/sys.py $(PYMITELIB)/string.py $(wildcard $(FLIGHTPLANLIB)/*.py) - @$(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 - -# Eye candy. -begin: -## @echo - @echo $(MSG_BEGIN) - -finished: -## @echo $(MSG_ERRORS_NONE) - -end: - @echo $(MSG_END) -## @echo - -# Display sizes of sections. -ELFSIZE = $(SIZE) -A $(OUTDIR)/$(TARGET).elf -##ELFSIZE = $(SIZE) --format=Berkeley --common $(OUTDIR)/$(TARGET).elf -sizebefore: -# @if [ -f $(OUTDIR)/$(TARGET).elf ]; then echo; echo $(MSG_SIZE_BEFORE); $(ELFSIZE); echo; fi - -sizeafter: -# @if [ -f $(OUTDIR)/$(TARGET).elf ]; then echo; echo $(MSG_SIZE_AFTER); $(ELFSIZE); echo; fi - @echo $(MSG_SIZE_AFTER) - $(ELFSIZE) - -# Display compiler version information. -gccversion : - @$(CC) --version -# @echo $(ALLOBJ) - -# 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 0 -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 - -# Create final output file (.hex) from ELF output file. -%.hex: %.elf -## @echo - @echo $(MSG_LOAD_FILE) $@ - $(OBJCOPY) -O ihex $< $@ - -# Create final output file (.bin) from ELF output file. -%.bin: %.elf -## @echo - @echo $(MSG_LOAD_FILE) $@ - $(OBJCOPY) -O binary $< $@ - -# Create extended listing file/disassambly from ELF output file. -# using objdump testing: option -C -%.lss: %.elf -## @echo - @echo $(MSG_EXTENDED_LISTING) $@ - $(OBJDUMP) -h -S -C -r $< > $@ -# $(OBJDUMP) -x -S $< > $@ - -# Create a symbol table from ELF output file. -%.sym: %.elf -## @echo - @echo $(MSG_SYMBOL_TABLE) $@ - $(NM) -n $< > $@ - -# Link: create ELF output file from object files. -.SECONDARY : $(TARGET).elf -.PRECIOUS : $(ALLOBJ) -%.elf: $(ALLOBJ) - @echo $(MSG_LINKING) $@ -# use $(CC) for C-only projects or $(CPP) for C++-projects: - $(CC) $(THUMB) $(CFLAGS) $(ALLOBJ) --output $@ $(LDFLAGS) -# $(CPP) $(THUMB) $(CFLAGS) $(ALLOBJ) --output $@ $(LDFLAGS) - - -# Assemble: create object files from assembler source files. -define ASSEMBLE_TEMPLATE -$(OUTDIR)/$(notdir $(basename $(1))).o : $(1) -## @echo - @echo $(MSG_ASSEMBLING) $$< to $$@ - $(CC) -c $(THUMB) $$(ASFLAGS) $$< -o $$@ -endef -$(foreach src, $(ASRC), $(eval $(call ASSEMBLE_TEMPLATE, $(src)))) - -# Assemble: create object files from assembler source files. ARM-only -define ASSEMBLE_ARM_TEMPLATE -$(OUTDIR)/$(notdir $(basename $(1))).o : $(1) -## @echo - @echo $(MSG_ASSEMBLING_ARM) $$< to $$@ - $(CC) -c $$(ASFLAGS) $$< -o $$@ -endef -$(foreach src, $(ASRCARM), $(eval $(call ASSEMBLE_ARM_TEMPLATE, $(src)))) - - -# Compile: create object files from C source files. -define COMPILE_C_TEMPLATE -$(OUTDIR)/$(notdir $(basename $(1))).o : $(1) -## @echo - @echo $(MSG_COMPILING) $$< to $$@ - $(CC) -c $(THUMB) $$(CFLAGS) $$(CONLYFLAGS) $$< -o $$@ -endef -$(foreach src, $(SRC), $(eval $(call COMPILE_C_TEMPLATE, $(src)))) - -# Compile: create object files from C source files. ARM-only -define COMPILE_C_ARM_TEMPLATE -$(OUTDIR)/$(notdir $(basename $(1))).o : $(1) -## @echo - @echo $(MSG_COMPILING_ARM) $$< to $$@ - $(CC) -c $$(CFLAGS) $$(CONLYFLAGS) $$< -o $$@ -endef -$(foreach src, $(SRCARM), $(eval $(call COMPILE_C_ARM_TEMPLATE, $(src)))) - - -# Compile: create object files from C++ source files. -define COMPILE_CPP_TEMPLATE -$(OUTDIR)/$(notdir $(basename $(1))).o : $(1) -## @echo - @echo $(MSG_COMPILINGCPP) $$< to $$@ - $(CC) -c $(THUMB) $$(CFLAGS) $$(CPPFLAGS) $$< -o $$@ -endef -$(foreach src, $(CPPSRC), $(eval $(call COMPILE_CPP_TEMPLATE, $(src)))) - -# Compile: create object files from C++ source files. ARM-only -define COMPILE_CPP_ARM_TEMPLATE -$(OUTDIR)/$(notdir $(basename $(1))).o : $(1) -## @echo - @echo $(MSG_COMPILINGCPP_ARM) $$< to $$@ - $(CC) -c $$(CFLAGS) $$(CPPFLAGS) $$< -o $$@ -endef -$(foreach src, $(CPPSRCARM), $(eval $(call COMPILE_CPP_ARM_TEMPLATE, $(src)))) - - -# Compile: create assembler files from C source files. ARM/Thumb -$(SRC:.c=.s) : %.s : %.c - @echo $(MSG_ASMFROMC) $< to $@ - $(CC) $(THUMB) -S $(CFLAGS) $(CONLYFLAGS) $< -o $@ - -# Compile: create assembler files from C source files. ARM only -$(SRCARM:.c=.s) : %.s : %.c - @echo $(MSG_ASMFROMC_ARM) $< to $@ - $(CC) -S $(CFLAGS) $(CONLYFLAGS) $< -o $@ - -# Generate Doxygen documents -docs: - doxygen $(DOXYGENDIR)/doxygen.cfg - -# Target: clean project. -clean: begin clean_list finished end - -clean_list : -## @echo - @echo $(MSG_CLEANING) - $(REMOVE) $(OUTDIR)/$(TARGET).map - $(REMOVE) $(OUTDIR)/$(TARGET).elf - $(REMOVE) $(OUTDIR)/$(TARGET).hex - $(REMOVE) $(OUTDIR)/$(TARGET).bin - $(REMOVE) $(OUTDIR)/$(TARGET).sym - $(REMOVE) $(OUTDIR)/$(TARGET).lss - $(REMOVE) $(wildcard $(OUTDIR)/*.c) - $(REMOVE) $(wildcard $(OUTDIR)/*.h) - $(REMOVE) $(ALLOBJ) - $(REMOVE) $(LSTFILES) - $(REMOVE) $(DEPFILES) - $(REMOVE) $(SRC:.c=.s) - $(REMOVE) $(SRCARM:.c=.s) - $(REMOVE) $(CPPSRC:.cpp=.s) - $(REMOVE) $(CPPSRCARM:.cpp=.s) - - -# Create output files directory -# all known MS Windows OS define the ComSpec environment variable -ifdef ComSpec -$(shell md $(OUTDIR) 2>NUL) -else -$(shell mkdir $(OUTDIR) 2>/dev/null) -endif - -# Include the dependency files. -ifdef ComSpec --include $(shell md $(OUTDIR)\dep 2>NUL) $(wildcard $(OUTDIR)/dep/*) -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 begin finish end sizebefore sizeafter gccversion \ -build elf hex bin lss sym clean clean_list program - diff --git a/flight/OpenPilot/Makefile.win32 b/flight/OpenPilot/Makefile.win32 deleted file mode 100644 index 261e4abfb..000000000 --- a/flight/OpenPilot/Makefile.win32 +++ /dev/null @@ -1,637 +0,0 @@ - ##### - # Project: OpenPilot - # - # - # Makefile for OpenPilot project build PiOS and the AP. - # - # The OpenPilot Team, http://www.openpilot.org, Copyright (C) 2009. - # - # - # 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 - ##### - - -# Set developer code and compile options -# Set to YES to compile for debugging -DEBUG ?= YES - -# Set to YES to use the Servo output pins for debugging via scope or logic analyser -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_BOOTLOADER ?= NO - - -# Set to YES when using Code Sourcery toolchain -CODE_SOURCERY ?= NO - -# Toolchain prefix (i.e arm-elf- -> arm-elf-gcc.exe) -TCHAIN_PREFIX ?= mingw32- - -# Remove command is different for Code Sourcery on Windows -REMOVE_CMD ?= rm - -FLASH_TOOL = OPENOCD - -# YES enables -mthumb option to flags for source-files listed -# in SRC and CPPSRC -USE_THUMB_MODE = YES - -# List of modules to include -MODULES = Telemetry Actuator Stabilization Guidance ManualControl FlightPlan -#MODULES = Telemetry GPS ManualControl Actuator Altitude Attitude Stabilization -#MODULES = Telemetry Example -#MODULES = Telemetry MK/MKSerial - -#MODULES += Osd/OsdEtStd - - -# MCU name, submodel and board -# - MCU used for compiler-option (-mtune) -# - MODEL used for linker-script name (-T) and passed as define -# - BOARD just passed as define (optional) -MCU = i686 -#CHIP = STM32F103RET -#BOARD = STM3210E_OP -ifeq ($(USE_BOOTLOADER), YES) -MODEL = HD_BL - -else -MODEL = HD_NB -endif - -# Directory for output files (lst, obj, dep, elf, sym, map, hex, bin etc.) -OUTDIR = ../../build/sitl_win32 - -# Target file name (without extension). -TARGET = OpenPilot - -# Paths -OPSYSTEM = ./System -OPSYSTEMINC = $(OPSYSTEM)/inc -OPUAVTALK = ../UAVTalk -OPUAVTALKINC = $(OPUAVTALK)/inc -OPUAVOBJ = ../UAVObjects -OPUAVOBJINC = $(OPUAVOBJ)/inc -OPTESTS = ./Tests -OPMODULEDIR = ../Modules -FLIGHTLIB = ../Libraries -FLIGHTLIBINC = ../Libraries/inc -PIOS = ../PiOS.win32 -PIOSINC = $(PIOS)/inc -PIOSWIN32 = $(PIOS)/win32 -APPLIBDIR = $(PIOSWIN32)/Libraries -RTOSDIR = $(APPLIBDIR)/FreeRTOS -RTOSSRCDIR = $(RTOSDIR)/Source -RTOSINCDIR = $(RTOSSRCDIR)/include -DOXYGENDIR = ../Doc/Doxygen -PYMITE = $(FLIGHTLIB)/PyMite -PYMITELIB = $(PYMITE)/lib -PYMITEPLAT = $(PYMITE)/platform/openpilot_sitl -PYMITETOOLS = $(PYMITE)/tools -PYMITEVM = $(PYMITE)/vm -PYMITEINC = $(PYMITEVM) -PYMITEINC += $(PYMITEPLAT) -PYMITEINC += $(OUTDIR) -FLIGHTPLANLIB = $(OPMODULEDIR)/FlightPlan/lib -FLIGHTPLANS = $(OPMODULEDIR)/FlightPlan/flightplans -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 -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) - -## MODULES -SRC += ${foreach MOD, ${MODULES}, ${wildcard ${OPMODULEDIR}/${MOD}/*.c}} -SRC += ${OUTDIR}/InitMods.c -## OPENPILOT CORE: -SRC += ${OPMODULEDIR}/System/systemmod.c -SRC += $(OPSYSTEM)/openpilot.c -SRC += $(OPSYSTEM)/pios_board_posix.c -SRC += $(OPSYSTEM)/alarms.c -SRC += $(OPSYSTEM)/taskmonitor.c -SRC += $(OPUAVTALK)/uavtalk.c -SRC += $(OPUAVOBJ)/uavobjectmanager.c -SRC += $(UAVOBJSYNTHDIR)/uavobjectsinit.c -SRC += $(OPUAVOBJ)/eventdispatcher.c -SRC += $(FLIGHTLIB)/CoordinateConversions.c - -else -## TESTCODE -SRC += $(OPTESTS)/test_common.c -SRC += $(OPTESTS)/$(TESTAPP).c -endif - - -## UAVOBJECTS -ifndef TESTAPP -#include $(UAVOBJSYNTHDIR)/Makefile.inc -include ./UAVObjects.inc -SRC += $(UAVOBJSRC) -CFLAGS_UAVOBJECTS = $(UAVOBJDEFINE) -endif - -## PIOS Hardware (win32) -SRC += $(PIOSWIN32)/pios_sys.c -SRC += $(PIOSWIN32)/pios_led.c -SRC += $(PIOSWIN32)/pios_delay.c -SRC += $(PIOSWIN32)/pios_sdcard.c -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 -SRC += $(RTOSSRCDIR)/queue.c -SRC += $(RTOSSRCDIR)/tasks.c -# -## RTOS Portable -SRC += $(RTOSSRCDIR)/portable/GCC/Win32/port.c -SRC += $(RTOSSRCDIR)/portable/MemMang/heap_3.c - - -# List C source files here which must be compiled in ARM-Mode (no -mthumb). -# use file-extension c for "c-only"-files -## just for testing, timer.c could be compiled in thumb-mode too -SRCARM = - -# List C++ source files here. -# use file-extension .cpp for C++-files (not .C) -CPPSRC = - -# List C++ source files here which must be compiled in ARM-Mode. -# use file-extension .cpp for C++-files (not .C) -#CPPSRCARM = $(TARGET).cpp -CPPSRCARM = - - -# List any extra directories to look for include files here. -# Each directory must be seperated by a space. -EXTRAINCDIRS = $(PIOSINC) -EXTRAINCDIRS += $(OPSYSTEM) -EXTRAINCDIRS += $(OPSYSTEMINC) -EXTRAINCDIRS += $(OPUAVTALK) -EXTRAINCDIRS += $(OPUAVTALKINC) -EXTRAINCDIRS += $(OPUAVOBJ) -EXTRAINCDIRS += $(OPUAVOBJINC) -EXTRAINCDIRS += $(PIOS) -EXTRAINCDIRS += $(PIOSWIN32) -EXTRAINCDIRS += $(MININIDIR) -EXTRAINCDIRS += $(RTOSINCDIR) -EXTRAINCDIRS += $(APPLIBDIR) -EXTRAINCDIRS += $(RTOSSRCDIR)/portable/GCC/Win32 -EXTRAINCDIRS += $(FLIGHTLIB) -EXTRAINCDIRS += $(FLIGHTLIBINC) -EXTRAINCDIRS += $(PYMITEINC) -EXTRAINCDIRS += $(UAVOBJSYNTHDIR) - -EXTRAINCDIRS += ${foreach MOD, ${MODULES}, ${OPMODULEDIR}/${MOD}/inc} ${OPMODULEDIR}/System/inc - - -# List any extra directories to look for library files here. -# Also add directories where the linker should search for -# includes from linker-script to the list -# Each directory must be seperated by a space. -EXTRA_LIBDIRS = - -# Extra Libraries -# Each library-name must be seperated by a space. -# i.e. to link with libxyz.a, libabc.a and libefsl.a: -# EXTRA_LIBS = xyz abc efsl -# for newlib-lpc (file: libnewlibc-lpc.a): -# EXTRA_LIBS = newlib-lpc -EXTRA_LIBS = WS2_32 Winmm - -# Path to Linker-Scripts -LINKERSCRIPTPATH = $(PIOSSTM32F10X) - -# Optimization level, can be [0, 1, 2, 3, s]. -# 0 = turn off optimization. s = optimize for size. -# (Note: 3 is not always the best optimization level. See avr-libc FAQ.) - -ifeq ($(DEBUG),YES) -OPT = 0 -else -OPT = s -endif - -# Output format. (can be ihex or binary or both) -# binary to create a load-image in raw-binary format i.e. for SAM-BA, -# ihex to create a load-image in Intel hex format -#LOADFORMAT = ihex -#LOADFORMAT = binary -LOADFORMAT = both - -# Debugging format. -#DEBUGF = dwarf-2 - -# Place project-specific -D (define) and/or -# -U options for C here. -ifeq ($(ENABLE_DEBUG_PINS), YES) -CDEFS += -DPIOS_ENABLE_DEBUG_PINS -endif -ifeq ($(ENABLE_AUX_UART), YES) -CDEFS += -DPIOS_ENABLE_AUX_UART -endif -ifeq ($(USE_BOOTLOADER), YES) -CDEFS += -DUSE_BOOTLOADER -endif - - - -# Compiler flag to set the C Standard level. -# c89 - "ANSI" C -# gnu89 - c89 plus GCC extensions -# c99 - ISO C99 standard (not yet fully implemented) -# gnu99 - c99 plus GCC extensions -CSTANDARD = -std=gnu99 - -#----- - -# Compiler flags. - -# -g*: generate debugging information -# -O*: optimization level -# -f...: tuning, see GCC manual and avr-libc documentation -# -Wall...: warning level -# -Wa,...: tell GCC to pass this to the assembler. -# -adhlns...: create assembler listing -# -# Flags for C and C++ (arm-elf-gcc/arm-elf-g++) - -ifeq ($(DEBUG),YES) -CFLAGS = -g -endif - -CFLAGS += $(CFLAGS_UAVOBJECTS) -CFLAGS += -DARCH_WIN32 -CFLAGS += -O$(OPT) -CFLAGS += -mtune=$(MCU) -CFLAGS += $(CDEFS) -CFLAGS += $(patsubst %,-I%,$(EXTRAINCDIRS)) -I. - -CFLAGS += -fomit-frame-pointer -ifeq ($(CODE_SOURCERY), YES) -CFLAGS += -fpromote-loop-indices -endif - -CFLAGS += -Wall -CFLAGS += -Werror -# Compiler flags to generate dependency files: -CFLAGS += -MD -MP -MF $(OUTDIR)/dep/$(@F).d - -# flags only for C -#CONLYFLAGS += -Wnested-externs -CONLYFLAGS += $(CSTANDARD) - -# Assembler flags. -# -Wa,...: tell GCC to pass this to the assembler. -# -ahlns: create listing -ASFLAGS = -mtune=$(MCU) -I. -x assembler-with-cpp -ASFLAGS += $(ADEFS) -ASFLAGS += -Wa,-adhlns=$(addprefix $(OUTDIR)/, $(notdir $(addsuffix .lst, $(basename $<)))) -ASFLAGS += $(patsubst %,-I%,$(EXTRAINCDIRS)) - -MATH_LIB = -lm - -# Linker flags. -# -Wl,...: tell GCC to pass this to linker. -# -Map: create map file -# --cref: add cross reference to map file -#LDFLAGS += -lpthread -LDFLAGS += $(patsubst %,-L%,$(EXTRA_LIBDIRS)) -#LDFLAGS += -lc -LDFLAGS += $(patsubst %,-l%,$(EXTRA_LIBS)) -LDFLAGS += $(MATH_LIB) -LDFLAGS += -lgcc - - - - -# Define programs and commands. -CC = $(TCHAIN_PREFIX)gcc -CPP = $(TCHAIN_PREFIX)g++ -AR = ar -OBJCOPY = objcopy -OBJDUMP = objdump -SIZE = size -NM = nm -REMOVE = $(REMOVE_CMD) -f -PYTHON = python -###SHELL = sh -###COPY = cp - - - -# Define Messages -# English -MSG_ERRORS_NONE = Errors: none -MSG_BEGIN = ${quote}-------- begin (mode: $(RUN_MODE)) --------${quote} -MSG_END = ${quote}-------- end --------${quote} -MSG_MODINIT = ${quote}**** Generating ModInit.c${quote} -MSG_SIZE_BEFORE = ${quote}Size before:${quote} -MSG_SIZE_AFTER = ${quote}Size after build:${quote} -MSG_LOAD_FILE = ${quote}Creating load file:${quote} -MSG_EXTENDED_LISTING = ${quote}Creating Extended Listing/Disassembly:${quote} -MSG_SYMBOL_TABLE = ${quote}Creating Symbol Table:${quote} -MSG_LINKING = ${quote}**** Linking :${quote} -MSG_COMPILING = ${quote}**** Compiling C :${quote} -MSG_COMPILING_ARM = ${quote}**** Compiling C (ARM-only):${quote} -MSG_COMPILINGCPP = ${quote}Compiling C++ :${quote} -MSG_COMPILINGCPP_ARM = ${quote}Compiling C++ (ARM-only):${quote} -MSG_ASSEMBLING = ${quote}**** Assembling:${quote} -MSG_ASSEMBLING_ARM = ${quote}****Assembling (ARM-only):${quote} -MSG_CLEANING = ${quote}Cleaning project:${quote} -MSG_FORMATERROR = ${quote}Can not handle output-format${quote} -MSG_ASMFROMC = ${quote}Creating asm-File from C-Source:${quote} -MSG_ASMFROMC_ARM = ${quote}Creating asm-File from C-Source (ARM-only):${quote} -MSG_PYMITEINIT = ${quote}**** Generating PyMite intermediate code${quote} - -# List of all source files. -ALLSRC = $(ASRCARM) $(ASRC) $(SRCARM) $(SRC) $(CPPSRCARM) $(CPPSRC) -# List of all source files without directory and file-extension. -ALLSRCBASE = $(notdir $(basename $(ALLSRC))) - -# Define all object files. -ALLOBJ = $(addprefix $(OUTDIR)/, $(addsuffix .o, $(ALLSRCBASE))) - -# Define all listing files (used for make clean). -LSTFILES = $(addprefix $(OUTDIR)/, $(addsuffix .lst, $(ALLSRCBASE))) -# Define all depedency-files (used for make clean). -DEPFILES = $(addprefix $(OUTDIR)/dep/, $(addsuffix .o.d, $(ALLSRCBASE))) - -elf: $(OUTDIR)/$(TARGET).elf -lss: $(OUTDIR)/$(TARGET).lss -sym: $(OUTDIR)/$(TARGET).sym -hex: $(OUTDIR)/$(TARGET).hex -bin: $(OUTDIR)/$(TARGET).bin -exe: $(OUTDIR)/$(TARGET).exe - -# Default target. -#all: begin gccversion sizebefore build sizeafter finished end -#all: begin gccversion build sizeafter finished end -#all: elf -all: gencode exe - -ifeq ($(LOADFORMAT),ihex) -build: elf hex lss sym -else -ifeq ($(LOADFORMAT),binary) -build: elf bin lss sym -else -ifeq ($(LOADFORMAT),both) -build: elf hex bin lss sym -else -$(error "$(MSG_FORMATERROR) $(FORMAT)") -endif -endif -endif - -# Test if quotes are needed for the echo-command -result = ${shell echo "test"} -ifeq (${result}, test) - quote = ' -else - quote = -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 - -${OUTDIR}/InitMods.c: Makefile.win32 - @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}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 $(OPMODULEDIR)/FlightPlan/flightplan.c: $(wildcard $(PYMITELIB)/*.py) $(wildcard $(PYMITEPLAT)/*.py) $(wildcard $(FLIGHTPLANLIB)/*.py) $(wildcard $(FLIGHTPLANS)/*.py) - @echo ${MSG_PYMITEINIT} - @$(PYTHON) $(PYMITETOOLS)/pmImgCreator.py -f $(PYMITEPLAT)/pmfeatures.py -c -s --memspace=flash -o $(OUTDIR)/pmlib_img.c --native-file=$(OUTDIR)/pmlib_nat.c $(PYMITELIB)/list.py $(PYMITELIB)/dict.py $(PYMITELIB)/__bi.py $(PYMITELIB)/sys.py $(PYMITELIB)/string.py $(wildcard $(FLIGHTPLANLIB)/*.py) - @$(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 - -# Eye candy. -begin: -## @echo - @echo $(MSG_BEGIN) - -finished: -## @echo $(MSG_ERRORS_NONE) - -end: - @echo $(MSG_END) -## @echo - -# Display sizes of sections. -ELFSIZE = $(SIZE) -A $(OUTDIR)/$(TARGET).elf -##ELFSIZE = $(SIZE) --format=Berkeley --common $(OUTDIR)/$(TARGET).elf -sizebefore: -# @if [ -f $(OUTDIR)/$(TARGET).elf ]; then echo; echo $(MSG_SIZE_BEFORE); $(ELFSIZE); echo; fi - -sizeafter: -# @if [ -f $(OUTDIR)/$(TARGET).elf ]; then echo; echo $(MSG_SIZE_AFTER); $(ELFSIZE); echo; fi - @echo $(MSG_SIZE_AFTER) - $(ELFSIZE) - -# Display compiler version information. -gccversion : - @$(CC) --version -# @echo $(ALLOBJ) - -# 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).elf - @echo ${quote}Programming with OPENOCD${quote} - $(OOCD_EXE) $(OOCD_CL) -endif - -# Create final output file (.hex) from ELF output file. -%.hex: %.elf -## @echo - @echo $(MSG_LOAD_FILE) $@ - $(OBJCOPY) -O ihex $< $@ - -# Create final output file (.bin) from ELF output file. -%.bin: %.elf -## @echo - @echo $(MSG_LOAD_FILE) $@ - $(OBJCOPY) -O binary $< $@ - -# Create extended listing file/disassambly from ELF output file. -# using objdump testing: option -C -%.lss: %.elf -## @echo - @echo $(MSG_EXTENDED_LISTING) $@ - $(OBJDUMP) -h -S -C -r $< > $@ -# $(OBJDUMP) -x -S $< > $@ - -# Create a symbol table from ELF output file. -%.sym: %.elf -## @echo - @echo $(MSG_SYMBOL_TABLE) $@ - $(NM) -n $< > $@ - -# Link: create ELF output file from object files. -.SECONDARY : $(TARGET).elf -.PRECIOUS : $(ALLOBJ) -%.elf: $(ALLOBJ) - @echo $(MSG_LINKING) $@ -# use $(CC) for C-only projects or $(CPP) for C++-projects: - $(CC) $(THUMB) $(CFLAGS) $(ALLOBJ) --output $@ $(LDFLAGS) -# $(CPP) $(THUMB) $(CFLAGS) $(ALLOBJ) --output $@ $(LDFLAGS) - -# Link: create EXE output file from object files. -.SECONDARY : $(TARGET).exe -.PRECIOUS : $(ALLOBJ) -%.exe: $(ALLOBJ) - @echo $(MSG_LINKING) $@ -# use $(CC) for C-only projects or $(CPP) for C++-projects: - $(CC) $(THUMB) $(CFLAGS) $(ALLOBJ) --output $@ $(LDFLAGS) -# $(CPP) $(THUMB) $(CFLAGS) $(ALLOBJ) --output $@ $(LDFLAGS) - -# Assemble: create object files from assembler source files. -define ASSEMBLE_TEMPLATE -$(OUTDIR)/$(notdir $(basename $(1))).o : $(1) -## @echo - @echo $(MSG_ASSEMBLING) $$< to $$@ - $(CC) -c $(THUMB) $$(ASFLAGS) $$< -o $$@ -endef -$(foreach src, $(ASRC), $(eval $(call ASSEMBLE_TEMPLATE, $(src)))) - -# Assemble: create object files from assembler source files. ARM-only -define ASSEMBLE_ARM_TEMPLATE -$(OUTDIR)/$(notdir $(basename $(1))).o : $(1) -## @echo - @echo $(MSG_ASSEMBLING_ARM) $$< to $$@ - $(CC) -c $$(ASFLAGS) $$< -o $$@ -endef -$(foreach src, $(ASRCARM), $(eval $(call ASSEMBLE_ARM_TEMPLATE, $(src)))) - - -# Compile: create object files from C source files. -define COMPILE_C_TEMPLATE -$(OUTDIR)/$(notdir $(basename $(1))).o : $(1) -## @echo - @echo $(MSG_COMPILING) $$< to $$@ - $(CC) -c $(THUMB) $$(CFLAGS) $$(CONLYFLAGS) $$< -o $$@ -endef -$(foreach src, $(SRC), $(eval $(call COMPILE_C_TEMPLATE, $(src)))) - -# Compile: create object files from C source files. ARM-only -define COMPILE_C_ARM_TEMPLATE -$(OUTDIR)/$(notdir $(basename $(1))).o : $(1) -## @echo - @echo $(MSG_COMPILING_ARM) $$< to $$@ - $(CC) -c $$(CFLAGS) $$(CONLYFLAGS) $$< -o $$@ -endef -$(foreach src, $(SRCARM), $(eval $(call COMPILE_C_ARM_TEMPLATE, $(src)))) - - -# Compile: create object files from C++ source files. -define COMPILE_CPP_TEMPLATE -$(OUTDIR)/$(notdir $(basename $(1))).o : $(1) -## @echo - @echo $(MSG_COMPILINGCPP) $$< to $$@ - $(CC) -c $(THUMB) $$(CFLAGS) $$(CPPFLAGS) $$< -o $$@ -endef -$(foreach src, $(CPPSRC), $(eval $(call COMPILE_CPP_TEMPLATE, $(src)))) - -# Compile: create object files from C++ source files. ARM-only -define COMPILE_CPP_ARM_TEMPLATE -$(OUTDIR)/$(notdir $(basename $(1))).o : $(1) -## @echo - @echo $(MSG_COMPILINGCPP_ARM) $$< to $$@ - $(CC) -c $$(CFLAGS) $$(CPPFLAGS) $$< -o $$@ -endef -$(foreach src, $(CPPSRCARM), $(eval $(call COMPILE_CPP_ARM_TEMPLATE, $(src)))) - - -# Compile: create assembler files from C source files. ARM/Thumb -$(SRC:.c=.s) : %.s : %.c - @echo $(MSG_ASMFROMC) $< to $@ - $(CC) $(THUMB) -S $(CFLAGS) $(CONLYFLAGS) $< -o $@ - -# Compile: create assembler files from C source files. ARM only -$(SRCARM:.c=.s) : %.s : %.c - @echo $(MSG_ASMFROMC_ARM) $< to $@ - $(CC) -S $(CFLAGS) $(CONLYFLAGS) $< -o $@ - -# Generate Doxygen documents -docs: - doxygen $(DOXYGENDIR)/doxygen.cfg - -# Target: clean project. -clean: begin clean_list finished end - -clean_list : -## @echo - @echo $(MSG_CLEANING) - $(REMOVE) $(OUTDIR)/$(TARGET).map - $(REMOVE) $(OUTDIR)/$(TARGET).elf - $(REMOVE) $(OUTDIR)/$(TARGET).hex - $(REMOVE) $(OUTDIR)/$(TARGET).bin - $(REMOVE) $(OUTDIR)/$(TARGET).sym - $(REMOVE) $(OUTDIR)/$(TARGET).lss - $(REMOVE) $(OUTDIR)/$(TARGET).exe - $(REMOVE) $(ALLOBJ) - $(REMOVE) $(LSTFILES) - $(REMOVE) $(DEPFILES) - $(REMOVE) $(SRC:.c=.s) - $(REMOVE) $(SRCARM:.c=.s) - $(REMOVE) $(CPPSRC:.cpp=.s) - $(REMOVE) $(CPPSRCARM:.cpp=.s) - - -# Create output files directory -# all known MS Windows OS define the ComSpec environment variable -ifdef ComSpec -$(shell md $(OUTDIR) 2>NUL) -else -$(shell mkdir $(OUTDIR) 2>/dev/null) -endif - -# Include the dependency files. -ifdef ComSpec --include $(shell md $(OUTDIR)\dep 2>NUL) $(wildcard $(OUTDIR)/dep/*) -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 begin gencode finish end sizebefore sizeafter gccversion \ -build exe elf hex bin lss sym clean clean_list program - diff --git a/flight/OpenPilot/System/alarms.c b/flight/OpenPilot/System/alarms.c deleted file mode 100644 index e61c7c1ea..000000000 --- a/flight/OpenPilot/System/alarms.c +++ /dev/null @@ -1,210 +0,0 @@ -/** - ****************************************************************************** - * @addtogroup OpenPilotSystem OpenPilot System - * @{ - * @addtogroup OpenPilotLibraries OpenPilot System Libraries - * @brief OpenPilot System libraries are available to all OP modules. - * @{ - * @file alarms.c - * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010. - * @brief Library for setting and clearing system alarms - * @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 - */ - -#include "openpilot.h" -#include "alarms.h" - -// Private constants - -// Private types - -// Private variables -static xSemaphoreHandle lock; - -// Private functions -static int32_t hasSeverity(SystemAlarmsAlarmOptions severity); - -/** - * Initialize the alarms library - */ -int32_t AlarmsInitialize(void) -{ - SystemAlarmsInitialize(); - lock = xSemaphoreCreateRecursiveMutex(); - return 0; -} - -/** - * Set an alarm - * @param alarm The system alarm to be modified - * @param severity The alarm severity - * @return 0 if success, -1 if an error - */ -int32_t AlarmsSet(SystemAlarmsAlarmElem alarm, SystemAlarmsAlarmOptions severity) -{ - SystemAlarmsData alarms; - - // Check that this is a valid alarm - if (alarm >= SYSTEMALARMS_ALARM_NUMELEM) - { - return -1; - } - - // Lock - xSemaphoreTakeRecursive(lock, portMAX_DELAY); - - // Read alarm and update its severity only if it was changed - SystemAlarmsGet(&alarms); - if ( alarms.Alarm[alarm] != severity ) - { - alarms.Alarm[alarm] = severity; - SystemAlarmsSet(&alarms); - } - - // Release lock - xSemaphoreGiveRecursive(lock); - return 0; - -} - -/** - * Get an alarm - * @param alarm The system alarm to be read - * @return Alarm severity - */ -SystemAlarmsAlarmOptions AlarmsGet(SystemAlarmsAlarmElem alarm) -{ - SystemAlarmsData alarms; - - // Check that this is a valid alarm - if (alarm >= SYSTEMALARMS_ALARM_NUMELEM) - { - return 0; - } - - // Read alarm - SystemAlarmsGet(&alarms); - return alarms.Alarm[alarm]; -} - -/** - * Set an alarm to it's default value - * @param alarm The system alarm to be modified - * @return 0 if success, -1 if an error - */ -int32_t AlarmsDefault(SystemAlarmsAlarmElem alarm) -{ - return AlarmsSet(alarm, SYSTEMALARMS_ALARM_DEFAULT); -} - -/** - * Default all alarms - */ -void AlarmsDefaultAll() -{ - uint32_t n; - for (n = 0; n < SYSTEMALARMS_ALARM_NUMELEM; ++n) - { - AlarmsDefault(n); - } -} - -/** - * Clear an alarm - * @param alarm The system alarm to be modified - * @return 0 if success, -1 if an error - */ -int32_t AlarmsClear(SystemAlarmsAlarmElem alarm) -{ - return AlarmsSet(alarm, SYSTEMALARMS_ALARM_OK); -} - -/** - * Clear all alarms - */ -void AlarmsClearAll() -{ - uint32_t n; - for (n = 0; n < SYSTEMALARMS_ALARM_NUMELEM; ++n) - { - AlarmsClear(n); - } -} - -/** - * Check if there are any alarms with the given or higher severity - * @return 0 if no alarms are found, 1 if at least one alarm is found - */ -int32_t AlarmsHasWarnings() -{ - return hasSeverity(SYSTEMALARMS_ALARM_WARNING); -} - -/** - * Check if there are any alarms with error or higher severity - * @return 0 if no alarms are found, 1 if at least one alarm is found - */ -int32_t AlarmsHasErrors() -{ - return hasSeverity(SYSTEMALARMS_ALARM_ERROR); -}; - -/** - * Check if there are any alarms with critical or higher severity - * @return 0 if no alarms are found, 1 if at least one alarm is found - */ -int32_t AlarmsHasCritical() -{ - return hasSeverity(SYSTEMALARMS_ALARM_CRITICAL); -}; - -/** - * Check if there are any alarms with the given or higher severity - * @return 0 if no alarms are found, 1 if at least one alarm is found - */ -static int32_t hasSeverity(SystemAlarmsAlarmOptions severity) -{ - SystemAlarmsData alarms; - uint32_t n; - - // Lock - xSemaphoreTakeRecursive(lock, portMAX_DELAY); - - // Read alarms - SystemAlarmsGet(&alarms); - - // Go through alarms and check if any are of the given severity or higher - for (n = 0; n < SYSTEMALARMS_ALARM_NUMELEM; ++n) - { - if ( alarms.Alarm[n] >= severity) - { - xSemaphoreGiveRecursive(lock); - return 1; - } - } - - // If this point is reached then no alarms found - xSemaphoreGiveRecursive(lock); - return 0; -} -/** - * @} - * @} - */ - diff --git a/flight/OpenPilot/System/inc/FreeRTOSConfig.h b/flight/OpenPilot/System/inc/FreeRTOSConfig.h deleted file mode 100644 index 4b37f7e44..000000000 --- a/flight/OpenPilot/System/inc/FreeRTOSConfig.h +++ /dev/null @@ -1,99 +0,0 @@ - -#ifndef FREERTOS_CONFIG_H -#define FREERTOS_CONFIG_H - -/*----------------------------------------------------------- - * Application specific definitions. - * - * These definitions should be adjusted for your particular hardware and - * application requirements. - * - * THESE PARAMETERS ARE DESCRIBED WITHIN THE 'CONFIGURATION' SECTION OF THE - * FreeRTOS API DOCUMENTATION AVAILABLE ON THE FreeRTOS.org WEB SITE. - * - * See http://www.freertos.org/a00110.html. - *----------------------------------------------------------*/ - -/** - * @addtogroup PIOS PIOS - * @{ - * @addtogroup FreeRTOS FreeRTOS - * @{ - */ - -/* Notes: We use 5 task priorities */ - -#define configUSE_PREEMPTION 1 -#define configUSE_IDLE_HOOK 1 -#define configUSE_TICK_HOOK 0 -#define configUSE_MALLOC_FAILED_HOOK 1 -#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 ) 256 ) -#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 41 * 1024 ) ) -#define configMAX_TASK_NAME_LEN ( 16 ) -#define configUSE_TRACE_FACILITY 0 -#define configUSE_16_BIT_TICKS 0 -#define configIDLE_SHOULD_YIELD 0 -#define configUSE_MUTEXES 1 -#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. */ -#define configUSE_CO_ROUTINES 0 -#define configMAX_CO_ROUTINE_PRIORITIES ( 2 ) - -/* Set the following definitions to 1 to include the API function, or zero -to exclude the API function. */ - -#define INCLUDE_vTaskPrioritySet 1 -#define INCLUDE_uxTaskPriorityGet 1 -#define INCLUDE_vTaskDelete 1 -#define INCLUDE_vTaskCleanUpResources 0 -#define INCLUDE_vTaskSuspend 1 -#define INCLUDE_vTaskDelayUntil 1 -#define INCLUDE_vTaskDelay 1 -#define INCLUDE_xTaskGetSchedulerState 1 -#define INCLUDE_xTaskGetCurrentTaskHandle 1 -#define INCLUDE_uxTaskGetStackHighWaterMark 1 - -/* This is the raw value as per the Cortex-M3 NVIC. Values can be 255 -(lowest) to 1 (highest maskable) to 0 (highest non-maskable). */ -#define configKERNEL_INTERRUPT_PRIORITY 15 << 4 /* equivalent to NVIC priority 15 */ -#define configMAX_SYSCALL_INTERRUPT_PRIORITY 3 << 4 /* equivalent to NVIC priority 3 */ - -/* This is the value being used as per the ST library which permits 16 -priority values, 0 to 15. This must correspond to the -configKERNEL_INTERRUPT_PRIORITY setting. Here 15 corresponds to the lowest -NVIC value of 255. */ -#define configLIBRARY_KERNEL_INTERRUPT_PRIORITY 15 - -/* 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 - -#if !defined(ARCH_POSIX) && !defined(ARCH_WIN32) -#define CHECK_IRQ_STACK -#endif - -/** - * @} - */ - -#endif /* FREERTOS_CONFIG_H */ diff --git a/flight/OpenPilot/System/inc/alarms.h b/flight/OpenPilot/System/inc/alarms.h deleted file mode 100644 index 9fb047dca..000000000 --- a/flight/OpenPilot/System/inc/alarms.h +++ /dev/null @@ -1,50 +0,0 @@ -/** - ****************************************************************************** - * @addtogroup OpenPilotSystem OpenPilot System - * @{ - * @addtogroup OpenPilotLibraries OpenPilot System Libraries - * @{ - * @file alarms.h - * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010. - * @brief Include file of the alarm library - * @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 - */ -#ifndef ALARMS_H -#define ALARMS_H - -#include "systemalarms.h" -#define SYSTEMALARMS_ALARM_DEFAULT SYSTEMALARMS_ALARM_UNINITIALISED - -int32_t AlarmsInitialize(void); -int32_t AlarmsSet(SystemAlarmsAlarmElem alarm, SystemAlarmsAlarmOptions severity); -SystemAlarmsAlarmOptions AlarmsGet(SystemAlarmsAlarmElem alarm); -int32_t AlarmsDefault(SystemAlarmsAlarmElem alarm); -void AlarmsDefaultAll(); -int32_t AlarmsClear(SystemAlarmsAlarmElem alarm); -void AlarmsClearAll(); -int32_t AlarmsHasWarnings(); -int32_t AlarmsHasErrors(); -int32_t AlarmsHasCritical(); - -#endif // ALARMS_H - -/** - * @} - * @} - */ diff --git a/flight/OpenPilot/System/inc/op_config.h b/flight/OpenPilot/System/inc/op_config.h deleted file mode 100644 index 97910f392..000000000 --- a/flight/OpenPilot/System/inc/op_config.h +++ /dev/null @@ -1,39 +0,0 @@ -/** - ****************************************************************************** - * @addtogroup OpenPilotSystem OpenPilot System - * @{ - * @addtogroup OpenPilotCore OpenPilot Core - * @{ - * - * @file op_config.h - * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010. - * @brief OpenPilot configuration header. - * Compile time config for OpenPilot Application - * @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 - */ - - -#ifndef OP_CONFIG_H -#define OP_CONFIG_H - -#endif /* OP_CONFIG_H */ -/** - * @} - * @} - */ diff --git a/flight/OpenPilot/System/inc/openpilot.h b/flight/OpenPilot/System/inc/openpilot.h deleted file mode 100644 index 59ae76fd4..000000000 --- a/flight/OpenPilot/System/inc/openpilot.h +++ /dev/null @@ -1,53 +0,0 @@ -/** - ****************************************************************************** - * @addtogroup OpenPilotSystem OpenPilot System - * @{ - * @addtogroup OpenPilotCore OpenPilot Core - * @{ - * @file openpilot.h - * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010. - * @brief Main OpenPilot header. - * @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 - */ - - -#ifndef OPENPILOT_H -#define OPENPILOT_H - - -/* PIOS Includes */ -#include - -/* OpenPilot Libraries */ -#include "op_config.h" -#include "utlist.h" -#include "uavobjectmanager.h" -#include "eventdispatcher.h" -#include "alarms.h" -#include "taskmonitor.h" -#include "uavtalk.h" - -/* Global Functions */ -void OpenPilotInit(void); - -#endif /* OPENPILOT_H */ -/** - * @} - * @} - */ diff --git a/flight/OpenPilot/System/inc/pios_board_posix.h b/flight/OpenPilot/System/inc/pios_board_posix.h deleted file mode 100644 index fe6f6ba51..000000000 --- a/flight/OpenPilot/System/inc/pios_board_posix.h +++ /dev/null @@ -1,91 +0,0 @@ -/** - ****************************************************************************** - * - * @file pios_board.h - * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010. - * @brief Defines board hardware for the OpenPilot Version 1.1 hardware. - * @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 - */ - - -#ifndef PIOS_BOARD_H -#define PIOS_BOARD_H - - - - -//------------------------ -// PIOS_LED -//------------------------ -//#define PIOS_LED_LED1_GPIO_PORT GPIOC -//#define PIOS_LED_LED1_GPIO_PIN GPIO_Pin_12 -//#define PIOS_LED_LED1_GPIO_CLK RCC_APB2Periph_GPIOC -//#define PIOS_LED_LED2_GPIO_PORT GPIOC -//#define PIOS_LED_LED2_GPIO_PIN GPIO_Pin_13 -//#define PIOS_LED_LED2_GPIO_CLK RCC_APB2Periph_GPIOC -#define PIOS_LED_NUM 2 -//#define PIOS_LED_PORTS { PIOS_LED_LED1_GPIO_PORT, PIOS_LED_LED2_GPIO_PORT } -//#define PIOS_LED_PINS { PIOS_LED_LED1_GPIO_PIN, PIOS_LED_LED2_GPIO_PIN } -//#define PIOS_LED_CLKS { PIOS_LED_LED1_GPIO_CLK, PIOS_LED_LED2_GPIO_CLK } - - -//------------------------- -// COM -// -// See also pios_board_posix.c -//------------------------- -//#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 - -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 (pios_com_aux_id) -#define PIOS_COM_DEBUG (PIOS_COM_AUX -#endif - -/** - * glue macros for file IO - * STM32 uses DOSFS for file IO - */ -#define PIOS_FOPEN_READ(filename,file) (file=fopen((char*)filename,"r"))==NULL - -#define PIOS_FOPEN_WRITE(filename,file) (file=fopen((char*)filename,"w"))==NULL - -#define PIOS_FREAD(file,bufferadr,length,resultadr) (*resultadr=fread((uint8_t*)bufferadr,1,length,*file)) != length - -#define PIOS_FWRITE(file,bufferadr,length,resultadr) *resultadr=fwrite((uint8_t*)bufferadr,1,length,*file) - - - -#define PIOS_FCLOSE(file) fclose(file) - -#define PIOS_FUNLINK(file) unlink((char*)filename) - -#endif /* PIOS_BOARD_H */ diff --git a/flight/OpenPilot/System/inc/pios_config.h b/flight/OpenPilot/System/inc/pios_config.h deleted file mode 100644 index b676ec291..000000000 --- a/flight/OpenPilot/System/inc/pios_config.h +++ /dev/null @@ -1,106 +0,0 @@ -/** - ****************************************************************************** - * @addtogroup OpenPilotSystem OpenPilot System - * @{ - * @addtogroup OpenPilotCore OpenPilot Core - * @{ - * - * @file pios_config.h - * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010. - * @brief PiOS configuration header. - * Central compile time config for the project. - * In particular, pios_config.h is where you define which PiOS libraries - * and features are included in the firmware. - * @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 - */ - - -#ifndef PIOS_CONFIG_H -#define PIOS_CONFIG_H - - -/* Enable/Disable PiOS Modules */ -#define PIOS_INCLUDE_ADC -#define PIOS_INCLUDE_DELAY -#define PIOS_INCLUDE_I2C -#define PIOS_INCLUDE_IRQ -#define PIOS_INCLUDE_LED -#define PIOS_INCLUDE_IAP -#define PIOS_INCLUDE_TIM - -#define PIOS_INCLUDE_RCVR - -#define PIOS_INCLUDE_DSM -//#define PIOS_INCLUDE_SBUS -#define PIOS_INCLUDE_PWM -#define PIOS_INCLUDE_PPM - -#define PIOS_INCLUDE_TELEMETRY_RF - -#define PIOS_INCLUDE_SERVO -#define PIOS_INCLUDE_SPI -#define PIOS_INCLUDE_SYS -#define PIOS_INCLUDE_USART -#define PIOS_INCLUDE_USB -#define PIOS_INCLUDE_USB_HID -#define PIOS_INCLUDE_USB_CDC -#define PIOS_INCLUDE_BMP085 -//#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 -#define PIOS_INCLUDE_GPIO -#define PIOS_INCLUDE_EXTI -#define PIOS_INCLUDE_RTC -#define PIOS_INCLUDE_WDG -#define PIOS_INCLUDE_I2C_ESC -#define PIOS_INCLUDE_BL_HELPER - -/* Defaults for Logging */ -#define LOG_FILENAME "PIOS.LOG" -#define STARTUP_LOG_ENABLED 1 - -/* Enable a priority queue in telemetry */ -#define PIOS_TELEM_PRIORITY_QUEUE - -/* 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 - -/* Stabilization options */ -#define PIOS_QUATERNION_STABILIZATION - -/* GPS options */ -#define PIOS_GPS_SETS_HOMELOCATION - -/* PIOS Initcall infrastructure */ -#define PIOS_INCLUDE_INITCALL - -#endif /* PIOS_CONFIG_H */ -/** - * @} - * @} - */ diff --git a/flight/OpenPilot/System/inc/pios_config_posix.h b/flight/OpenPilot/System/inc/pios_config_posix.h deleted file mode 100644 index 1148a497c..000000000 --- a/flight/OpenPilot/System/inc/pios_config_posix.h +++ /dev/null @@ -1,78 +0,0 @@ -/** - ****************************************************************************** - * - * @file pios_config.h - * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010. - * @brief PiOS configuration header. - * Central compile time config for the project. - * @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 - */ - - -#ifndef PIOS_CONFIG_POSIX_H -#define PIOS_CONFIG_POSIX_H - - -/* Enable/Disable PiOS Modules */ -#define PIOS_INCLUDE_SYS -#define PIOS_INCLUDE_DELAY -#define PIOS_INCLUDE_LED -#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" -#define STARTUP_LOG_ENABLED 1 - -#define TELEM_QUEUE_SIZE 20 -#define PIOS_TELEM_STACK_SIZE 2048 - -/* 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 - -/* Stabilization options */ -#define PIOS_QUATERNION_STABILIZATION - -/* 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 - -/* GPS options */ -#define PIOS_GPS_SETS_HOMELOCATION - -#endif /* PIOS_CONFIG_POSIX_H */ diff --git a/flight/OpenPilot/System/inc/pios_usb_board_data.h b/flight/OpenPilot/System/inc/pios_usb_board_data.h deleted file mode 100644 index 08fc3423b..000000000 --- a/flight/OpenPilot/System/inc/pios_usb_board_data.h +++ /dev/null @@ -1,45 +0,0 @@ -/** - ****************************************************************************** - * @addtogroup PIOS PIOS Core hardware abstraction layer - * @{ - * @addtogroup PIOS_USB_BOARD Board specific USB definitions - * @brief Board specific USB definitions - * @{ - * - * @file pios_usb_board_data.h - * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010. - * @brief Board specific USB definitions - * @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 - */ - -#ifndef PIOS_USB_BOARD_DATA_H -#define PIOS_USB_BOARD_DATA_H - -#define PIOS_USB_BOARD_CDC_DATA_LENGTH 64 -#define PIOS_USB_BOARD_CDC_MGMT_LENGTH 32 -#define PIOS_USB_BOARD_HID_DATA_LENGTH 64 - -#define PIOS_USB_BOARD_EP_NUM 4 - -#include "pios_usb_defs.h" /* struct usb_* */ - -#define PIOS_USB_BOARD_PRODUCT_ID USB_PRODUCT_ID_OPENPILOT_MAIN -#define PIOS_USB_BOARD_DEVICE_VER USB_OP_DEVICE_VER(USB_OP_BOARD_ID_OPENPILOT_MAIN, USB_OP_BOARD_MODE_FW) - -#endif /* PIOS_USB_BOARD_DATA_H */ diff --git a/flight/OpenPilot/System/openpilot.c b/flight/OpenPilot/System/openpilot.c deleted file mode 100644 index affe65926..000000000 --- a/flight/OpenPilot/System/openpilot.c +++ /dev/null @@ -1,338 +0,0 @@ -/** - ****************************************************************************** - * @addtogroup OpenPilotSystem OpenPilot System - * @brief These files are the core system files of OpenPilot. - * They are the ground layer just above PiOS. In practice, OpenPilot actually starts - * in the main() function of openpilot.c - * @{ - * @addtogroup OpenPilotCore OpenPilot Core - * @brief This is where the OP firmware starts. Those files also define the compile-time - * options of the firmware. - * @{ - * @file openpilot.c - * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010. - * @brief Sets up and runs main OpenPilot tasks. - * @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 - */ - - -/* OpenPilot Includes */ -#include "openpilot.h" -#include "uavobjectsinit.h" -#include "systemmod.h" - -/* Task Priorities */ -#define PRIORITY_TASK_HOOKS (tskIDLE_PRIORITY + 3) - -/* Global Variables */ - -/* Local Variables */ -#define INCLUDE_TEST_TASKS 0 -#if INCLUDE_TEST_TASKS -static uint8_t sdcard_available; -#endif -FILEINFO File; -char Buffer[1024]; -uint32_t Cache; - -/* Function Prototypes */ -#if INCLUDE_TEST_TASKS -static void TaskTick(void *pvParameters); -static void TaskTesting(void *pvParameters); -static void TaskHIDTest(void *pvParameters); -static void TaskServos(void *pvParameters); -static void TaskSDCard(void *pvParameters); -#endif -int32_t CONSOLE_Parse(uint8_t port, char c); -void OP_ADC_NotifyChange(uint32_t pin, uint32_t pin_value); - -/* 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: -* -* Initialize PiOS
-* Create the "System" task (SystemModInitializein Modules/System/systemmod.c)
-* Start FreeRTOS Scheduler (vTaskStartScheduler)
-* If something goes wrong, blink LED1 and LED2 every 100ms -* -*/ -int main() -{ - /* NOTE: Do NOT modify the following start-up sequence */ - /* Any new initialization functions should be added in OpenPilotInit() */ - - /* Brings up System using CMSIS functions, enables the LEDs. */ - PIOS_SYS_Init(); - - /* Architecture dependant Hardware and - * core subsystem initialisation - * (see pios_board.c for your arch) - * */ - PIOS_Board_Init(); - - /* Initialize modules */ - 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); -#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 */ - while (1) { -#if defined(PIOS_LED_HEARTBEAT) - PIOS_LED_Toggle(PIOS_LED_HEARTBEAT); -#endif /* PIOS_LED_HEARTBEAT */ - PIOS_DELAY_WaitmS(100); - } -} - - -#if INCLUDE_TEST_TASKS -static void TaskTesting(void *pvParameters) -{ - portTickType xDelay = 250 / portTICK_RATE_MS; - portTickType xTimeout = 10 / portTICK_RATE_MS; - - //PIOS_BMP085_Init(); - - for(;;) - { - /* This blocks the task until the BMP085 EOC */ - /* - PIOS_BMP085_StartADC(TemperatureConv); - xSemaphoreTake(PIOS_BMP085_EOC, xTimeout); - PIOS_BMP085_ReadADC(); - PIOS_COM_SendFormattedStringNonBlocking(COM_DEBUG_USART, "%u\r", PIOS_BMP085_GetTemperature()); - - PIOS_BMP085_StartADC(PressureConv); - xSemaphoreTake(PIOS_BMP085_EOC, xTimeout); - PIOS_BMP085_ReadADC(); - PIOS_COM_SendFormattedStringNonBlocking(COM_DEBUG_USART, "%u\r", PIOS_BMP085_GetPressure()); - */ - -#if defined(PIOS_INCLUDE_DSM) - PIOS_COM_SendFormattedStringNonBlocking(COM_DEBUG_USART, "%u,%u,%u,%u,%u,%u,%u,%u\r", PIOS_DSM_Get(0), PIOS_DSM_Get(1), PIOS_DSM_Get(2), PIOS_DSM_Get(3), PIOS_DSM_Get(4), PIOS_DSM_Get(5), PIOS_DSM_Get(6), PIOS_DSM_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 -#if defined(PIOS_INCLUDE_PPM) - PIOS_COM_SendFormattedStringNonBlocking(COM_DEBUG_USART, "%u,%u,%u,%u,%u,%u,%u,%u uS\r", PIOS_PPM_Get(0), PIOS_PPM_Get(1), PIOS_PPM_Get(2), PIOS_PPM_Get(3), PIOS_PPM_Get(4), PIOS_PPM_Get(5), PIOS_PPM_Get(6), PIOS_PPM_Get(7)); -#endif - - /* This blocks the task until there is something on the buffer */ - /*xSemaphoreTake(PIOS_USART1_Buffer, portMAX_DELAY); - int32_t len = PIOS_COM_ReceiveBufferUsed(COM_USART1); - for(int32_t i = 0; i < len; i++) { - PIOS_COM_SendFormattedString(COM_DEBUG_USART, ">%c\r", PIOS_COM_ReceiveBuffer(COM_USART1)); - }*/ - - //int32_t state = PIOS_USB_CableConnected(); - //PIOS_COM_SendFormattedStringNonBlocking(COM_DEBUG_USART, "State: %d\r", state); - - //PIOS_I2C_Transfer(I2C_Write_WithoutStop, 0x57, (uint8_t *)50, 1); - - /* Test ADC pins */ - //temp = ((1.43 - ((Vsense / 4096) * 3.3)) / 4.3) + 25; - //uint32_t vsense = PIOS_ADC_PinGet(0); - //uint32_t Temp = (1.42 - vsense * 3.3 / 4096) * 1000 / 4.35 + 25; - //PIOS_COM_SendFormattedString(COM_DEBUG_USART, "Temp: %d, CS_I: %d, CS_V: %d, 5v: %d\r", PIOS_ADC_PinGet(0), PIOS_ADC_PinGet(1), PIOS_ADC_PinGet(2), PIOS_ADC_PinGet(3)); - //PIOS_COM_SendFormattedString(COM_DEBUG_USART, "AUX1: %d, AUX2: %d, AUX3: %d\r", PIOS_ADC_PinGet(4), PIOS_ADC_PinGet(5), PIOS_ADC_PinGet(6)); - - vTaskDelay(xDelay); - } -} -#endif - -#if INCLUDE_TEST_TASKS -static void TaskHIDTest(void *pvParameters) -{ - uint8_t byte; - uint8_t line_buffer[128]; - uint16_t line_ix = 0; - - for(;;) - { - /* HID Loopback Test */ -#if 0 - if(PIOS_COM_ReceiveBufferUsed(COM_USB_HID) != 0) { - byte = PIOS_COM_ReceiveBuffer(COM_USB_HID); - if(byte == '\r' || byte == '\n' || byte == 0) { - PIOS_COM_SendFormattedString(COM_USB_HID, "RX: %s\r", line_buffer); - PIOS_COM_SendFormattedString(COM_DEBUG_USART, "RX: %s\r", line_buffer); - line_ix = 0; - } else if(line_ix < sizeof(line_buffer)) { - line_buffer[line_ix++] = byte; - line_buffer[line_ix] = 0; - } - } -#endif - - /* HID Loopback Test */ - if(PIOS_COM_ReceiveBufferUsed(COM_USART2) != 0) { - byte = PIOS_COM_ReceiveBuffer(COM_USART2); -#if 0 - if(byte == '\r' || byte == '\n' || byte == 0) { - PIOS_COM_SendFormattedString(COM_DEBUG_USART, "RX: %s\r", line_buffer); - line_ix = 0; - } else if(line_ix < sizeof(line_buffer)) { - line_buffer[line_ix++] = byte; - line_buffer[line_ix] = 0; - } -#endif - PIOS_COM_SendChar(COM_DEBUG_USART, (char)byte); - } - } -} -#endif - -#if INCLUDE_TEST_TASKS -static void TaskServos(void *pvParameters) -{ - /* For testing servo outputs */ - portTickType xDelay; - - /* Used to test servos, cycles all servos from one side to the other */ - for(;;) { - /*xDelay = 250 / portTICK_RATE_MS; - PIOS_Servo_Set(0, 2000); - vTaskDelay(xDelay); - PIOS_Servo_Set(1, 2000); - vTaskDelay(xDelay); - PIOS_Servo_Set(2, 2000); - vTaskDelay(xDelay); - PIOS_Servo_Set(3, 2000); - vTaskDelay(xDelay); - PIOS_Servo_Set(4, 2000); - vTaskDelay(xDelay); - PIOS_Servo_Set(5, 2000); - vTaskDelay(xDelay); - PIOS_Servo_Set(6, 2000); - vTaskDelay(xDelay); - PIOS_Servo_Set(7, 2000); - vTaskDelay(xDelay); - - PIOS_Servo_Set(7, 1000); - vTaskDelay(xDelay); - PIOS_Servo_Set(6, 1000); - vTaskDelay(xDelay); - PIOS_Servo_Set(5, 1000); - vTaskDelay(xDelay); - PIOS_Servo_Set(4, 1000); - vTaskDelay(xDelay); - PIOS_Servo_Set(3, 1000); - vTaskDelay(xDelay); - PIOS_Servo_Set(2, 1000); - vTaskDelay(xDelay); - PIOS_Servo_Set(1, 1000); - vTaskDelay(xDelay); - PIOS_Servo_Set(0, 1000); - vTaskDelay(xDelay);*/ - - xDelay = 1 / portTICK_RATE_MS; - for(int i = 1000; i < 2000; i++) { - PIOS_Servo_Set(0, i); - PIOS_Servo_Set(1, i); - PIOS_Servo_Set(2, i); - PIOS_Servo_Set(3, i); - PIOS_Servo_Set(4, i); - PIOS_Servo_Set(5, i); - PIOS_Servo_Set(6, i); - PIOS_Servo_Set(7, i); - vTaskDelay(xDelay); - } - for(int i = 2000; i > 1000; i--) { - PIOS_Servo_Set(0, i); - PIOS_Servo_Set(1, i); - PIOS_Servo_Set(2, i); - PIOS_Servo_Set(3, i); - PIOS_Servo_Set(4, i); - PIOS_Servo_Set(5, i); - PIOS_Servo_Set(6, i); - PIOS_Servo_Set(7, i); - vTaskDelay(xDelay); - } - } -} -#endif - -#if INCLUDE_TEST_TASKS -static void TaskSDCard(void *pvParameters) -{ - uint16_t second_delay_ctr = 0; - portTickType xLastExecutionTime; - - /* Initialise the xLastExecutionTime variable on task entry */ - xLastExecutionTime = xTaskGetTickCount(); - - for(;;) { - vTaskDelayUntil(&xLastExecutionTime, 1 / portTICK_RATE_MS); - - /* Each second: */ - /* Check if SD card is available */ - /* High-speed access if SD card was previously available */ - if(++second_delay_ctr >= 1000) { - second_delay_ctr = 0; - - uint8_t prev_sdcard_available = sdcard_available; - sdcard_available = PIOS_SDCARD_CheckAvailable(prev_sdcard_available); - - if(sdcard_available && !prev_sdcard_available) { - /* SD Card has been connected! */ - /* Switch to mass storage device */ - MSD_Init(0); - } else if(!sdcard_available && prev_sdcard_available) { - /* Re-init USB for HID */ - PIOS_USB_Init(1); - /* SD Card disconnected! */ - } - } - - /* Each millisecond: */ - /* Handle USB access if device is available */ - if(sdcard_available) { - MSD_Periodic_mS(); - } - } -} -#endif -/** - * @} - * @} - */ - diff --git a/flight/OpenPilot/System/pios_board.c b/flight/OpenPilot/System/pios_board.c deleted file mode 100644 index ad9c13083..000000000 --- a/flight/OpenPilot/System/pios_board.c +++ /dev/null @@ -1,440 +0,0 @@ -/** - ****************************************************************************** - * @addtogroup OpenPilotSystem OpenPilot System - * @{ - * @addtogroup OpenPilotCore OpenPilot Core - * @{ - * - * @file pios_board.c - * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010. - * @brief Defines board specific static initializers for hardware for the OpenPilot board. - * @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 - */ - - -/* Pull in the board-specific static HW definitions. - * Including .c files is a bit ugly but this allows all of - * the HW definitions to be const and static to limit their - * scope. - * - * NOTE: THIS IS THE ONLY PLACE THAT SHOULD EVER INCLUDE THIS FILE - */ -#include "board_hw_defs.c" - -#include -#include -#include -#include -#include - -//#define I2C_DEBUG_PIN 0 -//#define USART_GPS_DEBUG_PIN 1 - -/* One slot per selectable receiver group. - * eg. PWM, PPM, GCS, DSMMAINPORT, DSMFLEXIPORT, SBUS - * NOTE: No slot in this map for NONE. - */ -uint32_t pios_rcvr_group_map[MANUALCONTROLSETTINGS_CHANNELGROUPS_NONE]; - -#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 - -#define PIOS_COM_BRIDGE_RX_BUF_LEN 65 -#define PIOS_COM_BRIDGE_TX_BUF_LEN 12 - -uint32_t pios_com_telem_rf_id; -uint32_t pios_com_telem_usb_id; -uint32_t pios_com_vcp_id; -uint32_t pios_com_gps_id; -uint32_t pios_com_aux_id; -uint32_t pios_com_dsm_id; - -#include "ahrs_spi_comm.h" - -/** - * PIOS_Board_Init() - * initializes all the core subsystems on this specific hardware - * called from System/openpilot.c - */ -void PIOS_Board_Init(void) { - - /* Remap AFIO pin */ - //GPIO_PinRemapConfig( GPIO_Remap_SWJ_NoJTRST, ENABLE); - -#ifdef PIOS_DEBUG_ENABLE_DEBUG_PINS - PIOS_DEBUG_Init(&pios_tim_servo_all_channels, NELEMENTS(pios_tim_servo_all_channels)); -#endif /* PIOS_DEBUG_ENABLE_DEBUG_PINS */ - - /* Delay system */ - PIOS_DELAY_Init(); - -#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_Assert(0); - } - - /* Enable and mount the SDCard */ - PIOS_SDCARD_Init(pios_spi_sdcard_id); - PIOS_SDCARD_MountFS(0); -#endif /* PIOS_INCLUDE_SPI */ - - /* Initialize UAVObject libraries */ - EventDispatcherInitialize(); - UAVObjInitialize(); - -#if defined(PIOS_INCLUDE_RTC) - /* Initialize the real-time clock and its associated tick */ - PIOS_RTC_Init(&pios_rtc_main_cfg); -#endif - -#if defined(PIOS_INCLUDE_LED) - PIOS_LED_Init(&pios_led_cfg); -#endif /* PIOS_INCLUDE_LED */ - - HwSettingsInitialize(); - - PIOS_WDG_Init(); - - /* Initialize the alarms library */ - AlarmsInitialize(); - - PIOS_IAP_Init(); - uint16_t boot_count = PIOS_IAP_ReadBootCount(); - if (boot_count < 3) { - PIOS_IAP_WriteBootCount(++boot_count); - AlarmsClear(SYSTEMALARMS_ALARM_BOOTFAULT); - } else { - /* Too many failed boot attempts, force hwsettings to defaults */ - HwSettingsSetDefaults(HwSettingsHandle(), 0); - AlarmsSet(SYSTEMALARMS_ALARM_BOOTFAULT, SYSTEMALARMS_ALARM_CRITICAL); - } - - /* Initialize the task monitor library */ - TaskMonitorInitialize(); - - /* Set up pulse timers */ - PIOS_TIM_InitClock(&tim_1_cfg); - PIOS_TIM_InitClock(&tim_3_cfg); - PIOS_TIM_InitClock(&tim_5_cfg); - PIOS_TIM_InitClock(&tim_4_cfg); - PIOS_TIM_InitClock(&tim_8_cfg); - - /* Prepare the AHRS Comms upper layer protocol */ - AhrsInitComms(); - - /* Set up the SPI interface to the AHRS */ - if (PIOS_SPI_Init(&pios_spi_ahrs_id, &pios_spi_ahrs_cfg)) { - PIOS_Assert(0); - } - - /* Bind the AHRS comms layer to the AHRS SPI link */ - AhrsConnect(pios_spi_ahrs_id); - -#if defined(PIOS_INCLUDE_USB) - /* Initialize board specific USB data */ - PIOS_USB_BOARD_DATA_Init(); - - /* Flags to determine if various USB interfaces are advertised */ - bool usb_hid_present = false; - bool usb_cdc_present = false; - - uint8_t hwsettings_usb_devicetype; - HwSettingsUSB_DeviceTypeGet(&hwsettings_usb_devicetype); - - switch (hwsettings_usb_devicetype) { - case HWSETTINGS_USB_DEVICETYPE_HIDONLY: - if (PIOS_USB_DESC_HID_ONLY_Init()) { - PIOS_Assert(0); - } - usb_hid_present = true; - break; - case HWSETTINGS_USB_DEVICETYPE_HIDVCP: - if (PIOS_USB_DESC_HID_CDC_Init()) { - PIOS_Assert(0); - } - usb_hid_present = true; - usb_cdc_present = true; - break; - case HWSETTINGS_USB_DEVICETYPE_VCPONLY: - break; - default: - PIOS_Assert(0); - } - - uint32_t pios_usb_id; - PIOS_USB_Init(&pios_usb_id, &pios_usb_main_cfg); - -#if defined(PIOS_INCLUDE_USB_CDC) - /* Configure the USB VCP port */ - uint8_t hwsettings_usb_vcpport; - HwSettingsUSB_VCPPortGet(&hwsettings_usb_vcpport); - - if (!usb_cdc_present) { - /* Force VCP port function to disabled if we haven't advertised VCP in our USB descriptor */ - hwsettings_usb_vcpport = HWSETTINGS_USB_VCPPORT_DISABLED; - } - - switch (hwsettings_usb_vcpport) { - case HWSETTINGS_USB_VCPPORT_DISABLED: - break; - case HWSETTINGS_USB_VCPPORT_USBTELEMETRY: -#if defined(PIOS_INCLUDE_COM) - { - uint32_t pios_usb_cdc_id; - if (PIOS_USB_CDC_Init(&pios_usb_cdc_id, &pios_usb_cdc_cfg, pios_usb_id)) { - PIOS_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_cdc_com_driver, pios_usb_cdc_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 */ - break; - case HWSETTINGS_USB_VCPPORT_COMBRIDGE: -#if defined(PIOS_INCLUDE_COM) - { - uint32_t pios_usb_cdc_id; - if (PIOS_USB_CDC_Init(&pios_usb_cdc_id, &pios_usb_cdc_cfg, pios_usb_id)) { - PIOS_Assert(0); - } - uint8_t * rx_buffer = (uint8_t *) pvPortMalloc(PIOS_COM_BRIDGE_RX_BUF_LEN); - uint8_t * tx_buffer = (uint8_t *) pvPortMalloc(PIOS_COM_BRIDGE_TX_BUF_LEN); - PIOS_Assert(rx_buffer); - PIOS_Assert(tx_buffer); - if (PIOS_COM_Init(&pios_com_vcp_id, &pios_usb_cdc_com_driver, pios_usb_cdc_id, - rx_buffer, PIOS_COM_BRIDGE_RX_BUF_LEN, - tx_buffer, PIOS_COM_BRIDGE_TX_BUF_LEN)) { - PIOS_Assert(0); - } - - } -#endif /* PIOS_INCLUDE_COM */ - break; - } -#endif /* PIOS_INCLUDE_USB_CDC */ - -#if defined(PIOS_INCLUDE_USB_HID) - /* Configure the usb HID port */ - uint8_t hwsettings_usb_hidport; - HwSettingsUSB_HIDPortGet(&hwsettings_usb_hidport); - - if (!usb_hid_present) { - /* Force HID port function to disabled if we haven't advertised HID in our USB descriptor */ - hwsettings_usb_hidport = HWSETTINGS_USB_HIDPORT_DISABLED; - } - - switch (hwsettings_usb_hidport) { - case HWSETTINGS_USB_HIDPORT_DISABLED: - break; - case HWSETTINGS_USB_HIDPORT_USBTELEMETRY: -#if defined(PIOS_INCLUDE_COM) - { - uint32_t pios_usb_hid_id; - if (PIOS_USB_HID_Init(&pios_usb_hid_id, &pios_usb_hid_cfg, pios_usb_id)) { - PIOS_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_hid_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 */ - break; - } - -#endif /* PIOS_INCLUDE_USB_HID */ - -#endif /* PIOS_INCLUDE_USB */ - - /* Configure the main IO port */ - uint8_t hwsettings_op_mainport; - HwSettingsOP_MainPortGet(&hwsettings_op_mainport); - - switch (hwsettings_op_mainport) { - case HWSETTINGS_OP_MAINPORT_DISABLED: - break; - case HWSETTINGS_OP_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_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; - } - - /* Configure the flexi port */ - uint8_t hwsettings_op_flexiport; - HwSettingsOP_FlexiPortGet(&hwsettings_op_flexiport); - - switch (hwsettings_op_flexiport) { - case HWSETTINGS_OP_FLEXIPORT_DISABLED: - break; - case HWSETTINGS_OP_FLEXIPORT_GPS: -#if defined(PIOS_INCLUDE_GPS) - { - uint32_t pios_usart_gps_id; - if (PIOS_USART_Init(&pios_usart_gps_id, &pios_usart_gps_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; - } - -#ifndef PIOS_DEBUG_ENABLE_DEBUG_PINS - PIOS_Servo_Init(&pios_servo_cfg); -#endif /* PIOS_DEBUG_ENABLE_DEBUG_PINS */ - - PIOS_ADC_Init(); - PIOS_GPIO_Init(); - - /* Configure the rcvr port */ - uint8_t hwsettings_rcvrport; - HwSettingsOP_RcvrPortGet(&hwsettings_rcvrport); - - - switch (hwsettings_rcvrport) { - case HWSETTINGS_OP_RCVRPORT_DISABLED: - break; - case HWSETTINGS_OP_RCVRPORT_DEBUG: - /* Not supported yet */ - break; - case HWSETTINGS_OP_RCVRPORT_DSM2: - case HWSETTINGS_OP_RCVRPORT_DSMX10BIT: - case HWSETTINGS_OP_RCVRPORT_DSMX11BIT: -#if defined(PIOS_INCLUDE_DSM) - { - enum pios_dsm_proto proto; - switch (hwsettings_rcvrport) { - case HWSETTINGS_OP_RCVRPORT_DSM2: - proto = PIOS_DSM_PROTO_DSM2; - break; - case HWSETTINGS_OP_RCVRPORT_DSMX10BIT: - proto = PIOS_DSM_PROTO_DSMX10BIT; - break; - case HWSETTINGS_OP_RCVRPORT_DSMX11BIT: - proto = PIOS_DSM_PROTO_DSMX11BIT; - break; - default: - PIOS_Assert(0); - break; - } - - uint32_t pios_usart_dsm_id; - if (PIOS_USART_Init(&pios_usart_dsm_id, &pios_usart_dsm_cfg)) { - PIOS_Assert(0); - } - - uint32_t pios_dsm_id; - if (PIOS_DSM_Init(&pios_dsm_id, - &pios_dsm_cfg, - &pios_usart_com_driver, - pios_usart_dsm_id, - proto, 0)) { - PIOS_Assert(0); - } - - uint32_t pios_dsm_rcvr_id; - if (PIOS_RCVR_Init(&pios_dsm_rcvr_id, &pios_dsm_rcvr_driver, pios_dsm_id)) { - PIOS_Assert(0); - } - pios_rcvr_group_map[MANUALCONTROLSETTINGS_CHANNELGROUPS_DSMMAINPORT] = pios_dsm_rcvr_id; - } -#endif - break; - case HWSETTINGS_OP_RCVRPORT_PWM: -#if defined(PIOS_INCLUDE_PWM) - { - uint32_t pios_pwm_id; - PIOS_PWM_Init(&pios_pwm_id, &pios_pwm_cfg); - - uint32_t pios_pwm_rcvr_id; - if (PIOS_RCVR_Init(&pios_pwm_rcvr_id, &pios_pwm_rcvr_driver, pios_pwm_id)) { - PIOS_Assert(0); - } - pios_rcvr_group_map[MANUALCONTROLSETTINGS_CHANNELGROUPS_PWM] = pios_pwm_rcvr_id; - } -#endif /* PIOS_INCLUDE_PWM */ - break; - case HWSETTINGS_OP_RCVRPORT_PPM: -#if defined(PIOS_INCLUDE_PPM) - { - uint32_t pios_ppm_id; - PIOS_PPM_Init(&pios_ppm_id, &pios_ppm_cfg); - - uint32_t pios_ppm_rcvr_id; - if (PIOS_RCVR_Init(&pios_ppm_rcvr_id, &pios_ppm_rcvr_driver, pios_ppm_id)) { - PIOS_Assert(0); - } - pios_rcvr_group_map[MANUALCONTROLSETTINGS_CHANNELGROUPS_PPM] = pios_ppm_rcvr_id; - } -#endif /* PIOS_INCLUDE_PPM */ - break; - } - -#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 */ - - /* Make sure we have at least one telemetry link configured or else fail initialization */ - PIOS_Assert(pios_com_telem_rf_id || pios_com_telem_usb_id); -} - -/** - * @} - */ diff --git a/flight/OpenPilot/System/pios_board_posix.c b/flight/OpenPilot/System/pios_board_posix.c deleted file mode 100644 index bb1f7d5b2..000000000 --- a/flight/OpenPilot/System/pios_board_posix.c +++ /dev/null @@ -1,197 +0,0 @@ -/** - ****************************************************************************** - * - * @file pios_board.c - * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010. - * @brief Defines board specific static initializers for hardware for the OpenPilot board. - * @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 - */ - -#include -#include -#include -#include -#include - -#include "hwsettings.h" -#include "attituderaw.h" -#include "attitudeactual.h" -#include "positionactual.h" -#include "velocityactual.h" -#include "manualcontrolsettings.h" - -#if defined(PIOS_INCLUDE_RCVR) -#include "pios_rcvr_priv.h" - -/* One slot per selectable receiver group. - * eg. PWM, PPM, GCS, DSMMAINPORT, DSMFLEXIPORT, SBUS - * NOTE: No slot in this map for NONE. - */ -uint32_t pios_rcvr_group_map[MANUALCONTROLSETTINGS_CHANNELGROUPS_NONE]; - -#endif /* PIOS_INCLUDE_RCVR */ - - -void Stack_Change() { -} - -void Stack_Change_Weak() { -} - - -const struct pios_udp_cfg pios_udp_telem_cfg = { - .ip = "0.0.0.0", - .port = 9000, -}; -const struct pios_udp_cfg pios_udp_gps_cfg = { - .ip = "0.0.0.0", - .port = 9001, -}; -const struct pios_udp_cfg pios_udp_debug_cfg = { - .ip = "0.0.0.0", - .port = 9002, -}; - -#ifdef PIOS_COM_AUX -/* - * AUX USART - */ -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 96 - -/* - * Board specific number of devices. - */ -/* -struct pios_udp_dev pios_udp_devs[] = { -#define PIOS_UDP_TELEM 0 - { - .cfg = &pios_udp0_cfg, - }, -#define PIOS_UDP_GPS 1 - { - .cfg = &pios_udp1_cfg, - }, -#define PIOS_UDP_LOCAL 2 - { - .cfg = &pios_udp2_cfg, - }, -#ifdef PIOS_COM_AUX -#define PIOS_UDP_AUX 3 - { - .cfg = &pios_udp3_cfg, - }, -#endif -}; - -uint8_t pios_udp_num_devices = NELEMENTS(pios_udp_devs); -*/ -/* - * COM devices - */ - -/* - * Board specific number of devices. - */ -extern const struct pios_com_driver pios_serial_com_driver; -extern const struct pios_com_driver pios_udp_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_aux_id; -uint32_t pios_com_spectrum_id; - -/** - * 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); - PIOS_Assert(rx_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, - NULL, 0)) { - PIOS_Assert(0); - } - } -#endif /* PIOS_INCLUDE_GPS */ -#endif - - // Initialize these here as posix has no AHRSComms - AttitudeRawInitialize(); - AttitudeActualInitialize(); - VelocityActualInitialize(); - PositionActualInitialize(); - HwSettingsInitialize(); - -} - -/** - * @} - */ diff --git a/flight/OpenPilot/Tests/test_BMP085.c b/flight/OpenPilot/Tests/test_BMP085.c deleted file mode 100644 index 6bee6a1e6..000000000 --- a/flight/OpenPilot/Tests/test_BMP085.c +++ /dev/null @@ -1,100 +0,0 @@ -/** - ****************************************************************************** - * - * @file openpilot.c - * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010. - * @brief Sets up and runs main OpenPilot tasks. - * @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 - */ - - -/* OpenPilot Includes */ -#include "openpilot.h" - -/* Task Priorities */ - -/* Global Variables */ - -/* Local Variables */ - -/* Function Prototypes */ -static void TaskTesting(void *pvParameters); - -/** -* Test Main function -*/ -int main() -{ - // Init - PIOS_SYS_Init(); - PIOS_DELAY_Init(); - PIOS_COM_Init(); - PIOS_ADC_Init(); - PIOS_I2C_Init(); - xTaskCreate(TaskTesting, (signed portCHAR *)"Test", configMINIMAL_STACK_SIZE , NULL, 1, NULL); - - // Start the FreeRTOS scheduler - vTaskStartScheduler(); - - // Should not get here - PIOS_DEBUG_Assert(0); - - return 0; -} - -static void TaskTesting(void *pvParameters) -{ - portTickType xDelay = 500 / portTICK_RATE_MS; - portTickType xTimeout = 10 / portTICK_RATE_MS; - - PIOS_BMP085_Init(); - - for(;;) - { - PIOS_LED_Toggle(LED2); - - int16_t temp; - int32_t pressure; - - PIOS_BMP085_StartADC(TemperatureConv); - xSemaphoreTake(PIOS_BMP085_EOC, xTimeout); - PIOS_BMP085_ReadADC(); - - PIOS_BMP085_StartADC(PressureConv); - xSemaphoreTake(PIOS_BMP085_EOC, xTimeout); - PIOS_BMP085_ReadADC(); - - temp = PIOS_BMP085_GetTemperature(); - pressure = PIOS_BMP085_GetPressure(); - - PIOS_COM_SendFormattedStringNonBlocking(PIOS_COM_TELEM_RF, "%3u,%4u\r", temp, pressure); - - vTaskDelay(xDelay); - } -} - -/** -* Idle hook function -*/ -void vApplicationIdleHook(void) -{ - /* Called when the scheduler has no tasks to run */ - - -} diff --git a/flight/OpenPilot/Tests/test_common.c b/flight/OpenPilot/Tests/test_common.c deleted file mode 100644 index 6f5046a61..000000000 --- a/flight/OpenPilot/Tests/test_common.c +++ /dev/null @@ -1,37 +0,0 @@ -/** - ****************************************************************************** - * - * @file test_common.c - * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010. - * @brief Sets up ans runs main OpenPilot tasks. - * @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 - */ - -/* OpenPilot Includes */ -#include "openpilot.h" - -/** - * Called by the RTOS when a stack overflow is detected. - */ -void vApplicationStackOverflowHook( xTaskHandle *pxTask, signed portCHAR *pcTaskName ) -{ - PIOS_DEBUG_Panic("STACK OVERFLOW"); -} - - diff --git a/flight/OpenPilot/Tests/test_cpuload.c b/flight/OpenPilot/Tests/test_cpuload.c deleted file mode 100644 index a85f5f698..000000000 --- a/flight/OpenPilot/Tests/test_cpuload.c +++ /dev/null @@ -1,89 +0,0 @@ -/** - ****************************************************************************** - * - * @file test_cpuload.c - * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010. - * @brief Calibration for the CPU load calculation - * @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 - */ - -/** - * This file is used to calculate the number of counts we get when - * the CPU is fully idle (no load). This is used by systemmod.c to - * calculate the CPU load. This calibration should be run whenever - * changes are made in the FreeRTOS configuration or on the compiler - * optimisation parameters. - */ - -#include "openpilot.h" - -// Local constants -#define BENCHMARK_DURATION_MS 10000 - -// Local functions -static void testTask(void *pvParameters); - -// Variables -static uint32_t idleCounter = 0; -static uint32_t idleCounterClear = 0; - -int main() -{ - PIOS_SYS_Init(); - - // Create test task - xTaskCreate(testTask, (signed portCHAR *)"Test", 1000 , NULL, 1, NULL); - - // Start the FreeRTOS scheduler - vTaskStartScheduler(); - return 0; -} - -static void testTask(void *pvParameters) -{ - uint32_t countsPerSecond = 0; - - while (1) - { - // Delay until enough required test duration - vTaskDelay( BENCHMARK_DURATION_MS / portTICK_RATE_MS ); - - // Calculate counts per second, set breakpoint here - countsPerSecond = idleCounter / (BENCHMARK_DURATION_MS/1000); - - // Reset and start again - do not clear idleCounter directly! - // SET BREAKPOINT HERE and read the countsPerSecond variable - // this should be used to update IDLE_COUNTS_PER_SEC_AT_NO_LOAD in systemmod.c - idleCounterClear = 1; - } -} - -void vApplicationIdleHook(void) -{ - /* Called when the scheduler has no tasks to run */ - if (idleCounterClear == 0) - { - ++idleCounter; - } - else - { - idleCounter = 0; - idleCounterClear = 0; - } -} diff --git a/flight/OpenPilot/Tests/test_i2c_PCF8570.c b/flight/OpenPilot/Tests/test_i2c_PCF8570.c deleted file mode 100644 index 6a2a17faf..000000000 --- a/flight/OpenPilot/Tests/test_i2c_PCF8570.c +++ /dev/null @@ -1,282 +0,0 @@ -/** - ****************************************************************************** - * - * @file openpilot.c - * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010. - * @brief Sets up ans runs main OpenPilot tasks. - * @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 - */ - - -/* - * I2C Test: communicate with external PCF8570 ram chip - * For this test to function, PCF8570 chips need to be attached to the I2C port - * - * Blinking Blue LED: No errors detected, test continues - * Blinking Red LED: Error detected, test stopped - * - */ - -/* OpenPilot Includes */ -#include "openpilot.h" - -//#define USE_DEBUG_PINS - -#define DEVICE_1_ADDRESS 0x50 -#define DEVICE_2_ADDRESS 0x51 - -#ifdef USE_DEBUG_PINS - #define DEBUG_PIN_TASK1_WAIT 0 - #define DEBUG_PIN_TASK1_LOCKED 1 - #define DEBUG_PIN_TASK2_WAIT 2 - #define DEBUG_PIN_TASK2_LOCKED 3 - #define DEBUG_PIN_TRANSFER 4 - #define DEBUG_PIN_IDLE 6 - #define DEBUG_PIN_ERROR 7 - #define DebugPinHigh(x) PIOS_DEBUG_PinHigh(x) - #define DebugPinLow(x) PIOS_DEBUG_PinLow(x) -#else - #define DebugPinHigh(x) - #define DebugPinLow(x) -#endif - - - -#define MAX_LOCK_WAIT 2 // Time in ms that a thread can normally block I2C - -/* Task Priorities */ -#define PRIORITY_TASK_HOOKS (tskIDLE_PRIORITY + 3) - - -/* Global Variables */ - -/* Local Variables */ - -/* Function Prototypes */ -static void Task1(void *pvParameters); -static void Task2(void *pvParameters); - - -/** -* OpenPilot Main function -*/ -int main() -{ - // Init - PIOS_SYS_Init(); - PIOS_DEBUG_Init(); - PIOS_DELAY_Init(); - PIOS_COM_Init(); - PIOS_USB_Init(0); - PIOS_I2C_Init(); - - // Both leds off - PIOS_LED_Off(LED1); - PIOS_LED_Off(LED2); - - // Create task - xTaskCreate(Task1, (signed portCHAR *)"Task1", 1024 , NULL, 1, NULL); - xTaskCreate(Task2, (signed portCHAR *)"Task2", 1024 , NULL, 2, NULL); - - - // 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. */ - return 0; -} - -static void OnError(void) -{ - PIOS_LED_Off(LED1); - while(1) - { - DebugPinHigh(DEBUG_PIN_ERROR); - PIOS_LED_Toggle(LED2); - vTaskDelay(50 / portTICK_RATE_MS); - DebugPinLow(DEBUG_PIN_ERROR); - } -} -// -// This is a low priority task that will continuously access one I2C device -// Frequently it will release the I2C device so that others can also use I2C -// -static void Task1(void *pvParameters) -{ - int i = 0; - - - if (PIOS_I2C_LockDevice(MAX_LOCK_WAIT / portTICK_RATE_MS)) - { - if (PIOS_I2C_Transfer(I2C_Write, DEVICE_1_ADDRESS<<1, (uint8_t*)"\x20\xB0\xB1\xB2", 4) != 0) - OnError(); - PIOS_I2C_UnlockDevice(); - } - else - { - OnError(); - } - - for(;;) - { - i++; - if (i==100) - { - PIOS_LED_Toggle(LED1); - i = 0; - } - - DebugPinHigh(DEBUG_PIN_TASK1_WAIT); - if (PIOS_I2C_LockDevice(MAX_LOCK_WAIT / portTICK_RATE_MS)) - { - uint8_t buf[20]; - - DebugPinLow(DEBUG_PIN_TASK1_WAIT); - DebugPinHigh(DEBUG_PIN_TASK1_LOCKED); - - // Write A0 A1 A2 at address 0x10 - DebugPinHigh(DEBUG_PIN_TRANSFER); - if (PIOS_I2C_Transfer(I2C_Write, DEVICE_1_ADDRESS<<1, (uint8_t*)"\x10\xA0\xA1\xA2", 4) != 0) - OnError(); - DebugPinLow(DEBUG_PIN_TRANSFER); - - - // Read 3 bytes at address 0x20 and check - DebugPinHigh(DEBUG_PIN_TRANSFER); - if (PIOS_I2C_Transfer(I2C_Write_WithoutStop, DEVICE_1_ADDRESS<<1, (uint8_t*)"\x20", 1) != 0) - OnError(); - DebugPinLow(DEBUG_PIN_TRANSFER); - - DebugPinHigh(DEBUG_PIN_TRANSFER); - if (PIOS_I2C_Transfer(I2C_Read, DEVICE_1_ADDRESS<<1, buf, 3) != 0) - OnError(); - DebugPinLow(DEBUG_PIN_TRANSFER); - - if (memcmp(buf, "\xB0\xB1\xB2",3) != 0) - OnError(); - - // Read 3 bytes at address 0x10 and check - DebugPinHigh(DEBUG_PIN_TRANSFER); - if (PIOS_I2C_Transfer(I2C_Write_WithoutStop, DEVICE_1_ADDRESS<<1, (uint8_t*)"\x10", 1) != 0) - OnError(); - DebugPinLow(DEBUG_PIN_TRANSFER); - - DebugPinHigh(DEBUG_PIN_TRANSFER); - if (PIOS_I2C_Transfer(I2C_Read, DEVICE_1_ADDRESS<<1, buf, 3) != 0) - OnError(); - DebugPinLow(DEBUG_PIN_TRANSFER); - - if (memcmp(buf, "\xA0\xA1\xA2",3) != 0) - OnError(); - - DebugPinLow(DEBUG_PIN_TASK1_LOCKED); - PIOS_I2C_UnlockDevice(); - } - else - { - OnError(); - } - } -} - -// This is a high priority task that will periodically perform some actions on the second I2C device -// Most of the time it will have to wait for the other task task to release I2C -static void Task2(void *pvParameters) -{ - portTickType xLastExecutionTime; - - xLastExecutionTime = xTaskGetTickCount(); - uint32_t count = 0; - - for(;;) - { - uint8_t buf[20]; - - DebugPinHigh(DEBUG_PIN_TASK2_WAIT); - if (PIOS_I2C_LockDevice(MAX_LOCK_WAIT / portTICK_RATE_MS)) - { - DebugPinLow(DEBUG_PIN_TASK2_WAIT); - DebugPinHigh(DEBUG_PIN_TASK2_LOCKED); - - // Write value of count to address 0x10 - buf[0] = 0x10; // The address - memcpy(&buf[1], &count, 4); // The data to write - DebugPinHigh(DEBUG_PIN_TRANSFER); - if (PIOS_I2C_Transfer(I2C_Write, DEVICE_2_ADDRESS<<1, buf, 5) != 0) - OnError(); - DebugPinLow(DEBUG_PIN_TRANSFER); - - DebugPinLow(DEBUG_PIN_TASK2_LOCKED); - PIOS_I2C_UnlockDevice(); - } - else - { - OnError(); - } - - vTaskDelay(2 / portTICK_RATE_MS); - - DebugPinHigh(DEBUG_PIN_TASK2_WAIT); - if (PIOS_I2C_LockDevice(1 / portTICK_RATE_MS)) - { - DebugPinLow(DEBUG_PIN_TASK2_WAIT); - DebugPinHigh(DEBUG_PIN_TASK2_LOCKED); - - // Read at address 0x10 and check - DebugPinHigh(DEBUG_PIN_TRANSFER); - if (PIOS_I2C_Transfer(I2C_Write_WithoutStop, DEVICE_2_ADDRESS<<1, (uint8_t*)"\x10", 1) != 0) - OnError(); - DebugPinLow(DEBUG_PIN_TRANSFER); - - DebugPinHigh(DEBUG_PIN_TRANSFER); - if (PIOS_I2C_Transfer(I2C_Read, DEVICE_2_ADDRESS<<1, buf, 4) != 0) - OnError(); - DebugPinLow(DEBUG_PIN_TRANSFER); - - DebugPinHigh(DEBUG_PIN_TRANSFER); - if (memcmp(buf, &count, 4) != 0) - OnError(); - DebugPinLow(DEBUG_PIN_TRANSFER); - - - DebugPinLow(DEBUG_PIN_TASK2_LOCKED); - PIOS_I2C_UnlockDevice(); - } - else - { - OnError(); - } - - vTaskDelay(5 / portTICK_RATE_MS); - - count++; - } -} - - -/** -* Idle hook function -*/ -void vApplicationIdleHook(void) -{ - /* Called when the scheduler has no tasks to run */ - DebugPinHigh(DEBUG_PIN_IDLE); - DebugPinLow(DEBUG_PIN_IDLE); -} diff --git a/flight/OpenPilot/Tests/test_uavobjects.c b/flight/OpenPilot/Tests/test_uavobjects.c deleted file mode 100644 index fffbc3f25..000000000 --- a/flight/OpenPilot/Tests/test_uavobjects.c +++ /dev/null @@ -1,174 +0,0 @@ -/** - ****************************************************************************** - * - * @file test_uavobjects.c - * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010. - * @brief Tests for the UAVObject libraries - * @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 - */ - -#include "openpilot.h" -#include "exampleobject1.h" -#include "uavobjectsinit.h" - -// Local functions -static void testTask(void *pvParameters); -static void eventCallback(UAVObjEvent* ev); -static void eventCallbackPeriodic(UAVObjEvent* ev); - -// Variables -int testDelay = 0; - -int main() -{ - /* Brings up System using CMSIS functions, enables the LEDs. */ - PIOS_SYS_Init(); - - /* Delay system */ - PIOS_DELAY_Init(); - - /* SPI Init */ - PIOS_SPI_Init(); - - /* Enables the SDCard */ - PIOS_SDCARD_Init(); - PIOS_SDCARD_MountFS(0); - - // Turn on both LEDs - PIOS_LED_On(LED1); - PIOS_LED_On(LED2); - - // Create test task - xTaskCreate(testTask, (signed portCHAR *)"ObjTest", 1000 , NULL, 1, NULL); - - // Start the FreeRTOS scheduler - vTaskStartScheduler(); - return 0; -} - -static void testTask(void *pvParameters) -{ - ExampleObject1Data data; - - // Initialize object and manager - EventDispatcherInitialize(); - UAVObjInitialize(); - UAVObjectsInitializeAll(); - - // Set data - ExampleObject1Get(&data); - data.Field1 = 1; - data.Field2 = 2; - ExampleObject1Set(&data); - - // Get data - memset(&data, 0, sizeof(data)); - ExampleObject1Get(&data); - - // Benchmark time is takes to get and set data (both operations) - int tickStart = xTaskGetTickCount(); - for (int n = 0; n < 10000; ++n) - { - ExampleObject1Set(&data); - ExampleObject1Get(&data); - } - int delay = xTaskGetTickCount() - tickStart; - - // Create a new instance and get/set its data - uint16_t instId = ExampleObject1CreateInstance(); - ExampleObject1InstSet(instId, &data); - memset(&data, 0, sizeof(data)); - ExampleObject1InstGet(instId, &data); - - // Test pack/unpack - uint8_t buffer[EXAMPLEOBJECT1_NUMBYTES]; - memset(buffer, 0, EXAMPLEOBJECT1_NUMBYTES); - UAVObjPack(ExampleObject1Handle(), 0, buffer); - memset(&data, 0, sizeof(data)); - ExampleObject1Set(&data); - UAVObjUnpack(ExampleObject1Handle(), 0, buffer); - ExampleObject1Get(&data); - - // Test object saving/loading to SD card - UAVObjSave(ExampleObject1Handle(), 0); - memset(&data, 0, sizeof(data)); - ExampleObject1Set(&data); - UAVObjLoad(ExampleObject1Handle(), 0); - ExampleObject1Get(&data); - - // Retrieve object handle by ID - UAVObjHandle handle = UAVObjGetByID(EXAMPLEOBJECT1_OBJID); - const char* name = UAVObjGetName(handle); - - // Get/Set the metadata - UAVObjMetadata mdata; - ExampleObject1GetMetadata(&mdata); - mdata.gcsTelemetryAcked = 0; - ExampleObject1SetMetadata(&mdata); - memset(&mdata, 0, sizeof(mdata)); - ExampleObject1GetMetadata(&mdata); - - // Test callbacks - ExampleObject1ConnectCallback(eventCallback); - ExampleObject1Set(&data); - - // Test queue events - xQueueHandle queue; - queue = xQueueCreate(10, sizeof(UAVObjEvent)); - ExampleObject1ConnectQueue(queue); - - // Test periodic events - UAVObjEvent ev; - ev.event = 0; - ev.instId = 0; - ev.obj = ExampleObject1Handle(); - EventPeriodicCallbackCreate(&ev, eventCallbackPeriodic, 500); - EventPeriodicQueueCreate(&ev, queue, 250); - - // Done testing - while (1) - { - if(xQueueReceive(queue, &ev, portMAX_DELAY) == pdTRUE) - { - name = UAVObjGetName(ev.obj); - PIOS_LED_Toggle(LED2); - } - } - -} - -static void eventCallback(UAVObjEvent* ev) -{ - const char* name = UAVObjGetName(ev->obj); -} - -static void eventCallbackPeriodic(UAVObjEvent* ev) -{ - static int lastUpdate; - testDelay = xTaskGetTickCount() - lastUpdate; - lastUpdate = xTaskGetTickCount(); - const char* name = UAVObjGetName(ev->obj); - PIOS_LED_Toggle(LED1); - //ExampleObject1Updated(); -} - -void vApplicationIdleHook(void) -{ - /* Called when the scheduler has no tasks to run */ -} diff --git a/flight/OpenPilot/UAVObjects.inc b/flight/OpenPilot/UAVObjects.inc deleted file mode 100644 index 8d5c5409f..000000000 --- a/flight/OpenPilot/UAVObjects.inc +++ /dev/null @@ -1,77 +0,0 @@ -##### -# Project: OpenPilot -# -# Makefile for OpenPilot UAVObject code -# -# The OpenPilot Team, http://www.openpilot.org, Copyright (C) 2011. -# -# 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 -##### - -# These are the UAVObjects supposed to be build as part of the OpenPilot target -# (all architectures) - -UAVOBJSRCFILENAMES = -UAVOBJSRCFILENAMES += accessorydesired -UAVOBJSRCFILENAMES += actuatorcommand -UAVOBJSRCFILENAMES += actuatordesired -UAVOBJSRCFILENAMES += actuatorsettings -UAVOBJSRCFILENAMES += ahrscalibration -UAVOBJSRCFILENAMES += ahrssettings -UAVOBJSRCFILENAMES += ahrsstatus -UAVOBJSRCFILENAMES += attitudeactual -UAVOBJSRCFILENAMES += attituderaw -UAVOBJSRCFILENAMES += baroaltitude -UAVOBJSRCFILENAMES += flightbatterysettings -UAVOBJSRCFILENAMES += firmwareiapobj -UAVOBJSRCFILENAMES += flightbatterystate -UAVOBJSRCFILENAMES += flightplancontrol -UAVOBJSRCFILENAMES += flightplansettings -UAVOBJSRCFILENAMES += flightplanstatus -UAVOBJSRCFILENAMES += flighttelemetrystats -UAVOBJSRCFILENAMES += gcstelemetrystats -UAVOBJSRCFILENAMES += gpsposition -UAVOBJSRCFILENAMES += gpssatellites -UAVOBJSRCFILENAMES += gpstime -UAVOBJSRCFILENAMES += guidancesettings -UAVOBJSRCFILENAMES += homelocation -UAVOBJSRCFILENAMES += i2cstats -UAVOBJSRCFILENAMES += manualcontrolcommand -UAVOBJSRCFILENAMES += manualcontrolsettings -UAVOBJSRCFILENAMES += mixersettings -UAVOBJSRCFILENAMES += mixerstatus -UAVOBJSRCFILENAMES += nedaccel -UAVOBJSRCFILENAMES += objectpersistence -UAVOBJSRCFILENAMES += positionactual -UAVOBJSRCFILENAMES += positiondesired -UAVOBJSRCFILENAMES += ratedesired -UAVOBJSRCFILENAMES += sonaraltitude -UAVOBJSRCFILENAMES += stabilizationdesired -UAVOBJSRCFILENAMES += stabilizationsettings -UAVOBJSRCFILENAMES += systemalarms -UAVOBJSRCFILENAMES += systemsettings -UAVOBJSRCFILENAMES += systemstats -UAVOBJSRCFILENAMES += taskinfo -UAVOBJSRCFILENAMES += velocityactual -UAVOBJSRCFILENAMES += velocitydesired -UAVOBJSRCFILENAMES += watchdogstatus -UAVOBJSRCFILENAMES += flightstatus -UAVOBJSRCFILENAMES += hwsettings -UAVOBJSRCFILENAMES += receiveractivity -UAVOBJSRCFILENAMES += cameradesired -UAVOBJSRCFILENAMES += camerastabsettings - -UAVOBJSRC = $(foreach UAVOBJSRCFILE,$(UAVOBJSRCFILENAMES),$(UAVOBJSYNTHDIR)/$(UAVOBJSRCFILE).c ) -UAVOBJDEFINE = $(foreach UAVOBJSRCFILE,$(UAVOBJSRCFILENAMES),-DUAVOBJ_INIT_$(UAVOBJSRCFILE) ) diff --git a/flight/PiOS/Boards/STM32103CB_CC_Rev1.h b/flight/PiOS/Boards/STM32103CB_CC_Rev1.h index 0b1884a42..fd391c46c 100644 --- a/flight/PiOS/Boards/STM32103CB_CC_Rev1.h +++ b/flight/PiOS/Boards/STM32103CB_CC_Rev1.h @@ -254,20 +254,11 @@ extern uint32_t pios_com_telem_usb_id; //------------------------- // GPIO //------------------------- -#define PIOS_GPIO_1_PORT GPIOA -#define PIOS_GPIO_1_PIN GPIO_Pin_7 -#define PIOS_GPIO_1_GPIO_CLK RCC_APB2Periph_GPIOA +#define PIOS_GPIO_PORTS { } +#define PIOS_GPIO_PINS { } +#define PIOS_GPIO_CLKS { } +#define PIOS_GPIO_NUM 0 -#define PIOS_GPIO_PORTS { PIOS_GPIO_1_PORT } -#define PIOS_GPIO_PINS { PIOS_GPIO_1_PIN } -#define PIOS_GPIO_CLKS { PIOS_GPIO_1_GPIO_CLK } -#define PIOS_GPIO_NUM 1 - -#define PIOS_FLASH_CS_PIN 0 -#define PIOS_FLASH_ENABLE PIOS_GPIO_On(0) -#define PIOS_FLASH_DISABLE PIOS_GPIO_Off(0) -#define PIOS_ADXL_ENABLE PIOS_SPI_RC_PinSet(PIOS_SPI_ACCEL,0) -#define PIOS_ADXL_DISABLE PIOS_SPI_RC_PinSet(PIOS_SPI_ACCEL,1) //------------------------- // USB diff --git a/flight/PiOS/Boards/STM3210E_INS.h b/flight/PiOS/Boards/STM3210E_INS.h deleted file mode 100644 index 77283a5e4..000000000 --- a/flight/PiOS/Boards/STM3210E_INS.h +++ /dev/null @@ -1,205 +0,0 @@ -/** - ****************************************************************************** - * @addtogroup OpenPilotSystem OpenPilot System - * @{ - * @addtogroup OpenPilotCore OpenPilot Core - * @{ - * @file pios_board.h - * @author David "Buzz" Carlson (buzz@chebuzz.com) - * The OpenPilot Team, http://www.openpilot.org Copyright (C) 2011. - * @brief Defines board hardware for the OpenPilot Version 1.1 hardware. - * @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 - */ - - -#ifndef STM3210E_INS_H_ -#define STM3210E_INS_H_ - - - -//------------------------ -// Timers and Channels Used -//------------------------ -/* -Timer | Channel 1 | Channel 2 | Channel 3 | Channel 4 -------+-----------+-----------+-----------+---------- -TIM1 | | | | -TIM2 | --------------- PIOS_DELAY ----------------- -TIM3 | | | | -TIM4 | | | | -TIM5 | | | | -TIM6 | | | | -TIM7 | | | | -TIM8 | | | | -------+-----------+-----------+-----------+---------- -*/ - -//------------------------ -// DMA Channels Used -//------------------------ -/* Channel 1 - */ -/* Channel 2 - SPI1 RX */ -/* Channel 3 - SPI1 TX */ -/* Channel 4 - SPI2 RX */ -/* Channel 5 - SPI2 TX */ -/* Channel 6 - */ -/* Channel 7 - */ -/* Channel 8 - */ -/* Channel 9 - */ -/* Channel 10 - */ -/* Channel 11 - */ -/* Channel 12 - */ - -//------------------------ -// BOOTLOADER_SETTINGS -//------------------------ -#define BOARD_READABLE TRUE -#define BOARD_WRITABLE TRUE -#define MAX_DEL_RETRYS 3 - -//------------------------ -// PIOS_LED -//------------------------ -#define PIOS_LED_HEARTBEAT 0 -#define PIOS_LED_ALARM 1 - -//------------------------ -// PIOS_SPI -// See also pios_board.c -//------------------------ -#define PIOS_SPI_MAX_DEVS 2 - -//------------------------ -// PIOS_I2C -// See also pios_board.c -//------------------------ -#define PIOS_I2C_MAX_DEVS 3 -extern uint32_t pios_i2c_pres_mag_adapter_id; -#define PIOS_I2C_MAIN_ADAPTER (pios_i2c_pres_mag_adapter_id) -#define PIOS_I2C_BMP085_ADAPTER (pios_i2c_pres_mag_adapter_id) -extern uint32_t pios_i2c_gyro_adapter_id; -#define PIOS_I2C_GYRO_ADAPTER (pios_i2c_gyro_adapter_id) - -//------------------------ -// PIOS_BMP085 -//------------------------ -#define PIOS_BMP085_HAS_GPIOS -#define PIOS_BMP085_EOC_GPIO_PORT GPIOC -#define PIOS_BMP085_EOC_GPIO_PIN GPIO_Pin_2 -#define PIOS_BMP085_EOC_PORT_SOURCE GPIO_PortSourceGPIOC -#define PIOS_BMP085_EOC_PIN_SOURCE GPIO_PinSource2 -#define PIOS_BMP085_EOC_CLK RCC_APB2Periph_GPIOC -#define PIOS_BMP085_EOC_EXTI_LINE EXTI_Line2 -#define PIOS_BMP085_EOC_IRQn EXTI15_10_IRQn -#define PIOS_BMP085_EOC_PRIO PIOS_IRQ_PRIO_LOW -#define PIOS_BMP085_XCLR_GPIO_PORT GPIOC -#define PIOS_BMP085_XCLR_GPIO_PIN GPIO_Pin_1 -#define PIOS_BMP085_OVERSAMPLING 3 - -//------------------------- -// PIOS_USART -// -// See also pios_board.c -//------------------------- -#define PIOS_USART_MAX_DEVS 2 - -//------------------------- -// PIOS_COM -// -// See also pios_board.c -//------------------------- -#define PIOS_COM_MAX_DEVS 2 - -extern uint32_t pios_com_gps_id; -#define PIOS_COM_GPS (pios_com_gps_id) - -#ifdef PIOS_ENABLE_AUX_UART -extern uint32_t pios_com_aux_id; -#define PIOS_COM_AUX (pios_com_aux_id) -#define PIOS_COM_DEBUG PIOS_COM_AUX -#endif - -//------------------------- -// System Settings -//------------------------- -#define PIOS_MASTER_CLOCK 72000000 -#define PIOS_PERIPHERAL_CLOCK (PIOS_MASTER_CLOCK / 2) - -//------------------------- -// Interrupt Priorities -//------------------------- -#define PIOS_IRQ_PRIO_LOW 12 // lower than RTOS -#define PIOS_IRQ_PRIO_MID 8 // higher than RTOS -#define PIOS_IRQ_PRIO_HIGH 5 // for SPI, ADC, I2C etc... -#define PIOS_IRQ_PRIO_HIGHEST 4 // for USART etc... - -//------------------------- -// ADC -// None. -//------------------------- - - -//------------------------- -// GPIO -// Not used, but pios_gpio.c expects something -//------------------------- -#define PIOS_GPIO_1_PORT GPIOA -#define PIOS_GPIO_1_PIN GPIO_Pin_1 -#define PIOS_GPIO_1_GPIO_CLK RCC_APB2Periph_GPIOA - -#define PIOS_GPIO_PORTS { PIOS_GPIO_1_PORT } -#define PIOS_GPIO_PINS { PIOS_GPIO_1_PIN } -#define PIOS_GPIO_CLKS { PIOS_GPIO_1_GPIO_CLK } -#define PIOS_GPIO_NUM 1 - -#define PIOS_BMA_ENABLE PIOS_SPI_RC_PinSet(PIOS_SPI_ACCEL,0) -#define PIOS_BMA_DISABLE PIOS_SPI_RC_PinSet(PIOS_SPI_ACCEL,1) - -//------------------------ -// PIOS_HMC5883 -//------------------------ -#define PIOS_HMC5883_DRDY_GPIO_PORT GPIOB -#define PIOS_HMC5883_DRDY_GPIO_PIN GPIO_Pin_8 -#define PIOS_HMC5883_DRDY_PORT_SOURCE GPIO_PortSourceGPIOB -#define PIOS_HMC5883_DRDY_PIN_SOURCE GPIO_PinSource8 -#define PIOS_HMC5883_DRDY_CLK RCC_APB2Periph_GPIOB -#define PIOS_HMC5883_DRDY_EXTI_LINE EXTI_Line8 -#define PIOS_HMC5883_DRDY_IRQn EXTI9_5_IRQn -#define PIOS_HMC5883_DRDY_PRIO PIOS_IRQ_PRIO_LOW - -//------------------------ -// PIOS_IMU3000 -//------------------------ -#define PIOS_IMU3000_INT_GPIO_PORT GPIOB -#define PIOS_IMU3000_INT_GPIO_PIN GPIO_Pin_1 -#define PIOS_IMU3000_INT_PORT_SOURCE GPIO_PortSourceGPIOB -#define PIOS_IMU3000_INT_PIN_SOURCE GPIO_PinSource1 -#define PIOS_IMU3000_INT_CLK RCC_APB2Periph_GPIOB -#define PIOS_IMU3000_INT_EXTI_LINE EXTI_Line1 -#define PIOS_IMU3000_INT_IRQn EXTI1_IRQn -#define PIOS_IMU3000_INT_PRIO PIOS_IRQ_PRIO_HIGH - - - - -#endif /* STM3210E_INS_H_ */ -/** - * @} - * @} - */ diff --git a/flight/PiOS/Boards/pios_board.h b/flight/PiOS/Boards/pios_board.h index b352a7827..1b2588bc5 100644 --- a/flight/PiOS/Boards/pios_board.h +++ b/flight/PiOS/Boards/pios_board.h @@ -9,8 +9,10 @@ #include "STM32103CB_PIPXTREME_Rev1.h" #elif USE_STM32103CB_CC_Rev1 #include "STM32103CB_CC_Rev1.h" -#elif USE_STM3210E_INS -#include "STM3210E_INS.h" +#elif USE_STM32F2xx_INS +#include "STM32F2xx_INS.h" +#elif USE_STM32F4xx_OP +#include "STM32F4xx_Revolution.h" #else #error Board definition has not been provided. #endif diff --git a/flight/PiOS/Common/pios_adxl345.c b/flight/PiOS/Common/pios_adxl345.c index 91fb3f91f..248c985b2 100644 --- a/flight/PiOS/Common/pios_adxl345.c +++ b/flight/PiOS/Common/pios_adxl345.c @@ -1,32 +1,116 @@ +/** + ****************************************************************************** + * @addtogroup PIOS PIOS Core hardware abstraction layer + * @{ + * @addtogroup PIOS_ADXL345 ADXL345 Functions + * @brief Deals with the hardware interface to the BMA180 3-axis accelerometer + * @{ + * + * @file pios_adxl345.h + * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2012. + * @brief PiOS ADXL345 digital accelerometer driver. + * @see The GNU Public License (GPL) Version 3 + * + *****************************************************************************/ /* - * pios_adxl345.c - * OpenPilotOSX + * 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. * - * Created by James Cotton on 1/16/11. - * Copyright 2011 OpenPilot. All rights reserved. + * 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 */ #include "pios.h" -static uint32_t PIOS_SPI_ACCEL; +enum pios_adxl345_dev_magic { + PIOS_ADXL345_DEV_MAGIC = 0xcb55aa55, +}; + +struct adxl345_dev { + uint32_t spi_id; + uint32_t slave_num; + enum pios_adxl345_dev_magic magic; +}; + +//! Global structure for this device device +static struct adxl345_dev * dev; + +//! Private functions +static struct adxl345_dev * PIOS_ADXL345_alloc(void); +static int32_t PIOS_ADXL345_Validate(struct adxl345_dev * dev); +static int32_t PIOS_ADXL345_ClaimBus(); +static int32_t PIOS_ADXL345_ReleaseBus(); +static int32_t PIOS_ADXL345_FifoDepth(uint8_t depth); + +/** + * @brief Allocate a new device + */ +static struct adxl345_dev * PIOS_ADXL345_alloc(void) +{ + struct adxl345_dev * adxl345_dev; + + adxl345_dev = (struct adxl345_dev *)pvPortMalloc(sizeof(*adxl345_dev)); + if (!adxl345_dev) return (NULL); + + adxl345_dev->magic = PIOS_ADXL345_DEV_MAGIC; + return(adxl345_dev); +} + +/** + * @brief Validate the handle to the spi device + * @returns 0 for valid device or -1 otherwise + */ +static int32_t PIOS_ADXL345_Validate(struct adxl345_dev * dev) +{ + if (dev == NULL) + return -1; + if (dev->magic != PIOS_ADXL345_DEV_MAGIC) + return -2; + if (dev->spi_id == 0) + return -3; + return 0; +} /** * @brief Claim the SPI bus for the accel communications and select this chip + * @return 0 for succesful claiming of bus or -1 otherwise */ -void PIOS_ADXL345_ClaimBus() +static int32_t PIOS_ADXL345_ClaimBus() { - PIOS_SPI_ClaimBus(PIOS_SPI_ACCEL); - PIOS_ADXL_ENABLE; + if(PIOS_ADXL345_Validate(dev) != 0) + return -1; + + if(PIOS_SPI_ClaimBus(dev->spi_id) != 0) + return -2; + + PIOS_SPI_RC_PinSet(dev->spi_id, dev->slave_num, 0); + + return 0; } /** * @brief Release the SPI bus for the accel communications and end the transaction + * @return 0 if success or <0 for failure */ -void PIOS_ADXL345_ReleaseBus() +static int32_t PIOS_ADXL345_ReleaseBus() { - PIOS_ADXL_DISABLE; - PIOS_SPI_ReleaseBus(PIOS_SPI_ACCEL); + if(PIOS_ADXL345_Validate(dev) != 0) + return -1; + + PIOS_SPI_RC_PinSet(dev->spi_id, dev->slave_num, 1); + + if(PIOS_SPI_ReleaseBus(dev->spi_id) != 0) + return -2; + + return 0; } /** @@ -34,80 +118,159 @@ void PIOS_ADXL345_ReleaseBus() * * This also puts it into high power mode */ -void PIOS_ADXL345_SelectRate(uint8_t rate) +int32_t PIOS_ADXL345_SelectRate(uint8_t rate) { + if(PIOS_ADXL345_Validate(dev) != 0) + return -1; + + if(PIOS_ADXL345_ClaimBus() != 0) + return -2; + uint8_t out[2] = {ADXL_RATE_ADDR, rate & 0x0F}; - PIOS_ADXL345_ClaimBus(); - PIOS_SPI_TransferBlock(PIOS_SPI_ACCEL,out,NULL,sizeof(out),NULL); - PIOS_ADXL345_ReleaseBus(); + if(PIOS_SPI_TransferBlock(dev->spi_id,out,NULL,sizeof(out),NULL) < 0) { + PIOS_ADXL345_ReleaseBus(); + return -3; + } + + PIOS_ADXL345_ReleaseBus(); + + return 0; } /** * @brief Set the range of the accelerometer and set the data to be right justified * with sign extension. Also keep device in 4 wire mode. */ -void PIOS_ADXL345_SetRange(uint8_t range) +int32_t PIOS_ADXL345_SetRange(uint8_t range) { + if(PIOS_ADXL345_Validate(dev) != 0) + return -1; + + if(PIOS_ADXL345_ClaimBus() != 0) + return -2; + uint8_t out[2] = {ADXL_FORMAT_ADDR, (range & 0x03) | ADXL_FULL_RES | ADXL_4WIRE}; - PIOS_ADXL345_ClaimBus(); - PIOS_SPI_TransferBlock(PIOS_SPI_ACCEL,out,NULL,sizeof(out),NULL); - PIOS_ADXL345_ReleaseBus(); + if(PIOS_SPI_TransferBlock(dev->spi_id,out,NULL,sizeof(out),NULL) < 0) { + PIOS_ADXL345_ReleaseBus(); + return -3; + } + + PIOS_ADXL345_ReleaseBus(); + + return 0; } /** * @brief Set the fifo depth that triggers an interrupt. This will be matched to the oversampling */ -void PIOS_ADXL345_FifoDepth(uint8_t depth) +static int32_t PIOS_ADXL345_FifoDepth(uint8_t depth) { + if(PIOS_ADXL345_Validate(dev) != 0) + return -1; + + if(PIOS_ADXL345_ClaimBus() != 0) + return -2; + uint8_t out[2] = {ADXL_FIFO_ADDR, (depth & 0x1f) | ADXL_FIFO_STREAM}; - PIOS_ADXL345_ClaimBus(); - PIOS_SPI_TransferBlock(PIOS_SPI_ACCEL,out,NULL,sizeof(out),NULL); - PIOS_ADXL345_ReleaseBus(); + if(PIOS_SPI_TransferBlock(dev->spi_id,out,NULL,sizeof(out),NULL) < 0) { + PIOS_ADXL345_ReleaseBus(); + return -3; + } + + PIOS_ADXL345_ReleaseBus(); + + return 0; } /** * @brief Enable measuring. This also disables the activity sensors (tap or free fall) */ -void PIOS_ADXL345_SetMeasure(uint8_t enable) +static int32_t PIOS_ADXL345_SetMeasure(uint8_t enable) { + if(PIOS_ADXL345_Validate(dev) != 0) + return -1; + + if(PIOS_ADXL345_ClaimBus() != 0) + return -2; + uint8_t out[2] = {ADXL_POWER_ADDR, ADXL_MEAURE}; - PIOS_ADXL345_ClaimBus(); - PIOS_SPI_TransferBlock(PIOS_SPI_ACCEL,out,NULL,sizeof(out),NULL); - PIOS_ADXL345_ReleaseBus(); -} + if(PIOS_SPI_TransferBlock(dev->spi_id,out,NULL,sizeof(out),NULL) < 0) { + PIOS_ADXL345_ReleaseBus(); + return -3; + } -/** - * @brief Connect to the correct SPI bus - */ -void PIOS_ADXL345_Attach(uint32_t spi_id) -{ - PIOS_SPI_ACCEL = spi_id; + PIOS_ADXL345_ReleaseBus(); + + return 0; } /** * @brief Initialize with good default settings */ -void PIOS_ADXL345_Init() +int32_t PIOS_ADXL345_Init(uint32_t spi_id, uint32_t slave_num) { + dev = PIOS_ADXL345_alloc(); + if(dev == NULL) + return -1; + + dev->spi_id = spi_id; + dev->slave_num = slave_num; + PIOS_ADXL345_ReleaseBus(); PIOS_ADXL345_SelectRate(ADXL_RATE_3200); PIOS_ADXL345_SetRange(ADXL_RANGE_8G); PIOS_ADXL345_FifoDepth(16); - PIOS_ADXL345_SetMeasure(1); + PIOS_ADXL345_SetMeasure(1); + + return 0; } /** * @brief Return number of entries in the fifo */ -uint8_t PIOS_ADXL345_FifoElements() +int32_t PIOS_ADXL345_Test() { + if(PIOS_ADXL345_Validate(dev) != 0) + return -1; + + if(PIOS_ADXL345_ClaimBus() != 0) + return -2; + + uint8_t buf[2] = {0,0}; + uint8_t rec[2] = {0,0}; + buf[0] = ADXL_WHOAMI | ADXL_READ_BIT; + + if(PIOS_SPI_TransferBlock(dev->spi_id,&buf[0],&rec[0],sizeof(buf),NULL) < 0) { + PIOS_ADXL345_ReleaseBus(); + return -3; + } + + PIOS_ADXL345_ReleaseBus(); + + return (rec[1] == ADXL_DEVICE_ID) ? 0 : -4; +} + +/** + * @brief Return number of entries in the fifo + */ +int32_t PIOS_ADXL345_FifoElements() +{ + if(PIOS_ADXL345_Validate(dev) != 0) + return -1; + + if(PIOS_ADXL345_ClaimBus() != 0) + return -2; + uint8_t buf[2] = {0,0}; uint8_t rec[2] = {0,0}; buf[0] = ADXL_FIFOSTATUS_ADDR | ADXL_READ_BIT ; // Read fifo status - PIOS_ADXL345_ClaimBus(); - PIOS_SPI_TransferBlock(PIOS_SPI_ACCEL,&buf[0],&rec[0],sizeof(buf),NULL); - PIOS_ADXL345_ReleaseBus(); + if(PIOS_SPI_TransferBlock(dev->spi_id,&buf[0],&rec[0],sizeof(buf),NULL) < 0) { + PIOS_ADXL345_ReleaseBus(); + return -3; + } + + PIOS_ADXL345_ReleaseBus(); return rec[1] & 0x3f; } @@ -118,14 +281,23 @@ uint8_t PIOS_ADXL345_FifoElements() */ uint8_t PIOS_ADXL345_Read(struct pios_adxl345_data * data) { + if(PIOS_ADXL345_Validate(dev) != 0) + return -1; + + if(PIOS_ADXL345_ClaimBus() != 0) + return -2; + // To save memory use same buffer for in and out but offset by // a byte uint8_t buf[9] = {0,0,0,0,0,0,0,0}; uint8_t rec[9] = {0,0,0,0,0,0,0,0}; buf[0] = ADXL_X0_ADDR | ADXL_MULTI_BIT | ADXL_READ_BIT ; // Multibyte read starting at X0 - PIOS_ADXL345_ClaimBus(); - PIOS_SPI_TransferBlock(PIOS_SPI_ACCEL,&buf[0],&rec[0],9,NULL); + if(PIOS_SPI_TransferBlock(dev->spi_id,&buf[0],&rec[0],9,NULL) < 0) { + PIOS_ADXL345_ReleaseBus(); + return -3; + } + PIOS_ADXL345_ReleaseBus(); data->x = rec[1] + (rec[2] << 8); diff --git a/flight/PiOS/Common/pios_bl_helper.c b/flight/PiOS/Common/pios_bl_helper.c deleted file mode 100644 index 967c3c7e6..000000000 --- a/flight/PiOS/Common/pios_bl_helper.c +++ /dev/null @@ -1,102 +0,0 @@ -/** - ****************************************************************************** - * @addtogroup PIOS PIOS Core hardware abstraction layer - * @{ - * @addtogroup PIOS_BOOTLOADER Functions - * @brief HAL code to interface to the OpenPilot AHRS module - * @{ - * - * @file pios_bl_helper.c - * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010. - * @brief Bootloader Helper Functions - * @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 - */ - -/* Project Includes */ -#include "pios.h" -#if defined(PIOS_INCLUDE_BL_HELPER) -#include -#include "stm32f10x_flash.h" - -uint8_t *PIOS_BL_HELPER_FLASH_If_Read(uint32_t SectorAddress) -{ - return (uint8_t *) (SectorAddress); -} - -#if defined(PIOS_INCLUDE_BL_HELPER_WRITE_SUPPORT) -uint8_t PIOS_BL_HELPER_FLASH_Ini() -{ - FLASH_Unlock(); - return 1; -} - -uint8_t PIOS_BL_HELPER_FLASH_Start() -{ - const struct pios_board_info * bdinfo = &pios_board_info_blob; - uint32_t pageAdress = bdinfo->fw_base; - uint8_t fail = FALSE; - while ((pageAdress < (bdinfo->fw_base + bdinfo->fw_size + bdinfo->desc_size)) - || (fail == TRUE)) { - for (int retry = 0; retry < MAX_DEL_RETRYS; ++retry) { - if (FLASH_ErasePage(pageAdress) == FLASH_COMPLETE) { - fail = FALSE; - break; - } else { - fail = TRUE; - } - - } - -#ifdef STM32F10X_HD - pageAdress += 2048; -#elif defined (STM32F10X_MD) - pageAdress += 1024; -#endif - } - - return (fail == TRUE) ? 0 : 1; -} -#endif - -uint32_t PIOS_BL_HELPER_CRC_Memory_Calc() -{ - const struct pios_board_info * bdinfo = &pios_board_info_blob; - - PIOS_BL_HELPER_CRC_Ini(); - CRC_ResetDR(); - CRC_CalcBlockCRC((uint32_t *) bdinfo->fw_base, (bdinfo->fw_size) >> 2); - return CRC_GetCRC(); -} - -void PIOS_BL_HELPER_FLASH_Read_Description(uint8_t * array, uint8_t size) -{ - const struct pios_board_info * bdinfo = &pios_board_info_blob; - uint8_t x = 0; - if (size > bdinfo->desc_size) size = bdinfo->desc_size; - for (uint32_t i = bdinfo->fw_base + bdinfo->fw_size; i < bdinfo->fw_base + bdinfo->fw_size + size; ++i) { - array[x] = *PIOS_BL_HELPER_FLASH_If_Read(i); - ++x; - } -} - -void PIOS_BL_HELPER_CRC_Ini() -{ - RCC_AHBPeriphClockCmd(RCC_AHBPeriph_CRC, ENABLE); -} -#endif diff --git a/flight/PiOS/Common/pios_bma180.c b/flight/PiOS/Common/pios_bma180.c index 866be1220..2a578dd5d 100644 --- a/flight/PiOS/Common/pios_bma180.c +++ b/flight/PiOS/Common/pios_bma180.c @@ -7,8 +7,7 @@ * @{ * * @file pios_bma180.h - * @author David "Buzz" Carlson (buzz@chebuzz.com) - * The OpenPilot Team, http://www.openpilot.org Copyright (C) 2011. + * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2012. * @brief PiOS BMA180 digital accelerometer driver. * - Driver for the BMA180 digital accelerometer on the SPI bus. * @see The GNU Public License (GPL) Version 3 @@ -32,58 +31,166 @@ #include "pios.h" -static uint32_t PIOS_SPI_ACCEL; -static uint8_t EEPROM_WRITEABLE=0; +#if defined(PIOS_INCLUDE_BMA180) +#include "fifo_buffer.h" + +enum pios_bma180_dev_magic { + PIOS_BMA180_DEV_MAGIC = 0xcbb93755, +}; + +#define PIOS_BMA180_MAX_DOWNSAMPLE 10 +struct bma180_dev { + uint32_t spi_id; + uint32_t slave_num; + int16_t buffer[PIOS_BMA180_MAX_DOWNSAMPLE * sizeof(struct pios_bma180_data)]; + t_fifo_buffer fifo; + const struct pios_bma180_cfg * cfg; + enum bma180_bandwidth bandwidth; + enum bma180_range range; + enum pios_bma180_dev_magic magic; +}; + +//! Global structure for this device device +static struct bma180_dev * dev; + +//! Private functions +static struct bma180_dev * PIOS_BMA180_alloc(void); +static int32_t PIOS_BMA180_Validate(struct bma180_dev * dev); +static int32_t PIOS_BMA180_GetReg(uint8_t reg); +static int32_t PIOS_BMA180_SetReg(uint8_t reg, uint8_t data); +static int32_t PIOS_BMA180_SelectBW(enum bma180_bandwidth bw); +static int32_t PIOS_BMA180_SetRange(enum bma180_range range); +static int32_t PIOS_BMA180_Config(); +static int32_t PIOS_BMA180_EnableIrq(); + +#define GRAV 9.81f + +/** + * @brief Allocate a new device + */ +static struct bma180_dev * PIOS_BMA180_alloc(void) +{ + struct bma180_dev * bma180_dev; + + bma180_dev = (struct bma180_dev *)pvPortMalloc(sizeof(*bma180_dev)); + if (!bma180_dev) return (NULL); + + fifoBuf_init(&bma180_dev->fifo, (uint8_t *) bma180_dev->buffer, sizeof(bma180_dev->buffer)); + + bma180_dev->magic = PIOS_BMA180_DEV_MAGIC; + return(bma180_dev); +} + +/** + * @brief Validate the handle to the spi device + * @returns 0 for valid device or -1 otherwise + */ +static int32_t PIOS_BMA180_Validate(struct bma180_dev * dev) +{ + if (dev == NULL) + return -1; + if (dev->magic != PIOS_BMA180_DEV_MAGIC) + return -2; + if (dev->spi_id == 0) + return -3; + return 0; +} + +/** + * @brief Initialize with good default settings + * @returns 0 for success, -1 for failure + */ +int32_t PIOS_BMA180_Init(uint32_t spi_id, uint32_t slave_num, const struct pios_bma180_cfg * cfg) +{ + dev = PIOS_BMA180_alloc(); + if(dev == NULL) + return -1; + + dev->spi_id = spi_id; + dev->slave_num = slave_num; + dev->cfg = cfg; + + if(PIOS_BMA180_Config() < 0) + return -1; + PIOS_DELAY_WaituS(50); + + PIOS_EXTI_Init(dev->cfg->exti_cfg); + + while(PIOS_BMA180_EnableIrq() != 0); + + return 0; +} /** * @brief Claim the SPI bus for the accel communications and select this chip + * @return 0 if successful, -1 if unable to claim bus */ -void PIOS_BMA180_ClaimBus() +int32_t PIOS_BMA180_ClaimBus() { - PIOS_SPI_ClaimBus(PIOS_SPI_ACCEL); - PIOS_BMA_ENABLE; + if(PIOS_BMA180_Validate(dev) != 0) + return -1; + + if(PIOS_SPI_ClaimBus(dev->spi_id) != 0) { + return -1; + } + + PIOS_SPI_RC_PinSet(dev->spi_id,dev->slave_num,0); + + return 0; +} + +/** + * @brief Claim the SPI bus for the accel communications and select this chip + * @return 0 if successful, -1 if unable to claim bus + */ +int32_t PIOS_BMA180_ClaimBusISR() +{ + if(PIOS_BMA180_Validate(dev) != 0) + return -1; + + if(PIOS_SPI_ClaimBusISR(dev->spi_id) != 0) { + return -1; + } + + PIOS_SPI_RC_PinSet(dev->spi_id,dev->slave_num,0); + return 0; } /** * @brief Release the SPI bus for the accel communications and end the transaction + * @return 0 if successful */ -void PIOS_BMA180_ReleaseBus() +int32_t PIOS_BMA180_ReleaseBus() { - PIOS_BMA_DISABLE; - PIOS_SPI_ReleaseBus(PIOS_SPI_ACCEL); -} + if(PIOS_BMA180_Validate(dev) != 0) + return -1; -/** - * @brief Set the EEPROM write-enable bit. Must be set to 1 (unlocked) before writing control registers. - * @return none - * @param _we[in] bit to set, 1 to enable writes or 0 to disable writes - */ -void PIOS_BMA180_WriteEnable(uint8_t _we) -{ - uint8_t addr_reg[2] = {BMA_WE_ADDR,0}; + PIOS_SPI_RC_PinSet(dev->spi_id,dev->slave_num,1); - PIOS_BMA180_ClaimBus(); - addr_reg[1] = PIOS_SPI_TransferByte(PIOS_SPI_ACCEL,(0x80 | BMA_WE_ADDR) ); - addr_reg[1] &= 0xEF; - addr_reg[1] |= ( (0x01 & _we) << 4); - PIOS_SPI_TransferBlock(PIOS_SPI_ACCEL,addr_reg,NULL,sizeof(addr_reg),NULL); - PIOS_BMA180_ReleaseBus(); - EEPROM_WRITEABLE=_we; + return PIOS_SPI_ReleaseBus(dev->spi_id); } /** * @brief Read a register from BMA180 - * @returns The register value + * @returns The register value or -1 if failure to get bus * @param reg[in] Register address to be read */ -uint8_t PIOS_BMA180_GetReg(uint8_t reg) +int32_t PIOS_BMA180_GetReg(uint8_t reg) { + if(PIOS_BMA180_Validate(dev) != 0) + return -1; + uint8_t data; - PIOS_BMA180_ClaimBus(); - data = PIOS_SPI_TransferByte(PIOS_SPI_ACCEL,(0x80 | reg) ); + + if(PIOS_BMA180_ClaimBus() != 0) + return -1; + + PIOS_SPI_TransferByte(dev->spi_id,(0x80 | reg) ); // request byte + data = PIOS_SPI_TransferByte(dev->spi_id,0 ); // receive response + PIOS_BMA180_ReleaseBus(); - return(data); + return data; } /** @@ -92,120 +199,281 @@ uint8_t PIOS_BMA180_GetReg(uint8_t reg) * @param reg[in] address of register to be written * @param data[in] data that is to be written to register */ -void PIOS_BMA180_SetReg(uint8_t reg, uint8_t data) +int32_t PIOS_BMA180_SetReg(uint8_t reg, uint8_t data) { - uint8_t reg_data[2] = { (0x7F & reg), data}; - PIOS_BMA180_ClaimBus(); - PIOS_SPI_TransferBlock(PIOS_SPI_ACCEL,reg_data,NULL,2,NULL); + if(PIOS_BMA180_ClaimBus() != 0) + return -1; + + PIOS_SPI_TransferByte(dev->spi_id, 0x7f & reg); + PIOS_SPI_TransferByte(dev->spi_id, data); + PIOS_BMA180_ReleaseBus(); + + return 0; +} + + +static int32_t PIOS_BMA180_EnableEeprom() { + // Enable EEPROM writing + int32_t byte = PIOS_BMA180_GetReg(BMA_CTRREG0); + if(byte < 0) + return -1; + byte |= 0x10; // Set bit 4 + if(PIOS_BMA180_SetReg(BMA_CTRREG0,(uint8_t) byte) < 0) // Have to set ee_w to + return -1; + return 0; +} + +static int32_t PIOS_BMA180_DisableEeprom() { + // Enable EEPROM writing + int32_t byte = PIOS_BMA180_GetReg(BMA_CTRREG0); + if(byte < 0) + return -1; + byte |= 0x10; // Set bit 4 + if(PIOS_BMA180_SetReg(BMA_CTRREG0,(uint8_t) byte) < 0) // Have to set ee_w to + return -1; + return 0; +} + +/** + * @brief Set the default register settings + * @return 0 if successful, -1 if not + */ +static int32_t PIOS_BMA180_Config() +{ + /* + 0x35 = 0x81 //smp-skip = 1 for less interrupts + 0x33 = 0x81 //shadow-dis = 1, update MSB and LSB synchronously + 0x27 = 0x01 //dis-i2c + 0x21 = 0x02 //new_data_int = 1 + */ + + PIOS_DELAY_WaituS(20); + + if(PIOS_BMA180_Validate(dev) != 0) + return -1; + + while(PIOS_BMA180_EnableEeprom() != 0); + while(PIOS_BMA180_SetReg(BMA_RESET, BMA_RESET_CODE) != 0); + while(PIOS_BMA180_SetReg(BMA_OFFSET_LSB1, 0x81) != 0); + while(PIOS_BMA180_SetReg(BMA_GAIN_Y, 0x81) != 0); + while(PIOS_BMA180_SetReg(BMA_CTRREG3, 0xFF) != 0); + while(PIOS_BMA180_SelectBW(dev->cfg->bandwidth) != 0); + while(PIOS_BMA180_SetRange(dev->cfg->range) != 0); + while(PIOS_BMA180_DisableEeprom() != 0); + + return 0; } /** * @brief Select the bandwidth the digital filter pass allows. - * @return none + * @return 0 if successful, -1 if not * @param rate[in] Bandwidth setting to be used * * EEPROM must be write-enabled before calling this function. */ -void PIOS_BMA180_SelectBW(uint8_t bw) +static int32_t PIOS_BMA180_SelectBW(enum bma180_bandwidth bw) { - uint8_t addr_reg[2] = { BMA_BW_ADDR, 0}; + if(PIOS_BMA180_Validate(dev) != 0) + return -1; - PIOS_BMA180_ClaimBus(); - addr_reg[1] = PIOS_SPI_TransferByte(PIOS_SPI_ACCEL,(0x80|BMA_BW_ADDR)); - addr_reg[1] &= 0x0F; - addr_reg[1] |= (bw << 4); - PIOS_SPI_TransferBlock(PIOS_SPI_ACCEL,addr_reg,NULL,sizeof(addr_reg),NULL); - PIOS_BMA180_ReleaseBus(); + dev->bandwidth = bw; + + uint8_t reg; + reg = PIOS_BMA180_GetReg(BMA_BW_ADDR); + reg = (reg & ~BMA_BW_MASK) | ((bw << BMA_BW_SHIFT) & BMA_BW_MASK); + return PIOS_BMA180_SetReg(BMA_BW_ADDR, reg); } /** * @brief Select the full scale acceleration range. - * @return none + * @return 0 if successful, -1 if not * @param rate[in] Range setting to be used * */ -void PIOS_BMA180_SetRange(uint8_t range) -{ - uint8_t addr_reg[2] = { BMA_RANGE_ADDR, 0}; +static int32_t PIOS_BMA180_SetRange(enum bma180_range new_range) +{ + if(PIOS_BMA180_Validate(dev) != 0) + return -1; - PIOS_BMA180_ClaimBus(); - addr_reg[1] = PIOS_SPI_TransferByte(PIOS_SPI_ACCEL,(0x80|BMA_RANGE_ADDR)); - addr_reg[1] &= 0x0F; - addr_reg[1] |= (range << 4); - PIOS_SPI_TransferBlock(PIOS_SPI_ACCEL,addr_reg,NULL,sizeof(addr_reg),NULL); - PIOS_BMA180_ReleaseBus(); + uint8_t reg; + + dev->range = new_range; + reg = PIOS_BMA180_GetReg(BMA_RANGE_ADDR); + reg = (reg & ~BMA_RANGE_MASK) | ((dev->range << BMA_RANGE_SHIFT) & BMA_RANGE_MASK); + return PIOS_BMA180_SetReg(BMA_RANGE_ADDR, reg); } -/** - * @brief Connect to the correct SPI bus - */ -void PIOS_BMA180_Attach(uint32_t spi_id) +static int32_t PIOS_BMA180_EnableIrq() { - PIOS_SPI_ACCEL = spi_id; -} -/** - * @brief Initialize with good default settings - */ -void PIOS_BMA180_Init() -{ -/* - PIOS_BMA180_ReleaseBus(); - PIOS_BMA180_WriteEnable(1); - PIOS_BMA180_SelectRate(BMA_RATE_3200); - PIOS_BMA180_SetRange(BMA_RANGE_8G); - PIOS_BMA180_FifoDepth(16); - PIOS_BMA180_SetMeasure(1); - PIOS_BMA180_WriteEnable(0); -*/ + if(PIOS_BMA180_EnableEeprom() < 0) + return -1; + + if(PIOS_BMA180_SetReg(BMA_CTRREG3, BMA_NEW_DAT_INT) < 0) + return -1; + + if(PIOS_BMA180_DisableEeprom() < 0) + return -1; + + return 0; } /** * @brief Read a single set of values from the x y z channels - * @returns The number of samples remaining in the fifo + * @param[out] data Int16 array of (x,y,z) sensor values + * @returns 0 if successful + * @retval -1 unable to claim bus + * @retval -2 unable to transfer data */ -uint8_t PIOS_BMA180_Read(struct pios_bma180_data * data) +int32_t PIOS_BMA180_ReadAccels(struct pios_bma180_data * data) { // To save memory use same buffer for in and out but offset by // a byte - uint8_t buf[7] = {0,0,0,0,0,0}; + uint8_t buf[7] = {BMA_X_LSB_ADDR | 0x80,0,0,0,0,0}; uint8_t rec[7] = {0,0,0,0,0,0}; - buf[0] = BMA_X_LSB_ADDR | 0x80 ; // Multibyte read starting at X LSB - PIOS_BMA180_ClaimBus(); - PIOS_SPI_TransferBlock(PIOS_SPI_ACCEL,&buf[0],&rec[0],7,NULL); + if(PIOS_BMA180_ClaimBus() != 0) + return -1; + if(PIOS_SPI_TransferBlock(dev->spi_id,&buf[0],&rec[0],7,NULL) != 0) + return -2; PIOS_BMA180_ReleaseBus(); // | MSB | LSB | 0 | new_data | - data->x = ( (rec[2] << 8) | rec[1] ) >> 2; - data->y = ( (rec[4] << 8) | rec[3] ) >> 2; - data->z = ( (rec[6] << 8) | rec[5] ) >> 2; + data->x = ((rec[2] << 8) | rec[1]); + data->y = ((rec[4] << 8) | rec[3]); + data->z = ((rec[6] << 8) | rec[5]); + data->x /= 4; + data->y /= 4; + data->z /= 4; return 0; // return number of remaining entries } /** - * @brief Test SPI and chip functionality by reading chip ID register - * @return 0 if test failed, any other value signals test succeeded. - * + * @brief Returns the scale the BMA180 chip is using + * @return Scale (m / s^2) / LSB */ -uint8_t PIOS_BMA180_Test() +float PIOS_BMA180_GetScale() { - uint8_t data = 0; - uint8_t pass = 0; - PIOS_BMA180_ClaimBus(); - data = PIOS_SPI_TransferByte(PIOS_SPI_ACCEL,(0x80 | BMA_CHIPID_ADDR) ); - data &= 0x07; - if(0x03 == data) - pass = 1; - data = PIOS_SPI_TransferByte(PIOS_SPI_ACCEL,(0x80 | BMA_VERSION_ADDR) ); - if(0x12 == data) - pass = 1 && pass; // Only passes if first and second test passS - PIOS_BMA180_ReleaseBus(); - return pass; + if(PIOS_BMA180_Validate(dev) != 0) + return -1; + + switch (dev->cfg->range) { + case BMA_RANGE_1G: + return GRAV / 8192.0f; + case BMA_RANGE_1_5G: + return GRAV / 5460.0f; + case BMA_RANGE_2G: + return GRAV / 4096.0f; + case BMA_RANGE_3G: + return GRAV / 2730.0f; + case BMA_RANGE_4G: + return GRAV / 2048.0f; + case BMA_RANGE_8G: + return GRAV / 1024.0f; + case BMA_RANGE_16G: + return GRAV / 512.0f; + } + return 0; } +/** + * @brief Get data from fifo + * @param [out] buffer pointer to a @ref pios_bma180_data structure to receive data + * @return 0 for success, -1 for failure (no data available) + */ +int32_t PIOS_BMA180_ReadFifo(struct pios_bma180_data * buffer) +{ + if(PIOS_BMA180_Validate(dev) != 0) + return -1; + + if(fifoBuf_getUsed(&dev->fifo) < sizeof(*buffer)) + return -1; + + fifoBuf_getData(&dev->fifo, (uint8_t *) buffer, sizeof(*buffer)); + + return 0; +} + + +/** + * @brief Test SPI and chip functionality by reading chip ID register + * @return 0 if success, -1 if failure. + * + */ +int32_t PIOS_BMA180_Test() +{ + // Read chip ID then version ID + uint8_t buf[3] = {0x80 | BMA_CHIPID_ADDR, 0, 0}; + uint8_t rec[3] = {0,0, 0}; + int32_t retval; + + if(PIOS_BMA180_ClaimBus() != 0) + return -1; + retval = PIOS_SPI_TransferBlock(dev->spi_id,&buf[0],&rec[0],sizeof(buf),NULL); + PIOS_BMA180_ReleaseBus(); + + if(retval != 0) + return -2; + + struct pios_bma180_data data; + if(PIOS_BMA180_ReadAccels(&data) != 0) + return -3; + + if(rec[1] != 0x3) + return -4; + + if(rec[2] < 0x12) + return -5; + + return 0; +} + +/** + * @brief IRQ Handler. Read data from the BMA180 FIFO and push onto a local fifo. + */ +int32_t bma180_irqs = 0; +void PIOS_BMA180_IRQHandler(void) +{ + bma180_irqs++; + + const static uint8_t pios_bma180_req_buf[7] = {BMA_X_LSB_ADDR | 0x80,0,0,0,0,0}; + uint8_t pios_bma180_dmabuf[8]; + + // If we can't get the bus then just move on for efficiency + if(PIOS_BMA180_ClaimBusISR() != 0) { + return; // Something else is using bus, miss this data + } + + PIOS_SPI_TransferBlock(dev->spi_id,pios_bma180_req_buf,(uint8_t *) pios_bma180_dmabuf, + sizeof(pios_bma180_dmabuf), NULL); + + // TODO: Make this conversion depend on configuration scale + struct pios_bma180_data data; + + // Don't release bus till data has copied + PIOS_BMA180_ReleaseBus(); + + // Must not return before releasing bus + if(fifoBuf_getFree(&dev->fifo) < sizeof(data)) + return; + + // Bottom two bits indicate new data and are constant zeros. Don't right + // shift because it drops sign bit + data.x = ((pios_bma180_dmabuf[2] << 8) | pios_bma180_dmabuf[1]); + data.y = ((pios_bma180_dmabuf[4] << 8) | pios_bma180_dmabuf[3]); + data.z = ((pios_bma180_dmabuf[6] << 8) | pios_bma180_dmabuf[5]); + data.x /= 4; + data.y /= 4; + data.z /= 4; + data.temperature = pios_bma180_dmabuf[7]; + + fifoBuf_putData(&dev->fifo, (uint8_t *) &data, sizeof(data)); + +} + +#endif /* PIOS_INCLUDE_BMA180 */ /** * @} * @} diff --git a/flight/PiOS/Common/pios_flash_w25x.c b/flight/PiOS/Common/pios_flash_w25x.c deleted file mode 100644 index f474beb3f..000000000 --- a/flight/PiOS/Common/pios_flash_w25x.c +++ /dev/null @@ -1,249 +0,0 @@ -/* - * pios_flash_w25x.c - * OpenPilotOSX - * - * Created by James Cotton on 1/23/11. - * Copyright 2011 OpenPilot. All rights reserved. - * - */ - -#include "pios.h" -#include "pios_flash_w25x.h" -#include "pios_adxl345.h" - -#define W25X_WRITE_ENABLE 0x06 -#define W25X_WRITE_DISABLE 0x04 -#define W25X_READ_STATUS 0x05 -#define W25X_WRITE_STATUS 0x01 -#define W25X_READ_DATA 0x03 -#define W25X_FAST_READ 0x0b -#define W25X_DEVICE_ID 0x90 -#define W25X_SECTOR_ERASE 0x20 -#define W25X_PAGE_WRITE 0x02 -#define W25X_CHIP_ERASE 0x60 - -#define W25X_STATUS_BUSY 0x01 -#define W25X_STATUS_WRITEPROTECT 0x02 -#define W25X_STATUS_BP0 0x04 -#define W25X_STATUS_BP1 0x08 -#define W25X_STATUS_BP2 0x10 -#define W25X_STATUS_TP 0x20 -#define W25X_STATUS_SEC 0x40 -#define W25X_STATUS_SRP0 0x80 - -static uint8_t device_type; - -//! Private functions -static int8_t PIOS_Flash_W25X_ClaimBus(); -static void PIOS_Flash_W25X_ReleaseBus(); -static uint8_t PIOS_Flash_W25X_WriteEnable(); -static uint8_t PIOS_Flash_W25X_Busy() ; - -static uint32_t PIOS_SPI_FLASH; - -/** - * @brief Claim the SPI bus for flash use and assert CS pin - * @return 0 for sucess, -1 for failure to get semaphore - */ -static int8_t PIOS_Flash_W25X_ClaimBus() -{ - int8_t ret = PIOS_SPI_ClaimBus(PIOS_SPI_FLASH); - PIOS_FLASH_ENABLE; - return (ret == 0) ? 0 : -1; -} - -/** - * @brief Release the SPI bus sempahore and ensure flash chip not using bus - */ -static void PIOS_Flash_W25X_ReleaseBus() -{ - PIOS_FLASH_DISABLE; - PIOS_SPI_ReleaseBus(PIOS_SPI_FLASH); -} - -/** - * @brief Returns if the flash chip is busy - */ -static uint8_t PIOS_Flash_W25X_Busy() -{ - return PIOS_Flash_W25X_ReadStatus() & W25X_STATUS_BUSY; -} - -/** - * @brief Execute the write enable instruction and returns the status - * @returns 0 if successful, -1 if unable to claim bus - */ -static uint8_t PIOS_Flash_W25X_WriteEnable() -{ - uint8_t out[] = {W25X_WRITE_ENABLE}; - if(PIOS_Flash_W25X_ClaimBus() != 0) - return -1; - PIOS_SPI_TransferBlock(PIOS_SPI_FLASH,out,NULL,sizeof(out),NULL); - PIOS_Flash_W25X_ReleaseBus(); - return 0; -} - -/** - * @brief Initialize the flash device and enable write access - */ -int8_t PIOS_Flash_W25X_Init(uint32_t spi_id) -{ - PIOS_SPI_FLASH = spi_id; - - PIOS_GPIO_Enable(PIOS_FLASH_CS_PIN); - device_type = PIOS_Flash_W25X_ReadID(); - return 0; -} - - -/** - * @brief Read the status register from flash chip and return it - */ -uint8_t PIOS_Flash_W25X_ReadStatus() -{ - uint8_t out[2] = {W25X_READ_STATUS, 0}; - uint8_t in[2] = {0,0}; - PIOS_Flash_W25X_ClaimBus(); - PIOS_SPI_TransferBlock(PIOS_SPI_FLASH,out,in,sizeof(out),NULL); - PIOS_Flash_W25X_ReleaseBus(); - return in[1]; -} - -/** - * @brief Read the status register from flash chip and return it - */ -uint8_t PIOS_Flash_W25X_ReadID() -{ - uint8_t out[] = {W25X_DEVICE_ID, 0, 0, 0, 0, 0}; - uint8_t in[6]; - PIOS_Flash_W25X_ClaimBus(); - PIOS_SPI_TransferBlock(PIOS_SPI_FLASH,out,in,sizeof(out),NULL); - PIOS_Flash_W25X_ReleaseBus(); - return in[5]; -} - -/** - * @brief Erase a sector on the flash chip - * @param[in] add Address of flash to erase - * @returns 0 if successful - * @retval -1 if unable to claim bus - * @retval - */ -int8_t PIOS_Flash_W25X_EraseSector(uint32_t addr) -{ - uint8_t ret; - uint8_t out[] = {W25X_SECTOR_ERASE, (addr >> 16) & 0xff, (addr >> 8) & 0xff , addr & 0xff}; - - if((ret = PIOS_Flash_W25X_WriteEnable()) != 0) - return ret; - - if(PIOS_Flash_W25X_ClaimBus() != 0) - return -1; - PIOS_SPI_TransferBlock(PIOS_SPI_FLASH,out,NULL,sizeof(out),NULL); - PIOS_Flash_W25X_ReleaseBus(); - - uint32_t i = 1; - while(PIOS_Flash_W25X_Busy()) { - if(++i == 0) - return -1; - } - - return 0; -} - -/** - * @brief Execute the whole chip - * @returns 0 if successful, -1 if unable to claim bus - */ -int8_t PIOS_Flash_W25X_EraseChip() -{ - uint8_t ret; - uint8_t out[] = {W25X_CHIP_ERASE}; - - if((ret = PIOS_Flash_W25X_WriteEnable()) != 0) - return ret; - - if(PIOS_Flash_W25X_ClaimBus() != 0) - return -1; - PIOS_SPI_TransferBlock(PIOS_SPI_FLASH,out,NULL,sizeof(out),NULL); - PIOS_Flash_W25X_ReleaseBus(); - - uint32_t i = 1; - while(PIOS_Flash_W25X_Busy()) { - if(++i == 0) - return -1; - } - - return 0; -} - - -/** - * @brief Write one page of data (up to 256 bytes) aligned to a page start - * @param[in] addr Address in flash to write to - * @param[in] data Pointer to data to write to flash - * @param[in] len Length of data to write (max 256 bytes) - * @return Zero if success or error code - * @retval -1 Unable to claim SPI bus - * @retval -2 Size exceeds 256 bytes - * @retval -3 Length to write would wrap around page boundary - */ -int8_t PIOS_Flash_W25X_WriteData(uint32_t addr, uint8_t * data, uint16_t len) -{ - uint8_t ret; - uint8_t out[4] = {W25X_PAGE_WRITE, (addr >> 16) & 0xff, (addr >> 8) & 0xff , addr & 0xff}; - - /* Can only write one page at a time */ - if(len > 0x100) - return -2; - - /* Ensure number of bytes fits after starting address before end of page */ - if(((addr & 0xff) + len) > 0x100) - return -3; - - if((ret = PIOS_Flash_W25X_WriteEnable()) != 0) - return ret; - - /* Execute write page command and clock in address. Keep CS asserted */ - if(PIOS_Flash_W25X_ClaimBus() != 0) - return -1; - PIOS_SPI_TransferBlock(PIOS_SPI_FLASH,out,NULL,sizeof(out),NULL); - - /* Clock out data to flash */ - PIOS_SPI_TransferBlock(PIOS_SPI_FLASH,data,NULL,len,NULL); - - PIOS_Flash_W25X_ReleaseBus(); - - uint32_t i = 1; - while(PIOS_Flash_W25X_Busy()) { - if(++i == 0) - return -1; - } - - return 0; -} - -/** - * @brief Read data from a location in flash memory - * @param[in] addr Address in flash to write to - * @param[in] data Pointer to data to write from flash - * @param[in] len Length of data to write (max 256 bytes) - * @return Zero if success or error code - * @retval -1 Unable to claim SPI bus - */ -int8_t PIOS_Flash_W25X_ReadData(uint32_t addr, uint8_t * data, uint16_t len) -{ - if(PIOS_Flash_W25X_ClaimBus() == -1) - return -1; - - /* Execute read command and clock in address. Keep CS asserted */ - uint8_t out[] = {W25X_READ_DATA, (addr >> 16) & 0xff, (addr >> 8) & 0xff , addr & 0xff}; - PIOS_SPI_TransferBlock(PIOS_SPI_FLASH,out,NULL,sizeof(out),NULL); - - /* Copy the transfer data to the buffer */ - PIOS_SPI_TransferBlock(PIOS_SPI_FLASH,NULL,data,len,NULL); - - PIOS_Flash_W25X_ReleaseBus(); - - return 0; -} diff --git a/flight/PiOS/Common/pios_flashfs_objlist.c b/flight/PiOS/Common/pios_flashfs_objlist.c index b4322ab78..a11f6b14b 100644 --- a/flight/PiOS/Common/pios_flashfs_objlist.c +++ b/flight/PiOS/Common/pios_flashfs_objlist.c @@ -56,31 +56,29 @@ struct fileHeader { } __attribute__((packed)); -#define OBJECT_TABLE_MAGIC 0x85FB3D35 -#define OBJ_MAGIC 0x3015A371 -#define OBJECT_TABLE_START 0x00000010 -#define OBJECT_TABLE_END 0x00001000 -#define SECTOR_SIZE 0x00001000 #define MAX_BADMAGIC 1000 +static const struct flashfs_cfg * cfg; /** * @brief Initialize the flash object setting FS * @return 0 if success, -1 if failure */ -int32_t PIOS_FLASHFS_Init() +int32_t PIOS_FLASHFS_Init(const struct flashfs_cfg * new_cfg) { - + cfg = new_cfg; + // Check for valid object table or create one uint32_t object_table_magic; uint32_t magic_fail_count = 0; bool magic_good = false; while(!magic_good) { - if (PIOS_Flash_W25X_ReadData(0, (uint8_t *)&object_table_magic, sizeof(object_table_magic)) != 0) + if (PIOS_Flash_Jedec_ReadData(0, (uint8_t *)&object_table_magic, sizeof(object_table_magic)) != 0) return -1; - if(object_table_magic != OBJECT_TABLE_MAGIC) { + if(object_table_magic != new_cfg->table_magic) { if(magic_fail_count++ > MAX_BADMAGIC) { - PIOS_FLASHFS_ClearObjectTableHeader(); + if(PIOS_FLASHFS_Format() != 0) + return -1; #if defined(PIOS_LED_HEARTBEAT) PIOS_LED_Toggle(PIOS_LED_HEARTBEAT); #endif /* PIOS_LED_HEARTBEAT */ @@ -89,7 +87,6 @@ int32_t PIOS_FLASHFS_Init() } else { PIOS_DELAY_WaituS(1000); } - } else { magic_good = true; @@ -97,18 +94,18 @@ int32_t PIOS_FLASHFS_Init() } - int32_t addr = OBJECT_TABLE_START; + int32_t addr = cfg->obj_table_start; struct objectHeader header; numObjects = 0; // Loop through header area while objects detect to count how many saved - while(addr < OBJECT_TABLE_END) { + while(addr < cfg->obj_table_end) { // Read the instance data - if (PIOS_Flash_W25X_ReadData(addr, (uint8_t *)&header, sizeof(header)) != 0) + if (PIOS_Flash_Jedec_ReadData(addr, (uint8_t *)&header, sizeof(header)) != 0) return -1; // Counting number of valid headers - if(header.objMagic != OBJ_MAGIC) + if(header.objMagic != cfg->obj_magic) break; numObjects++; @@ -124,7 +121,7 @@ int32_t PIOS_FLASHFS_Init() */ int32_t PIOS_FLASHFS_Format() { - if(PIOS_Flash_W25X_EraseChip() != 0) + if(PIOS_Flash_Jedec_EraseChip() != 0) return -1; if(PIOS_FLASHFS_ClearObjectTableHeader() != 0) return -1; @@ -137,11 +134,15 @@ int32_t PIOS_FLASHFS_Format() */ static int32_t PIOS_FLASHFS_ClearObjectTableHeader() { - if(PIOS_Flash_W25X_EraseSector(0) != 0) + if(PIOS_Flash_Jedec_EraseSector(0) != 0) return -1; - uint32_t object_table_magic = OBJECT_TABLE_MAGIC; - if (PIOS_Flash_W25X_WriteData(0, (uint8_t *)&object_table_magic, sizeof(object_table_magic)) != 0) + if (PIOS_Flash_Jedec_WriteData(0, (uint8_t *)&cfg->table_magic, sizeof(cfg->table_magic)) != 0) + return -1; + + uint32_t object_table_magic; + PIOS_Flash_Jedec_ReadData(0, (uint8_t *)&object_table_magic, sizeof(object_table_magic)); + if(object_table_magic != cfg->table_magic) return -1; return 0; @@ -155,15 +156,15 @@ static int32_t PIOS_FLASHFS_ClearObjectTableHeader() */ static int32_t PIOS_FLASHFS_GetObjAddress(uint32_t objId, uint16_t instId) { - int32_t addr = OBJECT_TABLE_START; + int32_t addr = cfg->obj_table_start; struct objectHeader header; // Loop through header area while objects detect to count how many saved - while(addr < OBJECT_TABLE_END) { + while(addr < cfg->obj_table_end) { // Read the instance data - if (PIOS_Flash_W25X_ReadData(addr, (uint8_t *) &header, sizeof(header)) != 0) + if (PIOS_Flash_Jedec_ReadData(addr, (uint8_t *) &header, sizeof(header)) != 0) return -1; - if(header.objMagic != OBJ_MAGIC) + if(header.objMagic != cfg->obj_magic) break; // stop searching once hit first non-object header else if (header.objId == objId && header.instId == instId) break; @@ -194,18 +195,18 @@ int32_t PIOS_FLASHFS_GetNewAddress(uint32_t objId, uint16_t instId) return -4; // Don't worry about max size of flash chip here, other code will catch that - header.objMagic = OBJ_MAGIC; + header.objMagic = cfg->obj_magic; header.objId = objId; header.instId = instId; - header.address = OBJECT_TABLE_END + SECTOR_SIZE * numObjects; + header.address = cfg->obj_table_end + cfg->sector_size * numObjects; - int32_t addr = OBJECT_TABLE_START + sizeof(header) * numObjects; + int32_t addr = cfg->obj_table_start + sizeof(header) * numObjects; // No room for this header in object table - if((addr + sizeof(header)) > OBJECT_TABLE_END) + if((addr + sizeof(header)) > cfg->obj_table_end) return -2; - if(PIOS_Flash_W25X_WriteData(addr, (uint8_t *) &header, sizeof(header)) != 0) + if(PIOS_Flash_Jedec_WriteData(addr, (uint8_t *) &header, sizeof(header)) != 0) return -3; // This numObejcts value must stay consistent or there will be a break in the table @@ -228,6 +229,9 @@ int32_t PIOS_FLASHFS_ObjSave(UAVObjHandle obj, uint16_t instId, uint8_t * data) uint32_t objId = UAVObjGetID(obj); uint8_t crc = 0; + if(PIOS_Flash_Jedec_StartTransaction() != 0) + return -1; + int32_t addr = PIOS_FLASHFS_GetObjAddress(objId, instId); // Object currently not saved @@ -235,36 +239,50 @@ int32_t PIOS_FLASHFS_ObjSave(UAVObjHandle obj, uint16_t instId, uint8_t * data) addr = PIOS_FLASHFS_GetNewAddress(objId, instId); // Could not allocate a sector - if(addr < 0) + if(addr < 0) { + PIOS_Flash_Jedec_EndTransaction(); return -1; + } struct fileHeader header = { .id = objId, .instId = instId, .size = UAVObjGetNumBytes(obj) }; - - if(PIOS_Flash_W25X_EraseSector(addr) != 0) - return -2; - - // Save header - // This information IS redundant with the object table id. Oh well. Better safe than sorry. - if(PIOS_Flash_W25X_WriteData(addr, (uint8_t *) &header, sizeof(header)) != 0) - return -3; - + // Update CRC crc = PIOS_CRC_updateCRC(0, (uint8_t *) &header, sizeof(header)); - - // Save data - if(PIOS_Flash_W25X_WriteData(addr + sizeof(header), data, UAVObjGetNumBytes(obj)) != 0) - return -4; - - // Update CRC crc = PIOS_CRC_updateCRC(crc, (uint8_t *) data, UAVObjGetNumBytes(obj)); - // Save CRC (written so will work when CRC changes to uint16) - if(PIOS_Flash_W25X_WriteData(addr + sizeof(header) + UAVObjGetNumBytes(obj), (uint8_t *) &crc, sizeof(crc)) != 0) - return -4; + if(PIOS_Flash_Jedec_EraseSector(addr) != 0) { + PIOS_Flash_Jedec_EndTransaction(); + return -2; + } + + struct pios_flash_chunk chunks[3] = { + { + .addr = (uint8_t *) &header, + .len = sizeof(header), + }, + { + .addr = (uint8_t *) data, + .len = UAVObjGetNumBytes(obj) + }, + { + .addr = (uint8_t *) &crc, + .len = sizeof(crc) + } + }; + + if(PIOS_Flash_Jedec_WriteChunks(addr, chunks, NELEMENTS(chunks)) != 0) { + PIOS_Flash_Jedec_EndTransaction(); + return -1; + } + + if(PIOS_Flash_Jedec_EndTransaction() != 0) { + PIOS_Flash_Jedec_EndTransaction(); + return -1; + } return 0; } @@ -292,43 +310,61 @@ int32_t PIOS_FLASHFS_ObjLoad(UAVObjHandle obj, uint16_t instId, uint8_t * data) const uint8_t crc_read_step = 8; uint8_t crc_read_buffer[crc_read_step]; + if(PIOS_Flash_Jedec_StartTransaction() != 0) + return -1; + int32_t addr = PIOS_FLASHFS_GetObjAddress(objId, instId); // Object currently not saved - if(addr < 0) + if(addr < 0) { + PIOS_Flash_Jedec_EndTransaction(); return -1; + } struct fileHeader header; // Load header // This information IS redundant with the object table id. Oh well. Better safe than sorry. - if(PIOS_Flash_W25X_ReadData(addr, (uint8_t *) &header, sizeof(header)) != 0) + if(PIOS_Flash_Jedec_ReadData(addr, (uint8_t *) &header, sizeof(header)) != 0) { + PIOS_Flash_Jedec_EndTransaction(); return -2; - + } + // Update CRC crc = PIOS_CRC_updateCRC(0, (uint8_t *) &header, sizeof(header)); - if((header.id != objId) || (header.instId != instId)) + if((header.id != objId) || (header.instId != instId)) { + PIOS_Flash_Jedec_EndTransaction(); return -3; - + } + // To avoid having to allocate the RAM for a copy of the object, we read by chunks // and compute the CRC for(uint32_t i = 0; i < objSize; i += crc_read_step) { - PIOS_Flash_W25X_ReadData(addr + sizeof(header) + i, crc_read_buffer, crc_read_step); + PIOS_Flash_Jedec_ReadData(addr + sizeof(header) + i, crc_read_buffer, crc_read_step); uint8_t valid_bytes = ((i + crc_read_step) >= objSize) ? objSize - i : crc_read_step; crc = PIOS_CRC_updateCRC(crc, crc_read_buffer, valid_bytes); } // Read CRC (written so will work when CRC changes to uint16) - if(PIOS_Flash_W25X_ReadData(addr + sizeof(header) + objSize, (uint8_t *) &crcFlash, sizeof(crcFlash)) != 0) + if(PIOS_Flash_Jedec_ReadData(addr + sizeof(header) + objSize, (uint8_t *) &crcFlash, sizeof(crcFlash)) != 0) { + PIOS_Flash_Jedec_EndTransaction(); return -5; + } - if(crc != crcFlash) + if(crc != crcFlash) { + PIOS_Flash_Jedec_EndTransaction(); return -6; + } // Read the instance data - if (PIOS_Flash_W25X_ReadData(addr + sizeof(header), data, objSize) != 0) + if (PIOS_Flash_Jedec_ReadData(addr + sizeof(header), data, objSize) != 0) { + PIOS_Flash_Jedec_EndTransaction(); return -4; + } + + if(PIOS_Flash_Jedec_EndTransaction() != 0) + return -1; return 0; } @@ -354,7 +390,7 @@ int32_t PIOS_FLASHFS_ObjDelete(UAVObjHandle obj, uint16_t instId) if(addr < 0) return -1; - if(PIOS_Flash_W25X_EraseSector(addr) != 0) + if(PIOS_Flash_Jedec_EraseSector(addr) != 0) return -2; return 0; diff --git a/flight/PiOS/Common/pios_hmc5843.c b/flight/PiOS/Common/pios_hmc5843.c index 688d2e90f..4f6b562d6 100644 --- a/flight/PiOS/Common/pios_hmc5843.c +++ b/flight/PiOS/Common/pios_hmc5843.c @@ -318,7 +318,7 @@ bool PIOS_HMC5843_NewDataAvailable(void) * \param[in] len number of bytes which should be read * \return 0 if operation was successful * \return -1 if error during I2C transfer -* \return -4 if invalid length +* \return -2 if unable to claim i2c device */ static bool PIOS_HMC5843_Read(uint8_t address, uint8_t * buffer, uint8_t len) { @@ -352,7 +352,8 @@ static bool PIOS_HMC5843_Read(uint8_t address, uint8_t * buffer, uint8_t len) * \param[in] address Register address * \param[in] buffer source buffer * \return 0 if operation was successful -* \return -1 if error during I2C transfer +* \retval -1 if error during I2C transfer +* \retval -2 if unable to claim i2c device */ static bool PIOS_HMC5843_Write(uint8_t address, uint8_t buffer) { diff --git a/flight/PiOS/Common/pios_hmc5883.c b/flight/PiOS/Common/pios_hmc5883.c index 3ac97698b..8891709fc 100644 --- a/flight/PiOS/Common/pios_hmc5883.c +++ b/flight/PiOS/Common/pios_hmc5883.c @@ -5,10 +5,8 @@ * @addtogroup PIOS_HMC5883 HMC5883 Functions * @brief Deals with the hardware interface to the magnetometers * @{ - * * @file pios_hmc5883.c - * @author David "Buzz" Carlson (buzz@chebuzz.com) - * The OpenPilot Team, http://www.openpilot.org Copyright (C) 2011. + * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2012. * @brief HMC5883 Magnetic Sensor Functions from AHRS * @see The GNU Public License (GPL) Version 3 * @@ -38,61 +36,30 @@ /* Global Variables */ /* Local Types */ -typedef struct { - uint8_t M_ODR; /* OUTPUT DATA RATE --> here below the relative define (See datasheet page 11 for more details) */ - uint8_t Meas_Conf; /* Measurement Configuration,: Normal, positive bias, or negative bias --> here below the relative define */ - uint8_t Gain; /* Gain Configuration, select the full scale --> here below the relative define (See datasheet page 11 for more details) */ - uint8_t Mode; -} PIOS_HMC5883_ConfigTypeDef; /* Local Variables */ volatile bool pios_hmc5883_data_ready; -static void PIOS_HMC5883_Config(PIOS_HMC5883_ConfigTypeDef * HMC5883_Config_Struct); -static bool PIOS_HMC5883_Read(uint8_t address, uint8_t * buffer, uint8_t len); -static bool PIOS_HMC5883_Write(uint8_t address, uint8_t buffer); +static int32_t PIOS_HMC5883_Config(const struct pios_hmc5883_cfg * cfg); +static int32_t PIOS_HMC5883_Read(uint8_t address, uint8_t * buffer, uint8_t len); +static int32_t PIOS_HMC5883_Write(uint8_t address, uint8_t buffer); + +static const struct pios_hmc5883_cfg * dev_cfg; /** * @brief Initialize the HMC5883 magnetometer sensor. * @return none */ -void PIOS_HMC5883_Init(void) +void PIOS_HMC5883_Init(const struct pios_hmc5883_cfg * cfg) { - GPIO_InitTypeDef GPIO_InitStructure; - EXTI_InitTypeDef EXTI_InitStructure; - NVIC_InitTypeDef NVIC_InitStructure; - - /* Enable DRDY GPIO clock */ - RCC_APB2PeriphClockCmd(PIOS_HMC5883_DRDY_CLK | RCC_APB2Periph_AFIO, ENABLE); - - /* Configure EOC pin as input floating */ - GPIO_InitStructure.GPIO_Pin = PIOS_HMC5883_DRDY_GPIO_PIN; - GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; - GPIO_Init(PIOS_HMC5883_DRDY_GPIO_PORT, &GPIO_InitStructure); - - /* Configure the End Of Conversion (EOC) interrupt */ - GPIO_EXTILineConfig(PIOS_HMC5883_DRDY_PORT_SOURCE, PIOS_HMC5883_DRDY_PIN_SOURCE); - EXTI_InitStructure.EXTI_Line = PIOS_HMC5883_DRDY_EXTI_LINE; - EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; - EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising; - EXTI_InitStructure.EXTI_LineCmd = ENABLE; - EXTI_Init(&EXTI_InitStructure); - - /* Enable and set EOC EXTI Interrupt to the lowest priority */ - NVIC_InitStructure.NVIC_IRQChannel = PIOS_HMC5883_DRDY_IRQn; - NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = PIOS_HMC5883_DRDY_PRIO; - NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; - NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; - NVIC_Init(&NVIC_InitStructure); - - /* Configure the HMC5883 Sensor */ - PIOS_HMC5883_ConfigTypeDef HMC5883_InitStructure; - HMC5883_InitStructure.M_ODR = PIOS_HMC5883_ODR_15; - HMC5883_InitStructure.Meas_Conf = PIOS_HMC5883_MEASCONF_NORMAL; - HMC5883_InitStructure.Gain = PIOS_HMC5883_GAIN_1_9; - HMC5883_InitStructure.Mode = PIOS_HMC5883_MODE_CONTINUOUS; - PIOS_HMC5883_Config(&HMC5883_InitStructure); + dev_cfg = cfg; // store config before enabling interrupt + PIOS_EXTI_Init(cfg->exti_cfg); + + int32_t val = PIOS_HMC5883_Config(cfg); + + PIOS_Assert(val == 0); + pios_hmc5883_data_ready = false; } @@ -100,247 +67,271 @@ void PIOS_HMC5883_Init(void) * @brief Initialize the HMC5883 magnetometer sensor * \return none * \param[in] PIOS_HMC5883_ConfigTypeDef struct to be used to configure sensor. -* -* CTRL_REGA: Control Register A -* Read Write -* Default value: 0x10 -* 7:5 0 These bits must be cleared for correct operation. -* 4:2 DO2-DO0: Data Output Rate Bits -* DO2 | DO1 | DO0 | Minimum Data Output Rate (Hz) -* ------------------------------------------------------ -* 0 | 0 | 0 | 0.75 -* 0 | 0 | 1 | 1.5 -* 0 | 1 | 0 | 3 -* 0 | 1 | 1 | 7.5 -* 1 | 0 | 0 | 15 (default) -* 1 | 0 | 1 | 30 -* 1 | 1 | 0 | 75 -* 1 | 1 | 1 | Not Used -* 1:0 MS1-MS0: Measurement Configuration Bits -* MS1 | MS0 | MODE -* ------------------------------ -* 0 | 0 | Normal -* 0 | 1 | Positive Bias -* 1 | 0 | Negative Bias -* 1 | 1 | Not Used -* -* CTRL_REGB: Control RegisterB -* Read Write -* Default value: 0x20 -* 7:5 GN2-GN0: Gain Configuration Bits. -* GN2 | GN1 | GN0 | Mag Input | Gain | Output Range -* | | | Range[Ga] | [LSB/mGa] | -* ------------------------------------------------------ -* 0 | 0 | 0 | ±0.88Ga | 1370 | 0xF800–0x07FF (-2048:2047) -* 0 | 0 | 1 | ±1.3Ga (def) | 1090 | 0xF800–0x07FF (-2048:2047) -* 0 | 1 | 0 | ±1.9Ga | 820 | 0xF800–0x07FF (-2048:2047) -* 0 | 1 | 1 | ±2.5Ga | 660 | 0xF800–0x07FF (-2048:2047) -* 1 | 0 | 0 | ±4.0Ga | 440 | 0xF800–0x07FF (-2048:2047) -* 1 | 0 | 1 | ±4.7Ga | 390 | 0xF800–0x07FF (-2048:2047) -* 1 | 1 | 0 | ±5.6Ga | 330 | 0xF800–0x07FF (-2048:2047) -* 1 | 1 | 1 | ±8.1Ga | 230 | 0xF800–0x07FF (-2048:2047) -* |Not recommended| -* -* 4:0 CRB4-CRB: 0 This bit must be cleared for correct operation. -* -* _MODE_REG: Mode Register -* Read Write -* Default value: 0x02 -* 7:2 0 These bits must be cleared for correct operation. -* 1:0 MD1-MD0: Mode Select Bits -* MS1 | MS0 | MODE -* ------------------------------ -* 0 | 0 | Continuous-Conversion Mode. -* 0 | 1 | Single-Conversion Mode -* 1 | 0 | Negative Bias -* 1 | 1 | Sleep Mode -*/ -static void PIOS_HMC5883_Config(PIOS_HMC5883_ConfigTypeDef * HMC5883_Config_Struct) + * + * CTRL_REGA: Control Register A + * Read Write + * Default value: 0x10 + * 7:5 0 These bits must be cleared for correct operation. + * 4:2 DO2-DO0: Data Output Rate Bits + * DO2 | DO1 | DO0 | Minimum Data Output Rate (Hz) + * ------------------------------------------------------ + * 0 | 0 | 0 | 0.75 + * 0 | 0 | 1 | 1.5 + * 0 | 1 | 0 | 3 + * 0 | 1 | 1 | 7.5 + * 1 | 0 | 0 | 15 (default) + * 1 | 0 | 1 | 30 + * 1 | 1 | 0 | 75 + * 1 | 1 | 1 | Not Used + * 1:0 MS1-MS0: Measurement Configuration Bits + * MS1 | MS0 | MODE + * ------------------------------ + * 0 | 0 | Normal + * 0 | 1 | Positive Bias + * 1 | 0 | Negative Bias + * 1 | 1 | Not Used + * + * CTRL_REGB: Control RegisterB + * Read Write + * Default value: 0x20 + * 7:5 GN2-GN0: Gain Configuration Bits. + * GN2 | GN1 | GN0 | Mag Input | Gain | Output Range + * | | | Range[Ga] | [LSB/mGa] | + * ------------------------------------------------------ + * 0 | 0 | 0 | ±0.88Ga | 1370 | 0xF800–0x07FF (-2048:2047) + * 0 | 0 | 1 | ±1.3Ga (def) | 1090 | 0xF800–0x07FF (-2048:2047) + * 0 | 1 | 0 | ±1.9Ga | 820 | 0xF800–0x07FF (-2048:2047) + * 0 | 1 | 1 | ±2.5Ga | 660 | 0xF800–0x07FF (-2048:2047) + * 1 | 0 | 0 | ±4.0Ga | 440 | 0xF800–0x07FF (-2048:2047) + * 1 | 0 | 1 | ±4.7Ga | 390 | 0xF800–0x07FF (-2048:2047) + * 1 | 1 | 0 | ±5.6Ga | 330 | 0xF800–0x07FF (-2048:2047) + * 1 | 1 | 1 | ±8.1Ga | 230 | 0xF800–0x07FF (-2048:2047) + * |Not recommended| + * + * 4:0 CRB4-CRB: 0 This bit must be cleared for correct operation. + * + * _MODE_REG: Mode Register + * Read Write + * Default value: 0x02 + * 7:2 0 These bits must be cleared for correct operation. + * 1:0 MD1-MD0: Mode Select Bits + * MS1 | MS0 | MODE + * ------------------------------ + * 0 | 0 | Continuous-Conversion Mode. + * 0 | 1 | Single-Conversion Mode + * 1 | 0 | Negative Bias + * 1 | 1 | Sleep Mode + */ +static uint8_t CTRLB = 0x00; +static int32_t PIOS_HMC5883_Config(const struct pios_hmc5883_cfg * cfg) { uint8_t CTRLA = 0x00; - uint8_t CTRLB = 0x00; uint8_t MODE = 0x00; - - CTRLA |= (uint8_t) (HMC5883_Config_Struct->M_ODR | HMC5883_Config_Struct->Meas_Conf); - CTRLB |= (uint8_t) (HMC5883_Config_Struct->Gain); - MODE |= (uint8_t) (HMC5883_Config_Struct->Mode); - + CTRLB = 0; + + CTRLA |= (uint8_t) (cfg->M_ODR | cfg->Meas_Conf); + CTRLB |= (uint8_t) (cfg->Gain); + MODE |= (uint8_t) (cfg->Mode); + // CRTL_REGA - while (!PIOS_HMC5883_Write(PIOS_HMC5883_CONFIG_REG_A, CTRLA)) ; - + if (PIOS_HMC5883_Write(PIOS_HMC5883_CONFIG_REG_A, CTRLA) != 0) + return -1; + // CRTL_REGB - while (!PIOS_HMC5883_Write(PIOS_HMC5883_CONFIG_REG_B, CTRLB)) ; - + if (PIOS_HMC5883_Write(PIOS_HMC5883_CONFIG_REG_B, CTRLB) != 0) + return -1; + // Mode register - while (!PIOS_HMC5883_Write(PIOS_HMC5883_MODE_REG, MODE)) ; + if (PIOS_HMC5883_Write(PIOS_HMC5883_MODE_REG, MODE) != 0) + return -1; + + return 0; } /** * @brief Read current X, Z, Y values (in that order) * \param[out] int16_t array of size 3 to store X, Z, and Y magnetometer readings - * \return none -*/ -void PIOS_HMC5883_ReadMag(int16_t out[3]) + * \return 0 for success or -1 for failure + */ +int32_t PIOS_HMC5883_ReadMag(int16_t out[3]) { - uint8_t buffer[6]; - uint8_t ctrlB; - pios_hmc5883_data_ready = false; - - while (!PIOS_HMC5883_Read(PIOS_HMC5883_CONFIG_REG_B, &ctrlB, 1)) ; - while (!PIOS_HMC5883_Read(PIOS_HMC5883_DATAOUT_XMSB_REG, buffer, 6)) ; - - switch (ctrlB & 0xE0) { - case 0x00: - for (int i = 0; i < 3; i++) - out[i] = ((int16_t) ((uint16_t) buffer[2 * i] << 8) - + buffer[2 * i + 1]) * 1000 / PIOS_HMC5883_Sensitivity_0_88Ga; - break; - case 0x20: - for (int i = 0; i < 3; i++) - out[i] = ((int16_t) ((uint16_t) buffer[2 * i] << 8) - + buffer[2 * i + 1]) * 1000 / PIOS_HMC5883_Sensitivity_1_3Ga; - break; - case 0x40: - for (int i = 0; i < 3; i++) - out[i] = (int16_t) (((uint16_t) buffer[2 * i] << 8) - + buffer[2 * i + 1]) * 1000 / PIOS_HMC5883_Sensitivity_1_9Ga; - break; - case 0x60: - for (int i = 0; i < 3; i++) - out[i] = (int16_t) (((uint16_t) buffer[2 * i] << 8) - + buffer[2 * i + 1]) * 1000 / PIOS_HMC5883_Sensitivity_2_5Ga; - break; - case 0x80: - for (int i = 0; i < 3; i++) - out[i] = (int16_t) (((uint16_t) buffer[2 * i] << 8) - + buffer[2 * i + 1]) * 1000 / PIOS_HMC5883_Sensitivity_4_0Ga; - break; - case 0xA0: - for (int i = 0; i < 3; i++) - out[i] = (int16_t) (((uint16_t) buffer[2 * i] << 8) - + buffer[2 * i + 1]) * 1000 / PIOS_HMC5883_Sensitivity_4_7Ga; - break; - case 0xC0: - for (int i = 0; i < 3; i++) - out[i] = (int16_t) (((uint16_t) buffer[2 * i] << 8) - + buffer[2 * i + 1]) * 1000 / PIOS_HMC5883_Sensitivity_5_6Ga; - break; - case 0xE0: - for (int i = 0; i < 3; i++) - out[i] = (int16_t) (((uint16_t) buffer[2 * i] << 8) - + buffer[2 * i + 1]) * 1000 / PIOS_HMC5883_Sensitivity_8_1Ga; - break; + uint8_t buffer[6]; + int32_t temp; + int32_t sensitivity; + + if (PIOS_HMC5883_Read(PIOS_HMC5883_DATAOUT_XMSB_REG, buffer, 6) != 0) { + return -1; } + + switch (CTRLB & 0xE0) { + case 0x00: + sensitivity = PIOS_HMC5883_Sensitivity_0_88Ga; + break; + case 0x20: + sensitivity = PIOS_HMC5883_Sensitivity_1_3Ga; + break; + case 0x40: + sensitivity = PIOS_HMC5883_Sensitivity_1_9Ga; + break; + case 0x60: + sensitivity = PIOS_HMC5883_Sensitivity_2_5Ga; + break; + case 0x80: + sensitivity = PIOS_HMC5883_Sensitivity_4_0Ga; + break; + case 0xA0: + sensitivity = PIOS_HMC5883_Sensitivity_4_7Ga; + break; + case 0xC0: + sensitivity = PIOS_HMC5883_Sensitivity_5_6Ga; + break; + case 0xE0: + sensitivity = PIOS_HMC5883_Sensitivity_8_1Ga; + break; + default: + PIOS_Assert(0); + } + + for (int i = 0; i < 3; i++) { + temp = ((int16_t) ((uint16_t) buffer[2 * i] << 8) + + buffer[2 * i + 1]) * 1000 / sensitivity; + out[i] = temp; + } + // Data reads out as X,Z,Y + temp = out[2]; + out[2] = out[1]; + out[1] = temp; + + // This should not be necessary but for some reason it is coming out of continuous conversion mode + PIOS_HMC5883_Write(PIOS_HMC5883_MODE_REG, PIOS_HMC5883_MODE_CONTINUOUS); + + return 0; } /** * @brief Read the identification bytes from the HMC5883 sensor * \param[out] uint8_t array of size 4 to store HMC5883 ID. - * \return none -*/ -void PIOS_HMC5883_ReadID(uint8_t out[4]) + * \return 0 if successful, -1 if not + */ +uint8_t PIOS_HMC5883_ReadID(uint8_t out[4]) { - while (!PIOS_HMC5883_Read(PIOS_HMC5883_DATAOUT_IDA_REG, out, 3)) ; + uint8_t retval = PIOS_HMC5883_Read(PIOS_HMC5883_DATAOUT_IDA_REG, out, 3); out[3] = '\0'; + return retval; } /** * @brief Tells whether new magnetometer readings are available * \return true if new data is available * \return false if new data is not available -*/ + */ bool PIOS_HMC5883_NewDataAvailable(void) { return (pios_hmc5883_data_ready); } /** -* @brief Reads one or more bytes into a buffer -* \param[in] address HMC5883 register address (depends on size) -* \param[out] buffer destination buffer -* \param[in] len number of bytes which should be read -* \return 0 if operation was successful -* \return -1 if error during I2C transfer -* \return -4 if invalid length -*/ -static bool PIOS_HMC5883_Read(uint8_t address, uint8_t * buffer, uint8_t len) + * @brief Reads one or more bytes into a buffer + * \param[in] address HMC5883 register address (depends on size) + * \param[out] buffer destination buffer + * \param[in] len number of bytes which should be read + * \return 0 if operation was successful + * \return -1 if error during I2C transfer + * \return -2 if unable to claim i2c device + */ +static int32_t PIOS_HMC5883_Read(uint8_t address, uint8_t * buffer, uint8_t len) { uint8_t addr_buffer[] = { address, }; - + const struct pios_i2c_txn txn_list[] = { { - .info = __func__, - .addr = PIOS_HMC5883_I2C_ADDR, - .rw = PIOS_I2C_TXN_WRITE, - .len = sizeof(addr_buffer), - .buf = addr_buffer, - } + .info = __func__, + .addr = PIOS_HMC5883_I2C_ADDR, + .rw = PIOS_I2C_TXN_WRITE, + .len = sizeof(addr_buffer), + .buf = addr_buffer, + } , { - .info = __func__, - .addr = PIOS_HMC5883_I2C_ADDR, - .rw = PIOS_I2C_TXN_READ, - .len = len, - .buf = buffer, - } + .info = __func__, + .addr = PIOS_HMC5883_I2C_ADDR, + .rw = PIOS_I2C_TXN_READ, + .len = len, + .buf = buffer, + } }; - + return PIOS_I2C_Transfer(PIOS_I2C_MAIN_ADAPTER, txn_list, NELEMENTS(txn_list)); } /** -* @brief Writes one or more bytes to the HMC5883 -* \param[in] address Register address -* \param[in] buffer source buffer -* \return 0 if operation was successful -* \return -1 if error during I2C transfer -*/ -static bool PIOS_HMC5883_Write(uint8_t address, uint8_t buffer) + * @brief Writes one or more bytes to the HMC5883 + * \param[in] address Register address + * \param[in] buffer source buffer + * \return 0 if operation was successful + * \return -1 if error during I2C transfer + * \return -2 if unable to claim i2c device + */ +static int32_t PIOS_HMC5883_Write(uint8_t address, uint8_t buffer) { uint8_t data[] = { address, buffer, }; - + const struct pios_i2c_txn txn_list[] = { { - .info = __func__, - .addr = PIOS_HMC5883_I2C_ADDR, - .rw = PIOS_I2C_TXN_WRITE, - .len = sizeof(data), - .buf = data, - } + .info = __func__, + .addr = PIOS_HMC5883_I2C_ADDR, + .rw = PIOS_I2C_TXN_WRITE, + .len = sizeof(data), + .buf = data, + } , }; - + ; return PIOS_I2C_Transfer(PIOS_I2C_MAIN_ADAPTER, txn_list, NELEMENTS(txn_list)); } /** * @brief Run self-test operation. Do not call this during operational use!! - * \return 0 if test failed - * \return non-zero value if test succeeded + * \return 0 if success, -1 if test failed */ int32_t PIOS_HMC5883_Test(void) { + int32_t failed = 0; + uint8_t registers[3] = {0,0,0}; + uint8_t status; + uint8_t ctrl_a_read; + uint8_t ctrl_b_read; + uint8_t mode_read; + int16_t values[3]; + + + /* Verify that ID matches (HMC5883 ID is null-terminated ASCII string "H43") */ char id[4]; PIOS_HMC5883_ReadID((uint8_t *)id); - if(!strncmp("H43\0",id,4)) - return 0; - else - return 1; - - int32_t passed = 1; - uint8_t registers[3] = {0,0,0}; - + if((id[0] != 'H') || (id[1] != '4') || (id[2] != '3')) // Expect H43 + return -1; + /* Backup existing configuration */ - while (!PIOS_HMC5883_Read(PIOS_HMC5883_CONFIG_REG_A,registers,3) ); - + if (PIOS_HMC5883_Read(PIOS_HMC5883_CONFIG_REG_A,registers,3) != 0) + return -1; + + /* Stop the device and read out last value */ + PIOS_DELAY_WaitmS(10); + if (PIOS_HMC5883_Write(PIOS_HMC5883_MODE_REG, PIOS_HMC5883_MODE_IDLE) != 0) + return -1; + if( PIOS_HMC5883_Read(PIOS_HMC5883_DATAOUT_STATUS_REG, &status,1) != 0) + return -1; + if (PIOS_HMC5883_ReadMag(values) != 0) + return -1; + /* * Put HMC5883 into self test mode * This is done by placing measurement config into positive (0x01) or negative (0x10) bias @@ -352,34 +343,54 @@ int32_t PIOS_HMC5883_Test(void) * * Changing measurement config back to PIOS_HMC5883_MEASCONF_NORMAL will leave self-test mode. */ - while (!PIOS_HMC5883_Write(PIOS_HMC5883_CONFIG_REG_A, PIOS_HMC5883_MEASCONF_BIAS_POS | PIOS_HMC5883_ODR_15)) ; - while (!PIOS_HMC5883_Write(PIOS_HMC5883_CONFIG_REG_B, PIOS_HMC5883_GAIN_2_5)) ; - while (!PIOS_HMC5883_Write(PIOS_HMC5883_MODE_REG, PIOS_HMC5883_MODE_SINGLE)) ; - - uint8_t values[6]; - while (!PIOS_HMC5883_Read(PIOS_HMC5883_DATAOUT_XMSB_REG, values, 6)) ; - int16_t x = (int16_t) (((uint16_t) values[0] << 8) + values[1]); - int16_t y = (int16_t) (((uint16_t) values[2] << 8) + values[3]); - int16_t z = (int16_t) (((uint16_t) values[4] << 8) + values[5]); - - if(abs(abs(x) - 766) > 20) - passed &= 0; - if(abs(abs(y) - 766) > 20) - passed &= 0; - if(abs(abs(z) - 713) > 20) - passed &= 0; - - /* Restore backup configuration */ - while (!PIOS_HMC5883_Write(PIOS_HMC5883_CONFIG_REG_A,registers[0]) ); - while (!PIOS_HMC5883_Write(PIOS_HMC5883_CONFIG_REG_B,registers[1]) ); - while (!PIOS_HMC5883_Write(PIOS_HMC5883_MODE_REG,registers[2]) ); - - return passed; + PIOS_DELAY_WaitmS(10); + if (PIOS_HMC5883_Write(PIOS_HMC5883_CONFIG_REG_A, PIOS_HMC5883_MEASCONF_BIAS_POS | PIOS_HMC5883_ODR_15) != 0) + return -1; + PIOS_DELAY_WaitmS(10); + if (PIOS_HMC5883_Write(PIOS_HMC5883_CONFIG_REG_B, PIOS_HMC5883_GAIN_8_1) != 0) + return -1; + PIOS_DELAY_WaitmS(10); + if (PIOS_HMC5883_Write(PIOS_HMC5883_MODE_REG, PIOS_HMC5883_MODE_SINGLE) != 0) + return -1; + + /* Must wait for value to be updated */ + PIOS_DELAY_WaitmS(200); + + if (PIOS_HMC5883_ReadMag(values) != 0) + return -1; + + /* + if(abs(values[0] - 766) > 20) + failed |= 1; + if(abs(values[1] - 766) > 20) + failed |= 1; + if(abs(values[2] - 713) > 20) + failed |= 1; + */ + + PIOS_HMC5883_Read(PIOS_HMC5883_CONFIG_REG_A, &ctrl_a_read,1); + PIOS_HMC5883_Read(PIOS_HMC5883_CONFIG_REG_B, &ctrl_b_read,1); + PIOS_HMC5883_Read(PIOS_HMC5883_MODE_REG, &mode_read,1); + PIOS_HMC5883_Read(PIOS_HMC5883_DATAOUT_STATUS_REG, &status,1); + + + /* Restore backup configuration */ + PIOS_DELAY_WaitmS(10); + if (PIOS_HMC5883_Write(PIOS_HMC5883_CONFIG_REG_A, registers[0]) != 0) + return -1; + PIOS_DELAY_WaitmS(10); + if (PIOS_HMC5883_Write(PIOS_HMC5883_CONFIG_REG_B, registers[1]) != 0) + return -1; + PIOS_DELAY_WaitmS(10); + if (PIOS_HMC5883_Write(PIOS_HMC5883_MODE_REG, registers[2]) != 0) + return -1; + + return failed; } /** -* @brief IRQ Handler -*/ + * @brief IRQ Handler + */ void PIOS_HMC5883_IRQHandler(void) { pios_hmc5883_data_ready = true; diff --git a/flight/PiOS/Common/pios_iap.c b/flight/PiOS/Common/pios_iap.c deleted file mode 100644 index bb679f067..000000000 --- a/flight/PiOS/Common/pios_iap.c +++ /dev/null @@ -1,122 +0,0 @@ -/*! - * @File iap.c - * @Brief - * - * Created on: Sep 6, 2010 - * Author: joe - */ - - -/**************************************************************************************** - * Header files - ****************************************************************************************/ -#include - -/**************************************************************************************** - * Private Definitions/Macros - ****************************************************************************************/ - -/* these definitions reside here for protection and privacy. */ -#define IAP_MAGIC_WORD_1 0x1122 -#define IAP_MAGIC_WORD_2 0xAA55 - -#define UPPERWORD16(lw) (uint16_t)((uint32_t)(lw)>>16) -#define LOWERWORD16(lw) (uint16_t)((uint32_t)(lw)&0x0000ffff) -#define UPPERBYTE(w) (uint8_t)((w)>>8) -#define LOWERBYTE(w) (uint8_t)((w)&0x00ff) - -/**************************************************************************************** - * Private Functions - ****************************************************************************************/ - -/**************************************************************************************** - * Private (static) Data - ****************************************************************************************/ - -/**************************************************************************************** - * Public/Global Data - ****************************************************************************************/ - -/*! - * \brief PIOS_IAP_Init - performs required initializations for iap module. - * \param none. - * \return none. - * \retval none. - * - * Created: Sep 8, 2010 10:10:48 PM by joe - */ -void PIOS_IAP_Init( void ) -{ - /* Enable CRC clock */ - RCC_AHBPeriphClockCmd(RCC_AHBPeriph_CRC, ENABLE); - - /* Enable PWR and BKP clock */ - RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE); - - /* Enable write access to Backup domain */ - PWR_BackupAccessCmd(ENABLE); - - /* Clear Tamper pin Event(TE) pending flag */ - BKP_ClearFlag(); - -} - -/*! - * \brief Determines if an In-Application-Programming request has been made. - * \param *comm - Which communication stream to use for the IAP (USB, Telemetry, I2C, SPI, etc) - * \return TRUE - if correct sequence found, along with 'comm' updated. - * FALSE - Note that 'comm' will have an invalid comm identifier. - * \retval - * - */ -uint32_t PIOS_IAP_CheckRequest( void ) -{ - uint32_t retval = FALSE; - uint16_t reg1; - uint16_t reg2; - - reg1 = BKP_ReadBackupRegister( MAGIC_REG_1 ); - reg2 = BKP_ReadBackupRegister( MAGIC_REG_2 ); - - if( reg1 == IAP_MAGIC_WORD_1 && reg2 == IAP_MAGIC_WORD_2 ) { - // We have a match. - retval = TRUE; - } else { - retval = FALSE; - } - return retval; -} - - - -/*! - * \brief Sets the 1st word of the request sequence. - * \param n/a - * \return n/a - * \retval - */ -void PIOS_IAP_SetRequest1(void) -{ - BKP_WriteBackupRegister( MAGIC_REG_1, IAP_MAGIC_WORD_1); -} - -void PIOS_IAP_SetRequest2(void) -{ - BKP_WriteBackupRegister( MAGIC_REG_2, IAP_MAGIC_WORD_2); -} - -void PIOS_IAP_ClearRequest(void) -{ - BKP_WriteBackupRegister( MAGIC_REG_1, 0); - BKP_WriteBackupRegister( MAGIC_REG_2, 0); -} - -uint16_t PIOS_IAP_ReadBootCount(void) -{ - return BKP_ReadBackupRegister ( IAP_BOOTCOUNT ); -} - -void PIOS_IAP_WriteBootCount (uint16_t boot_count) -{ - BKP_WriteBackupRegister ( IAP_BOOTCOUNT, boot_count ); -} diff --git a/flight/PiOS/Common/pios_imu3000.c b/flight/PiOS/Common/pios_imu3000.c deleted file mode 100644 index 79eaf36ca..000000000 --- a/flight/PiOS/Common/pios_imu3000.c +++ /dev/null @@ -1,238 +0,0 @@ -/** - ****************************************************************************** - * @addtogroup PIOS PIOS Core hardware abstraction layer - * @{ - * @addtogroup PIOS_IMU3000 IMU3000 Functions - * @brief Deals with the hardware interface to the 3-axis gyro - * @{ - * - * @file pios_IMU3000.c - * @author David "Buzz" Carlson (buzz@chebuzz.com) - * The OpenPilot Team, http://www.openpilot.org Copyright (C) 2011. - * @brief IMU3000 3-axis gyor functions from INS - * @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 - */ - -/* Project Includes */ -#include "pios.h" - -#if defined(PIOS_INCLUDE_IMU3000) - -/* Global Variables */ - -/* Local Types */ -typedef struct { - uint8_t Fifo_store; /* FIFO storage of different readings (See datasheet page 31 for more details) */ - uint8_t Smpl_rate_div; /* Sample rate divider to use (See datasheet page 32 for more details) */ - uint8_t DigLPF_Scale; /* Digital low-pass filter and full-range scale (See datasheet page 33 for more details) */ - uint8_t Interrupt_cfg; /* Interrupt configuration (See datasheet page 35 for more details) */ - uint8_t User_ctl; /* User control settings (See datasheet page 41 for more details) */ - uint8_t Pwr_mgmt_clk; /* Power management and clock selection (See datasheet page 32 for more details) */ -} PIOS_IMU3000_ConfigTypeDef; - -/* Local Variables */ - -static void PIOS_IMU3000_Config(PIOS_IMU3000_ConfigTypeDef * IMU3000_Config_Struct); -static bool PIOS_IMU3000_Read(uint8_t address, uint8_t * buffer, uint8_t len); -static bool PIOS_IMU3000_Write(uint8_t address, uint8_t buffer); - -/** - * @brief Initialize the IMU3000 3-axis gyro sensor. - * @return none - */ -void PIOS_IMU3000_Init(void) -{ - GPIO_InitTypeDef GPIO_InitStructure; - EXTI_InitTypeDef EXTI_InitStructure; - NVIC_InitTypeDef NVIC_InitStructure; - - /* Enable INT GPIO clock */ - RCC_APB2PeriphClockCmd(PIOS_IMU3000_INT_CLK | RCC_APB2Periph_AFIO, ENABLE); - - /* Configure IMU3000 interrupt pin as input floating */ - GPIO_InitStructure.GPIO_Pin = PIOS_IMU3000_INT_GPIO_PIN; - GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; - GPIO_Init(PIOS_IMU3000_INT_GPIO_PORT, &GPIO_InitStructure); - - /* Configure the End Of Conversion (EOC) interrupt */ - GPIO_EXTILineConfig(PIOS_IMU3000_INT_PORT_SOURCE, PIOS_IMU3000_INT_PIN_SOURCE); - EXTI_InitStructure.EXTI_Line = PIOS_IMU3000_INT_EXTI_LINE; - EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; - EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising; - EXTI_InitStructure.EXTI_LineCmd = ENABLE; - EXTI_Init(&EXTI_InitStructure); - - /* Enable and set EOC EXTI Interrupt to the lowest priority */ - NVIC_InitStructure.NVIC_IRQChannel = PIOS_IMU3000_INT_IRQn; - NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = PIOS_IMU3000_INT_PRIO; - NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; - NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; - NVIC_Init(&NVIC_InitStructure); - - /* Configure the IMU3000 Sensor */ - PIOS_IMU3000_ConfigTypeDef IMU3000_InitStructure; - IMU3000_InitStructure.Fifo_store = PIOS_IMU3000_FIFO_TEMP_OUT | PIOS_IMU3000_FIFO_GYRO_X_OUT | - PIOS_IMU3000_FIFO_GYRO_Y_OUT | PIOS_IMU3000_FIFO_GYRO_Z_OUT | PIOS_IMU3000_FIFO_FOOTER; - IMU3000_InitStructure.Smpl_rate_div = 8; - IMU3000_InitStructure.DigLPF_Scale = PIOS_IMU3000_LOWPASS_256_HZ | PIOS_IMU3000_SCALE_500_DEG; - IMU3000_InitStructure.Interrupt_cfg = PIOS_IMU3000_INT_CLR_ANYRD | PIOS_IMU3000_INT_DATA_RDY; - IMU3000_InitStructure.User_ctl = PIOS_IMU3000_USERCTL_FIFO_EN; - IMU3000_InitStructure.Pwr_mgmt_clk = PIOS_IMU3000_PWRMGMT_PLL_X_CLK; - PIOS_IMU3000_Config(&IMU3000_InitStructure); -} - -/** - * @brief Initialize the IMU3000 3-axis gyro sensor - * \return none - * \param[in] PIOS_IMU3000_ConfigTypeDef struct to be used to configure sensor. -* -*/ -static void PIOS_IMU3000_Config(PIOS_IMU3000_ConfigTypeDef * IMU3000_Config_Struct) -{ - // TODO: Add checks against current config so we only update what has changed - - // FIFO storage - while (!PIOS_IMU3000_Write(PIOS_IMU3000_FIFO_EN_REG, IMU3000_Config_Struct->Fifo_store)) ; - - // Sample rate divider - while (!PIOS_IMU3000_Write(PIOS_IMU3000_SMPLRT_DIV_REG, IMU3000_Config_Struct->Smpl_rate_div)) ; - - // Digital low-pass filter and scale - while (!PIOS_IMU3000_Write(PIOS_IMU3000_DLPF_CFG_REG, IMU3000_Config_Struct->DigLPF_Scale)) ; - - // Interrupt configuration - while (!PIOS_IMU3000_Write(PIOS_IMU3000_INT_CFG_REG, IMU3000_Config_Struct->Interrupt_cfg)) ; - - // Interrupt configuration - while (!PIOS_IMU3000_Write(PIOS_IMU3000_USER_CTRL_REG, IMU3000_Config_Struct->User_ctl)) ; - - // Interrupt configuration - while (!PIOS_IMU3000_Write(PIOS_IMU3000_PWR_MGMT_REG, IMU3000_Config_Struct->Pwr_mgmt_clk)) ; -} - -/** - * @brief Read current X, Z, Y values (in that order) - * \param[out] int16_t array of size 3 to store X, Z, and Y magnetometer readings - * \return none -*/ -void PIOS_IMU3000_ReadGyros(int16_t out[3]) -{ -} - - -/** - * @brief Read the identification bytes from the IMU3000 sensor - * \return ID read from IMU3000 -*/ -uint8_t PIOS_IMU3000_ReadID() -{ - uint8_t id; - while (!PIOS_IMU3000_Read(0x00, &id, 1)) ; - return id; -} - -/** -* @brief Reads one or more bytes from IMU3000 into a buffer -* \param[in] address IMU3000 register address (depends on size) -* \param[out] buffer destination buffer -* \param[in] len number of bytes which should be read -* \return 0 if operation was successful -* \return -1 if error during I2C transfer -* \return -4 if invalid length -*/ -static bool PIOS_IMU3000_Read(uint8_t address, uint8_t * buffer, uint8_t len) -{ - uint8_t addr_buffer[] = { - address, - }; - - const struct pios_i2c_txn txn_list[] = { - { - .info = __func__, - .addr = PIOS_IMU3000_I2C_ADDR, - .rw = PIOS_I2C_TXN_WRITE, - .len = sizeof(addr_buffer), - .buf = addr_buffer, - } - , - { - .info = __func__, - .addr = PIOS_IMU3000_I2C_ADDR, - .rw = PIOS_I2C_TXN_READ, - .len = len, - .buf = buffer, - } - }; - - return PIOS_I2C_Transfer(PIOS_I2C_MAIN_ADAPTER, txn_list, NELEMENTS(txn_list)); -} - -/** -* @brief Writes one or more bytes to the IMU3000 -* \param[in] address Register address -* \param[in] buffer source buffer -* \return 0 if operation was successful -* \return -1 if error during I2C transfer -*/ -static bool PIOS_IMU3000_Write(uint8_t address, uint8_t buffer) -{ - uint8_t data[] = { - address, - buffer, - }; - - const struct pios_i2c_txn txn_list[] = { - { - .info = __func__, - .addr = PIOS_IMU3000_I2C_ADDR, - .rw = PIOS_I2C_TXN_WRITE, - .len = sizeof(data), - .buf = data, - } - , - }; - - return PIOS_I2C_Transfer(PIOS_I2C_MAIN_ADAPTER, txn_list, NELEMENTS(txn_list)); -} - -/** - * @brief Run self-test operation. - * \return 0 if test failed - * \return non-zero value if test succeeded - */ -uint8_t PIOS_IMU3000_Test(void) -{ - /* Verify that ID matches (IMU3000 ID is 0x69) */ - return (0x69 ^ PIOS_IMU3000_ReadID() ); -} - -/** -* @brief IRQ Handler -*/ -void PIOS_IMU3000_IRQHandler(void) -{ -} - -#endif /* PIOS_INCLUDE_IMU3000 */ - -/** - * @} - * @} - */ diff --git a/flight/PiOS/Common/pios_rfm22b.c b/flight/PiOS/Common/pios_rfm22b.c index c8124c07a..93c941be5 100644 --- a/flight/PiOS/Common/pios_rfm22b.c +++ b/flight/PiOS/Common/pios_rfm22b.c @@ -674,7 +674,7 @@ void rfm22_startBurstWrite(uint8_t addr) PIOS_DELAY_WaituS(1); // chip select line LOW - PIOS_SPI_RC_PinSet(RFM22_PIOS_SPI, 0); + PIOS_SPI_RC_PinSet(RFM22_PIOS_SPI, 0, 0); PIOS_SPI_TransferByte(RFM22_PIOS_SPI, 0x80 | addr); } @@ -682,7 +682,7 @@ void rfm22_startBurstWrite(uint8_t addr) void rfm22_endBurstWrite(void) { // chip select line HIGH - PIOS_SPI_RC_PinSet(RFM22_PIOS_SPI, 1); + PIOS_SPI_RC_PinSet(RFM22_PIOS_SPI, 0, 1); } void rfm22_write(uint8_t addr, uint8_t data) @@ -691,13 +691,13 @@ void rfm22_write(uint8_t addr, uint8_t data) PIOS_DELAY_WaituS(1); // chip select line LOW - PIOS_SPI_RC_PinSet(RFM22_PIOS_SPI, 0); + PIOS_SPI_RC_PinSet(RFM22_PIOS_SPI, 0, 0); PIOS_SPI_TransferByte(RFM22_PIOS_SPI, 0x80 | addr); PIOS_SPI_TransferByte(RFM22_PIOS_SPI, data); // chip select line HIGH - PIOS_SPI_RC_PinSet(RFM22_PIOS_SPI, 1); + PIOS_SPI_RC_PinSet(RFM22_PIOS_SPI, 0, 1); } void rfm22_startBurstRead(uint8_t addr) @@ -706,7 +706,7 @@ void rfm22_startBurstRead(uint8_t addr) PIOS_DELAY_WaituS(1); // chip select line LOW - PIOS_SPI_RC_PinSet(RFM22_PIOS_SPI, 0); + PIOS_SPI_RC_PinSet(RFM22_PIOS_SPI, 0, 0); PIOS_SPI_TransferByte(RFM22_PIOS_SPI, addr & 0x7f); } @@ -714,7 +714,7 @@ void rfm22_startBurstRead(uint8_t addr) void rfm22_endBurstRead(void) { // chip select line HIGH - PIOS_SPI_RC_PinSet(RFM22_PIOS_SPI, 1); + PIOS_SPI_RC_PinSet(RFM22_PIOS_SPI, 0, 1); } uint8_t rfm22_read(uint8_t addr) @@ -725,13 +725,13 @@ uint8_t rfm22_read(uint8_t addr) PIOS_DELAY_WaituS(1); // chip select line LOW - PIOS_SPI_RC_PinSet(RFM22_PIOS_SPI, 0); + PIOS_SPI_RC_PinSet(RFM22_PIOS_SPI, 0, 0); PIOS_SPI_TransferByte(RFM22_PIOS_SPI, addr & 0x7f); rdata = PIOS_SPI_TransferByte(RFM22_PIOS_SPI, 0xff); // chip select line HIGH - PIOS_SPI_RC_PinSet(RFM22_PIOS_SPI, 1); + PIOS_SPI_RC_PinSet(RFM22_PIOS_SPI, 0, 1); return rdata; } @@ -1924,7 +1924,7 @@ int rfm22_resetModule(uint8_t mode, uint32_t min_frequency_hz, uint32_t max_freq // setup the SPI port // chip select line HIGH - PIOS_SPI_RC_PinSet(RFM22_PIOS_SPI, 1); + PIOS_SPI_RC_PinSet(RFM22_PIOS_SPI, 0, 1); // set SPI port SCLK frequency .. 4.5MHz PIOS_SPI_SetClockSpeed(RFM22_PIOS_SPI, PIOS_SPI_PRESCALER_16); diff --git a/flight/PiOS/Common/pios_usb_desc_hid_cdc.c b/flight/PiOS/Common/pios_usb_desc_hid_cdc.c index 8285615c0..1d4f0a9b2 100644 --- a/flight/PiOS/Common/pios_usb_desc_hid_cdc.c +++ b/flight/PiOS/Common/pios_usb_desc_hid_cdc.c @@ -32,6 +32,7 @@ #include "pios_usb_defs.h" /* struct usb_*, USB_* */ #include "pios_usb_board_data.h" /* PIOS_USB_BOARD_* */ #include "pios_usbhook.h" /* PIOS_USBHOOK_Register* */ +#include "pios_usb_hid.h" /* PIOS_USB_HID_Register* */ static const struct usb_device_desc device_desc = { .bLength = sizeof(struct usb_device_desc), @@ -249,8 +250,8 @@ int32_t PIOS_USB_DESC_HID_CDC_Init(void) PIOS_USBHOOK_RegisterDevice((uint8_t *)&device_desc, sizeof(device_desc)); - PIOS_USBHOOK_RegisterHidInterface((uint8_t *)&(config_hid_cdc.hid_if), sizeof(config_hid_cdc.hid_if)); - PIOS_USBHOOK_RegisterHidReport((uint8_t *)hid_report_desc, sizeof(hid_report_desc)); + PIOS_USB_HID_RegisterHidDescriptor((uint8_t *)&(config_hid_cdc.hid), sizeof(config_hid_cdc.hid)); + PIOS_USB_HID_RegisterHidReport((uint8_t *)hid_report_desc, sizeof(hid_report_desc)); return 0; } diff --git a/flight/PiOS/Common/pios_usb_desc_hid_only.c b/flight/PiOS/Common/pios_usb_desc_hid_only.c index 168efe841..b15a02b32 100644 --- a/flight/PiOS/Common/pios_usb_desc_hid_only.c +++ b/flight/PiOS/Common/pios_usb_desc_hid_only.c @@ -32,6 +32,7 @@ #include "pios_usb_defs.h" /* struct usb_*, USB_* */ #include "pios_usb_board_data.h" /* PIOS_USB_BOARD_* */ #include "pios_usbhook.h" /* PIOS_USBHOOK_Register* */ +#include "pios_usb_hid.h" /* PIOS_USB_HID_Register* */ static const struct usb_device_desc device_desc = { .bLength = sizeof(struct usb_device_desc), @@ -75,7 +76,7 @@ static const uint8_t hid_report_desc[36] = { HID_MAIN_ITEM_1 (HID_TAG_MAIN_INPUT), 0x03, /* Variable, Constant (read-only) */ - /* Host -> Host emulated serial channel */ + /* Host -> Device emulated serial channel */ HID_GLOBAL_ITEM_1 (HID_TAG_GLOBAL_REPORT_ID), 0x02, /* OpenPilot emulated Serial Channel (Host -> Device) */ HID_LOCAL_ITEM_1 (HID_TAG_LOCAL_USAGE), @@ -157,8 +158,8 @@ int32_t PIOS_USB_DESC_HID_ONLY_Init(void) PIOS_USBHOOK_RegisterDevice((uint8_t *)&device_desc, sizeof(device_desc)); - PIOS_USBHOOK_RegisterHidInterface((uint8_t *)&(config_hid_only.hid_if), sizeof(config_hid_only.hid_if)); - PIOS_USBHOOK_RegisterHidReport((uint8_t *)hid_report_desc, sizeof(hid_report_desc)); + PIOS_USB_HID_RegisterHidDescriptor((uint8_t *)&(config_hid_only.hid), sizeof(config_hid_only.hid)); + PIOS_USB_HID_RegisterHidReport((uint8_t *)hid_report_desc, sizeof(hid_report_desc)); return 0; } diff --git a/flight/PiOS/STM32F10x/link_STM32103CB_CC_Rev1_BL_sections.ld b/flight/PiOS/STM32F10x/link_STM32103CB_CC_Rev1_BL_sections.ld index 777e09aa6..19f70959d 100644 --- a/flight/PiOS/STM32F10x/link_STM32103CB_CC_Rev1_BL_sections.ld +++ b/flight/PiOS/STM32F10x/link_STM32103CB_CC_Rev1_BL_sections.ld @@ -75,6 +75,7 @@ SECTIONS { . = ALIGN(4); KEEP(*(.boardinfo)) + . = ALIGN(ORIGIN(BD_INFO)+LENGTH(BD_INFO)); } > BD_INFO /* Stabs debugging sections. */ diff --git a/flight/PiOS/STM32F10x/link_STM32103CB_CC_Rev1_sections.ld b/flight/PiOS/STM32F10x/link_STM32103CB_CC_Rev1_sections.ld index ac579364b..5df4741af 100644 --- a/flight/PiOS/STM32F10x/link_STM32103CB_CC_Rev1_sections.ld +++ b/flight/PiOS/STM32F10x/link_STM32103CB_CC_Rev1_sections.ld @@ -1,5 +1,5 @@ /* This is the size of the stack for all FreeRTOS IRQs */ -_irq_stack_size = 0x1E6; +_irq_stack_size = 0x240; /* This is the size of the stack for early init: life span is until scheduler starts */ _init_stack_size = 0x100; diff --git a/flight/PiOS/STM32F10x/link_STM3210E_INS_BL_sections.ld b/flight/PiOS/STM32F10x/link_STM3210E_INS_BL_sections.ld deleted file mode 100644 index 3420c385e..000000000 --- a/flight/PiOS/STM32F10x/link_STM3210E_INS_BL_sections.ld +++ /dev/null @@ -1,385 +0,0 @@ -/** - ****************************************************************************** - * - * @file link_STM3210E_INS_HD_NB.ld - * @author David "Buzz" Carlson (buzz@chebuzz.com) - * The OpenPilot Team, http://www.openpilot.org Copyright (C) 2011. - * @brief PiOS linker for the OpenPilot INS board - * @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 - */ - -/* This is the size of the stack for early init and for all FreeRTOS IRQs */ -_irq_stack_size = 0x400; - -/* Check valid alignment for VTOR */ -ASSERT(ORIGIN(BL_FLASH) == ALIGN(ORIGIN(BL_FLASH), 0x80), "Start of memory region flash not aligned for startup vector table"); - -/* -this sends all unreferenced IRQHandlers to reset -*/ - - -PROVIDE ( Undefined_Handler = 0 ) ; -PROVIDE ( SWI_Handler = 0 ) ; -PROVIDE ( IRQ_Handler = 0 ) ; -PROVIDE ( Prefetch_Handler = 0 ) ; -PROVIDE ( Abort_Handler = 0 ) ; -PROVIDE ( FIQ_Handler = 0 ) ; - -PROVIDE ( NMI_Handler = 0 ) ; -PROVIDE ( HardFault_Handler = 0 ) ; -PROVIDE ( MemManage_Handler = 0 ) ; -PROVIDE ( BusFault_Handler = 0 ) ; -PROVIDE ( UsageFault_Handler = 0 ) ; -PROVIDE ( SVC_Handler = 0 ) ; -PROVIDE ( DebugMon_Handler = 0 ) ; -PROVIDE ( PendSV_Handler = 0 ) ; -PROVIDE ( SysTick_Handler = 0 ) ; - -PROVIDE ( WWDG_IRQHandler = 0 ) ; -PROVIDE ( PVD_IRQHandler = 0 ) ; -PROVIDE ( TAMPER_IRQHandler = 0 ) ; -PROVIDE ( RTC_IRQHandler = 0 ) ; -PROVIDE ( FLASH_IRQHandler = 0 ) ; -PROVIDE ( RCC_IRQHandler = 0 ) ; -PROVIDE ( EXTI0_IRQHandler = 0 ) ; -PROVIDE ( EXTI1_IRQHandler = 0 ) ; -PROVIDE ( EXTI2_IRQHandler = 0 ) ; -PROVIDE ( EXTI3_IRQHandler = 0 ) ; -PROVIDE ( EXTI4_IRQHandler = 0 ) ; -PROVIDE ( DMAChannel1_IRQHandler = 0 ) ; -PROVIDE ( DMAChannel2_IRQHandler = 0 ) ; -PROVIDE ( DMAChannel3_IRQHandler = 0 ) ; -PROVIDE ( DMAChannel4_IRQHandler = 0 ) ; -PROVIDE ( DMAChannel5_IRQHandler = 0 ) ; -PROVIDE ( DMAChannel6_IRQHandler = 0 ) ; -PROVIDE ( DMAChannel7_IRQHandler = 0 ) ; -PROVIDE ( ADC_IRQHandler = 0 ) ; -PROVIDE ( USB_HP_CAN1_TX_IRQHandler = 0 ) ; -PROVIDE ( USB_LP_CAN1_RX0_IRQHandler = 0 ) ; -PROVIDE ( CAN1_RX1_IRQHandler = 0 ) ; -PROVIDE ( CAN1_SCE_IRQHandler = 0 ) ; -PROVIDE ( EXTI9_5_IRQHandler = 0 ) ; -PROVIDE ( TIM1_BRK_IRQHandler = 0 ) ; -PROVIDE ( TIM1_UP_IRQHandler = 0 ) ; -PROVIDE ( TIM1_TRG_COM_IRQHandler = 0 ) ; -PROVIDE ( TIM1_CC_IRQHandler = 0 ) ; -PROVIDE ( TIM2_IRQHandler = 0 ) ; -PROVIDE ( TIM3_IRQHandler = 0 ) ; -PROVIDE ( TIM4_IRQHandler = 0 ) ; -PROVIDE ( I2C1_EV_IRQHandler = 0 ) ; -PROVIDE ( I2C1_ER_IRQHandler = 0 ) ; -PROVIDE ( I2C2_EV_IRQHandler = 0 ) ; -PROVIDE ( I2C2_ER_IRQHandler = 0 ) ; -PROVIDE ( SPI1_IRQHandler = 0 ) ; -PROVIDE ( SPI2_IRQHandler = 0 ) ; -PROVIDE ( USART1_IRQHandler = 0 ) ; -PROVIDE ( USART2_IRQHandler = 0 ) ; -PROVIDE ( USART3_IRQHandler = 0 ) ; -PROVIDE ( EXTI15_10_IRQHandler = 0 ) ; -PROVIDE ( RTCAlarm_IRQHandler = 0 ) ; -PROVIDE ( USBWakeUp_IRQHandler = 0 ) ; -PROVIDE ( TIM8_BRK_IRQHandler = 0 ) ; -PROVIDE ( TIM8_UP_IRQHandler = 0 ) ; -PROVIDE ( TIM8_TRG_COM_IRQHandler = 0 ) ; -PROVIDE ( TIM8_CC_IRQHandler = 0 ) ; -PROVIDE ( ADC3_IRQHandler = 0 ) ; -PROVIDE ( FSMC_IRQHandler = 0 ) ; -PROVIDE ( SDIO_IRQHandler = 0 ) ; -PROVIDE ( TIM5_IRQHandler = 0 ) ; -PROVIDE ( SPI3_IRQHandler = 0 ) ; -PROVIDE ( UART4_IRQHandler = 0 ) ; -PROVIDE ( UART5_IRQHandler = 0 ) ; -PROVIDE ( TIM6_IRQHandler = 0 ) ; -PROVIDE ( TIM7_IRQHandler = 0 ) ; -PROVIDE ( DMA2_Channel1_IRQHandler = 0 ) ; -PROVIDE ( DMA2_Channel2_IRQHandler = 0 ) ; -PROVIDE ( DMA2_Channel3_IRQHandler = 0 ) ; -PROVIDE ( DMA2_Channel4_5_IRQHandler = 0 ) ; - - - -/******************************************************************************/ -/* Peripheral memory map */ -/******************************************************************************/ -/*this allows to compile the ST lib in "non-debug" mode*/ - - -/* Peripheral and SRAM base address in the alias region */ -PERIPH_BB_BASE = 0x42000000; -SRAM_BB_BASE = 0x22000000; - -/* Peripheral and SRAM base address in the bit-band region */ -SRAM_BASE = 0x20000000; -PERIPH_BASE = 0x40000000; - -/* Flash registers base address */ -PROVIDE ( FLASH_BASE = 0x40022000); -/* Flash Option Bytes base address */ -PROVIDE ( OB_BASE = 0x1FFFF800); - -/* Peripheral memory map */ -APB1PERIPH_BASE = PERIPH_BASE ; -APB2PERIPH_BASE = (PERIPH_BASE + 0x10000) ; -AHBPERIPH_BASE = (PERIPH_BASE + 0x20000) ; - -PROVIDE ( TIM2 = (APB1PERIPH_BASE + 0x0000) ) ; -PROVIDE ( TIM3 = (APB1PERIPH_BASE + 0x0400) ) ; -PROVIDE ( TIM4 = (APB1PERIPH_BASE + 0x0800) ) ; -PROVIDE ( RTC = (APB1PERIPH_BASE + 0x2800) ) ; -PROVIDE ( WWDG = (APB1PERIPH_BASE + 0x2C00) ) ; -PROVIDE ( IWDG = (APB1PERIPH_BASE + 0x3000) ) ; -PROVIDE ( SPI2 = (APB1PERIPH_BASE + 0x3800) ) ; -PROVIDE ( USART2 = (APB1PERIPH_BASE + 0x4400) ) ; -PROVIDE ( USART3 = (APB1PERIPH_BASE + 0x4800) ) ; -PROVIDE ( I2C1 = (APB1PERIPH_BASE + 0x5400) ) ; -PROVIDE ( I2C2 = (APB1PERIPH_BASE + 0x5800) ) ; -PROVIDE ( CAN = (APB1PERIPH_BASE + 0x6400) ) ; -PROVIDE ( BKP = (APB1PERIPH_BASE + 0x6C00) ) ; -PROVIDE ( PWR = (APB1PERIPH_BASE + 0x7000) ) ; - -PROVIDE ( AFIO = (APB2PERIPH_BASE + 0x0000) ) ; -PROVIDE ( EXTI = (APB2PERIPH_BASE + 0x0400) ) ; -PROVIDE ( GPIOA = (APB2PERIPH_BASE + 0x0800) ) ; -PROVIDE ( GPIOB = (APB2PERIPH_BASE + 0x0C00) ) ; -PROVIDE ( GPIOC = (APB2PERIPH_BASE + 0x1000) ) ; -PROVIDE ( GPIOD = (APB2PERIPH_BASE + 0x1400) ) ; -PROVIDE ( GPIOE = (APB2PERIPH_BASE + 0x1800) ) ; -PROVIDE ( ADC1 = (APB2PERIPH_BASE + 0x2400) ) ; -PROVIDE ( ADC2 = (APB2PERIPH_BASE + 0x2800) ) ; -PROVIDE ( TIM1 = (APB2PERIPH_BASE + 0x2C00) ) ; -PROVIDE ( SPI1 = (APB2PERIPH_BASE + 0x3000) ) ; -PROVIDE ( USART1 = (APB2PERIPH_BASE + 0x3800) ) ; - -PROVIDE ( DMA = (AHBPERIPH_BASE + 0x0000) ) ; -PROVIDE ( DMA_Channel1 = (AHBPERIPH_BASE + 0x0008) ) ; -PROVIDE ( DMA_Channel2 = (AHBPERIPH_BASE + 0x001C) ) ; -PROVIDE ( DMA_Channel3 = (AHBPERIPH_BASE + 0x0030) ) ; -PROVIDE ( DMA_Channel4 = (AHBPERIPH_BASE + 0x0044) ) ; -PROVIDE ( DMA_Channel5 = (AHBPERIPH_BASE + 0x0058) ) ; -PROVIDE ( DMA_Channel6 = (AHBPERIPH_BASE + 0x006C) ) ; -PROVIDE ( DMA_Channel7 = (AHBPERIPH_BASE + 0x0080) ) ; -PROVIDE ( RCC = (AHBPERIPH_BASE + 0x1000) ) ; - -/* System Control Space memory map */ -SCS_BASE = 0xE000E000; - -PROVIDE ( SysTick = (SCS_BASE + 0x0010) ) ; -PROVIDE ( NVIC = (SCS_BASE + 0x0100) ) ; -PROVIDE ( SCB = (SCS_BASE + 0x0D00) ) ; - - -/* Sections Definitions */ - -SECTIONS -{ - - /* for Cortex devices, the beginning of the startup code is stored in the .isr_vector section, which goes to FLASH */ - .isr_vector : - { - PROVIDE (pios_isr_vector_table_base = .); - KEEP(*(.isr_vector)) /* Startup code */ - . = ALIGN(4); - } > BL_FLASH - - /* for some STRx devices, the beginning of the startup code is stored in the .flashtext section, which goes to FLASH */ - .flashtext : - { - . = ALIGN(4); - *(.flashtext) /* Startup code */ - . = ALIGN(4); - } > BL_FLASH - - - /* the program code is stored in the .text section, which goes to Flash */ - .text : - { - . = ALIGN(4); - - *(.text) /* remaining code */ - *(.text.*) /* remaining code */ - *(.rodata) /* read-only data (constants) */ - *(.rodata*) - *(.glue_7) - *(.glue_7t) - - . = ALIGN(4); - _etext = .; - /* This is used by the startup in order to initialize the .data secion */ - _sidata = _etext; - } > BL_FLASH - - - /* - * This stack is used both as the initial sp during early init as well as ultimately - * being used as the STM32's MSP (Main Stack Pointer) which is the same stack that - * is used for _all_ interrupt handlers. The end of this stack should be placed - * against the lowest address in RAM so that a stack overrun results in a hard fault - * at the first access beyond the end of the stack. - */ - .irq_stack : - { - . = ALIGN(4); - _irq_stack_end = . ; - . = . + _irq_stack_size ; - . = ALIGN(4); - _irq_stack_top = . - 4 ; - . = ALIGN(4); - } >RAM - - - /* This is the initialized data section - The program executes knowing that the data is in the RAM - but the loader puts the initial values in the FLASH (inidata). - It is one task of the startup to copy the initial values from FLASH to RAM. */ - .data : AT ( _sidata ) - { - . = ALIGN(4); - /* This is used by the startup in order to initialize the .data secion */ - _sdata = . ; - - *(.data) - *(.data.*) - . = ALIGN(4); - /* This is used by the startup in order to initialize the .data secion */ - _edata = . ; - } >RAM - - - - /* This is the uninitialized data section */ - .bss : - { - . = ALIGN(4); - /* This is used by the startup in order to initialize the .bss secion */ - _sbss = .; - - *(.bss) - *(COMMON) - - . = ALIGN(4); - /* This is used by the startup in order to initialize the .bss secion */ - _ebss = . ; - } >RAM - - PROVIDE ( end = _ebss ); - PROVIDE ( _end = _ebss ); - - /* this is the FLASH Bank1 */ - /* the C or assembly source must explicitly place the code or data there - using the "section" attribute */ - .b1text : - { - *(.b1text) /* remaining code */ - *(.b1rodata) /* read-only data (constants) */ - *(.b1rodata*) - } >FLASHB1 - - /* this is the EXTMEM */ - /* the C or assembly source must explicitly place the code or data there - using the "section" attribute */ - - /* EXTMEM Bank0 */ - .eb0text : - { - *(.eb0text) /* remaining code */ - *(.eb0rodata) /* read-only data (constants) */ - *(.eb0rodata*) - } >EXTMEMB0 - - /* EXTMEM Bank1 */ - .eb1text : - { - *(.eb1text) /* remaining code */ - *(.eb1rodata) /* read-only data (constants) */ - *(.eb1rodata*) - } >EXTMEMB1 - - /* EXTMEM Bank2 */ - .eb2text : - { - *(.eb2text) /* remaining code */ - *(.eb2rodata) /* read-only data (constants) */ - *(.eb2rodata*) - } >EXTMEMB2 - - /* EXTMEM Bank0 */ - .eb3text : - { - *(.eb3text) /* remaining code */ - *(.eb3rodata) /* read-only data (constants) */ - *(.eb3rodata*) - } >EXTMEMB3 - - __exidx_start = .; - __exidx_end = .; - - .boardinfo : - { - . = ALIGN(4); - KEEP(*(.boardinfo)) - . = ALIGN(4); - } > BD_INFO - - /* after that it's only debugging information. */ - - /* remove the debugging information from the standard libraries */ - /DISCARD/ : - { - libc.a ( * ) - libm.a ( * ) - libgcc.a ( * ) - } - - /* Stabs debugging sections. */ - .stab 0 : { *(.stab) } - .stabstr 0 : { *(.stabstr) } - .stab.excl 0 : { *(.stab.excl) } - .stab.exclstr 0 : { *(.stab.exclstr) } - .stab.index 0 : { *(.stab.index) } - .stab.indexstr 0 : { *(.stab.indexstr) } - .comment 0 : { *(.comment) } - /* DWARF debug sections. - Symbols in the DWARF debugging sections are relative to the beginning - of the section so we begin them at 0. */ - /* DWARF 1 */ - .debug 0 : { *(.debug) } - .line 0 : { *(.line) } - /* GNU DWARF 1 extensions */ - .debug_srcinfo 0 : { *(.debug_srcinfo) } - .debug_sfnames 0 : { *(.debug_sfnames) } - /* DWARF 1.1 and DWARF 2 */ - .debug_aranges 0 : { *(.debug_aranges) } - .debug_pubnames 0 : { *(.debug_pubnames) } - /* DWARF 2 */ - .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } - .debug_abbrev 0 : { *(.debug_abbrev) } - .debug_line 0 : { *(.debug_line) } - .debug_frame 0 : { *(.debug_frame) } - .debug_str 0 : { *(.debug_str) } - .debug_loc 0 : { *(.debug_loc) } - .debug_macinfo 0 : { *(.debug_macinfo) } - /* SGI/MIPS DWARF 2 extensions */ - .debug_weaknames 0 : { *(.debug_weaknames) } - .debug_funcnames 0 : { *(.debug_funcnames) } - .debug_typenames 0 : { *(.debug_typenames) } - .debug_varnames 0 : { *(.debug_varnames) } -} - - diff --git a/flight/PiOS/STM32F10x/link_STM3210E_INS_memory.ld b/flight/PiOS/STM32F10x/link_STM3210E_INS_memory.ld deleted file mode 100644 index 7ecb0f65d..000000000 --- a/flight/PiOS/STM32F10x/link_STM3210E_INS_memory.ld +++ /dev/null @@ -1,13 +0,0 @@ -/* Memory Spaces Definitions */ -MEMORY -{ - RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 0x10000 - BL_FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 0x05000 - 0x00080 - BD_INFO (r) : ORIGIN = 0x08005000 - 0x80, LENGTH = 0x00080 - FLASH (rx) : ORIGIN = 0x08005000, LENGTH = 0x80000 - 0x05000 - FLASHB1 (rx) : ORIGIN = 0x00000000, LENGTH = 0 - EXTMEMB0 (rx) : ORIGIN = 0x00000000, LENGTH = 0 - EXTMEMB1 (rx) : ORIGIN = 0x00000000, LENGTH = 0 - EXTMEMB2 (rx) : ORIGIN = 0x00000000, LENGTH = 0 - EXTMEMB3 (rx) : ORIGIN = 0x00000000, LENGTH = 0 -} diff --git a/flight/PiOS/STM32F10x/link_STM3210E_INS_sections.ld b/flight/PiOS/STM32F10x/link_STM3210E_INS_sections.ld deleted file mode 100644 index bcf498dd0..000000000 --- a/flight/PiOS/STM32F10x/link_STM3210E_INS_sections.ld +++ /dev/null @@ -1,379 +0,0 @@ -/** - ****************************************************************************** - * - * @file link_STM3210E_INS_HD_NB.ld - * @author David "Buzz" Carlson (buzz@chebuzz.com) - * The OpenPilot Team, http://www.openpilot.org Copyright (C) 2011. - * @brief PiOS linker for the OpenPilot INS board - * @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 - */ - -/* This is the size of the stack for early init and for all FreeRTOS IRQs */ -_irq_stack_size = 0x400; - -/* Check valid alignment for VTOR */ -ASSERT(ORIGIN(FLASH) == ALIGN(ORIGIN(FLASH), 0x80), "Start of memory region flash not aligned for startup vector table"); - -/* -this sends all unreferenced IRQHandlers to reset -*/ - - -PROVIDE ( Undefined_Handler = 0 ) ; -PROVIDE ( SWI_Handler = 0 ) ; -PROVIDE ( IRQ_Handler = 0 ) ; -PROVIDE ( Prefetch_Handler = 0 ) ; -PROVIDE ( Abort_Handler = 0 ) ; -PROVIDE ( FIQ_Handler = 0 ) ; - -PROVIDE ( NMI_Handler = 0 ) ; -PROVIDE ( HardFault_Handler = 0 ) ; -PROVIDE ( MemManage_Handler = 0 ) ; -PROVIDE ( BusFault_Handler = 0 ) ; -PROVIDE ( UsageFault_Handler = 0 ) ; -PROVIDE ( vPortSVCHandler = 0 ) ; -PROVIDE ( DebugMon_Handler = 0 ) ; -PROVIDE ( xPortPendSVHandler = 0 ) ; -PROVIDE ( xPortSysTickHandler = 0 ) ; - -PROVIDE ( WWDG_IRQHandler = 0 ) ; -PROVIDE ( PVD_IRQHandler = 0 ) ; -PROVIDE ( TAMPER_IRQHandler = 0 ) ; -PROVIDE ( RTC_IRQHandler = 0 ) ; -PROVIDE ( FLASH_IRQHandler = 0 ) ; -PROVIDE ( RCC_IRQHandler = 0 ) ; -PROVIDE ( EXTI0_IRQHandler = 0 ) ; -PROVIDE ( EXTI1_IRQHandler = 0 ) ; -PROVIDE ( EXTI2_IRQHandler = 0 ) ; -PROVIDE ( EXTI3_IRQHandler = 0 ) ; -PROVIDE ( EXTI4_IRQHandler = 0 ) ; -PROVIDE ( DMAChannel1_IRQHandler = 0 ) ; -PROVIDE ( DMAChannel2_IRQHandler = 0 ) ; -PROVIDE ( DMAChannel3_IRQHandler = 0 ) ; -PROVIDE ( DMAChannel4_IRQHandler = 0 ) ; -PROVIDE ( DMAChannel5_IRQHandler = 0 ) ; -PROVIDE ( DMAChannel6_IRQHandler = 0 ) ; -PROVIDE ( DMAChannel7_IRQHandler = 0 ) ; -PROVIDE ( ADC_IRQHandler = 0 ) ; -PROVIDE ( USB_HP_CAN1_TX_IRQHandler = 0 ) ; -PROVIDE ( USB_LP_CAN1_RX0_IRQHandler = 0 ) ; -PROVIDE ( CAN1_RX1_IRQHandler = 0 ) ; -PROVIDE ( CAN1_SCE_IRQHandler = 0 ) ; -PROVIDE ( EXTI9_5_IRQHandler = 0 ) ; -PROVIDE ( TIM1_BRK_IRQHandler = 0 ) ; -PROVIDE ( TIM1_UP_IRQHandler = 0 ) ; -PROVIDE ( TIM1_TRG_COM_IRQHandler = 0 ) ; -PROVIDE ( TIM1_CC_IRQHandler = 0 ) ; -PROVIDE ( TIM2_IRQHandler = 0 ) ; -PROVIDE ( TIM3_IRQHandler = 0 ) ; -PROVIDE ( TIM4_IRQHandler = 0 ) ; -PROVIDE ( I2C1_EV_IRQHandler = 0 ) ; -PROVIDE ( I2C1_ER_IRQHandler = 0 ) ; -PROVIDE ( I2C2_EV_IRQHandler = 0 ) ; -PROVIDE ( I2C2_ER_IRQHandler = 0 ) ; -PROVIDE ( SPI1_IRQHandler = 0 ) ; -PROVIDE ( SPI2_IRQHandler = 0 ) ; -PROVIDE ( USART1_IRQHandler = 0 ) ; -PROVIDE ( USART2_IRQHandler = 0 ) ; -PROVIDE ( USART3_IRQHandler = 0 ) ; -PROVIDE ( EXTI15_10_IRQHandler = 0 ) ; -PROVIDE ( RTCAlarm_IRQHandler = 0 ) ; -PROVIDE ( USBWakeUp_IRQHandler = 0 ) ; -PROVIDE ( TIM8_BRK_IRQHandler = 0 ) ; -PROVIDE ( TIM8_UP_IRQHandler = 0 ) ; -PROVIDE ( TIM8_TRG_COM_IRQHandler = 0 ) ; -PROVIDE ( TIM8_CC_IRQHandler = 0 ) ; -PROVIDE ( ADC3_IRQHandler = 0 ) ; -PROVIDE ( FSMC_IRQHandler = 0 ) ; -PROVIDE ( SDIO_IRQHandler = 0 ) ; -PROVIDE ( TIM5_IRQHandler = 0 ) ; -PROVIDE ( SPI3_IRQHandler = 0 ) ; -PROVIDE ( UART4_IRQHandler = 0 ) ; -PROVIDE ( UART5_IRQHandler = 0 ) ; -PROVIDE ( TIM6_IRQHandler = 0 ) ; -PROVIDE ( TIM7_IRQHandler = 0 ) ; -PROVIDE ( DMA2_Channel1_IRQHandler = 0 ) ; -PROVIDE ( DMA2_Channel2_IRQHandler = 0 ) ; -PROVIDE ( DMA2_Channel3_IRQHandler = 0 ) ; -PROVIDE ( DMA2_Channel4_5_IRQHandler = 0 ) ; - - - -/******************************************************************************/ -/* Peripheral memory map */ -/******************************************************************************/ -/*this allows to compile the ST lib in "non-debug" mode*/ - - -/* Peripheral and SRAM base address in the alias region */ -PERIPH_BB_BASE = 0x42000000; -SRAM_BB_BASE = 0x22000000; - -/* Peripheral and SRAM base address in the bit-band region */ -SRAM_BASE = 0x20000000; -PERIPH_BASE = 0x40000000; - -/* Flash registers base address */ -PROVIDE ( FLASH_BASE = 0x40022000); -/* Flash Option Bytes base address */ -PROVIDE ( OB_BASE = 0x1FFFF800); - -/* Peripheral memory map */ -APB1PERIPH_BASE = PERIPH_BASE ; -APB2PERIPH_BASE = (PERIPH_BASE + 0x10000) ; -AHBPERIPH_BASE = (PERIPH_BASE + 0x20000) ; - -PROVIDE ( TIM2 = (APB1PERIPH_BASE + 0x0000) ) ; -PROVIDE ( TIM3 = (APB1PERIPH_BASE + 0x0400) ) ; -PROVIDE ( TIM4 = (APB1PERIPH_BASE + 0x0800) ) ; -PROVIDE ( RTC = (APB1PERIPH_BASE + 0x2800) ) ; -PROVIDE ( WWDG = (APB1PERIPH_BASE + 0x2C00) ) ; -PROVIDE ( IWDG = (APB1PERIPH_BASE + 0x3000) ) ; -PROVIDE ( SPI2 = (APB1PERIPH_BASE + 0x3800) ) ; -PROVIDE ( USART2 = (APB1PERIPH_BASE + 0x4400) ) ; -PROVIDE ( USART3 = (APB1PERIPH_BASE + 0x4800) ) ; -PROVIDE ( I2C1 = (APB1PERIPH_BASE + 0x5400) ) ; -PROVIDE ( I2C2 = (APB1PERIPH_BASE + 0x5800) ) ; -PROVIDE ( CAN = (APB1PERIPH_BASE + 0x6400) ) ; -PROVIDE ( BKP = (APB1PERIPH_BASE + 0x6C00) ) ; -PROVIDE ( PWR = (APB1PERIPH_BASE + 0x7000) ) ; - -PROVIDE ( AFIO = (APB2PERIPH_BASE + 0x0000) ) ; -PROVIDE ( EXTI = (APB2PERIPH_BASE + 0x0400) ) ; -PROVIDE ( GPIOA = (APB2PERIPH_BASE + 0x0800) ) ; -PROVIDE ( GPIOB = (APB2PERIPH_BASE + 0x0C00) ) ; -PROVIDE ( GPIOC = (APB2PERIPH_BASE + 0x1000) ) ; -PROVIDE ( GPIOD = (APB2PERIPH_BASE + 0x1400) ) ; -PROVIDE ( GPIOE = (APB2PERIPH_BASE + 0x1800) ) ; -PROVIDE ( ADC1 = (APB2PERIPH_BASE + 0x2400) ) ; -PROVIDE ( ADC2 = (APB2PERIPH_BASE + 0x2800) ) ; -PROVIDE ( TIM1 = (APB2PERIPH_BASE + 0x2C00) ) ; -PROVIDE ( SPI1 = (APB2PERIPH_BASE + 0x3000) ) ; -PROVIDE ( USART1 = (APB2PERIPH_BASE + 0x3800) ) ; - -PROVIDE ( DMA = (AHBPERIPH_BASE + 0x0000) ) ; -PROVIDE ( DMA_Channel1 = (AHBPERIPH_BASE + 0x0008) ) ; -PROVIDE ( DMA_Channel2 = (AHBPERIPH_BASE + 0x001C) ) ; -PROVIDE ( DMA_Channel3 = (AHBPERIPH_BASE + 0x0030) ) ; -PROVIDE ( DMA_Channel4 = (AHBPERIPH_BASE + 0x0044) ) ; -PROVIDE ( DMA_Channel5 = (AHBPERIPH_BASE + 0x0058) ) ; -PROVIDE ( DMA_Channel6 = (AHBPERIPH_BASE + 0x006C) ) ; -PROVIDE ( DMA_Channel7 = (AHBPERIPH_BASE + 0x0080) ) ; -PROVIDE ( RCC = (AHBPERIPH_BASE + 0x1000) ) ; - -/* System Control Space memory map */ -SCS_BASE = 0xE000E000; - -PROVIDE ( SysTick = (SCS_BASE + 0x0010) ) ; -PROVIDE ( NVIC = (SCS_BASE + 0x0100) ) ; -PROVIDE ( SCB = (SCS_BASE + 0x0D00) ) ; - -PROVIDE(pios_board_info_blob = ORIGIN(BD_INFO)); - -/* Sections Definitions */ - -SECTIONS -{ - /* for Cortex devices, the beginning of the startup code is stored in the .isr_vector section, which goes to FLASH */ - .isr_vector : - { - PROVIDE (pios_isr_vector_table_base = .); - KEEP(*(.isr_vector)) /* Startup code */ - . = ALIGN(4); - } > FLASH - - /* for some STRx devices, the beginning of the startup code is stored in the .flashtext section, which goes to FLASH */ - .flashtext : - { - . = ALIGN(4); - *(.flashtext) /* Startup code */ - . = ALIGN(4); - } > FLASH - - - /* the program code is stored in the .text section, which goes to Flash */ - .text : - { - . = ALIGN(4); - - *(.text) /* remaining code */ - *(.text.*) /* remaining code */ - *(.rodata) /* read-only data (constants) */ - *(.rodata*) - *(.glue_7) - *(.glue_7t) - - . = ALIGN(4); - _etext = .; - /* This is used by the startup in order to initialize the .data secion */ - _sidata = _etext; - } > FLASH - - - /* - * This stack is used both as the initial sp during early init as well as ultimately - * being used as the STM32's MSP (Main Stack Pointer) which is the same stack that - * is used for _all_ interrupt handlers. The end of this stack should be placed - * against the lowest address in RAM so that a stack overrun results in a hard fault - * at the first access beyond the end of the stack. - */ - .irq_stack : - { - . = ALIGN(4); - _irq_stack_end = . ; - . = . + _irq_stack_size ; - . = ALIGN(4); - _irq_stack_top = . - 4 ; - _init_stack_top = _irq_stack_top; - . = ALIGN(4); - } >RAM - - - /* This is the initialized data section - The program executes knowing that the data is in the RAM - but the loader puts the initial values in the FLASH (inidata). - It is one task of the startup to copy the initial values from FLASH to RAM. */ - .data : AT ( _sidata ) - { - . = ALIGN(4); - /* This is used by the startup in order to initialize the .data secion */ - _sdata = . ; - - *(.data) - *(.data.*) - . = ALIGN(4); - /* This is used by the startup in order to initialize the .data secion */ - _edata = . ; - } >RAM - - - - /* This is the uninitialized data section */ - .bss : - { - . = ALIGN(4); - /* This is used by the startup in order to initialize the .bss secion */ - _sbss = .; - - *(.bss) - *(COMMON) - - . = ALIGN(4); - /* This is used by the startup in order to initialize the .bss secion */ - _ebss = . ; - } >RAM - - PROVIDE ( end = _ebss ); - PROVIDE ( _end = _ebss ); - - /* this is the FLASH Bank1 */ - /* the C or assembly source must explicitly place the code or data there - using the "section" attribute */ - .b1text : - { - *(.b1text) /* remaining code */ - *(.b1rodata) /* read-only data (constants) */ - *(.b1rodata*) - } >FLASHB1 - - /* this is the EXTMEM */ - /* the C or assembly source must explicitly place the code or data there - using the "section" attribute */ - - /* EXTMEM Bank0 */ - .eb0text : - { - *(.eb0text) /* remaining code */ - *(.eb0rodata) /* read-only data (constants) */ - *(.eb0rodata*) - } >EXTMEMB0 - - /* EXTMEM Bank1 */ - .eb1text : - { - *(.eb1text) /* remaining code */ - *(.eb1rodata) /* read-only data (constants) */ - *(.eb1rodata*) - } >EXTMEMB1 - - /* EXTMEM Bank2 */ - .eb2text : - { - *(.eb2text) /* remaining code */ - *(.eb2rodata) /* read-only data (constants) */ - *(.eb2rodata*) - } >EXTMEMB2 - - /* EXTMEM Bank0 */ - .eb3text : - { - *(.eb3text) /* remaining code */ - *(.eb3rodata) /* read-only data (constants) */ - *(.eb3rodata*) - } >EXTMEMB3 - - __exidx_start = .; - __exidx_end = .; - - /* after that it's only debugging information. */ - - /* remove the debugging information from the standard libraries */ - /DISCARD/ : - { - libc.a ( * ) - libm.a ( * ) - libgcc.a ( * ) - } - - /* Stabs debugging sections. */ - .stab 0 : { *(.stab) } - .stabstr 0 : { *(.stabstr) } - .stab.excl 0 : { *(.stab.excl) } - .stab.exclstr 0 : { *(.stab.exclstr) } - .stab.index 0 : { *(.stab.index) } - .stab.indexstr 0 : { *(.stab.indexstr) } - .comment 0 : { *(.comment) } - /* DWARF debug sections. - Symbols in the DWARF debugging sections are relative to the beginning - of the section so we begin them at 0. */ - /* DWARF 1 */ - .debug 0 : { *(.debug) } - .line 0 : { *(.line) } - /* GNU DWARF 1 extensions */ - .debug_srcinfo 0 : { *(.debug_srcinfo) } - .debug_sfnames 0 : { *(.debug_sfnames) } - /* DWARF 1.1 and DWARF 2 */ - .debug_aranges 0 : { *(.debug_aranges) } - .debug_pubnames 0 : { *(.debug_pubnames) } - /* DWARF 2 */ - .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } - .debug_abbrev 0 : { *(.debug_abbrev) } - .debug_line 0 : { *(.debug_line) } - .debug_frame 0 : { *(.debug_frame) } - .debug_str 0 : { *(.debug_str) } - .debug_loc 0 : { *(.debug_loc) } - .debug_macinfo 0 : { *(.debug_macinfo) } - /* SGI/MIPS DWARF 2 extensions */ - .debug_weaknames 0 : { *(.debug_weaknames) } - .debug_funcnames 0 : { *(.debug_funcnames) } - .debug_typenames 0 : { *(.debug_typenames) } - .debug_varnames 0 : { *(.debug_varnames) } -} - - diff --git a/flight/PiOS/STM32F10x/link_STM3210E_OP_BL_sections.ld b/flight/PiOS/STM32F10x/link_STM3210E_OP_BL_sections.ld index 9cd7c8b4b..c7414707d 100644 --- a/flight/PiOS/STM32F10x/link_STM3210E_OP_BL_sections.ld +++ b/flight/PiOS/STM32F10x/link_STM3210E_OP_BL_sections.ld @@ -1,5 +1,5 @@ /* This is the size of the stack for early init and for all FreeRTOS IRQs */ -_irq_stack_size = 0x400; +_irq_stack_size = 0x800; /* Check valid alignment for VTOR */ ASSERT(ORIGIN(BL_FLASH) == ALIGN(ORIGIN(BL_FLASH), 0x80), "Start of memory region flash not aligned for startup vector table"); diff --git a/flight/PiOS/STM32F10x/pios_adc.c b/flight/PiOS/STM32F10x/pios_adc.c index e8fbe3a85..66eb8f92e 100644 --- a/flight/PiOS/STM32F10x/pios_adc.c +++ b/flight/PiOS/STM32F10x/pios_adc.c @@ -7,8 +7,7 @@ * @{ * * @file pios_adc.c - * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010. - * Parts by Thorsten Klose (tk@midibox.org) (tk@midibox.org) + * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2012. * @brief Analog to Digital converstion routines * @see The GNU Public License (GPL) Version 3 *****************************************************************************/ @@ -31,8 +30,38 @@ #include "pios.h" #include +// Private types + +enum pios_adc_dev_magic { + PIOS_ADC_DEV_MAGIC = 0x58375124, +}; + +struct pios_adc_dev { + const struct pios_adc_cfg * cfg; + ADCCallback callback_function; +#if defined(PIOS_INCLUDE_FREERTOS) + xQueueHandle data_queue; +#endif + volatile int16_t *valid_data_buffer; + volatile uint8_t adc_oversample; + uint8_t dma_block_size; + uint16_t dma_half_buffer_size; +#if defined(PIOS_INCLUDE_ADC) + int16_t fir_coeffs[PIOS_ADC_MAX_SAMPLES+1] __attribute__ ((aligned(4))); + volatile int16_t raw_data_buffer[PIOS_ADC_MAX_SAMPLES] __attribute__ ((aligned(4))); // Double buffer that DMA just used + float downsampled_buffer[PIOS_ADC_NUM_CHANNELS] __attribute__ ((aligned(4))); +#endif + enum pios_adc_dev_magic magic; +}; + +#if defined(PIOS_INCLUDE_FREERTOS) +struct pios_adc_dev * pios_adc_dev; +#endif + // Private functions void PIOS_ADC_downsample_data(); +static struct pios_adc_dev * PIOS_ADC_Allocate(); +static bool PIOS_ADC_validate(struct pios_adc_dev *); /* Local Variables */ static GPIO_TypeDef *ADC_GPIO_PORT[PIOS_ADC_NUM_PINS] = PIOS_ADC_PORTS; @@ -42,15 +71,43 @@ static const uint32_t ADC_CHANNEL[PIOS_ADC_NUM_PINS] = PIOS_ADC_CHANNELS; static ADC_TypeDef *ADC_MAPPING[PIOS_ADC_NUM_PINS] = PIOS_ADC_MAPPING; static const uint32_t ADC_CHANNEL_MAPPING[PIOS_ADC_NUM_PINS] = PIOS_ADC_CHANNEL_MAPPING; +static bool PIOS_ADC_validate(struct pios_adc_dev * dev) +{ + if (dev == NULL) + return false; + + return (dev->magic == PIOS_ADC_DEV_MAGIC); +} + +#if defined(PIOS_INCLUDE_FREERTOS) +static struct pios_adc_dev * PIOS_ADC_Allocate() +{ + struct pios_adc_dev * adc_dev; + + adc_dev = (struct pios_adc_dev *)pvPortMalloc(sizeof(*adc_dev)); + if (!adc_dev) return (NULL); + + adc_dev->magic = PIOS_ADC_DEV_MAGIC; + return(adc_dev); +} +#else +#error Not implemented +#endif + /** * @brief Initialise the ADC Peripheral, configure to run at the max oversampling */ -void PIOS_ADC_Init() -{ - pios_adc_devs[0].callback_function = NULL; +int32_t PIOS_ADC_Init(const struct pios_adc_cfg * cfg) +{ + pios_adc_dev = PIOS_ADC_Allocate(); + if (pios_adc_dev == NULL) + return -1; + + pios_adc_dev->cfg = cfg; + pios_adc_dev->callback_function = NULL; #if defined(PIOS_INCLUDE_FREERTOS) - pios_adc_devs[0].data_queue = NULL; + pios_adc_dev->data_queue = NULL; #endif /* Setup analog pins */ @@ -66,6 +123,8 @@ void PIOS_ADC_Init() } PIOS_ADC_Config(PIOS_ADC_MAX_OVERSAMPLING); + + return 0; } /** @@ -74,13 +133,13 @@ void PIOS_ADC_Init() */ void PIOS_ADC_Config(uint32_t oversampling) { - pios_adc_devs[0].adc_oversample = (oversampling > PIOS_ADC_MAX_OVERSAMPLING) ? PIOS_ADC_MAX_OVERSAMPLING : oversampling; + pios_adc_dev->adc_oversample = (oversampling > PIOS_ADC_MAX_OVERSAMPLING) ? PIOS_ADC_MAX_OVERSAMPLING : oversampling; ADC_DeInit(ADC1); ADC_DeInit(ADC2); /* Disable interrupts */ - DMA_ITConfig(pios_adc_devs[0].cfg->dma.rx.channel, pios_adc_devs[0].cfg->dma.irq.flags, DISABLE); + DMA_ITConfig(pios_adc_dev->cfg->dma.rx.channel, pios_adc_dev->cfg->dma.irq.flags, DISABLE); /* Enable ADC clocks */ PIOS_ADC_CLOCK_FUNCTION; @@ -139,34 +198,34 @@ void PIOS_ADC_Config(uint32_t oversampling) #endif /* This makes sure we have an even number of transfers if using ADC2 */ - pios_adc_devs[0].dma_block_size = ((PIOS_ADC_NUM_CHANNELS + PIOS_ADC_USE_ADC2) >> PIOS_ADC_USE_ADC2) << PIOS_ADC_USE_ADC2; - pios_adc_devs[0].dma_half_buffer_size = pios_adc_devs[0].dma_block_size * pios_adc_devs[0].adc_oversample; + pios_adc_dev->dma_block_size = ((PIOS_ADC_NUM_CHANNELS + PIOS_ADC_USE_ADC2) >> PIOS_ADC_USE_ADC2) << PIOS_ADC_USE_ADC2; + pios_adc_dev->dma_half_buffer_size = pios_adc_dev->dma_block_size * pios_adc_dev->adc_oversample; /* Configure DMA channel */ - DMA_InitTypeDef dma_init = pios_adc_devs[0].cfg->dma.rx.init; - dma_init.DMA_MemoryBaseAddr = (uint32_t) &pios_adc_devs[0].raw_data_buffer[0]; + DMA_InitTypeDef dma_init = pios_adc_dev->cfg->dma.rx.init; + dma_init.DMA_MemoryBaseAddr = (uint32_t) &pios_adc_dev->raw_data_buffer[0]; dma_init.DMA_MemoryInc = DMA_MemoryInc_Enable; - dma_init.DMA_BufferSize = pios_adc_devs[0].dma_half_buffer_size; /* x2 for double buffer /2 for 32-bit xfr */ - DMA_Init(pios_adc_devs[0].cfg->dma.rx.channel, &dma_init); - DMA_Cmd(pios_adc_devs[0].cfg->dma.rx.channel, ENABLE); + dma_init.DMA_BufferSize = pios_adc_dev->dma_half_buffer_size; /* x2 for double buffer /2 for 32-bit xfr */ + DMA_Init(pios_adc_dev->cfg->dma.rx.channel, &dma_init); + DMA_Cmd(pios_adc_dev->cfg->dma.rx.channel, ENABLE); /* Trigger interrupt when for half conversions too to indicate double buffer */ - DMA_ITConfig(pios_adc_devs[0].cfg->dma.rx.channel, DMA_IT_TC, ENABLE); - DMA_ITConfig(pios_adc_devs[0].cfg->dma.rx.channel, DMA_IT_HT, ENABLE); + DMA_ITConfig(pios_adc_dev->cfg->dma.rx.channel, DMA_IT_TC, ENABLE); + DMA_ITConfig(pios_adc_dev->cfg->dma.rx.channel, DMA_IT_HT, ENABLE); /* Configure DMA interrupt */ - NVIC_Init(&pios_adc_devs[0].cfg->dma.irq.init); + NVIC_Init(&pios_adc_dev->cfg->dma.irq.init); /* Finally start initial conversion */ ADC_SoftwareStartConvCmd(ADC1, ENABLE); /* Use simple averaging filter for now */ - for (int32_t i = 0; i < pios_adc_devs[0].adc_oversample; i++) - pios_adc_devs[0].fir_coeffs[i] = 1; - pios_adc_devs[0].fir_coeffs[pios_adc_devs[0].adc_oversample] = pios_adc_devs[0].adc_oversample; + for (int32_t i = 0; i < pios_adc_dev->adc_oversample; i++) + pios_adc_dev->fir_coeffs[i] = 1; + pios_adc_dev->fir_coeffs[pios_adc_dev->adc_oversample] = pios_adc_dev->adc_oversample; /* Enable DMA1 clock */ - RCC_AHBPeriphClockCmd(pios_adc_devs[0].cfg->dma.ahb_clk, ENABLE); + RCC_AHBPeriphClockCmd(pios_adc_dev->cfg->dma.ahb_clk, ENABLE); } /** @@ -183,7 +242,7 @@ int32_t PIOS_ADC_PinGet(uint32_t pin) } /* Return last conversion result */ - return pios_adc_devs[0].downsampled_buffer[pin]; + return pios_adc_dev->downsampled_buffer[pin]; } /** @@ -192,7 +251,7 @@ int32_t PIOS_ADC_PinGet(uint32_t pin) */ void PIOS_ADC_SetCallback(ADCCallback new_function) { - pios_adc_devs[0].callback_function = new_function; + pios_adc_dev->callback_function = new_function; } #if defined(PIOS_INCLUDE_FREERTOS) @@ -201,7 +260,7 @@ void PIOS_ADC_SetCallback(ADCCallback new_function) */ void PIOS_ADC_SetQueue(xQueueHandle data_queue) { - pios_adc_devs[0].data_queue = data_queue; + pios_adc_dev->data_queue = data_queue; } #endif @@ -210,7 +269,7 @@ void PIOS_ADC_SetQueue(xQueueHandle data_queue) */ float * PIOS_ADC_GetBuffer(void) { - return pios_adc_devs[0].downsampled_buffer; + return pios_adc_dev->downsampled_buffer; } /** @@ -218,7 +277,7 @@ float * PIOS_ADC_GetBuffer(void) */ int16_t * PIOS_ADC_GetRawBuffer(void) { - return (int16_t *) pios_adc_devs[0].valid_data_buffer; + return (int16_t *) pios_adc_dev->valid_data_buffer; } /** @@ -226,7 +285,7 @@ int16_t * PIOS_ADC_GetRawBuffer(void) */ uint8_t PIOS_ADC_GetOverSampling(void) { - return pios_adc_devs[0].adc_oversample; + return pios_adc_dev->adc_oversample; } /** @@ -239,8 +298,8 @@ uint8_t PIOS_ADC_GetOverSampling(void) void PIOS_ADC_SetFIRCoefficients(float * new_filter) { // Less than or equal to get normalization constant - for(int i = 0; i <= pios_adc_devs[0].adc_oversample; i++) - pios_adc_devs[0].fir_coeffs[i] = new_filter[i]; + for(int i = 0; i <= pios_adc_dev->adc_oversample; i++) + pios_adc_dev->fir_coeffs[i] = new_filter[i]; } /** @@ -251,25 +310,25 @@ void PIOS_ADC_downsample_data() { uint16_t chan; uint16_t sample; - float * downsampled_buffer = &pios_adc_devs[0].downsampled_buffer[0]; + float * downsampled_buffer = &pios_adc_dev->downsampled_buffer[0]; for (chan = 0; chan < PIOS_ADC_NUM_CHANNELS; chan++) { int32_t sum = 0; - for (sample = 0; sample < pios_adc_devs[0].adc_oversample; sample++) { - sum += pios_adc_devs[0].valid_data_buffer[chan + sample * pios_adc_devs[0].dma_block_size] * pios_adc_devs[0].fir_coeffs[sample]; + for (sample = 0; sample < pios_adc_dev->adc_oversample; sample++) { + sum += pios_adc_dev->valid_data_buffer[chan + sample * pios_adc_dev->dma_block_size] * pios_adc_dev->fir_coeffs[sample]; } - downsampled_buffer[chan] = (float) sum / pios_adc_devs[0].fir_coeffs[pios_adc_devs[0].adc_oversample]; + downsampled_buffer[chan] = (float) sum / pios_adc_dev->fir_coeffs[pios_adc_dev->adc_oversample]; } #if defined(PIOS_INCLUDE_FREERTOS) - if(pios_adc_devs[0].data_queue) { + if(pios_adc_dev->data_queue) { static portBASE_TYPE xHigherPriorityTaskWoken; - xQueueSendFromISR(pios_adc_devs[0].data_queue, pios_adc_devs[0].downsampled_buffer, &xHigherPriorityTaskWoken); + xQueueSendFromISR(pios_adc_dev->data_queue, pios_adc_dev->downsampled_buffer, &xHigherPriorityTaskWoken); portEND_SWITCHING_ISR(xHigherPriorityTaskWoken); } #endif - if(pios_adc_devs[0].callback_function) - pios_adc_devs[0].callback_function(pios_adc_devs[0].downsampled_buffer); + if(pios_adc_dev->callback_function) + pios_adc_dev->callback_function(pios_adc_dev->downsampled_buffer); } /** @@ -283,19 +342,22 @@ void PIOS_ADC_downsample_data() */ void PIOS_ADC_DMA_Handler(void) { - if (DMA_GetFlagStatus(pios_adc_devs[0].cfg->full_flag /*DMA1_IT_TC1*/)) { // whole double buffer filled - pios_adc_devs[0].valid_data_buffer = &pios_adc_devs[0].raw_data_buffer[pios_adc_devs[0].dma_half_buffer_size]; - DMA_ClearFlag(pios_adc_devs[0].cfg->full_flag); + if (!PIOS_ADC_validate(pios_adc_dev)) + return; + + if (DMA_GetFlagStatus(pios_adc_dev->cfg->full_flag /*DMA1_IT_TC1*/)) { // whole double buffer filled + pios_adc_dev->valid_data_buffer = &pios_adc_dev->raw_data_buffer[pios_adc_dev->dma_half_buffer_size]; + DMA_ClearFlag(pios_adc_dev->cfg->full_flag); PIOS_ADC_downsample_data(); } - else if (DMA_GetFlagStatus(pios_adc_devs[0].cfg->half_flag /*DMA1_IT_HT1*/)) { - pios_adc_devs[0].valid_data_buffer = &pios_adc_devs[0].raw_data_buffer[0]; - DMA_ClearFlag(pios_adc_devs[0].cfg->half_flag); + else if (DMA_GetFlagStatus(pios_adc_dev->cfg->half_flag /*DMA1_IT_HT1*/)) { + pios_adc_dev->valid_data_buffer = &pios_adc_dev->raw_data_buffer[0]; + DMA_ClearFlag(pios_adc_dev->cfg->half_flag); PIOS_ADC_downsample_data(); } else { // This should not happen, probably due to transfer errors - DMA_ClearFlag(pios_adc_devs[0].cfg->dma.irq.flags /*DMA1_FLAG_GL1*/); + DMA_ClearFlag(pios_adc_dev->cfg->dma.irq.flags /*DMA1_FLAG_GL1*/); } } diff --git a/flight/PiOS/STM32F10x/pios_delay.c b/flight/PiOS/STM32F10x/pios_delay.c index c4e74717b..7c04e2426 100644 --- a/flight/PiOS/STM32F10x/pios_delay.c +++ b/flight/PiOS/STM32F10x/pios_delay.c @@ -148,6 +148,25 @@ uint32_t PIOS_DELAY_GetuSSince(uint32_t t) return (PIOS_DELAY_GetuS() - t); } +/** + * @brief Get the raw delay timer, useful for timing + * @return Unitless value (uint32 wrap around) + */ +uint32_t PIOS_DELAY_GetRaw() +{ + return DWT_CYCCNT; +} + +/** + * @brief Compare to raw times to and convert to us + * @return A microsecond value + */ +uint32_t PIOS_DELAY_DiffuS(uint32_t raw) +{ + uint32_t diff = DWT_CYCCNT - raw; + return diff / us_ticks; +} + #endif /** diff --git a/flight/PiOS/STM32F10x/pios_exti.c b/flight/PiOS/STM32F10x/pios_exti.c index 8b1d2dc32..65a651f6f 100644 --- a/flight/PiOS/STM32F10x/pios_exti.c +++ b/flight/PiOS/STM32F10x/pios_exti.c @@ -224,7 +224,7 @@ static void PIOS_EXTI_15_10_irq_handler (void) } void EXTI15_10_IRQHandler(void) __attribute__ ((alias ("PIOS_EXTI_15_10_irq_handler"))); -#endif +#endif /* PIOS_INCLUDE_EXTI */ /** * @} diff --git a/flight/PiOS/STM32F10x/pios_i2c.c b/flight/PiOS/STM32F10x/pios_i2c.c index e1bdb44f8..d7252916c 100644 --- a/flight/PiOS/STM32F10x/pios_i2c.c +++ b/flight/PiOS/STM32F10x/pios_i2c.c @@ -911,7 +911,13 @@ out_fail: return(-1); } -bool PIOS_I2C_Transfer(uint32_t i2c_id, const struct pios_i2c_txn txn_list[], uint32_t num_txns) +/** + * @brief Perform a series of I2C transactions + * @returns 0 if success or error code + * @retval -1 for failed transaction + * @retval -2 for failure to get semaphore + */ +int32_t PIOS_I2C_Transfer(uint32_t i2c_id, const struct pios_i2c_txn txn_list[], uint32_t num_txns) { struct pios_i2c_adapter * i2c_adapter = (struct pios_i2c_adapter *)i2c_id; @@ -928,6 +934,17 @@ bool PIOS_I2C_Transfer(uint32_t i2c_id, const struct pios_i2c_txn txn_list[], ui portTickType timeout; timeout = i2c_adapter->cfg->transfer_timeout_ms / portTICK_RATE_MS; semaphore_success &= (xSemaphoreTake(i2c_adapter->sem_busy, timeout) == pdTRUE); +#else + uint32_t timeout = 0xfff; + while(i2c_adapter->busy && --timeout); + if(timeout == 0) //timed out + return false; + + PIOS_IRQ_Disable(); + if(i2c_adapter->busy) + return false; + i2c_adapter->busy = 1; + PIOS_IRQ_Enable(); #endif /* USE_FREERTOS */ PIOS_DEBUG_Assert(i2c_adapter->curr_state == I2C_STATE_STOPPED); @@ -948,6 +965,10 @@ bool PIOS_I2C_Transfer(uint32_t i2c_id, const struct pios_i2c_txn txn_list[], ui #ifdef USE_FREERTOS semaphore_success &= (xSemaphoreTake(i2c_adapter->sem_ready, timeout) == pdTRUE); xSemaphoreGive(i2c_adapter->sem_ready); +#else + PIOS_IRQ_Disable(); + i2c_adapter->busy = 0; + PIOS_IRQ_Enable(); #endif /* USE_FREERTOS */ /* Spin waiting for the transfer to finish */ @@ -966,7 +987,9 @@ bool PIOS_I2C_Transfer(uint32_t i2c_id, const struct pios_i2c_txn txn_list[], ui i2c_timeout_counter++; #endif /* USE_FREERTOS */ - return (!i2c_adapter->bus_error) && semaphore_success; + return !semaphore_success ? -2 : + i2c_adapter->bus_error ? -1 : + 0; } diff --git a/flight/PiOS/STM32F10x/pios_led.c b/flight/PiOS/STM32F10x/pios_led.c index 5db5cc884..30c6f1296 100644 --- a/flight/PiOS/STM32F10x/pios_led.c +++ b/flight/PiOS/STM32F10x/pios_led.c @@ -7,7 +7,7 @@ * @{ * * @file pios_led.c - * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010. + * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2012. * @brief LED functions, init, toggle, on & off. * @see The GNU Public License (GPL) Version 3 * @@ -59,7 +59,7 @@ int32_t PIOS_LED_Init(const struct pios_led_cfg * cfg) RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); break; case (uint32_t) GPIOC: - RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); + RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); break; default: PIOS_Assert(0); diff --git a/flight/PiOS/STM32F10x/pios_spi.c b/flight/PiOS/STM32F10x/pios_spi.c index a47e27d83..f8b2f0e63 100644 --- a/flight/PiOS/STM32F10x/pios_spi.c +++ b/flight/PiOS/STM32F10x/pios_spi.c @@ -1,523 +1,585 @@ -/** - ****************************************************************************** - * @addtogroup PIOS PIOS Core hardware abstraction layer - * @{ - * @addtogroup PIOS_SPI SPI Functions - * @brief PIOS interface to read and write from SPI ports - * @{ - * - * @file pios_spi.c - * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010. - * @brief Hardware Abstraction Layer for SPI ports of STM32 - * @see The GNU Public License (GPL) Version 3 - * @notes - * - * Note that additional chip select lines can be easily added by using - * the remaining free GPIOs of the core module. Shared SPI ports should be - * arbitrated with (FreeRTOS based) Mutexes to avoid collisions! - * - *****************************************************************************/ -/* - * 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 - */ - -#include - -#if defined(PIOS_INCLUDE_SPI) - -#include - -static bool PIOS_SPI_validate(struct pios_spi_dev * com_dev) -{ - /* Should check device magic here */ - return(true); -} - -#if defined(PIOS_INCLUDE_FREERTOS) -static struct pios_spi_dev * PIOS_SPI_alloc(void) -{ - return (pvPortMalloc(sizeof(struct pios_spi_dev))); -} -#else -static struct pios_spi_dev pios_spi_devs[PIOS_SPI_MAX_DEVS]; -static uint8_t pios_spi_num_devs; -static struct pios_spi_dev * PIOS_SPI_alloc(void) -{ - if (pios_spi_num_devs >= PIOS_SPI_MAX_DEVS) { - return (NULL); - } - - return (&pios_spi_devs[pios_spi_num_devs++]); -} -#endif - -/** -* Initialises SPI pins -* \param[in] mode currently only mode 0 supported -* \return < 0 if initialisation failed -*/ -int32_t PIOS_SPI_Init(uint32_t * spi_id, const struct pios_spi_cfg * cfg) -{ - PIOS_Assert(spi_id); - PIOS_Assert(cfg); - - struct pios_spi_dev * spi_dev; - - spi_dev = (struct pios_spi_dev *) PIOS_SPI_alloc(); - if (!spi_dev) goto out_fail; - - /* Bind the configuration to the device instance */ - spi_dev->cfg = cfg; - -#if defined(PIOS_INCLUDE_FREERTOS) - vSemaphoreCreateBinary(spi_dev->busy); - xSemaphoreGive(spi_dev->busy); -#endif - - /* Disable callback function */ - spi_dev->callback = NULL; - - /* Set rx/tx dummy bytes to a known value */ - spi_dev->rx_dummy_byte = 0xFF; - spi_dev->tx_dummy_byte = 0xFF; - - switch (spi_dev->cfg->init.SPI_NSS) { - case SPI_NSS_Soft: - if (spi_dev->cfg->init.SPI_Mode == SPI_Mode_Master) { - /* We're a master in soft NSS mode, make sure we see NSS high at all times. */ - SPI_NSSInternalSoftwareConfig(spi_dev->cfg->regs, SPI_NSSInternalSoft_Set); - /* Since we're driving the SSEL pin in software, ensure that the slave is deselected */ - GPIO_SetBits(spi_dev->cfg->ssel.gpio, spi_dev->cfg->ssel.init.GPIO_Pin); - GPIO_Init(spi_dev->cfg->ssel.gpio, &(spi_dev->cfg->ssel.init)); - } else { - /* We're a slave in soft NSS mode, make sure we see NSS low at all times. */ - SPI_NSSInternalSoftwareConfig(spi_dev->cfg->regs, SPI_NSSInternalSoft_Reset); - } - break; - case SPI_NSS_Hard: - /* FIXME: Should this also call SPI_SSOutputCmd()? */ - GPIO_Init(spi_dev->cfg->ssel.gpio, &(spi_dev->cfg->ssel.init)); - break; - default: - PIOS_Assert(0); - } - - /* Initialize the GPIO pins */ - GPIO_Init(spi_dev->cfg->sclk.gpio, &(spi_dev->cfg->sclk.init)); - GPIO_Init(spi_dev->cfg->mosi.gpio, &(spi_dev->cfg->mosi.init)); - GPIO_Init(spi_dev->cfg->miso.gpio, &(spi_dev->cfg->miso.init)); - - /* Enable the associated peripheral clock */ - switch ((uint32_t) spi_dev->cfg->regs) { - case (uint32_t) SPI1: - /* Enable SPI peripheral clock (APB2 == high speed) */ - RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1, ENABLE); - break; - case (uint32_t) SPI2: - /* Enable SPI peripheral clock (APB1 == slow speed) */ - RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI2, ENABLE); - break; - case (uint32_t) SPI3: - /* Enable SPI peripheral clock (APB1 == slow speed) */ - RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI3, ENABLE); - break; - } - - /* Enable DMA clock */ - RCC_AHBPeriphClockCmd(spi_dev->cfg->dma.ahb_clk, ENABLE); - - /* Configure DMA for SPI Rx */ - DMA_Cmd(spi_dev->cfg->dma.rx.channel, DISABLE); - DMA_Init(spi_dev->cfg->dma.rx.channel, &(spi_dev->cfg->dma.rx.init)); - - /* Configure DMA for SPI Tx */ - DMA_Cmd(spi_dev->cfg->dma.tx.channel, DISABLE); - DMA_Init(spi_dev->cfg->dma.tx.channel, &(spi_dev->cfg->dma.tx.init)); - - /* Initialize the SPI block */ - SPI_Init(spi_dev->cfg->regs, &(spi_dev->cfg->init)); - - /* Configure CRC calculation */ - if (spi_dev->cfg->use_crc) { - SPI_CalculateCRC(spi_dev->cfg->regs, ENABLE); - } else { - SPI_CalculateCRC(spi_dev->cfg->regs, DISABLE); - } - - /* Enable SPI */ - SPI_Cmd(spi_dev->cfg->regs, ENABLE); - - /* Enable SPI interrupts to DMA */ - SPI_I2S_DMACmd(spi_dev->cfg->regs, SPI_I2S_DMAReq_Tx | SPI_I2S_DMAReq_Rx, ENABLE); - - /* Configure DMA interrupt */ - NVIC_Init(&(spi_dev->cfg->dma.irq.init)); - - *spi_id = (uint32_t)spi_dev; - return(0); - -out_fail: - return(-1); -} - -/** -* (Re-)initialises SPI peripheral clock rate -* -* \param[in] spi SPI number (0 or 1) -* \param[in] spi_prescaler configures the SPI speed: -*
    -*
  • PIOS_SPI_PRESCALER_2: sets clock rate 27.7~ nS @ 72 MHz (36 MBit/s) (only supported for spi==0, spi1 uses 4 instead) -*
  • PIOS_SPI_PRESCALER_4: sets clock rate 55.5~ nS @ 72 MHz (18 MBit/s) -*
  • PIOS_SPI_PRESCALER_8: sets clock rate 111.1~ nS @ 72 MHz (9 MBit/s) -*
  • PIOS_SPI_PRESCALER_16: sets clock rate 222.2~ nS @ 72 MHz (4.5 MBit/s) -*
  • PIOS_SPI_PRESCALER_32: sets clock rate 444.4~ nS @ 72 MHz (2.25 MBit/s) -*
  • PIOS_SPI_PRESCALER_64: sets clock rate 888.8~ nS @ 72 MHz (1.125 MBit/s) -*
  • PIOS_SPI_PRESCALER_128: sets clock rate 1.7~ nS @ 72 MHz (0.562 MBit/s) -*
  • PIOS_SPI_PRESCALER_256: sets clock rate 3.5~ nS @ 72 MHz (0.281 MBit/s) -*
-* \return 0 if no error -* \return -1 if disabled SPI port selected -* \return -3 if invalid spi_prescaler selected -*/ -int32_t PIOS_SPI_SetClockSpeed(uint32_t spi_id, SPIPrescalerTypeDef spi_prescaler) -{ - struct pios_spi_dev * spi_dev = (struct pios_spi_dev *)spi_id; - - bool valid = PIOS_SPI_validate(spi_dev); - PIOS_Assert(valid) - - SPI_InitTypeDef SPI_InitStructure; - - if (spi_prescaler >= 8) { - /* Invalid prescaler selected */ - return -3; - } - - /* Start with a copy of the default configuration for the peripheral */ - SPI_InitStructure = spi_dev->cfg->init; - - /* Adjust the prescaler for the peripheral's clock */ - SPI_InitStructure.SPI_BaudRatePrescaler = ((uint16_t) spi_prescaler & 7) << 3; - - /* Write back the new configuration */ - SPI_Init(spi_dev->cfg->regs, &SPI_InitStructure); - - PIOS_SPI_TransferByte(spi_id, 0xFF); - return 0; -} - -/** - * Claim the SPI bus semaphore. Calling the SPI functions does not require this - * \param[in] spi SPI number (0 or 1) - * \return 0 if no error - * \return -1 if timeout before claiming semaphore - */ -int32_t PIOS_SPI_ClaimBus(uint32_t spi_id) -{ -#if defined(PIOS_INCLUDE_FREERTOS) - struct pios_spi_dev * spi_dev = (struct pios_spi_dev *)spi_id; - - bool valid = PIOS_SPI_validate(spi_dev); - PIOS_Assert(valid) - - if (xSemaphoreTake(spi_dev->busy, 0xffff) != pdTRUE) - return -1; -#endif - return 0; -} - -/** - * Release the SPI bus semaphore. Calling the SPI functions does not require this - * \param[in] spi SPI number (0 or 1) - * \return 0 if no error - */ -int32_t PIOS_SPI_ReleaseBus(uint32_t spi_id) -{ -#if defined(PIOS_INCLUDE_FREERTOS) - struct pios_spi_dev * spi_dev = (struct pios_spi_dev *)spi_id; - - bool valid = PIOS_SPI_validate(spi_dev); - PIOS_Assert(valid) - - xSemaphoreGive(spi_dev->busy); -#endif - return 0; -} - -/** -* Controls the RC (Register Clock alias Chip Select) pin of a SPI port -* \param[in] spi SPI number (0 or 1) -* \param[in] pin_value 0 or 1 -* \return 0 if no error -*/ -int32_t PIOS_SPI_RC_PinSet(uint32_t spi_id, uint8_t pin_value) -{ - struct pios_spi_dev * spi_dev = (struct pios_spi_dev *)spi_id; - - bool valid = PIOS_SPI_validate(spi_dev); - PIOS_Assert(valid) - - if (pin_value) { - GPIO_SetBits(spi_dev->cfg->ssel.gpio, spi_dev->cfg->ssel.init.GPIO_Pin); - } else { - GPIO_ResetBits(spi_dev->cfg->ssel.gpio, spi_dev->cfg->ssel.init.GPIO_Pin); - } - - return 0; -} - -/** -* Transfers a byte to SPI output and reads back the return value from SPI input -* \param[in] spi SPI number (0 or 1) -* \param[in] b the byte which should be transfered -*/ -int32_t PIOS_SPI_TransferByte(uint32_t spi_id, uint8_t b) -{ - struct pios_spi_dev * spi_dev = (struct pios_spi_dev *)spi_id; - - bool valid = PIOS_SPI_validate(spi_dev); - PIOS_Assert(valid) - - uint8_t dummy; - uint8_t rx_byte; - - /* - * Procedure taken from STM32F10xxx Reference Manual section 23.3.5 - */ - - /* Make sure the RXNE flag is cleared by reading the DR register */ - dummy = spi_dev->cfg->regs->DR; - - /* Start the transfer */ - spi_dev->cfg->regs->DR = b; - - /* Wait until there is a byte to read */ - while (!(spi_dev->cfg->regs->SR & SPI_I2S_FLAG_RXNE)) ; - - /* Read the rx'd byte */ - rx_byte = spi_dev->cfg->regs->DR; - - /* Wait until the TXE goes high */ - while (!(spi_dev->cfg->regs->SR & SPI_I2S_FLAG_TXE)) ; - - /* Wait for SPI transfer to have fully completed */ - while (spi_dev->cfg->regs->SR & SPI_I2S_FLAG_BSY) ; - - /* Return received byte */ - return rx_byte; -} - -/** -* Transfers a block of bytes via DMA. -* \param[in] spi SPI number (0 or 1) -* \param[in] send_buffer pointer to buffer which should be sent.
-* If NULL, 0xff (all-one) will be sent. -* \param[in] receive_buffer pointer to buffer which should get the received values.
-* If NULL, received bytes will be discarded. -* \param[in] len number of bytes which should be transfered -* \param[in] callback pointer to callback function which will be executed -* from DMA channel interrupt once the transfer is finished. -* If NULL, no callback function will be used, and PIOS_SPI_TransferBlock() will -* block until the transfer is finished. -* \return >= 0 if no error during transfer -* \return -1 if disabled SPI port selected -* \return -3 if function has been called during an ongoing DMA transfer -*/ -int32_t PIOS_SPI_TransferBlock(uint32_t spi_id, const uint8_t *send_buffer, uint8_t *receive_buffer, uint16_t len, void *callback) -{ - struct pios_spi_dev * spi_dev = (struct pios_spi_dev *)spi_id; - - bool valid = PIOS_SPI_validate(spi_dev); - PIOS_Assert(valid) - - DMA_InitTypeDef dma_init; - - /* Exit if ongoing transfer */ - if (DMA_GetCurrDataCounter(spi_dev->cfg->dma.rx.channel)) { - return -3; - } - - /* Disable the SPI peripheral */ - SPI_Cmd(spi_dev->cfg->regs, DISABLE); - - /* Disable the DMA channels */ - DMA_Cmd(spi_dev->cfg->dma.rx.channel, DISABLE); - DMA_Cmd(spi_dev->cfg->dma.tx.channel, DISABLE); - - /* Set callback function */ - spi_dev->callback = callback; - - /* - * Configure Rx channel - */ - - /* Start with the default configuration for this peripheral */ - dma_init = spi_dev->cfg->dma.rx.init; - - if (receive_buffer != NULL) { - /* Enable memory addr. increment - bytes written into receive buffer */ - dma_init.DMA_MemoryBaseAddr = (uint32_t) receive_buffer; - dma_init.DMA_MemoryInc = DMA_MemoryInc_Enable; - } else { - /* Disable memory addr. increment - bytes written into dummy buffer */ - spi_dev->rx_dummy_byte = 0xFF; - dma_init.DMA_MemoryBaseAddr = (uint32_t) &spi_dev->rx_dummy_byte; - dma_init.DMA_MemoryInc = DMA_MemoryInc_Disable; - } - if (spi_dev->cfg->use_crc) { - /* Make sure the CRC error flag is cleared before we start */ - SPI_I2S_ClearFlag(spi_dev->cfg->regs, SPI_FLAG_CRCERR); - } - - dma_init.DMA_BufferSize = len; - DMA_Init(spi_dev->cfg->dma.rx.channel, &(dma_init)); - - /* - * Configure Tx channel - */ - - /* Start with the default configuration for this peripheral */ - dma_init = spi_dev->cfg->dma.tx.init; - - if (send_buffer != NULL) { - /* Enable memory addr. increment - bytes written into receive buffer */ - dma_init.DMA_MemoryBaseAddr = (uint32_t) send_buffer; - dma_init.DMA_MemoryInc = DMA_MemoryInc_Enable; - } else { - /* Disable memory addr. increment - bytes written into dummy buffer */ - spi_dev->tx_dummy_byte = 0xFF; - dma_init.DMA_MemoryBaseAddr = (uint32_t) &spi_dev->tx_dummy_byte; - dma_init.DMA_MemoryInc = DMA_MemoryInc_Disable; - } - - if (spi_dev->cfg->use_crc) { - /* The last byte of the payload will be replaced with the CRC8 */ - dma_init.DMA_BufferSize = len - 1; - } else { - dma_init.DMA_BufferSize = len; - } - - DMA_Init(spi_dev->cfg->dma.tx.channel, &(dma_init)); - - /* Enable DMA interrupt if callback function active */ - DMA_ITConfig(spi_dev->cfg->dma.rx.channel, DMA_IT_TC, (callback != NULL) ? ENABLE : DISABLE); - - /* Flush out the CRC registers */ - SPI_CalculateCRC(spi_dev->cfg->regs, DISABLE); - (void)SPI_GetCRC(spi_dev->cfg->regs, SPI_CRC_Rx); - SPI_I2S_ClearFlag(spi_dev->cfg->regs, SPI_FLAG_CRCERR); - - /* Make sure to flush out the receive buffer */ - (void)SPI_I2S_ReceiveData(spi_dev->cfg->regs); - - if (spi_dev->cfg->use_crc) { - /* Need a 0->1 transition to reset the CRC logic */ - SPI_CalculateCRC(spi_dev->cfg->regs, ENABLE); - } - - /* Start DMA transfers */ - DMA_Cmd(spi_dev->cfg->dma.rx.channel, ENABLE); - DMA_Cmd(spi_dev->cfg->dma.tx.channel, ENABLE); - - /* Reenable the SPI device */ - SPI_Cmd(spi_dev->cfg->regs, ENABLE); - - if (callback) { - /* User has requested a callback, don't wait for the transfer to complete. */ - return 0; - } - - /* Wait until all bytes have been transmitted/received */ - while (DMA_GetCurrDataCounter(spi_dev->cfg->dma.rx.channel)); - - /* Wait for the final bytes of the transfer to complete, including CRC byte(s). */ - while (!(SPI_I2S_GetFlagStatus(spi_dev->cfg->regs, SPI_I2S_FLAG_TXE))); - - /* Wait for the final bytes of the transfer to complete, including CRC byte(s). */ - while (SPI_I2S_GetFlagStatus(spi_dev->cfg->regs, SPI_I2S_FLAG_BSY)); - - /* Check the CRC on the transfer if enabled. */ - if (spi_dev->cfg->use_crc) { - /* Check the SPI CRC error flag */ - if (SPI_I2S_GetFlagStatus(spi_dev->cfg->regs, SPI_FLAG_CRCERR)) { - return -4; - } - } - - /* No error */ - return 0; -} - -/** -* Check if a transfer is in progress -* \param[in] spi SPI number (0 or 1) -* \return >= 0 if no transfer is in progress -* \return -1 if disabled SPI port selected -* \return -2 if unsupported SPI port selected -* \return -3 if function has been called during an ongoing DMA transfer -*/ -int32_t PIOS_SPI_Busy(uint32_t spi_id) -{ - struct pios_spi_dev * spi_dev = (struct pios_spi_dev *)spi_id; - - bool valid = PIOS_SPI_validate(spi_dev); - PIOS_Assert(valid) - - /* DMA buffer has data or SPI transmit register not empty or SPI is busy*/ - if (DMA_GetCurrDataCounter(spi_dev->cfg->dma.rx.channel) || - !SPI_I2S_GetFlagStatus(spi_dev->cfg->regs, SPI_I2S_FLAG_TXE) || - SPI_I2S_GetFlagStatus(spi_dev->cfg->regs, SPI_I2S_FLAG_BSY)) - { - return -3; - } - - return(0); -} - - -void PIOS_SPI_IRQ_Handler(uint32_t spi_id) -{ - struct pios_spi_dev * spi_dev = (struct pios_spi_dev *)spi_id; - - bool valid = PIOS_SPI_validate(spi_dev); - PIOS_Assert(valid) - - DMA_ClearFlag(spi_dev->cfg->dma.irq.flags); - - /* Wait for the final bytes of the transfer to complete, including CRC byte(s). */ - while (!(SPI_I2S_GetFlagStatus(spi_dev->cfg->regs, SPI_I2S_FLAG_TXE))) ; - - /* Wait for the final bytes of the transfer to complete, including CRC byte(s). */ - while (SPI_I2S_GetFlagStatus(spi_dev->cfg->regs, SPI_I2S_FLAG_BSY)) ; - - if (spi_dev->callback != NULL) { - bool crc_ok = TRUE; - uint8_t crc_val; - - if (SPI_I2S_GetFlagStatus(spi_dev->cfg->regs, SPI_FLAG_CRCERR)) { - crc_ok = FALSE; - SPI_I2S_ClearFlag(spi_dev->cfg->regs, SPI_FLAG_CRCERR); - } - crc_val = SPI_GetCRC(spi_dev->cfg->regs, SPI_CRC_Rx); - spi_dev->callback(crc_ok, crc_val); - } -} - -#endif - -/** - * @} - * @} - */ +/** + ****************************************************************************** + * @addtogroup PIOS PIOS Core hardware abstraction layer + * @{ + * @addtogroup PIOS_SPI SPI Functions + * @brief PIOS interface to read and write from SPI ports + * @{ + * + * @file pios_spi.c + * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2012. + * @brief Hardware Abstraction Layer for SPI ports of STM32 + * @see The GNU Public License (GPL) Version 3 + * @notes + * + * Note that additional chip select lines can be easily added by using + * the remaining free GPIOs of the core module. Shared SPI ports should be + * arbitrated with (FreeRTOS based) Mutexes to avoid collisions! + * + *****************************************************************************/ +/* + * 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 + */ + +#include + +#if defined(PIOS_INCLUDE_SPI) + +#include + +static bool PIOS_SPI_validate(struct pios_spi_dev * com_dev) +{ + /* Should check device magic here */ + return(true); +} + +#if defined(PIOS_INCLUDE_FREERTOS) +static struct pios_spi_dev * PIOS_SPI_alloc(void) +{ + return (pvPortMalloc(sizeof(struct pios_spi_dev))); +} +#else +static struct pios_spi_dev pios_spi_devs[PIOS_SPI_MAX_DEVS]; +static uint8_t pios_spi_num_devs; +static struct pios_spi_dev * PIOS_SPI_alloc(void) +{ + if (pios_spi_num_devs >= PIOS_SPI_MAX_DEVS) { + return (NULL); + } + + return (&pios_spi_devs[pios_spi_num_devs++]); +} +#endif + +/** +* Initialises SPI pins +* \param[in] mode currently only mode 0 supported +* \return < 0 if initialisation failed + */ +int32_t PIOS_SPI_Init(uint32_t * spi_id, const struct pios_spi_cfg * cfg) +{ + uint32_t init_ssel = 0; + + PIOS_Assert(spi_id); + PIOS_Assert(cfg); + + struct pios_spi_dev * spi_dev; + + spi_dev = (struct pios_spi_dev *) PIOS_SPI_alloc(); + if (!spi_dev) goto out_fail; + + /* Bind the configuration to the device instance */ + spi_dev->cfg = cfg; + +#if defined(PIOS_INCLUDE_FREERTOS) + vSemaphoreCreateBinary(spi_dev->busy); + xSemaphoreGive(spi_dev->busy); +#else + spi_dev->busy = 0; +#endif + + /* Disable callback function */ + spi_dev->callback = NULL; + + /* Set rx/tx dummy bytes to a known value */ + spi_dev->rx_dummy_byte = 0xFF; + spi_dev->tx_dummy_byte = 0xFF; + + switch (spi_dev->cfg->init.SPI_NSS) { + case SPI_NSS_Soft: + if (spi_dev->cfg->init.SPI_Mode == SPI_Mode_Master) { + /* We're a master in soft NSS mode, make sure we see NSS high at all times. */ + SPI_NSSInternalSoftwareConfig(spi_dev->cfg->regs, SPI_NSSInternalSoft_Set); + /* Init as many slave selects as the config advertises. */ + init_ssel = spi_dev->cfg->slave_count; + } else { + /* We're a slave in soft NSS mode, make sure we see NSS low at all times. */ + SPI_NSSInternalSoftwareConfig(spi_dev->cfg->regs, SPI_NSSInternalSoft_Reset); + } + break; + case SPI_NSS_Hard: + /* only legal for single-slave config */ + PIOS_Assert(spi_dev->cfg->slave_count == 1); + init_ssel = 1; + /* FIXME: Should this also call SPI_SSOutputCmd()? */ + break; + + default: + PIOS_Assert(0); + } + + /* Initialize the GPIO pins */ + GPIO_Init(spi_dev->cfg->sclk.gpio, &(spi_dev->cfg->sclk.init)); + GPIO_Init(spi_dev->cfg->mosi.gpio, &(spi_dev->cfg->mosi.init)); + GPIO_Init(spi_dev->cfg->miso.gpio, &(spi_dev->cfg->miso.init)); + for (uint32_t i = 0; i < init_ssel; i++) { + /* Since we're driving the SSEL pin in software, ensure that the slave is deselected */ + /* XXX multi-slave support - maybe have another SPI_NSS_ mode? */ + GPIO_SetBits(spi_dev->cfg->ssel[i].gpio, spi_dev->cfg->ssel[i].init.GPIO_Pin); + GPIO_Init(spi_dev->cfg->ssel[i].gpio, (GPIO_InitTypeDef*)&(spi_dev->cfg->ssel[i].init)); + } + + /* Enable the associated peripheral clock */ + switch ((uint32_t) spi_dev->cfg->regs) { + case (uint32_t) SPI1: + /* Enable SPI peripheral clock (APB2 == high speed) */ + RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1, ENABLE); + break; + case (uint32_t) SPI2: + /* Enable SPI peripheral clock (APB1 == slow speed) */ + RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI2, ENABLE); + break; + case (uint32_t) SPI3: + /* Enable SPI peripheral clock (APB1 == slow speed) */ + RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI3, ENABLE); + break; + } + + /* Enable DMA clock */ + RCC_AHBPeriphClockCmd(spi_dev->cfg->dma.ahb_clk, ENABLE); + + /* Configure DMA for SPI Rx */ + DMA_Cmd(spi_dev->cfg->dma.rx.channel, DISABLE); + DMA_Init(spi_dev->cfg->dma.rx.channel, &(spi_dev->cfg->dma.rx.init)); + + /* Configure DMA for SPI Tx */ + DMA_Cmd(spi_dev->cfg->dma.tx.channel, DISABLE); + DMA_Init(spi_dev->cfg->dma.tx.channel, &(spi_dev->cfg->dma.tx.init)); + + /* Initialize the SPI block */ + SPI_Init(spi_dev->cfg->regs, &(spi_dev->cfg->init)); + + /* Configure CRC calculation */ + if (spi_dev->cfg->use_crc) { + SPI_CalculateCRC(spi_dev->cfg->regs, ENABLE); + } else { + SPI_CalculateCRC(spi_dev->cfg->regs, DISABLE); + } + + /* Enable SPI */ + SPI_Cmd(spi_dev->cfg->regs, ENABLE); + + /* Enable SPI interrupts to DMA */ + SPI_I2S_DMACmd(spi_dev->cfg->regs, SPI_I2S_DMAReq_Tx | SPI_I2S_DMAReq_Rx, ENABLE); + + /* Configure DMA interrupt */ + NVIC_Init(&(spi_dev->cfg->dma.irq.init)); + + *spi_id = (uint32_t)spi_dev; + return(0); + +out_fail: + return(-1); +} + +/** +* (Re-)initialises SPI peripheral clock rate +* +* \param[in] spi SPI number (0 or 1) +* \param[in] spi_prescaler configures the SPI speed: +*
    +*
  • PIOS_SPI_PRESCALER_2: sets clock rate 27.7~ nS @ 72 MHz (36 MBit/s) (only supported for spi==0, spi1 uses 4 instead) +*
  • PIOS_SPI_PRESCALER_4: sets clock rate 55.5~ nS @ 72 MHz (18 MBit/s) +*
  • PIOS_SPI_PRESCALER_8: sets clock rate 111.1~ nS @ 72 MHz (9 MBit/s) +*
  • PIOS_SPI_PRESCALER_16: sets clock rate 222.2~ nS @ 72 MHz (4.5 MBit/s) +*
  • PIOS_SPI_PRESCALER_32: sets clock rate 444.4~ nS @ 72 MHz (2.25 MBit/s) +*
  • PIOS_SPI_PRESCALER_64: sets clock rate 888.8~ nS @ 72 MHz (1.125 MBit/s) +*
  • PIOS_SPI_PRESCALER_128: sets clock rate 1.7~ nS @ 72 MHz (0.562 MBit/s) +*
  • PIOS_SPI_PRESCALER_256: sets clock rate 3.5~ nS @ 72 MHz (0.281 MBit/s) +*
+* \return 0 if no error +* \return -1 if disabled SPI port selected +* \return -3 if invalid spi_prescaler selected +*/ +int32_t PIOS_SPI_SetClockSpeed(uint32_t spi_id, SPIPrescalerTypeDef spi_prescaler) +{ + struct pios_spi_dev * spi_dev = (struct pios_spi_dev *)spi_id; + + bool valid = PIOS_SPI_validate(spi_dev); + PIOS_Assert(valid) + + SPI_InitTypeDef SPI_InitStructure; + + if (spi_prescaler >= 8) { + /* Invalid prescaler selected */ + return -3; + } + + /* Start with a copy of the default configuration for the peripheral */ + SPI_InitStructure = spi_dev->cfg->init; + + /* Adjust the prescaler for the peripheral's clock */ + SPI_InitStructure.SPI_BaudRatePrescaler = ((uint16_t) spi_prescaler & 7) << 3; + + /* Write back the new configuration */ + SPI_Init(spi_dev->cfg->regs, &SPI_InitStructure); + + PIOS_SPI_TransferByte(spi_id, 0xFF); + return 0; +} + +/** + * Claim the SPI bus semaphore. Calling the SPI functions does not require this + * \param[in] spi SPI number (0 or 1) + * \return 0 if no error + * \return -1 if timeout before claiming semaphore + */ +int32_t PIOS_SPI_ClaimBus(uint32_t spi_id) +{ +#if defined(PIOS_INCLUDE_FREERTOS) + struct pios_spi_dev * spi_dev = (struct pios_spi_dev *)spi_id; + + bool valid = PIOS_SPI_validate(spi_dev); + PIOS_Assert(valid) + + if (xSemaphoreTake(spi_dev->busy, 0xffff) != pdTRUE) + return -1; +#else + struct pios_spi_dev * spi_dev = (struct pios_spi_dev *)spi_id; + uint32_t timeout = 0xffff; + while((PIOS_SPI_Busy(spi_id) || spi_dev->busy) && --timeout); + if(timeout == 0) //timed out + return -1; + + PIOS_IRQ_Disable(); + if(spi_dev->busy) + return -1; + spi_dev->busy = 1; + PIOS_IRQ_Enable(); +#endif + return 0; +} + +/** + * Claim the SPI bus semaphore from an ISR. Has no timeout. + * \param[in] spi SPI number (0 or 1) + * \return 0 if no error + * \return -1 if timeout before claiming semaphore + */ +int32_t PIOS_SPI_ClaimBusISR(uint32_t spi_id) +{ +#if defined(PIOS_INCLUDE_FREERTOS) + struct pios_spi_dev * spi_dev = (struct pios_spi_dev *)spi_id; + + bool valid = PIOS_SPI_validate(spi_dev); + PIOS_Assert(valid) + + if (xQueueGenericReceive(( xQueueHandle ) spi_dev->busy, NULL, 0x0000 , pdFALSE ) != pdTRUE) + return -1; +#endif + return 0; +} + +/** + * Release the SPI bus semaphore. Calling the SPI functions does not require this + * \param[in] spi SPI number (0 or 1) + * \return 0 if no error + */ +int32_t PIOS_SPI_ReleaseBus(uint32_t spi_id) +{ +#if defined(PIOS_INCLUDE_FREERTOS) + struct pios_spi_dev * spi_dev = (struct pios_spi_dev *)spi_id; + + bool valid = PIOS_SPI_validate(spi_dev); + PIOS_Assert(valid) + + xSemaphoreGive(spi_dev->busy); +#else + struct pios_spi_dev * spi_dev = (struct pios_spi_dev *)spi_id; + PIOS_IRQ_Disable(); + spi_dev->busy = 0; + PIOS_IRQ_Enable(); + +#endif + return 0; +} + +/** + * Controls the RC (Register Clock alias Chip Select) pin of a SPI port + * \param[in] spi SPI number (0 or 1) + * \param[in] pin_value 0 or 1 + * \return 0 if no error + */ +int32_t PIOS_SPI_RC_PinSet(uint32_t spi_id, uint32_t slave_id, uint8_t pin_value) +{ + struct pios_spi_dev * spi_dev = (struct pios_spi_dev *)spi_id; + + bool valid = PIOS_SPI_validate(spi_dev); + PIOS_Assert(valid) + PIOS_Assert(slave_id <= spi_dev->cfg->slave_count) + + /* XXX multi-slave support? */ + if (pin_value) { + GPIO_SetBits(spi_dev->cfg->ssel[slave_id].gpio, spi_dev->cfg->ssel[slave_id].init.GPIO_Pin); + } else { + GPIO_ResetBits(spi_dev->cfg->ssel[slave_id].gpio, spi_dev->cfg->ssel[slave_id].init.GPIO_Pin); + } + + return 0; +} + +/** +* Transfers a byte to SPI output and reads back the return value from SPI input +* \param[in] spi SPI number (0 or 1) +* \param[in] b the byte which should be transfered +*/ +static uint8_t dummy; +int32_t PIOS_SPI_TransferByte(uint32_t spi_id, uint8_t b) +{ + struct pios_spi_dev * spi_dev = (struct pios_spi_dev *)spi_id; + + bool valid = PIOS_SPI_validate(spi_dev); + PIOS_Assert(valid) + + uint8_t rx_byte; + + /* + * Procedure taken from STM32F10xxx Reference Manual section 23.3.5 + */ + + /* Make sure the RXNE flag is cleared by reading the DR register */ + dummy = spi_dev->cfg->regs->DR; + + /* Start the transfer */ + spi_dev->cfg->regs->DR = b; + + /* Wait until there is a byte to read */ + while (!(spi_dev->cfg->regs->SR & SPI_I2S_FLAG_RXNE)) ; + + /* Read the rx'd byte */ + rx_byte = spi_dev->cfg->regs->DR; + + /* Wait until the TXE goes high */ + while (!(spi_dev->cfg->regs->SR & SPI_I2S_FLAG_TXE)) ; + + /* Wait for SPI transfer to have fully completed */ + while (spi_dev->cfg->regs->SR & SPI_I2S_FLAG_BSY) ; + + /* Return received byte */ + return rx_byte; +} + +/** +* Transfers a block of bytes via DMA. +* \param[in] spi SPI number (0 or 1) +* \param[in] send_buffer pointer to buffer which should be sent.
+* If NULL, 0xff (all-one) will be sent. +* \param[in] receive_buffer pointer to buffer which should get the received values.
+* If NULL, received bytes will be discarded. +* \param[in] len number of bytes which should be transfered +* \param[in] callback pointer to callback function which will be executed +* from DMA channel interrupt once the transfer is finished. +* If NULL, no callback function will be used, and PIOS_SPI_TransferBlock() will +* block until the transfer is finished. +* \return >= 0 if no error during transfer +* \return -1 if disabled SPI port selected +* \return -3 if function has been called during an ongoing DMA transfer +*/ +int32_t PIOS_SPI_TransferBlock(uint32_t spi_id, const uint8_t *send_buffer, uint8_t *receive_buffer, uint16_t len, void *callback) +{ + struct pios_spi_dev * spi_dev = (struct pios_spi_dev *)spi_id; + + bool valid = PIOS_SPI_validate(spi_dev); + PIOS_Assert(valid) + + DMA_InitTypeDef dma_init; + + /* Exit if ongoing transfer */ + if (DMA_GetCurrDataCounter(spi_dev->cfg->dma.rx.channel)) { + return -3; + } + + /* Disable the SPI peripheral */ + SPI_Cmd(spi_dev->cfg->regs, DISABLE); + + /* Disable the DMA channels */ + DMA_Cmd(spi_dev->cfg->dma.rx.channel, DISABLE); + DMA_Cmd(spi_dev->cfg->dma.tx.channel, DISABLE); + + /* Set callback function */ + spi_dev->callback = callback; + + /* + * Configure Rx channel + */ + + /* Start with the default configuration for this peripheral */ + dma_init = spi_dev->cfg->dma.rx.init; + + if (receive_buffer != NULL) { + /* Enable memory addr. increment - bytes written into receive buffer */ + dma_init.DMA_MemoryBaseAddr = (uint32_t) receive_buffer; + dma_init.DMA_MemoryInc = DMA_MemoryInc_Enable; + } else { + /* Disable memory addr. increment - bytes written into dummy buffer */ + spi_dev->rx_dummy_byte = 0xFF; + dma_init.DMA_MemoryBaseAddr = (uint32_t) &spi_dev->rx_dummy_byte; + dma_init.DMA_MemoryInc = DMA_MemoryInc_Disable; + } + if (spi_dev->cfg->use_crc) { + /* Make sure the CRC error flag is cleared before we start */ + SPI_I2S_ClearFlag(spi_dev->cfg->regs, SPI_FLAG_CRCERR); + } + + dma_init.DMA_BufferSize = len; + DMA_Init(spi_dev->cfg->dma.rx.channel, &(dma_init)); + + /* + * Configure Tx channel + */ + + /* Start with the default configuration for this peripheral */ + dma_init = spi_dev->cfg->dma.tx.init; + + if (send_buffer != NULL) { + /* Enable memory addr. increment - bytes written into receive buffer */ + dma_init.DMA_MemoryBaseAddr = (uint32_t) send_buffer; + dma_init.DMA_MemoryInc = DMA_MemoryInc_Enable; + } else { + /* Disable memory addr. increment - bytes written into dummy buffer */ + spi_dev->tx_dummy_byte = 0xFF; + dma_init.DMA_MemoryBaseAddr = (uint32_t) &spi_dev->tx_dummy_byte; + dma_init.DMA_MemoryInc = DMA_MemoryInc_Disable; + } + + if (spi_dev->cfg->use_crc) { + /* The last byte of the payload will be replaced with the CRC8 */ + dma_init.DMA_BufferSize = len - 1; + } else { + dma_init.DMA_BufferSize = len; + } + + DMA_Init(spi_dev->cfg->dma.tx.channel, &(dma_init)); + + /* Enable DMA interrupt if callback function active */ + DMA_ITConfig(spi_dev->cfg->dma.rx.channel, DMA_IT_TC, (callback != NULL) ? ENABLE : DISABLE); + + /* Flush out the CRC registers */ + SPI_CalculateCRC(spi_dev->cfg->regs, DISABLE); + (void)SPI_GetCRC(spi_dev->cfg->regs, SPI_CRC_Rx); + SPI_I2S_ClearFlag(spi_dev->cfg->regs, SPI_FLAG_CRCERR); + + /* Make sure to flush out the receive buffer */ + (void)SPI_I2S_ReceiveData(spi_dev->cfg->regs); + + if (spi_dev->cfg->use_crc) { + /* Need a 0->1 transition to reset the CRC logic */ + SPI_CalculateCRC(spi_dev->cfg->regs, ENABLE); + } + + /* Start DMA transfers */ + DMA_Cmd(spi_dev->cfg->dma.rx.channel, ENABLE); + DMA_Cmd(spi_dev->cfg->dma.tx.channel, ENABLE); + + /* Reenable the SPI device */ + SPI_Cmd(spi_dev->cfg->regs, ENABLE); + + if (callback) { + /* User has requested a callback, don't wait for the transfer to complete. */ + return 0; + } + + /* Wait until all bytes have been transmitted/received */ + while (DMA_GetCurrDataCounter(spi_dev->cfg->dma.rx.channel)); + + /* Wait for the final bytes of the transfer to complete, including CRC byte(s). */ + while (!(SPI_I2S_GetFlagStatus(spi_dev->cfg->regs, SPI_I2S_FLAG_TXE))); + + /* Wait for the final bytes of the transfer to complete, including CRC byte(s). */ + while (SPI_I2S_GetFlagStatus(spi_dev->cfg->regs, SPI_I2S_FLAG_BSY)); + + /* Check the CRC on the transfer if enabled. */ + if (spi_dev->cfg->use_crc) { + /* Check the SPI CRC error flag */ + if (SPI_I2S_GetFlagStatus(spi_dev->cfg->regs, SPI_FLAG_CRCERR)) { + return -4; + } + } + + /* No error */ + return 0; +} + +/** +* Check if a transfer is in progress +* \param[in] spi SPI number (0 or 1) +* \return >= 0 if no transfer is in progress +* \return -1 if disabled SPI port selected +* \return -2 if unsupported SPI port selected +* \return -3 if function has been called during an ongoing DMA transfer +*/ +int32_t PIOS_SPI_Busy(uint32_t spi_id) +{ + struct pios_spi_dev * spi_dev = (struct pios_spi_dev *)spi_id; + + bool valid = PIOS_SPI_validate(spi_dev); + PIOS_Assert(valid) + + /* DMA buffer has data or SPI transmit register not empty or SPI is busy*/ + if (DMA_GetCurrDataCounter(spi_dev->cfg->dma.rx.channel) || + !SPI_I2S_GetFlagStatus(spi_dev->cfg->regs, SPI_I2S_FLAG_TXE) || + SPI_I2S_GetFlagStatus(spi_dev->cfg->regs, SPI_I2S_FLAG_BSY)) + { + return -3; + } + + return(0); +} + +void PIOS_SPI_SetPrescalar(uint32_t spi_id, uint32_t prescaler) +{ + struct pios_spi_dev * spi_dev = (struct pios_spi_dev *)spi_id; + + bool valid = PIOS_SPI_validate(spi_dev); + PIOS_Assert(valid); + PIOS_Assert(IS_SPI_BAUDRATE_PRESCALER(prescaler)); + + spi_dev->cfg->regs->CR1 = (spi_dev->cfg->regs->CR1 & ~0x0038) | prescaler; +} + +void PIOS_SPI_IRQ_Handler(uint32_t spi_id) +{ + struct pios_spi_dev * spi_dev = (struct pios_spi_dev *)spi_id; + + bool valid = PIOS_SPI_validate(spi_dev); + PIOS_Assert(valid) + + DMA_ClearFlag(spi_dev->cfg->dma.irq.flags); + + /* Wait for the final bytes of the transfer to complete, including CRC byte(s). */ + while (!(SPI_I2S_GetFlagStatus(spi_dev->cfg->regs, SPI_I2S_FLAG_TXE))) ; + + /* Wait for the final bytes of the transfer to complete, including CRC byte(s). */ + while (SPI_I2S_GetFlagStatus(spi_dev->cfg->regs, SPI_I2S_FLAG_BSY)) ; + + if (spi_dev->callback != NULL) { + bool crc_ok = TRUE; + uint8_t crc_val; + + if (SPI_I2S_GetFlagStatus(spi_dev->cfg->regs, SPI_FLAG_CRCERR)) { + crc_ok = FALSE; + SPI_I2S_ClearFlag(spi_dev->cfg->regs, SPI_FLAG_CRCERR); + } + crc_val = SPI_GetCRC(spi_dev->cfg->regs, SPI_CRC_Rx); + spi_dev->callback(crc_ok, crc_val); + } +} + +#endif + +/** + * @} + * @} + */ diff --git a/flight/PiOS/STM32F10x/pios_usb.c b/flight/PiOS/STM32F10x/pios_usb.c index 15decfca1..c7b2855da 100644 --- a/flight/PiOS/STM32F10x/pios_usb.c +++ b/flight/PiOS/STM32F10x/pios_usb.c @@ -51,12 +51,20 @@ struct pios_usb_dev { const struct pios_usb_cfg * cfg; }; -#if 0 -static bool PIOS_USB_validate(struct pios_usb_dev * usb_dev) +/** + * @brief Validate the usb device structure + * @returns 0 if valid device or -1 otherwise + */ +static int32_t PIOS_USB_validate(struct pios_usb_dev * usb_dev) { - return (usb_dev->magic == PIOS_USB_DEV_MAGIC); + if(usb_dev == NULL) + return -1; + + if (usb_dev->magic != PIOS_USB_DEV_MAGIC) + return -1; + + return 0; } -#endif #if defined(PIOS_INCLUDE_FREERTOS) static struct pios_usb_dev * PIOS_USB_alloc(void) @@ -140,7 +148,7 @@ out_fail: * \return < 0 on errors * \note Applications shouldn't call this function directly, instead please use \ref PIOS_COM layer functions */ -int32_t PIOS_USB_ChangeConnectionState(uint32_t Connected) +int32_t PIOS_USB_ChangeConnectionState(bool Connected) { // In all cases: re-initialise USB HID driver if (Connected) { @@ -205,9 +213,17 @@ int32_t PIOS_USB_Reenumerate() * \return 0: interface not available * \note Applications shouldn't call this function directly, instead please use \ref PIOS_COM layer functions */ +uint32_t usb_found; bool PIOS_USB_CheckAvailable(uint8_t id) { - return (PIOS_USB_DETECT_GPIO_PORT->IDR & PIOS_USB_DETECT_GPIO_PIN) != 0 && transfer_possible ? 1 : 0; + struct pios_usb_dev * usb_dev = (struct pios_usb_dev *) pios_usb_com_id; + + if(PIOS_USB_validate(usb_dev) != 0) + return 0; + + usb_found = (usb_dev->cfg->vsense.gpio->IDR & usb_dev->cfg->vsense.init.GPIO_Pin); + return usb_found; + return usb_found != 0 && transfer_possible ? 1 : 0; } #endif diff --git a/flight/PiOS/STM32F10x/pios_usb_cdc.c b/flight/PiOS/STM32F10x/pios_usb_cdc.c index 4bb1303d9..7a9bc0b23 100644 --- a/flight/PiOS/STM32F10x/pios_usb_cdc.c +++ b/flight/PiOS/STM32F10x/pios_usb_cdc.c @@ -38,6 +38,9 @@ #include "pios_usb_cdc_priv.h" #include "pios_usb_board_data.h" /* PIOS_BOARD_*_DATA_LENGTH */ +/* STM32 USB Library Definitions */ +#include "usb_lib.h" + static void PIOS_USB_CDC_RegisterTxCallback(uint32_t usbcdc_id, pios_com_callback tx_out_cb, uint32_t context); static void PIOS_USB_CDC_RegisterRxCallback(uint32_t usbcdc_id, pios_com_callback rx_in_cb, uint32_t context); static void PIOS_USB_CDC_TxStart(uint32_t usbcdc_id, uint16_t tx_bytes_avail); @@ -312,6 +315,7 @@ static void PIOS_USB_CDC_DATA_EP_OUT_Callback(void) #endif /* PIOS_INCLUDE_FREERTOS */ } +static uint16_t control_line_state; RESULT PIOS_USB_CDC_SetControlLineState(void) { struct pios_usb_cdc_dev * usb_cdc_dev = (struct pios_usb_cdc_dev *)pios_usb_cdc_id; @@ -319,8 +323,6 @@ RESULT PIOS_USB_CDC_SetControlLineState(void) bool valid = PIOS_USB_CDC_validate(usb_cdc_dev); PIOS_Assert(valid); - static uint16_t control_line_state; - uint8_t wValue0 = pInformation->USBwValue0; uint8_t wValue1 = pInformation->USBwValue1; diff --git a/flight/PiOS/STM32F10x/pios_usb_hid.c b/flight/PiOS/STM32F10x/pios_usb_hid.c index e70c93046..72a08b7a7 100644 --- a/flight/PiOS/STM32F10x/pios_usb_hid.c +++ b/flight/PiOS/STM32F10x/pios_usb_hid.c @@ -38,6 +38,9 @@ #include "pios_usb_hid_priv.h" #include "pios_usb_board_data.h" /* PIOS_BOARD_*_DATA_LENGTH */ +/* STM32 USB Library Definitions */ +#include "usb_lib.h" + static void PIOS_USB_HID_RegisterTxCallback(uint32_t usbhid_id, pios_com_callback tx_out_cb, uint32_t context); static void PIOS_USB_HID_RegisterRxCallback(uint32_t usbhid_id, pios_com_callback rx_in_cb, uint32_t context); static void PIOS_USB_HID_TxStart(uint32_t usbhid_id, uint16_t tx_bytes_avail); diff --git a/flight/PiOS/STM32F10x/pios_usbhook.c b/flight/PiOS/STM32F10x/pios_usbhook.c index 79864070d..294460044 100644 --- a/flight/PiOS/STM32F10x/pios_usbhook.c +++ b/flight/PiOS/STM32F10x/pios_usbhook.c @@ -36,6 +36,9 @@ #include "pios_usb_cdc_priv.h" /* PIOS_USB_CDC_* */ #include "pios_usb_board_data.h" /* PIOS_USB_BOARD_* */ +/* STM32 USB Library Definitions */ +#include "usb_lib.h" + static ONE_DESCRIPTOR Device_Descriptor; void PIOS_USBHOOK_RegisterDevice(const uint8_t * desc, uint16_t desc_size) @@ -62,17 +65,17 @@ void PIOS_USBHOOK_RegisterString(enum usb_string_desc string_id, const uint8_t * } } -static ONE_DESCRIPTOR Hid_Interface_Descriptor; +static ONE_DESCRIPTOR Hid_Descriptor; -void PIOS_USBHOOK_RegisterHidInterface(const uint8_t * desc, uint16_t desc_size) +void PIOS_USB_HID_RegisterHidDescriptor(const uint8_t * desc, uint16_t desc_size) { - Hid_Interface_Descriptor.Descriptor = desc; - Hid_Interface_Descriptor.Descriptor_Size = desc_size; + Hid_Descriptor.Descriptor = desc; + Hid_Descriptor.Descriptor_Size = desc_size; } static ONE_DESCRIPTOR Hid_Report_Descriptor; -void PIOS_USBHOOK_RegisterHidReport(const uint8_t * desc, uint16_t desc_size) +void PIOS_USB_HID_RegisterHidReport(const uint8_t * desc, uint16_t desc_size) { Hid_Report_Descriptor.Descriptor = desc; Hid_Report_Descriptor.Descriptor_Size = desc_size; @@ -290,6 +293,8 @@ static void PIOS_USBHOOK_Status_Out(void) * Output : None. * Return : USB_UNSUPPORT or USB_SUCCESS. *******************************************************************************/ +extern const uint8_t *PIOS_USB_CDC_GetLineCoding(uint16_t Length); + static RESULT PIOS_USBHOOK_Data_Setup(uint8_t RequestNo) { const uint8_t *(*CopyRoutine) (uint16_t); @@ -318,7 +323,7 @@ static RESULT PIOS_USBHOOK_Data_Setup(uint8_t RequestNo) switch (pInformation->USBwIndex0) { case 2: /* HID Interface */ switch (RequestNo) { - case GET_PROTOCOL: + case USB_HID_REQ_GET_PROTOCOL: CopyRoutine = PIOS_USBHOOK_GetProtocolValue; break; } @@ -327,8 +332,8 @@ static RESULT PIOS_USBHOOK_Data_Setup(uint8_t RequestNo) #if defined(PIOS_INCLUDE_USB_CDC) case 0: /* CDC Call Control Interface */ switch (RequestNo) { - case GET_LINE_CODING: - //CopyRoutine = PIOS_USB_CDC_GetLineCoding; + case USB_CDC_REQ_GET_LINE_CODING: + CopyRoutine = PIOS_USB_CDC_GetLineCoding; break; } @@ -363,6 +368,9 @@ static RESULT PIOS_USBHOOK_Data_Setup(uint8_t RequestNo) * Output : None. * Return : USB_UNSUPPORT or USB_SUCCESS. *******************************************************************************/ +extern RESULT PIOS_USB_CDC_SetControlLineState(void); +extern RESULT PIOS_USB_CDC_SetLineCoding(void); + static RESULT PIOS_USBHOOK_NoData_Setup(uint8_t RequestNo) { switch (Type_Recipient) { @@ -370,7 +378,7 @@ static RESULT PIOS_USBHOOK_NoData_Setup(uint8_t RequestNo) switch (pInformation->USBwIndex0) { case 2: /* HID */ switch (RequestNo) { - case SET_PROTOCOL: + case USB_HID_REQ_SET_PROTOCOL: return PIOS_USBHOOK_SetProtocol(); break; } @@ -380,10 +388,10 @@ static RESULT PIOS_USBHOOK_NoData_Setup(uint8_t RequestNo) #if defined(PIOS_INCLUDE_USB_CDC) case 0: /* CDC Call Control Interface */ switch (RequestNo) { - case SET_LINE_CODING: + case USB_CDC_REQ_SET_LINE_CODING: return PIOS_USB_CDC_SetLineCoding(); break; - case SET_CONTROL_LINE_STATE: + case USB_CDC_REQ_SET_CONTROL_LINE_STATE: return PIOS_USB_CDC_SetControlLineState(); break; } @@ -460,7 +468,7 @@ static const uint8_t *PIOS_USBHOOK_GetReportDescriptor(uint16_t Length) *******************************************************************************/ static const uint8_t *PIOS_USBHOOK_GetHIDDescriptor(uint16_t Length) { - return Standard_GetDescriptorData(Length, &Hid_Interface_Descriptor); + return Standard_GetDescriptorData(Length, &Hid_Descriptor); } /******************************************************************************* diff --git a/flight/PiOS/STM32F10x/startup_stm32f10x_HD.S b/flight/PiOS/STM32F10x/startup_stm32f10x_HD.S index a512f98a7..83b2a82c2 100644 --- a/flight/PiOS/STM32F10x/startup_stm32f10x_HD.S +++ b/flight/PiOS/STM32F10x/startup_stm32f10x_HD.S @@ -66,12 +66,6 @@ defined in linker script */ .type Reset_Handler, %function Reset_Handler: -/* FSMC Bank1 NOR/SRAM3 is used for the STM3210E-EVAL, if another Bank is - required, then adjust the Register Addresses */ - bl SystemInit_ExtMemCtl -/* restore original stack pointer */ - LDR r0, =_estack - MSR msp, r0 /* Copy the data segment initializers from flash to SRAM */ movs r1, #0 b LoopCopyDataInit @@ -140,7 +134,7 @@ Infinite_Loop: g_pfnVectors: - .word Initial_spTop + .word _estack .word Reset_Handler .word NMI_Handler .word HardFault_Handler diff --git a/flight/PiOS/inc/pios_adc.h b/flight/PiOS/inc/pios_adc.h index 9b3aeb396..f72b163ee 100644 --- a/flight/PiOS/inc/pios_adc.h +++ b/flight/PiOS/inc/pios_adc.h @@ -7,8 +7,7 @@ * @{ * * @file pios_adc.h - * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010. - * Parts by Thorsten Klose (tk@midibox.org) + * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2012. * @brief ADC functions header. * @see The GNU Public License (GPL) Version 3 * @@ -38,7 +37,6 @@ typedef void (*ADCCallback) (float * data); /* Public Functions */ -void PIOS_ADC_Init(); void PIOS_ADC_Config(uint32_t oversampling); int32_t PIOS_ADC_PinGet(uint32_t pin); int16_t * PIOS_ADC_GetRawBuffer(void); diff --git a/flight/PiOS/inc/pios_adc_priv.h b/flight/PiOS/inc/pios_adc_priv.h index 7ec61038d..278dcb8b7 100644 --- a/flight/PiOS/inc/pios_adc_priv.h +++ b/flight/PiOS/inc/pios_adc_priv.h @@ -40,25 +40,10 @@ struct pios_adc_cfg { struct stm32_dma dma; uint32_t half_flag; uint32_t full_flag; + uint16_t max_downsample; }; -struct pios_adc_dev { - const struct pios_adc_cfg *const cfg; - ADCCallback callback_function; -#if defined(PIOS_INCLUDE_FREERTOS) - xQueueHandle data_queue; -#endif - volatile int16_t *valid_data_buffer; - volatile uint8_t adc_oversample; - uint8_t dma_block_size; - uint16_t dma_half_buffer_size; - int16_t fir_coeffs[PIOS_ADC_MAX_SAMPLES+1] __attribute__ ((aligned(4))); - volatile int16_t raw_data_buffer[PIOS_ADC_MAX_SAMPLES] __attribute__ ((aligned(4))); // Double buffer that DMA just used - float downsampled_buffer[PIOS_ADC_NUM_CHANNELS] __attribute__ ((aligned(4))); -}; - -extern struct pios_adc_dev pios_adc_devs[]; -extern uint8_t pios_adc_num_devices; +int32_t PIOS_ADC_Init(const struct pios_adc_cfg * cfg); #endif /* PIOS_ADC_PRIV_H */ diff --git a/flight/PiOS/inc/pios_adxl345.h b/flight/PiOS/inc/pios_adxl345.h index 1e0b89f6d..4701aaf55 100644 --- a/flight/PiOS/inc/pios_adxl345.h +++ b/flight/PiOS/inc/pios_adxl345.h @@ -1,12 +1,31 @@ +/** + ****************************************************************************** + * @addtogroup PIOS PIOS Core hardware abstraction layer + * @{ + * @addtogroup PIOS_ADXL345 ADXL345 Functions + * @brief Data from the ADXL345 sensors + * @{ + * @file pios_adxl345.h + * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2012. + * @brief PiOS SPI ADXL345 + * @see The GNU Public License (GPL) Version 3 + * + *****************************************************************************/ /* - * pios_adxl345.h - * OpenPilotOSX + * 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. * - * Created by James Cotton on 1/16/11. - * Copyright 2011 OpenPilot. All rights reserved. + * 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 */ - #ifndef PIOS_ADXL345_H #define PIOS_ADXL345_H @@ -15,6 +34,8 @@ #define ADXL_READ_BIT 0x80 #define ADXL_MULTI_BIT 0x40 +#define ADXL_WHOAMI 0x00 +#define ADXL_DEVICE_ID 0xE5 #define ADXL_X0_ADDR 0x32 #define ADXL_FIFOSTATUS_ADDR 0x39 @@ -47,12 +68,16 @@ struct pios_adxl345_data { int16_t z; }; -void PIOS_ADXL345_SelectRate(uint8_t rate); -void PIOS_ADXL345_SetRange(uint8_t range); -void PIOS_ADXL345_FifoDepth(uint8_t depth); -void PIOS_ADXL345_Attach(uint32_t spi_id); -void PIOS_ADXL345_Init(); +int32_t PIOS_ADXL345_SelectRate(uint8_t rate); +int32_t PIOS_ADXL345_SetRange(uint8_t range); +int32_t PIOS_ADXL345_Init(uint32_t spi_id, uint32_t slave_num); uint8_t PIOS_ADXL345_Read(struct pios_adxl345_data * data); -uint8_t PIOS_ADXL345_FifoElements(); +int32_t PIOS_ADXL345_FifoElements(); +int32_t PIOS_ADXL345_Test(); #endif + +/** + * @} + * @} + */ diff --git a/flight/PiOS/inc/pios_bma180.h b/flight/PiOS/inc/pios_bma180.h index 67e4c87bf..ef9627f00 100644 --- a/flight/PiOS/inc/pios_bma180.h +++ b/flight/PiOS/inc/pios_bma180.h @@ -7,8 +7,7 @@ * @{ * * @file pios_bma180.h - * @author David "Buzz" Carlson (buzz@chebuzz.com) - * The OpenPilot Team, http://www.openpilot.org Copyright (C) 2011. + * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2012. * @brief PiOS BMA180 digital accelerometer driver. * - Driver for the BMA180 digital accelerometer on the SPI bus. * @see The GNU Public License (GPL) Version 3 @@ -30,9 +29,13 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +#include "fifo_buffer.h" + #ifndef PIOS_BMA180_H #define PIOS_BMA180_H +#include + /* BMA180 Addresses */ #define BMA_CHIPID_ADDR 0x00 #define BMA_VERSION_ADDR 0x00 @@ -40,44 +43,67 @@ #define BMA_Y_LSB_ADDR 0x04 #define BMA_Z_LSB_ADDR 0x06 #define BMA_WE_ADDR 0x0D +#define BMA_RESET 0x10 #define BMA_BW_ADDR 0x20 #define BMA_RANGE_ADDR 0x35 +#define BMA_OFFSET_LSB1 0x35 +#define BMA_GAIN_Y 0x33 +#define BMA_CTRREG3 0x21 +#define BMA_CTRREG0 0x0D + +#define BMA_RESET_CODE 0x6B /* Accel range */ -#define BMA_RANGE_1G 0x00 // +/- 1G ADC resolution 0.13 mg/LSB -#define BMA_RANGE_1_5G 0x01 // +/- 1.5G ADC resolution 0.19 mg/LSB -#define BMA_RANGE_2G 0x02 // +/- 2G ADC resolution 0.25 mg/LSB *** default *** -#define BMA_RANGE_3G 0x03 // +/- 3G ADC resolution 0.38 mg/LSB -#define BMA_RANGE_4G 0x04 // +/- 4G ADC resolution 0.50 mg/LSB -#define BMA_RANGE_8G 0x05 // +/- 8G ADC resolution 0.99 mg/LSB -#define BMA_RANGE_16G 0x06 // +/- 16G ADC resolution 1.98 mg/LSB +#define BMA_RANGE_MASK 0x0E +#define BMA_RANGE_SHIFT 1 +enum bma180_range { BMA_RANGE_1G = 0x00, + BMA_RANGE_1_5G = 0x01, + BMA_RANGE_2G = 0x02, + BMA_RANGE_3G = 0x03, + BMA_RANGE_4G = 0x04, + BMA_RANGE_8G = 0x05, + BMA_RANGE_16G = 0x06 +}; /* Measurement bandwidth */ -#define BMA_BW_10HZ 0x00 -#define BMA_BW_20HZ 0x01 -#define BMA_BW_40HZ 0x02 -#define BMA_BW_75HZ 0x03 -#define BMA_BW_150HZ 0x04 // *** default *** -#define BMA_BW_300HZ 0x05 -#define BMA_BW_600HZ 0x06 -#define BMA_BW_1200HZ 0x07 -#define BMA_BW_HP1HZ 0x08 // High-pass, 1Hz -#define BMA_BW_BP0_300HZ 0x09 // Band-pass, 0.3Hz-300Hz +#define BMA_BW_MASK 0xF0 +#define BMA_BW_SHIFT 4 +enum bma180_bandwidth { BMA_BW_10HZ = 0x00, + BMA_BW_20HZ = 0x01, + BMA_BW_40HZ = 0x02, + BMA_BW_75HZ = 0x03, + BMA_BW_150HZ = 0x04, + BMA_BW_300HZ = 0x05, + BMA_BW_600HZ = 0x06, + BMA_BW_1200HZ =0x07, + BMA_BW_HP1HZ = 0x08, // High-pass, 1 Hz + BMA_BW_BP0_300HZ = 0x09 // Band-pass, 0.3Hz-300Hz +}; + +#define BMA_NEW_DAT_INT 0x02 struct pios_bma180_data { int16_t x; int16_t y; int16_t z; + int8_t temperature; +}; + + +struct pios_bma180_cfg { + const struct pios_exti_cfg * exti_cfg; /* Pointer to the EXTI configuration */ + enum bma180_bandwidth bandwidth; + enum bma180_range range; }; /* Public Functions */ -void PIOS_BMA180_WriteEnable(uint8_t _we); -uint8_t PIOS_BMA180_GetReg(uint8_t reg); -void PIOS_BMA180_SetReg(uint8_t reg, uint8_t data); -void PIOS_BMA180_Attach(uint32_t spi_id); -void PIOS_BMA180_Init(); -uint8_t PIOS_BMA180_Read(struct pios_bma180_data * data); -uint8_t PIOS_BMA180_Test(); +extern int32_t PIOS_BMA180_Init(uint32_t spi_id, uint32_t slave_num, const struct pios_bma180_cfg * cfg); +extern void PIOS_BMA180_Attach(uint32_t spi_id); +extern float PIOS_BMA180_GetScale(); +extern int32_t PIOS_BMA180_ReadFifo(struct pios_bma180_data * buffer); +extern int32_t PIOS_BMA180_ReadAccels(struct pios_bma180_data * data); +extern int32_t PIOS_BMA180_Test(); +extern void PIOS_BMA180_IRQHandler(); #endif /* PIOS_BMA180_H */ diff --git a/flight/PiOS/inc/pios_delay.h b/flight/PiOS/inc/pios_delay.h index 545deb841..4b79e3ef1 100644 --- a/flight/PiOS/inc/pios_delay.h +++ b/flight/PiOS/inc/pios_delay.h @@ -37,6 +37,8 @@ extern int32_t PIOS_DELAY_WaituS(uint32_t uS); extern int32_t PIOS_DELAY_WaitmS(uint32_t mS); extern uint32_t PIOS_DELAY_GetuS(); extern uint32_t PIOS_DELAY_GetuSSince(uint32_t t); +extern uint32_t PIOS_DELAY_GetRaw(); +extern uint32_t PIOS_DELAY_DiffuS(uint32_t raw); #endif /* PIOS_DELAY_H */ diff --git a/flight/PiOS/inc/pios_flash_w25x.h b/flight/PiOS/inc/pios_flash_w25x.h deleted file mode 100644 index 9d6fd49a5..000000000 --- a/flight/PiOS/inc/pios_flash_w25x.h +++ /dev/null @@ -1,16 +0,0 @@ -/* - * pios_flash_w25x.h - * OpenPilotOSX - * - * Created by James Cotton on 1/23/11. - * Copyright 2011 OpenPilot. All rights reserved. - * - */ - -int8_t PIOS_Flash_W25X_Init(); -uint8_t PIOS_Flash_W25X_ReadStatus(); -uint8_t PIOS_Flash_W25X_ReadID(); -int8_t PIOS_Flash_W25X_EraseChip(); -int8_t PIOS_Flash_W25X_EraseSector(uint32_t add); -int8_t PIOS_Flash_W25X_WriteData(uint32_t addr, uint8_t * data, uint16_t len); -int8_t PIOS_Flash_W25X_ReadData(uint32_t addr, uint8_t * data, uint16_t len); diff --git a/flight/PiOS/inc/pios_flashfs_objlist.h b/flight/PiOS/inc/pios_flashfs_objlist.h index f5c22d973..33b0bec96 100644 --- a/flight/PiOS/inc/pios_flashfs_objlist.h +++ b/flight/PiOS/inc/pios_flashfs_objlist.h @@ -31,7 +31,15 @@ #include "openpilot.h" #include "uavobjectmanager.h" -int32_t PIOS_FLASHFS_Init(); +struct flashfs_cfg { + uint32_t table_magic; + uint32_t obj_magic; + uint32_t obj_table_start; + uint32_t obj_table_end; + uint32_t sector_size; +}; + +int32_t PIOS_FLASHFS_Init(const struct flashfs_cfg * cfg); int32_t PIOS_FLASHFS_Format(); int32_t PIOS_FLASHFS_ObjSave(UAVObjHandle obj, uint16_t instId, uint8_t * data); int32_t PIOS_FLASHFS_ObjLoad(UAVObjHandle obj, uint16_t instId, uint8_t * data); diff --git a/flight/PiOS/inc/pios_hmc5843.h b/flight/PiOS/inc/pios_hmc5843.h index fc20ff753..21b3f426a 100644 --- a/flight/PiOS/inc/pios_hmc5843.h +++ b/flight/PiOS/inc/pios_hmc5843.h @@ -7,7 +7,7 @@ * @{ * * @file pios_hmc5843.h - * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010. + * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2012. * @brief HMC5843 functions header. * @see The GNU Public License (GPL) Version 3 * diff --git a/flight/PiOS/inc/pios_hmc5883.h b/flight/PiOS/inc/pios_hmc5883.h index c7a4d6c4a..037dca788 100644 --- a/flight/PiOS/inc/pios_hmc5883.h +++ b/flight/PiOS/inc/pios_hmc5883.h @@ -7,8 +7,7 @@ * @{ * * @file pios_hmc5883.h - * @author David "Buzz" Carlson (buzz@chebuzz.com) - * The OpenPilot Team, http://www.openpilot.org Copyright (C) 2011. + * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2012. * @brief HMC5883 functions header. * @see The GNU Public License (GPL) Version 3 * @@ -32,6 +31,8 @@ #ifndef PIOS_HMC5883_H #define PIOS_HMC5883_H +#include + /* HMC5883 Addresses */ #define PIOS_HMC5883_I2C_ADDR 0x1E #define PIOS_HMC5883_I2C_READ_ADDR 0x3D @@ -90,13 +91,23 @@ #define PIOS_HMC5883_Sensitivity_5_6Ga 330 // LSB/Ga #define PIOS_HMC5883_Sensitivity_8_1Ga 230 // LSB/Ga --> NOT RECOMMENDED -/* Public Functions */ -extern void PIOS_HMC5883_Init(void); -extern bool PIOS_HMC5883_NewDataAvailable(void); -extern void PIOS_HMC5883_ReadMag(int16_t out[3]); -extern void PIOS_HMC5883_ReadID(uint8_t out[4]); -extern int32_t PIOS_HMC5883_Test(void); +struct pios_hmc5883_cfg { + const struct pios_exti_cfg * exti_cfg; /* Pointer to the EXTI configuration */ + uint8_t M_ODR; /* OUTPUT DATA RATE --> here below the relative define (See datasheet page 11 for more details) */ + uint8_t Meas_Conf; /* Measurement Configuration,: Normal, positive bias, or negative bias --> here below the relative define */ + uint8_t Gain; /* Gain Configuration, select the full scale --> here below the relative define (See datasheet page 11 for more details) */ + uint8_t Mode; + +}; + +/* Public Functions */ +extern void PIOS_HMC5883_Init(const struct pios_hmc5883_cfg * cfg); +extern bool PIOS_HMC5883_NewDataAvailable(void); +extern int32_t PIOS_HMC5883_ReadMag(int16_t out[3]); +extern uint8_t PIOS_HMC5883_ReadID(uint8_t out[4]); +extern int32_t PIOS_HMC5883_Test(void); +extern void PIOS_HMC5883_IRQHandler(); #endif /* PIOS_HMC5883_H */ /** diff --git a/flight/PiOS/inc/pios_i2c.h b/flight/PiOS/inc/pios_i2c.h index cd8a0ff22..b34acf9e6 100644 --- a/flight/PiOS/inc/pios_i2c.h +++ b/flight/PiOS/inc/pios_i2c.h @@ -48,7 +48,7 @@ struct pios_i2c_txn { uint8_t *buf; }; -#define I2C_LOG_DEPTH 5 +#define I2C_LOG_DEPTH 20 enum pios_i2c_error_type { PIOS_I2C_ERROR_EVENT, PIOS_I2C_ERROR_FSM, @@ -64,7 +64,8 @@ struct pios_i2c_fault_history { }; /* Public Functions */ -extern bool PIOS_I2C_Transfer(uint32_t i2c_id, const struct pios_i2c_txn txn_list[], uint32_t num_txns); +extern int32_t PIOS_I2C_Transfer(uint32_t i2c_id, const struct pios_i2c_txn txn_list[], uint32_t num_txns); +extern int32_t PIOS_I2C_Transfer_Callback(uint32_t i2c_id, const struct pios_i2c_txn txn_list[], uint32_t num_txns, void *callback); extern void PIOS_I2C_EV_IRQ_Handler(uint32_t i2c_id); extern void PIOS_I2C_ER_IRQ_Handler(uint32_t i2c_id); extern void PIOS_I2C_GetDiagnostics(struct pios_i2c_fault_history * data, uint8_t * error_counts); diff --git a/flight/PiOS/inc/pios_i2c_priv.h b/flight/PiOS/inc/pios_i2c_priv.h index a10fe0603..8a2769321 100644 --- a/flight/PiOS/inc/pios_i2c_priv.h +++ b/flight/PiOS/inc/pios_i2c_priv.h @@ -32,12 +32,12 @@ struct pios_i2c_adapter_cfg { I2C_TypeDef *regs; + uint32_t remap; I2C_InitTypeDef init; uint32_t transfer_timeout_ms; struct stm32_gpio scl; struct stm32_gpio sda; - uint32_t remap; struct stm32_irq event; struct stm32_irq error; }; @@ -85,19 +85,23 @@ enum pios_i2c_adapter_magic { struct pios_i2c_adapter { enum pios_i2c_adapter_magic magic; const struct pios_i2c_adapter_cfg * cfg; - void (*callback) (uint8_t, uint8_t); #ifdef PIOS_INCLUDE_FREERTOS xSemaphoreHandle sem_busy; xSemaphoreHandle sem_ready; +#else + uint8_t busy; #endif bool bus_error; + bool nack; volatile enum i2c_adapter_state curr_state; const struct pios_i2c_txn *first_txn; const struct pios_i2c_txn *active_txn; const struct pios_i2c_txn *last_txn; + void (*callback) (); + uint8_t *active_byte; uint8_t *last_byte; }; diff --git a/flight/PiOS/inc/pios_iap.h b/flight/PiOS/inc/pios_iap.h index 1f67d651f..d9b41170b 100644 --- a/flight/PiOS/inc/pios_iap.h +++ b/flight/PiOS/inc/pios_iap.h @@ -17,9 +17,15 @@ /***************************************************************************************** * Public Definitions/Macros ****************************************************************************************/ -#define MAGIC_REG_1 BKP_DR1 -#define MAGIC_REG_2 BKP_DR2 -#define IAP_BOOTCOUNT BKP_DR3 +#if defined(STM32F4XX) +#define MAGIC_REG_1 RTC_BKP_DR1 +#define MAGIC_REG_2 RTC_BKP_DR2 +#define IAP_BOOTCOUNT RTC_BKP_DR3 +#else +#define MAGIC_REG_1 BKP_DR1 +#define MAGIC_REG_2 BKP_DR2 +#define IAP_BOOTCOUNT BKP_DR3 +#endif /**************************************************************************************** * Public Functions diff --git a/flight/PiOS/inc/pios_imu3000.h b/flight/PiOS/inc/pios_imu3000.h deleted file mode 100644 index 3302e59c9..000000000 --- a/flight/PiOS/inc/pios_imu3000.h +++ /dev/null @@ -1,126 +0,0 @@ -/** - ****************************************************************************** - * @addtogroup PIOS PIOS Core hardware abstraction layer - * @{ - * @addtogroup PIOS_IMU3000 IMU3000 Functions - * @brief Deals with the hardware interface to the 3-axis gyro - * @{ - * - * @file pios_imu3000.h - * @author David "Buzz" Carlson (buzz@chebuzz.com) - * The OpenPilot Team, http://www.openpilot.org Copyright (C) 2011. - * @brief IMU3000 3-axis gyor function headers - * @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 - */ - -#ifndef PIOS_IMU3000_H -#define PIOS_IMU3000_H - -/* IMU3000 Addresses */ -#define PIOS_IMU3000_I2C_ADDR 0x69 -#define PIOS_IMU3000_I2C_READ_ADDR 0xD2 -#define PIOS_IMU3000_I2C_WRITE_ADDR 0xD3 -#define PIOS_IMU3000_X_MSB_OFFSET_REG 0x0C -#define PIOS_IMU3000_X_LSB_OFFSET_REG 0x0D -#define PIOS_IMU3000_Y_MSB_OFFSET_REG 0x0E -#define PIOS_IMU3000_Y_LSB_OFFSET_REG 0x0F -#define PIOS_IMU3000_Z_MSB_OFFSET_REG 0x10 -#define PIOS_IMU3000_Z_LSB_OFFSET_REG 0x11 -#define PIOS_IMU3000_FIFO_EN_REG 0x12 -#define PIOS_IMU3000_SMPLRT_DIV_REG 0X15 -#define PIOS_IMU3000_DLPF_CFG_REG 0X16 -#define PIOS_IMU3000_INT_CFG_REG 0x17 -#define PIOS_IMU3000_INT_STATUS_REG 0x1A -#define PIOS_IMU3000_TEMP_OUT_MSB 0x1B -#define PIOS_IMU3000_TEMP_OUT_LSB 0x1C -#define PIOS_IMU3000_GYRO_X_OUT_MSB 0x1D -#define PIOS_IMU3000_GYRO_X_OUT_LSB 0x1E -#define PIOS_IMU3000_GYRO_Y_OUT_MSB 0x1F -#define PIOS_IMU3000_GYRO_Y_OUT_LSB 0x20 -#define PIOS_IMU3000_GYRO_Z_OUT_MSB 0x21 -#define PIOS_IMU3000_GYRO_Z_OUT_LSB 0x22 -#define PIOS_IMU3000_FIFO_CNT_MSB 0x3A -#define PIOS_IMU3000_FIFO_CNT_LSB 0x3B -#define PIOS_IMU3000_FIFO_REG 0x3C -#define PIOS_IMU3000_USER_CTRL_REG 0x3D -#define PIOS_IMU3000_PWR_MGMT_REG 0x3E - -/* FIFO enable for storing different values */ -#define PIOS_IMU3000_FIFO_TEMP_OUT 0x80 -#define PIOS_IMU3000_FIFO_GYRO_X_OUT 0x40 -#define PIOS_IMU3000_FIFO_GYRO_Y_OUT 0x20 -#define PIOS_IMU3000_FIFO_GYRO_Z_OUT 0x10 -#define PIOS_IMU3000_FIFO_FOOTER 0x01 - -/* Gyro full-scale range */ -#define PIOS_IMU3000_SCALE_250_DEG 0x00 -#define PIOS_IMU3000_SCALE_500_DEG 0x01 -#define PIOS_IMU3000_SCALE_1000_DEG 0x02 -#define PIOS_IMU3000_SCALE_2000_DEG 0x03 - -/* Digital low-pass filter configuration */ -#define PIOS_IMU3000_LOWPASS_256_HZ 0x00 -#define PIOS_IMU3000_LOWPASS_188_HZ 0x01 -#define PIOS_IMU3000_LOWPASS_98_HZ 0x02 -#define PIOS_IMU3000_LOWPASS_42_HZ 0x03 -#define PIOS_IMU3000_LOWPASS_20_HZ 0x04 -#define PIOS_IMU3000_LOWPASS_10_HZ 0x05 -#define PIOS_IMU3000_LOWPASS_5_HZ 0x06 - -/* Interrupt Configuration */ -#define PIOS_IMU3000_INT_ACTL 0x80 -#define PIOS_IMU3000_INT_OPEN 0x40 -#define PIOS_IMU3000_INT_LATCH_EN 0x20 -#define PIOS_IMU3000_INT_CLR_ANYRD 0x10 -#define PIOS_IMU3000_INT_IMU_RDY 0x04 -#define PIOS_IMU3000_INT_DATA_RDY 0x01 - -/* Interrupt status */ -#define PIOS_IMU3000_INT_STATUS_FIFO_FULL 0x80 -#define PIOS_IMU3000_INT_STATUS_IMU_RDY 0X04 -#define PIOS_IMU3000_INT_STATUS_DATA_RDY 0X01 - -/* User control functionality */ -#define PIOS_IMU3000_USERCTL_FIFO_EN 0X40 -#define PIOS_IMU3000_USERCTL_FIFO_RST 0X02 -#define PIOS_IMU3000_USERCTL_GYRO_RST 0X01 - -/* Power management and clock selection */ -#define PIOS_IMU3000_PWRMGMT_IMU_RST 0X80 -#define PIOS_IMU3000_PWRMGMT_INTERN_CLK 0X00 -#define PIOS_IMU3000_PWRMGMT_PLL_X_CLK 0X01 -#define PIOS_IMU3000_PWRMGMT_PLL_Y_CLK 0X02 -#define PIOS_IMU3000_PWRMGMT_PLL_Z_CLK 0X03 -#define PIOS_IMU3000_PWRMGMT_STOP_CLK 0X07 - - -/* Public Functions */ -extern void PIOS_IMU3000_Init(void); -extern bool PIOS_IMU3000_NewDataAvailable(void); -extern void PIOS_IMU3000_ReadGyros(int16_t out[3]); -extern uint8_t PIOS_IMU3000_ReadID(); -extern uint8_t PIOS_IMU3000_Test(); - -#endif /* PIOS_IMU3000_H */ - -/** - * @} - * @} - */ diff --git a/flight/PiOS/inc/pios_spi.h b/flight/PiOS/inc/pios_spi.h index e34b7e4c9..759855c13 100644 --- a/flight/PiOS/inc/pios_spi.h +++ b/flight/PiOS/inc/pios_spi.h @@ -44,13 +44,15 @@ typedef enum { /* Public Functions */ extern int32_t PIOS_SPI_SetClockSpeed(uint32_t spi_id, SPIPrescalerTypeDef spi_prescaler); -extern int32_t PIOS_SPI_RC_PinSet(uint32_t spi_id, uint8_t pin_value); +extern int32_t PIOS_SPI_RC_PinSet(uint32_t spi_id, uint32_t slave_id, uint8_t pin_value); extern int32_t PIOS_SPI_TransferByte(uint32_t spi_id, uint8_t b); extern int32_t PIOS_SPI_TransferBlock(uint32_t spi_id, const uint8_t *send_buffer, uint8_t *receive_buffer, uint16_t len, void *callback); extern int32_t PIOS_SPI_Busy(uint32_t spi_id); extern int32_t PIOS_SPI_ClaimBus(uint32_t spi_id); +extern int32_t PIOS_SPI_ClaimBusISR(uint32_t spi_id); extern int32_t PIOS_SPI_ReleaseBus(uint32_t spi_id); extern void PIOS_SPI_IRQ_Handler(uint32_t spi_id); +extern void PIOS_SPI_SetPrescalar(uint32_t spi_id, uint32_t prescalar); #endif /* PIOS_SPI_H */ diff --git a/flight/PiOS/inc/pios_spi_priv.h b/flight/PiOS/inc/pios_spi_priv.h index 71468b63a..fd8a6a4e5 100644 --- a/flight/PiOS/inc/pios_spi_priv.h +++ b/flight/PiOS/inc/pios_spi_priv.h @@ -36,13 +36,15 @@ struct pios_spi_cfg { SPI_TypeDef *regs; + uint32_t remap; /* GPIO_Remap_* or GPIO_AF_* */ SPI_InitTypeDef init; bool use_crc; struct stm32_dma dma; - struct stm32_gpio ssel; struct stm32_gpio sclk; struct stm32_gpio miso; struct stm32_gpio mosi; + uint32_t slave_count; + struct stm32_gpio ssel[]; }; struct pios_spi_dev { @@ -52,6 +54,8 @@ struct pios_spi_dev { uint8_t rx_dummy_byte; #if defined(PIOS_INCLUDE_FREERTOS) xSemaphoreHandle busy; +#else + uint8_t busy; #endif }; diff --git a/flight/PiOS/inc/pios_stm32.h b/flight/PiOS/inc/pios_stm32.h index 4e63d6937..f9ca892e2 100644 --- a/flight/PiOS/inc/pios_stm32.h +++ b/flight/PiOS/inc/pios_stm32.h @@ -32,6 +32,7 @@ #define PIOS_STM32_H struct stm32_irq { + void (*handler) (uint32_t); uint32_t flags; NVIC_InitTypeDef init; }; @@ -41,12 +42,16 @@ struct stm32_exti { }; struct stm32_dma_chan { +#if defined(STM32F2XX) || defined(STM32F4XX) + DMA_Stream_TypeDef *channel; +#else DMA_Channel_TypeDef *channel; +#endif DMA_InitTypeDef init; }; struct stm32_dma { - uint32_t ahb_clk; + uint32_t ahb_clk; /* ignored on STM32F2XX */ struct stm32_irq irq; struct stm32_dma_chan rx; struct stm32_dma_chan tx; @@ -55,6 +60,7 @@ struct stm32_dma { struct stm32_gpio { GPIO_TypeDef *gpio; GPIO_InitTypeDef init; + uint8_t pin_source; }; /** diff --git a/flight/PiOS/inc/pios_usb.h b/flight/PiOS/inc/pios_usb.h index 1c6347a0d..76b8f01b4 100644 --- a/flight/PiOS/inc/pios_usb.h +++ b/flight/PiOS/inc/pios_usb.h @@ -30,9 +30,11 @@ #ifndef PIOS_USB_H #define PIOS_USB_H +#include + /* Global functions */ extern int32_t PIOS_USB_Reenumerate(); -extern int32_t PIOS_USB_ChangeConnectionState(uint32_t Connected); +extern int32_t PIOS_USB_ChangeConnectionState(bool connected); extern bool PIOS_USB_CheckAvailable(uint8_t id); #endif /* PIOS_USB_H */ diff --git a/flight/PiOS/inc/pios_usb_cdc_priv.h b/flight/PiOS/inc/pios_usb_cdc_priv.h index 74d6e347d..b87bd50cc 100644 --- a/flight/PiOS/inc/pios_usb_cdc_priv.h +++ b/flight/PiOS/inc/pios_usb_cdc_priv.h @@ -31,8 +31,6 @@ #ifndef PIOS_USB_CDC_PRIV_H #define PIOS_USB_CDC_PRIV_H -#include "usb_core.h" /* RESULT */ - struct pios_usb_cdc_cfg { uint8_t ctrl_if; uint8_t ctrl_tx_ep; @@ -46,10 +44,6 @@ extern const struct pios_com_driver pios_usb_cdc_com_driver; extern int32_t PIOS_USB_CDC_Init(uint32_t * usbcdc_id, const struct pios_usb_cdc_cfg * cfg, uint32_t lower_id); -extern const uint8_t *PIOS_USB_CDC_GetLineCoding(uint16_t Length); -extern RESULT PIOS_USB_CDC_SetControlLineState(void); -extern RESULT PIOS_USB_CDC_SetLineCoding(void); - #endif /* PIOS_USB_CDC_PRIV_H */ /** diff --git a/flight/PiOS/inc/pios_usb_defs.h b/flight/PiOS/inc/pios_usb_defs.h index 2e63a8fa4..f0352333f 100644 --- a/flight/PiOS/inc/pios_usb_defs.h +++ b/flight/PiOS/inc/pios_usb_defs.h @@ -219,6 +219,57 @@ struct usb_endpoint_desc { uint8_t bInterval; } __attribute__((packed)); +struct usb_setup_request { + uint8_t bmRequestType; + uint8_t bRequest; + uint16_t wValue; + uint16_t wIndex; + uint16_t wLength; +} __attribute__((packed)); + +#define USB_REQ_TYPE_STANDARD 0x00 +#define USB_REQ_TYPE_CLASS 0x20 +#define USB_REQ_TYPE_VENDOR 0x40 +#define USB_REQ_TYPE_MASK 0x60 + +#define USB_REQ_RECIPIENT_DEVICE 0x00 +#define USB_REQ_RECIPIENT_INTERFACE 0x01 +#define USB_REQ_RECIPIENT_ENDPOINT 0x02 +#define USB_REQ_RECIPIENT_MASK 0x03 + +enum usb_standard_requests { + USB_REQ_GET_STATUS = 0x00, + USB_REQ_CLEAR_FEATURE = 0x01, + /* what is 0x02? */ + USB_REQ_SET_FEATURE = 0x03, + /* what is 0x04? */ + USB_REQ_SET_ADDRESS = 0x05, + USB_REQ_GET_DESCRIPTOR = 0x06, + USB_REQ_SET_DESCRIPTOR = 0x07, + USB_REQ_GET_CONFIGURATION = 0x08, + USB_REQ_SET_CONFIGURATION = 0x09, + USB_REQ_GET_INTERFACE = 0x0A, + USB_REQ_SET_INTERFACE = 0x0B, + USB_REQ_SYNCH_FRAME = 0x0C, +}; + +enum usb_hid_requests { + USB_HID_REQ_GET_REPORT = 0x01, + USB_HID_REQ_GET_IDLE = 0x02, + USB_HID_REQ_GET_PROTOCOL = 0x03, + /* 0x04-0x08 Reserved */ + USB_HID_REQ_SET_REPORT = 0x09, + USB_HID_REQ_SET_IDLE = 0x0A, + USB_HID_REQ_SET_PROTOCOL = 0x0B, +}; + +enum usb_cdc_requests { + USB_CDC_REQ_SET_LINE_CODING = 0x20, + USB_CDC_REQ_GET_LINE_CODING = 0x21, + + USB_CDC_REQ_SET_CONTROL_LINE_STATE = 0x23, +}; + struct usb_cdc_header_func_desc { uint8_t bLength; uint8_t bDescriptorType; @@ -301,6 +352,10 @@ enum usb_product_ids { USB_PRODUCT_ID_OPENPILOT_MAIN = 0x415A, USB_PRODUCT_ID_COPTERCONTROL = 0x415B, USB_PRODUCT_ID_PIPXTREME = 0x415C, + USB_PRODUCT_ID_CC3D = 0x415D, + USB_PRODUCT_ID_REVOLUTION = 0x415E, + USB_PRODUCT_ID_OSD = 0x4194, + USB_PRODUCT_ID_SPARE = 0x4195, } __attribute__((packed)); enum usb_op_board_ids { @@ -308,6 +363,7 @@ enum usb_op_board_ids { /* Board ID 2 may be unused or AHRS */ USB_OP_BOARD_ID_PIPXTREME = 3, USB_OP_BOARD_ID_COPTERCONTROL = 4, + USB_OP_BOARD_ID_REVOLUTION = 5, } __attribute__((packed)); enum usb_op_board_modes { diff --git a/flight/PiOS/inc/pios_usb_hid.h b/flight/PiOS/inc/pios_usb_hid.h index 7a7409631..2f7a1d598 100644 --- a/flight/PiOS/inc/pios_usb_hid.h +++ b/flight/PiOS/inc/pios_usb_hid.h @@ -31,10 +31,13 @@ #define PIOS_USB_HID_H /* Global functions */ -extern int32_t PIOS_USB_HID_Reenumerate(); +extern int32_t PIOS_USB_HID_Reenumerate(void); extern int32_t PIOS_USB_HID_ChangeConnectionState(uint32_t Connected); extern bool PIOS_USB_HID_CheckAvailable(uint8_t id); +extern void PIOS_USB_HID_RegisterHidDescriptor(const uint8_t * desc, uint16_t length); +extern void PIOS_USB_HID_RegisterHidReport(const uint8_t * desc, uint16_t length); + #endif /* PIOS_USB_HID_H */ /** diff --git a/flight/PiOS/inc/pios_usb_hid_priv.h b/flight/PiOS/inc/pios_usb_hid_priv.h index ac638cd54..fba585c18 100644 --- a/flight/PiOS/inc/pios_usb_hid_priv.h +++ b/flight/PiOS/inc/pios_usb_hid_priv.h @@ -31,8 +31,6 @@ #ifndef PIOS_USB_HID_PRIV_H #define PIOS_USB_HID_PRIV_H -#include "usb_core.h" /* RESULT */ - struct pios_usb_hid_cfg { uint8_t data_if; uint8_t data_rx_ep; diff --git a/flight/PiOS/inc/pios_usb_hid_pwr.h b/flight/PiOS/inc/pios_usb_hid_pwr.h index c44f4164c..614344437 100644 --- a/flight/PiOS/inc/pios_usb_hid_pwr.h +++ b/flight/PiOS/inc/pios_usb_hid_pwr.h @@ -17,6 +17,8 @@ #ifndef __USB_PWR_H #define __USB_PWR_H +#include "usb_core.h" + /* Includes ------------------------------------------------------------------*/ /* Exported types ------------------------------------------------------------*/ typedef enum _RESUME_STATE { diff --git a/flight/PiOS/inc/pios_usb_priv.h b/flight/PiOS/inc/pios_usb_priv.h index dd3f949ee..6f7edf652 100644 --- a/flight/PiOS/inc/pios_usb_priv.h +++ b/flight/PiOS/inc/pios_usb_priv.h @@ -36,6 +36,7 @@ struct pios_usb_cfg { struct stm32_irq irq; + struct stm32_gpio vsense; }; extern int32_t PIOS_USB_Init(uint32_t * usb_id, const struct pios_usb_cfg * cfg); diff --git a/flight/PiOS/inc/pios_usbhook.h b/flight/PiOS/inc/pios_usbhook.h index f005a6fa1..d6ca8648f 100644 --- a/flight/PiOS/inc/pios_usbhook.h +++ b/flight/PiOS/inc/pios_usbhook.h @@ -31,21 +31,14 @@ #ifndef PIOS_USBHOOK_H #define PIOS_USBHOOK_H -typedef enum _HID_REQUESTS { - GET_REPORT = 1, - GET_IDLE, - GET_PROTOCOL, +#include +#include +#include "pios_usb_defs.h" /* usb_setup_request */ - SET_REPORT = 9, - SET_IDLE, - SET_PROTOCOL -} HID_REQUESTS; - -typedef enum CDC_REQUESTS { - SET_LINE_CODING = 0x20, - GET_LINE_CODING = 0x21, - SET_CONTROL_LINE_STATE = 0x23, -} CDC_REQUESTS; +struct pios_usbhook_descriptor { + const uint8_t * descriptor; + uint16_t length; +}; enum usb_string_desc { USB_STRING_DESC_LANG = 0, @@ -57,8 +50,29 @@ enum usb_string_desc { extern void PIOS_USBHOOK_RegisterDevice(const uint8_t * desc, uint16_t desc_size); extern void PIOS_USBHOOK_RegisterConfig(uint8_t config_id, const uint8_t * desc, uint16_t desc_size); extern void PIOS_USBHOOK_RegisterString(enum usb_string_desc string_id, const uint8_t * desc, uint16_t desc_size); -extern void PIOS_USBHOOK_RegisterHidInterface(const uint8_t * desc, uint16_t desc_size); -extern void PIOS_USBHOOK_RegisterHidReport(const uint8_t * desc, uint16_t desc_size); + +struct pios_usb_ifops { + void (*init)(uint32_t context); + void (*deinit)(uint32_t context); + bool (*setup)(uint32_t context, struct usb_setup_request * req); + void (*ctrl_data_out)(uint32_t context, struct usb_setup_request * req); +}; + +extern void PIOS_USBHOOK_RegisterIfOps(uint8_t ifnum, struct pios_usb_ifops * ifops, uint32_t context); + +typedef bool (*pios_usbhook_epcb)(uint32_t context, uint8_t epnum, uint16_t len); + +extern void PIOS_USBHOOK_RegisterEpInCallback(uint8_t epnum, uint16_t max_len, pios_usbhook_epcb cb, uint32_t context); +extern void PIOS_USBHOOK_RegisterEpOutCallback(uint8_t epnum, uint16_t max_len, pios_usbhook_epcb cb, uint32_t context); +extern void PIOS_USBHOOK_DeRegisterEpInCallback(uint8_t epnum); +extern void PIOS_USBHOOK_DeRegisterEpOutCallback(uint8_t epnum); + +extern void PIOS_USBHOOK_CtrlTx(const uint8_t *buf, uint16_t len); +extern void PIOS_USBHOOK_CtrlRx(uint8_t *buf, uint16_t len); +extern void PIOS_USBHOOK_EndpointTx(uint8_t epnum, const uint8_t *buf, uint16_t len); +extern void PIOS_USBHOOK_EndpointRx(uint8_t epnum, uint8_t *buf, uint16_t len); +extern void PIOS_USBHOOK_Activate(void); +extern void PIOS_USBHOOK_Deactivate(void); #endif /* PIOS_USBHOOK_H */ diff --git a/flight/PiOS/pios.h b/flight/PiOS/pios.h index e7d02dfd2..560eb9b39 100644 --- a/flight/PiOS/pios.h +++ b/flight/PiOS/pios.h @@ -46,9 +46,17 @@ #include #include +#include "pios_config.h" /* STM32 Std Perf Lib */ +#if defined(STM32F4XX) +# include +# include +#elif defined(STM32F2XX) +#include +#include +#else #include -#include +#endif #if defined(PIOS_INCLUDE_SDCARD) /* Dosfs Includes */ @@ -86,9 +94,7 @@ #include #include #include -#if defined(PIOS_INCLUDE_EXTI) #include -#endif #include /* PIOS Hardware Includes (Common) */ @@ -112,21 +118,30 @@ #if defined(PIOS_INCLUDE_IMU3000) #include #endif - +#if defined(PIOS_INCLUDE_MPU6050) +#include +#endif +#if defined(PIOS_INCLUDE_MPU6000) +#include +#endif +#if defined(PIOS_INCLUDE_L3GD20) +#include +#endif +#if defined(PIOS_INCLUDE_MS5611) +#include +#endif #if defined(PIOS_INCLUDE_IAP) #include #endif - #if defined(PIOS_INCLUDE_ADXL345) #include #endif - #if defined(PIOS_INCLUDE_BMA180) #include #endif #if defined(PIOS_INCLUDE_FLASH) -#include +#include #include #endif @@ -135,8 +150,6 @@ #endif #if defined(PIOS_INCLUDE_USB) -/* USB Libs */ -#include #include #endif diff --git a/flight/PipXtreme/Makefile b/flight/PipXtreme/Makefile index e7985d2d4..f9a99e4bc 100755 --- a/flight/PipXtreme/Makefile +++ b/flight/PipXtreme/Makefile @@ -158,7 +158,6 @@ SRC += $(PIOSSTM32F10X)/pios_rtc.c SRC += $(PIOSSTM32F10X)/pios_wdg.c SRC += $(PIOSSTM32F10X)/pios_tim.c SRC += $(PIOSSTM32F10X)/pios_pwm.c -SRC += $(PIOSSTM32F10X)/pios_adc.c SRC += $(PIOSSTM32F10X)/pios_eeprom.c # PIOS USB related files (separated to make code maintenance more easy) @@ -176,8 +175,6 @@ SRC += $(PIOSCOMMON)/pios_usb_desc_hid_only.c SRC += $(PIOSCOMMON)/pios_crc.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 SRC += $(PIOSCOMMON)/pios_rfm22b.c @@ -197,7 +194,6 @@ SRC += $(CMSISDIR)/core_cm3.c SRC += $(CMSISDIR)/system_stm32f10x.c ## Used parts of the STM-Library -SRC += $(STMSPDSRCDIR)/stm32f10x_adc.c SRC += $(STMSPDSRCDIR)/stm32f10x_bkp.c SRC += $(STMSPDSRCDIR)/stm32f10x_crc.c SRC += $(STMSPDSRCDIR)/stm32f10x_dac.c @@ -503,7 +499,7 @@ $(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),$(OPENOCD_CONFIG))) +$(eval $(call JTAG_TEMPLATE,$(OUTDIR)/$(TARGET).bin,$(FW_BANK_BASE),$(FW_BANK_SIZE),$(OPENOCD_JTAG_CONFIG),$(OPENOCD_CONFIG))) .PHONY: elf lss sym hex bin bino opfw elf: $(OUTDIR)/$(TARGET).elf diff --git a/flight/PipXtreme/System/inc/pios_config.h b/flight/PipXtreme/System/inc/pios_config.h index 39d51ef1d..07a6f879b 100755 --- a/flight/PipXtreme/System/inc/pios_config.h +++ b/flight/PipXtreme/System/inc/pios_config.h @@ -59,7 +59,7 @@ #define PIOS_INCLUDE_GPIO #define PIOS_INCLUDE_EXTI #define PIOS_INCLUDE_RTC -#define PIOS_INCLUDE_WDG +//#define PIOS_INCLUDE_WDG #define PIOS_INCLUDE_BL_HELPER #define PIOS_INCLUDE_FLASH_EEPROM diff --git a/flight/PipXtreme/System/pios_board.c b/flight/PipXtreme/System/pios_board.c index 3fd97157d..74933bb3d 100755 --- a/flight/PipXtreme/System/pios_board.c +++ b/flight/PipXtreme/System/pios_board.c @@ -79,9 +79,6 @@ void PIOS_Board_Init(void) { PIOS_WDG_Init(); #endif /* PIOS_INCLUDE_WDG */ - /* Initialize IAP */ - PIOS_IAP_Init(); - #if defined(PIOS_INCLUDE_RTC) /* Initialize the real-time clock and its associated tick */ PIOS_RTC_Init(&pios_rtc_main_cfg); diff --git a/flight/Project/OpenPilotOSX/OpenPilotOSX.xcodeproj/project.pbxproj b/flight/Project/OpenPilotOSX/OpenPilotOSX.xcodeproj/project.pbxproj index ed4340a11..ca4f7532f 100644 --- a/flight/Project/OpenPilotOSX/OpenPilotOSX.xcodeproj/project.pbxproj +++ b/flight/Project/OpenPilotOSX/OpenPilotOSX.xcodeproj/project.pbxproj @@ -7,8481 +7,178 @@ objects = { /* Begin PBXFileReference section */ - 65003B31121249CA00C183DD /* pios_wdg.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pios_wdg.c; sourceTree = ""; }; - 6502584212CA4D2600583CDF /* insgps13state.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = insgps13state.c; path = ../../AHRS/insgps13state.c; sourceTree = SOURCE_ROOT; }; - 65078B09136FCEE600536549 /* flightstatus.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = flightstatus.xml; sourceTree = ""; }; - 6509C7E912CA57DC002E5DC2 /* insgps16state.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = insgps16state.c; path = ../../AHRS/insgps16state.c; sourceTree = SOURCE_ROOT; }; - 650D8E2112DFE16400D05CC9 /* actuator.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = actuator.c; sourceTree = ""; }; - 650D8E2312DFE16400D05CC9 /* actuator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = actuator.h; sourceTree = ""; }; - 650D8E2512DFE16400D05CC9 /* ahrs_comms.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ahrs_comms.c; sourceTree = ""; }; - 650D8E2712DFE16400D05CC9 /* ahrs_comms.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ahrs_comms.h; sourceTree = ""; }; - 650D8E2912DFE16400D05CC9 /* altitude.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = altitude.c; sourceTree = ""; }; - 650D8E2B12DFE16400D05CC9 /* altitude.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = altitude.h; sourceTree = ""; }; - 650D8E2F12DFE16400D05CC9 /* battery.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = battery.c; sourceTree = ""; }; - 650D8E3112DFE16400D05CC9 /* battery.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = battery.h; sourceTree = ""; }; - 650D8E3312DFE16400D05CC9 /* example.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = example.c; sourceTree = ""; }; - 650D8E3412DFE16400D05CC9 /* examplemodevent.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = examplemodevent.c; sourceTree = ""; }; - 650D8E3512DFE16400D05CC9 /* examplemodperiodic.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = examplemodperiodic.c; sourceTree = ""; }; - 650D8E3612DFE16400D05CC9 /* examplemodthread.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = examplemodthread.c; sourceTree = ""; }; - 650D8E3812DFE16400D05CC9 /* examplemodevent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = examplemodevent.h; sourceTree = ""; }; - 650D8E3912DFE16400D05CC9 /* examplemodperiodic.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = examplemodperiodic.h; sourceTree = ""; }; - 650D8E3A12DFE16400D05CC9 /* examplemodthread.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = examplemodthread.h; sourceTree = ""; }; - 650D8E3C12DFE16400D05CC9 /* firmwareiap.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = firmwareiap.c; sourceTree = ""; }; - 650D8E3E12DFE16400D05CC9 /* firmwareiap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = firmwareiap.h; sourceTree = ""; }; - 650D8E4012DFE16400D05CC9 /* flightplan.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = flightplan.c; sourceTree = ""; }; - 650D8E4212DFE16400D05CC9 /* test.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = test.py; sourceTree = ""; }; - 650D8E4412DFE16400D05CC9 /* flightplan.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = flightplan.h; sourceTree = ""; }; - 650D8E4612DFE16400D05CC9 /* uavobjects.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = uavobjects.py; sourceTree = ""; }; - 650D8E4812DFE16400D05CC9 /* GPS.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = GPS.c; sourceTree = ""; }; - 650D8E4A12DFE16400D05CC9 /* GPS.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GPS.h; sourceTree = ""; }; - 650D8E4B12DFE16400D05CC9 /* NMEA.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NMEA.h; sourceTree = ""; }; - 650D8E4C12DFE16400D05CC9 /* NMEA.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = NMEA.c; sourceTree = ""; }; - 650D8E4E12DFE16400D05CC9 /* guidance.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = guidance.c; sourceTree = ""; }; - 650D8E5012DFE16400D05CC9 /* guidance.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = guidance.h; sourceTree = ""; }; - 650D8E5312DFE16400D05CC9 /* manualcontrol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = manualcontrol.h; sourceTree = ""; }; - 650D8E5412DFE16400D05CC9 /* manualcontrol.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = manualcontrol.c; sourceTree = ""; }; - 650D8E5812DFE16400D05CC9 /* MkSerial.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MkSerial.h; sourceTree = ""; }; - 650D8E5912DFE16400D05CC9 /* MKSerial.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = MKSerial.c; sourceTree = ""; }; - 650D8E5C12DFE16400D05CC9 /* OsdEtStd.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = OsdEtStd.c; sourceTree = ""; }; - 650D8E5F12DFE16400D05CC9 /* stabilization.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = stabilization.h; sourceTree = ""; }; - 650D8E6012DFE16400D05CC9 /* stabilization.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = stabilization.c; sourceTree = ""; }; - 650D8E6312DFE16400D05CC9 /* systemmod.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = systemmod.h; sourceTree = ""; }; - 650D8E6412DFE16400D05CC9 /* systemmod.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = systemmod.c; sourceTree = ""; }; - 650D8E6712DFE16400D05CC9 /* telemetry.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = telemetry.h; sourceTree = ""; }; - 650D8E6812DFE16400D05CC9 /* telemetry.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = telemetry.c; sourceTree = ""; }; - 650D8ED112DFE17500D05CC9 /* uavtalk.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = uavtalk.h; sourceTree = ""; }; - 650D8ED212DFE17500D05CC9 /* uavtalk.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = uavtalk.c; sourceTree = ""; }; - 6512D60512ED4CA2008175E5 /* pios_flash_w25x.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pios_flash_w25x.h; sourceTree = ""; }; - 6512D60712ED4CB8008175E5 /* pios_flash_w25x.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pios_flash_w25x.c; sourceTree = ""; }; + 4354B66314FED9FE004BA3B4 /* flight */ = {isa = PBXFileReference; lastKnownFileType = folder; name = flight; path = ../..; sourceTree = SOURCE_ROOT; }; 65173C9F12EBFD1700D6A7CB /* Makefile */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.make; name = Makefile; path = ../../../Makefile; sourceTree = SOURCE_ROOT; }; - 651913371256C5240039C0A3 /* ahrs_comm_objects.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ahrs_comm_objects.c; sourceTree = ""; }; - 651913381256C5240039C0A3 /* ahrs_spi_comm.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ahrs_spi_comm.c; sourceTree = ""; }; - 6519133A1256C52B0039C0A3 /* ahrs_comm_objects.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ahrs_comm_objects.h; sourceTree = ""; }; - 6519133B1256C52B0039C0A3 /* ahrs_spi_comm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ahrs_spi_comm.h; sourceTree = ""; }; - 651CF9E5120B5D8300EEFD70 /* pios_usb_hid_desc.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pios_usb_hid_desc.c; sourceTree = ""; }; - 651CF9E6120B5D8300EEFD70 /* pios_usb_hid_istr.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pios_usb_hid_istr.c; sourceTree = ""; }; - 651CF9E7120B5D8300EEFD70 /* pios_usb_hid_prop.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pios_usb_hid_prop.c; sourceTree = ""; }; - 651CF9E8120B5D8300EEFD70 /* pios_usb_hid_pwr.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pios_usb_hid_pwr.c; sourceTree = ""; }; - 651CF9EF120B700D00EEFD70 /* pios_usb_hid_desc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pios_usb_hid_desc.h; sourceTree = ""; }; - 651CF9F0120B700D00EEFD70 /* pios_usb_hid_istr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pios_usb_hid_istr.h; sourceTree = ""; }; - 651CF9F1120B700D00EEFD70 /* pios_usb_hid_prop.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pios_usb_hid_prop.h; sourceTree = ""; }; - 651CF9F2120B700D00EEFD70 /* pios_usb_hid_pwr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pios_usb_hid_pwr.h; sourceTree = ""; }; - 651CF9F3120B700D00EEFD70 /* usb_conf.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = usb_conf.h; sourceTree = ""; }; - 65209A1812208B0600453371 /* baroaltitude.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = baroaltitude.xml; sourceTree = ""; }; - 65209A1912208B0600453371 /* gpsposition.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = gpsposition.xml; sourceTree = ""; }; - 6526645A122DF972006F9A3C /* pios_i2c_priv.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pios_i2c_priv.h; sourceTree = ""; }; - 6526645B122DF972006F9A3C /* pios_wdg.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pios_wdg.h; sourceTree = ""; }; - 6528CCB412E406B800CF5144 /* pios_adxl345.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pios_adxl345.c; sourceTree = ""; }; - 6528CCE212E40F6700CF5144 /* pios_adxl345.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pios_adxl345.h; sourceTree = ""; }; - 652C8568132B632A00BFCC70 /* firmwareiapobj.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = firmwareiapobj.xml; sourceTree = ""; }; - 652C856A132B6EA600BFCC70 /* sonaraltitude.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = sonaraltitude.xml; sourceTree = ""; }; - 65322D3B122841F60046CD7C /* gpstime.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = gpstime.xml; sourceTree = ""; }; - 65345C871288668B00A5E4E8 /* guidancesettings.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = guidancesettings.xml; sourceTree = ""; }; - 6536D47B1307962C0042A298 /* stabilizationdesired.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = stabilizationdesired.xml; sourceTree = ""; }; - 6536D4881307AB950042A298 /* UAVObjects.inc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.pascal; path = UAVObjects.inc; sourceTree = ""; }; - 65408AA812BB1648004DACC5 /* i2cstats.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = i2cstats.xml; sourceTree = ""; }; - 6543304F121980300063F913 /* insgps.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = insgps.h; sourceTree = ""; }; - 654612D812B5E9A900B719D0 /* pios_iap.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pios_iap.c; sourceTree = ""; }; - 6549E0D21279B3C800C5476F /* fifo_buffer.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = fifo_buffer.c; sourceTree = ""; }; - 6549E0D31279B3CF00C5476F /* fifo_buffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fifo_buffer.h; sourceTree = ""; }; - 655268BC121FBD2900410C6E /* ahrscalibration.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = ahrscalibration.xml; sourceTree = ""; }; - 655B1A8E13B2FC0900B0E48D /* camerastabsettings.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = camerastabsettings.xml; sourceTree = ""; }; - 656268C612DC1923007B0A0F /* nedaccel.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = nedaccel.xml; sourceTree = ""; }; - 6562BE1713CCAD0600C823E8 /* pios_rcvr.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pios_rcvr.c; sourceTree = ""; }; - 65632DF51251650300469B77 /* pios_board.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pios_board.h; sourceTree = ""; }; - 65632DF61251650300469B77 /* STM32103CB_AHRS.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = STM32103CB_AHRS.h; sourceTree = ""; }; - 65632DF71251650300469B77 /* STM3210E_OP.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = STM3210E_OP.h; sourceTree = ""; }; - 65643CAB1413322000A32F59 /* pios_rcvr_priv.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pios_rcvr_priv.h; sourceTree = ""; }; - 65643CAC1413322000A32F59 /* pios_rcvr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pios_rcvr.h; sourceTree = ""; }; - 65643CAD1413322000A32F59 /* pios_rtc_priv.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pios_rtc_priv.h; sourceTree = ""; }; - 65643CAE1413322000A32F59 /* pios_sbus_priv.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pios_sbus_priv.h; sourceTree = ""; }; - 65643CAF1413322000A32F59 /* pios_sbus.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pios_sbus.h; sourceTree = ""; }; - 65643CB01413322000A32F59 /* pios_dsm_priv.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pios_dsm_priv.h; sourceTree = ""; }; - 65643CB91413456D00A32F59 /* pios_tim.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pios_tim.c; sourceTree = ""; }; - 65643CBA141350C200A32F59 /* pios_sbus.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pios_sbus.c; sourceTree = ""; }; - 6572CB1613D0F2B200FC2972 /* link_STM32103CB_CC_Rev1_memory.ld */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = link_STM32103CB_CC_Rev1_memory.ld; path = ../../PiOS/STM32F10x/link_STM32103CB_CC_Rev1_memory.ld; sourceTree = SOURCE_ROOT; }; - 6572CB1713D0F2B200FC2972 /* link_STM32103CB_CC_Rev1_sections.ld */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = link_STM32103CB_CC_Rev1_sections.ld; path = ../../PiOS/STM32F10x/link_STM32103CB_CC_Rev1_sections.ld; sourceTree = SOURCE_ROOT; }; - 657CEEAD121DB6C8007A1FBE /* homelocation.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = homelocation.xml; sourceTree = ""; }; - 657CEEB7121DBC63007A1FBE /* CoordinateConversions.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = CoordinateConversions.c; sourceTree = ""; }; - 657CEEB9121DBC63007A1FBE /* CoordinateConversions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CoordinateConversions.h; sourceTree = ""; }; - 657CEEBA121DBC63007A1FBE /* WorldMagModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WorldMagModel.h; sourceTree = ""; }; - 657CEEBB121DBC63007A1FBE /* WorldMagModel.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = WorldMagModel.c; sourceTree = ""; }; - 657CF024121F49CD007A1FBE /* WMMInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WMMInternal.h; sourceTree = ""; }; - 657FF86A12EA8BFB00801617 /* pios_pwm_priv.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pios_pwm_priv.h; sourceTree = ""; }; - 6589A972131DDE93006BD67C /* FreeRTOSConfig.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FreeRTOSConfig.h; sourceTree = ""; }; - 6589A983131DE24F006BD67C /* taskmonitor.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = taskmonitor.c; sourceTree = ""; }; - 6589A9DB131DEE76006BD67C /* pios_rtc.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pios_rtc.c; sourceTree = ""; }; - 6589A9E2131DF1C7006BD67C /* pios_rtc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pios_rtc.h; sourceTree = ""; }; - 659ED317122226B60011010E /* ahrssettings.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = ahrssettings.xml; sourceTree = ""; }; - 65B35D7F121C261E003EAD18 /* bin.pro */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = bin.pro; sourceTree = ""; }; - 65B35D80121C261E003EAD18 /* openpilotgcs */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = openpilotgcs; sourceTree = ""; }; - 65B35D81121C261E003EAD18 /* openpilotgcs.pri */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = openpilotgcs.pri; sourceTree = ""; }; - 65B35D82121C261E003EAD18 /* openpilotgcs.pro */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = openpilotgcs.pro; sourceTree = ""; }; - 65B35D83121C261E003EAD18 /* openpilotgcs.pro.user */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = openpilotgcs.pro.user; sourceTree = ""; }; - 65B35D88121C261E003EAD18 /* system-health.svg */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = "system-health.svg"; sourceTree = ""; }; - 65B35D8B121C261E003EAD18 /* altimeter.svg */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = altimeter.svg; sourceTree = ""; }; - 65B35D8C121C261E003EAD18 /* attitude.svg */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = attitude.svg; sourceTree = ""; }; - 65B35D8D121C261E003EAD18 /* compass.svg */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = compass.svg; sourceTree = ""; }; - 65B35D8E121C261E003EAD18 /* flightmode-status.svg */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = "flightmode-status.svg"; sourceTree = ""; }; - 65B35D8F121C261E003EAD18 /* gps-signal.svg */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = "gps-signal.svg"; sourceTree = ""; }; - 65B35D90121C261E003EAD18 /* gps-status.svg */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = "gps-status.svg"; sourceTree = ""; }; - 65B35D91121C261E003EAD18 /* lineardial-horizontal.svg */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = "lineardial-horizontal.svg"; sourceTree = ""; }; - 65B35D92121C261E003EAD18 /* lineardial-vertical.svg */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = "lineardial-vertical.svg"; sourceTree = ""; }; - 65B35D93121C261E003EAD18 /* Readme.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Readme.txt; sourceTree = ""; }; - 65B35D94121C261E003EAD18 /* speed.svg */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = speed.svg; sourceTree = ""; }; - 65B35D95121C261E003EAD18 /* textonly.svg */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = textonly.svg; sourceTree = ""; }; - 65B35D96121C261E003EAD18 /* thermometer.svg */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = thermometer.svg; sourceTree = ""; }; - 65B35D97121C261E003EAD18 /* vsi.svg */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = vsi.svg; sourceTree = ""; }; - 65B35D99121C261E003EAD18 /* altimeter.svg */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = altimeter.svg; sourceTree = ""; }; - 65B35D9A121C261E003EAD18 /* speed.svg */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = speed.svg; sourceTree = ""; }; - 65B35D9B121C261E003EAD18 /* vsi.svg */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = vsi.svg; sourceTree = ""; }; - 65B35D9D121C261E003EAD18 /* easystar.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = easystar.png; sourceTree = ""; }; - 65B35D9E121C261E003EAD18 /* quad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = quad.png; sourceTree = ""; }; - 65B35DA1121C261E003EAD18 /* EasyS.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = EasyS.jpg; sourceTree = ""; }; - 65B35DA2121C261E003EAD18 /* EasyStar.3ds */ = {isa = PBXFileReference; lastKnownFileType = file; path = EasyStar.3ds; sourceTree = ""; }; - 65B35DA3121C261E003EAD18 /* V1White.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = V1White.jpg; sourceTree = ""; }; - 65B35DA4121C261E003EAD18 /* V2White.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = V2White.jpg; sourceTree = ""; }; - 65B35DA5121C261E003EAD18 /* White.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = White.jpg; sourceTree = ""; }; - 65B35DA6121C261E003EAD18 /* wing.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = wing.jpg; sourceTree = ""; }; - 65B35DA9121C261E003EAD18 /* pfd.svg */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = pfd.svg; sourceTree = ""; }; - 65B35DAB121C261E003EAD18 /* Complete sound set.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "Complete sound set.txt"; sourceTree = ""; }; - 65B35DAD121C261E003EAD18 /* 0.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = 0.wav; sourceTree = ""; }; - 65B35DAE121C261E003EAD18 /* 1.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = 1.wav; sourceTree = ""; }; - 65B35DAF121C261E003EAD18 /* 10.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = 10.wav; sourceTree = ""; }; - 65B35DB0121C261E003EAD18 /* 100.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = 100.wav; sourceTree = ""; }; - 65B35DB1121C261E003EAD18 /* 1000.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = 1000.wav; sourceTree = ""; }; - 65B35DB2121C261E003EAD18 /* 11.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = 11.wav; sourceTree = ""; }; - 65B35DB3121C261E003EAD18 /* 12.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = 12.wav; sourceTree = ""; }; - 65B35DB4121C261E003EAD18 /* 13.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = 13.wav; sourceTree = ""; }; - 65B35DB5121C261E003EAD18 /* 14.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = 14.wav; sourceTree = ""; }; - 65B35DB6121C261E003EAD18 /* 15.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = 15.wav; sourceTree = ""; }; - 65B35DB7121C261E003EAD18 /* 16.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = 16.wav; sourceTree = ""; }; - 65B35DB8121C261E003EAD18 /* 17.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = 17.wav; sourceTree = ""; }; - 65B35DB9121C261E003EAD18 /* 18.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = 18.wav; sourceTree = ""; }; - 65B35DBA121C261E003EAD18 /* 19.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = 19.wav; sourceTree = ""; }; - 65B35DBB121C261E003EAD18 /* 2.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = 2.wav; sourceTree = ""; }; - 65B35DBC121C261E003EAD18 /* 20.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = 20.wav; sourceTree = ""; }; - 65B35DBD121C261E003EAD18 /* 3.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = 3.wav; sourceTree = ""; }; - 65B35DBE121C261E003EAD18 /* 30.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = 30.wav; sourceTree = ""; }; - 65B35DBF121C261E003EAD18 /* 4.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = 4.wav; sourceTree = ""; }; - 65B35DC0121C261E003EAD18 /* 40.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = 40.wav; sourceTree = ""; }; - 65B35DC1121C261E003EAD18 /* 5.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = 5.wav; sourceTree = ""; }; - 65B35DC2121C261E003EAD18 /* 50.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = 50.wav; sourceTree = ""; }; - 65B35DC3121C261E003EAD18 /* 6.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = 6.wav; sourceTree = ""; }; - 65B35DC4121C261E003EAD18 /* 60.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = 60.wav; sourceTree = ""; }; - 65B35DC5121C261E003EAD18 /* 7.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = 7.wav; sourceTree = ""; }; - 65B35DC6121C261E003EAD18 /* 70.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = 70.wav; sourceTree = ""; }; - 65B35DC7121C261E003EAD18 /* 8.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = 8.wav; sourceTree = ""; }; - 65B35DC8121C261E003EAD18 /* 80.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = 80.wav; sourceTree = ""; }; - 65B35DC9121C261E003EAD18 /* 9.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = 9.wav; sourceTree = ""; }; - 65B35DCA121C261E003EAD18 /* 90.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = 90.wav; sourceTree = ""; }; - 65B35DCB121C261E003EAD18 /* aborted.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = aborted.wav; sourceTree = ""; }; - 65B35DCC121C261E003EAD18 /* active.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = active.wav; sourceTree = ""; }; - 65B35DCD121C261E003EAD18 /* alarmsound.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = alarmsound.wav; sourceTree = ""; }; - 65B35DCE121C261E003EAD18 /* alert.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = alert.wav; sourceTree = ""; }; - 65B35DCF121C261E003EAD18 /* altitude.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = altitude.wav; sourceTree = ""; }; - 65B35DD0121C261E003EAD18 /* amps.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = amps.wav; sourceTree = ""; }; - 65B35DD1121C261E003EAD18 /* aquired.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = aquired.wav; sourceTree = ""; }; - 65B35DD2121C261E003EAD18 /* auto flight.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = "auto flight.wav"; sourceTree = ""; }; - 65B35DD3121C261E003EAD18 /* battery.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = battery.wav; sourceTree = ""; }; - 65B35DD4121C261E003EAD18 /* beepsound.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = beepsound.wav; sourceTree = ""; }; - 65B35DD5121C261E003EAD18 /* camera.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = camera.wav; sourceTree = ""; }; - 65B35DD6121C261E003EAD18 /* cancelled.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = cancelled.wav; sourceTree = ""; }; - 65B35DD7121C261E003EAD18 /* changed.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = changed.wav; sourceTree = ""; }; - 65B35DD8121C261E003EAD18 /* circle position.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = "circle position.wav"; sourceTree = ""; }; - 65B35DD9121C261E003EAD18 /* cleared.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = cleared.wav; sourceTree = ""; }; - 65B35DDA121C261E003EAD18 /* complete.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = complete.wav; sourceTree = ""; }; - 65B35DDB121C261E003EAD18 /* connected.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = connected.wav; sourceTree = ""; }; - 65B35DDC121C261E003EAD18 /* connection.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = connection.wav; sourceTree = ""; }; - 65B35DDD121C261E003EAD18 /* control.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = control.wav; sourceTree = ""; }; - 65B35DDE121C261E003EAD18 /* disabled.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = disabled.wav; sourceTree = ""; }; - 65B35DDF121C261E003EAD18 /* disconnected.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = disconnected.wav; sourceTree = ""; }; - 65B35DE0121C261E003EAD18 /* feet.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = feet.wav; sourceTree = ""; }; - 65B35DE1121C261E003EAD18 /* figure eight.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = "figure eight.wav"; sourceTree = ""; }; - 65B35DE2121C261E003EAD18 /* flight.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = flight.wav; sourceTree = ""; }; - 65B35DE3121C261E003EAD18 /* geofence.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = geofence.wav; sourceTree = ""; }; - 65B35DE4121C261E003EAD18 /* gps.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = gps.wav; sourceTree = ""; }; - 65B35DE5121C261E003EAD18 /* ground station.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = "ground station.wav"; sourceTree = ""; }; - 65B35DE6121C261E003EAD18 /* heading.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = heading.wav; sourceTree = ""; }; - 65B35DE7121C261E003EAD18 /* height.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = height.wav; sourceTree = ""; }; - 65B35DE8121C261E003EAD18 /* high.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = high.wav; sourceTree = ""; }; - 65B35DE9121C261E003EAD18 /* hippodrome.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = hippodrome.wav; sourceTree = ""; }; - 65B35DEA121C261E003EAD18 /* hold position.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = "hold position.wav"; sourceTree = ""; }; - 65B35DEB121C261E003EAD18 /* home location.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = "home location.wav"; sourceTree = ""; }; - 65B35DEC121C261E003EAD18 /* initialised.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = initialised.wav; sourceTree = ""; }; - 65B35DED121C261E003EAD18 /* initiated.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = initiated.wav; sourceTree = ""; }; - 65B35DEE121C261E003EAD18 /* KPH.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = KPH.wav; sourceTree = ""; }; - 65B35DEF121C261E003EAD18 /* landing.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = landing.wav; sourceTree = ""; }; - 65B35DF0121C261E003EAD18 /* launch.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = launch.wav; sourceTree = ""; }; - 65B35DF1121C261E003EAD18 /* left.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = left.wav; sourceTree = ""; }; - 65B35DF2121C261E003EAD18 /* logging.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = logging.wav; sourceTree = ""; }; - 65B35DF3121C261E003EAD18 /* lost.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = lost.wav; sourceTree = ""; }; - 65B35DF4121C261E003EAD18 /* low altitude.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = "low altitude.wav"; sourceTree = ""; }; - 65B35DF5121C261E003EAD18 /* low battery.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = "low battery.wav"; sourceTree = ""; }; - 65B35DF6121C261E003EAD18 /* low gps quality.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = "low gps quality.wav"; sourceTree = ""; }; - 65B35DF7121C261E003EAD18 /* manual flight.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = "manual flight.wav"; sourceTree = ""; }; - 65B35DF8121C261E003EAD18 /* maximum.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = maximum.wav; sourceTree = ""; }; - 65B35DF9121C261E003EAD18 /* meters.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = meters.wav; sourceTree = ""; }; - 65B35DFA121C261E003EAD18 /* minimum.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = minimum.wav; sourceTree = ""; }; - 65B35DFB121C261E003EAD18 /* mode.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = mode.wav; sourceTree = ""; }; - 65B35DFC121C261E003EAD18 /* MPH.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = MPH.wav; sourceTree = ""; }; - 65B35DFD121C261E003EAD18 /* navigation.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = navigation.wav; sourceTree = ""; }; - 65B35DFE121C261E003EAD18 /* openpilot.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = openpilot.wav; sourceTree = ""; }; - 65B35DFF121C261E003EAD18 /* point.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = point.wav; sourceTree = ""; }; - 65B35E00121C261E003EAD18 /* range.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = range.wav; sourceTree = ""; }; - 65B35E01121C261E003EAD18 /* reached.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = reached.wav; sourceTree = ""; }; - 65B35E02121C261E003EAD18 /* ready for flight.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = "ready for flight.wav"; sourceTree = ""; }; - 65B35E03121C261E003EAD18 /* return home.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = "return home.wav"; sourceTree = ""; }; - 65B35E04121C261E003EAD18 /* right.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = right.wav; sourceTree = ""; }; - 65B35E05121C261E003EAD18 /* set.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = set.wav; sourceTree = ""; }; - 65B35E06121C261E003EAD18 /* speed.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = speed.wav; sourceTree = ""; }; - 65B35E07121C261E003EAD18 /* stabilization.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = stabilization.wav; sourceTree = ""; }; - 65B35E08121C261E003EAD18 /* started.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = started.wav; sourceTree = ""; }; - 65B35E09121C261E003EAD18 /* stopped.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = stopped.wav; sourceTree = ""; }; - 65B35E0A121C261E003EAD18 /* takeoff.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = takeoff.wav; sourceTree = ""; }; - 65B35E0B121C261E003EAD18 /* telemetry.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = telemetry.wav; sourceTree = ""; }; - 65B35E0C121C261E003EAD18 /* time.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = time.wav; sourceTree = ""; }; - 65B35E0D121C261E003EAD18 /* triggered.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = triggered.wav; sourceTree = ""; }; - 65B35E0E121C261E003EAD18 /* uav.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = uav.wav; sourceTree = ""; }; - 65B35E0F121C261E003EAD18 /* volts.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = volts.wav; sourceTree = ""; }; - 65B35E10121C261E003EAD18 /* warning.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = warning.wav; sourceTree = ""; }; - 65B35E11121C261E003EAD18 /* waypoint.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = waypoint.wav; sourceTree = ""; }; - 65B35E12121C261E003EAD18 /* whoopsound.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = whoopsound.wav; sourceTree = ""; }; - 65B35E13121C261E003EAD18 /* License.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = License.txt; sourceTree = ""; }; - 65B35E15121C261E003EAD18 /* extract-mimetypes.xq */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "extract-mimetypes.xq"; sourceTree = ""; }; - 65B35E16121C261E003EAD18 /* extract-mimetypes.xq.in */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "extract-mimetypes.xq.in"; sourceTree = ""; }; - 65B35E17121C261E003EAD18 /* openpilotgcs_de.ts */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = openpilotgcs_de.ts; sourceTree = ""; }; - 65B35E18121C261E003EAD18 /* openpilotgcs_es.ts */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = openpilotgcs_es.ts; sourceTree = ""; }; - 65B35E19121C261E003EAD18 /* openpilotgcs_fr.ts */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = openpilotgcs_fr.ts; sourceTree = ""; }; - 65B35E1A121C261E003EAD18 /* openpilotgcs_it.ts */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = openpilotgcs_it.ts; sourceTree = ""; }; - 65B35E1B121C261E003EAD18 /* Readme.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Readme.txt; sourceTree = ""; }; - 65B35E1C121C261E003EAD18 /* translations.pro */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = translations.pro; sourceTree = ""; }; - 65B35E1D121C261E003EAD18 /* share.pro */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = share.pro; sourceTree = ""; }; - 65B35E20121C261E003EAD18 /* app.pro */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = app.pro; sourceTree = ""; }; - 65B35E21121C261E003EAD18 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 65B35E22121C261E003EAD18 /* main.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = main.cpp; sourceTree = ""; }; - 65B35E23121C261E003EAD18 /* openpilotgcs.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = openpilotgcs.icns; sourceTree = ""; }; - 65B35E24121C261E003EAD18 /* openpilotgcs.ico */ = {isa = PBXFileReference; lastKnownFileType = image.ico; path = openpilotgcs.ico; sourceTree = ""; }; - 65B35E25121C261E003EAD18 /* openpilotgcs.rc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = openpilotgcs.rc; sourceTree = ""; }; - 65B35E26121C261E003EAD18 /* prifile.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = prifile.icns; sourceTree = ""; }; - 65B35E27121C261E003EAD18 /* profile.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = profile.icns; sourceTree = ""; }; - 65B35E2A121C261E003EAD18 /* HIDTest.pro */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = HIDTest.pro; sourceTree = ""; }; - 65B35E2B121C261E003EAD18 /* main.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = main.cpp; sourceTree = ""; }; - 65B35E2D121C261E003EAD18 /* common.pri */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = common.pri; sourceTree = ""; }; - 65B35E2F121C261E003EAD18 /* accessmode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = accessmode.h; sourceTree = ""; }; - 65B35E30121C261E003EAD18 /* alllayersoftype.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = alllayersoftype.cpp; sourceTree = ""; }; - 65B35E31121C261E003EAD18 /* alllayersoftype.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = alllayersoftype.h; sourceTree = ""; }; - 65B35E32121C261E003EAD18 /* cache.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = cache.cpp; sourceTree = ""; }; - 65B35E33121C261E003EAD18 /* cache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cache.h; sourceTree = ""; }; - 65B35E34121C261E003EAD18 /* cacheitemqueue.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = cacheitemqueue.cpp; sourceTree = ""; }; - 65B35E35121C261E003EAD18 /* cacheitemqueue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cacheitemqueue.h; sourceTree = ""; }; - 65B35E36121C261E003EAD18 /* core.pro */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = core.pro; sourceTree = ""; }; - 65B35E37121C261E003EAD18 /* debugheader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = debugheader.h; sourceTree = ""; }; - 65B35E38121C261E003EAD18 /* geodecoderstatus.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = geodecoderstatus.h; sourceTree = ""; }; - 65B35E39121C261E003EAD18 /* kibertilecache.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = kibertilecache.cpp; sourceTree = ""; }; - 65B35E3A121C261E003EAD18 /* kibertilecache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = kibertilecache.h; sourceTree = ""; }; - 65B35E3B121C261E003EAD18 /* languagetype.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = languagetype.cpp; sourceTree = ""; }; - 65B35E3C121C261E003EAD18 /* languagetype.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = languagetype.h; sourceTree = ""; }; - 65B35E3D121C261E003EAD18 /* maptype.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = maptype.h; sourceTree = ""; }; - 65B35E3E121C261E003EAD18 /* memorycache.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = memorycache.cpp; sourceTree = ""; }; - 65B35E3F121C261E003EAD18 /* memorycache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = memorycache.h; sourceTree = ""; }; - 65B35E40121C261E003EAD18 /* opmaps.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = opmaps.cpp; sourceTree = ""; }; - 65B35E41121C261E003EAD18 /* opmaps.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = opmaps.h; sourceTree = ""; }; - 65B35E42121C261E003EAD18 /* placemark.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = placemark.cpp; sourceTree = ""; }; - 65B35E43121C261E003EAD18 /* placemark.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = placemark.h; sourceTree = ""; }; - 65B35E44121C261E003EAD18 /* point.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = point.cpp; sourceTree = ""; }; - 65B35E45121C261E003EAD18 /* point.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = point.h; sourceTree = ""; }; - 65B35E46121C261E003EAD18 /* providerstrings.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = providerstrings.cpp; sourceTree = ""; }; - 65B35E47121C261E003EAD18 /* providerstrings.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = providerstrings.h; sourceTree = ""; }; - 65B35E48121C261E003EAD18 /* pureimage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = pureimage.cpp; sourceTree = ""; }; - 65B35E49121C261E003EAD18 /* pureimage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pureimage.h; sourceTree = ""; }; - 65B35E4A121C261E003EAD18 /* pureimagecache.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = pureimagecache.cpp; sourceTree = ""; }; - 65B35E4B121C261E003EAD18 /* pureimagecache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pureimagecache.h; sourceTree = ""; }; - 65B35E4C121C261E003EAD18 /* rawtile.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = rawtile.cpp; sourceTree = ""; }; - 65B35E4D121C261E003EAD18 /* rawtile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = rawtile.h; sourceTree = ""; }; - 65B35E4E121C261E003EAD18 /* size.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = size.cpp; sourceTree = ""; }; - 65B35E4F121C261E003EAD18 /* size.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = size.h; sourceTree = ""; }; - 65B35E50121C261E003EAD18 /* tilecachequeue.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = tilecachequeue.cpp; sourceTree = ""; }; - 65B35E51121C261E003EAD18 /* tilecachequeue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tilecachequeue.h; sourceTree = ""; }; - 65B35E52121C261E003EAD18 /* urlfactory.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = urlfactory.cpp; sourceTree = ""; }; - 65B35E53121C261E003EAD18 /* urlfactory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = urlfactory.h; sourceTree = ""; }; - 65B35E55121C261E003EAD18 /* finaltest.pro */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = finaltest.pro; sourceTree = ""; }; - 65B35E56121C261E003EAD18 /* main.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = main.cpp; sourceTree = ""; }; - 65B35E57121C261E003EAD18 /* mainwindow.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = mainwindow.cpp; sourceTree = ""; }; - 65B35E58121C261E003EAD18 /* mainwindow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mainwindow.h; sourceTree = ""; }; - 65B35E59121C261E003EAD18 /* mainwindow.ui */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = mainwindow.ui; sourceTree = ""; }; - 65B35E5A121C261E003EAD18 /* ui_mainwindow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ui_mainwindow.h; sourceTree = ""; }; - 65B35E5C121C261E003EAD18 /* gettilestest.pro */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = gettilestest.pro; sourceTree = ""; }; - 65B35E5D121C261E003EAD18 /* main.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = main.cpp; sourceTree = ""; }; - 65B35E5F121C261E003EAD18 /* copyrightstrings.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = copyrightstrings.h; sourceTree = ""; }; - 65B35E60121C261E003EAD18 /* core.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = core.cpp; sourceTree = ""; }; - 65B35E61121C261E003EAD18 /* core.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = core.h; sourceTree = ""; }; - 65B35E62121C261E003EAD18 /* debugheader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = debugheader.h; sourceTree = ""; }; - 65B35E63121C261E003EAD18 /* internals.pro */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = internals.pro; sourceTree = ""; }; - 65B35E64121C261E003EAD18 /* loadtask.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = loadtask.cpp; sourceTree = ""; }; - 65B35E65121C261E003EAD18 /* loadtask.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = loadtask.h; sourceTree = ""; }; - 65B35E66121C261E003EAD18 /* MouseWheelZoomType.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MouseWheelZoomType.cpp; sourceTree = ""; }; - 65B35E67121C261E003EAD18 /* mousewheelzoomtype.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mousewheelzoomtype.h; sourceTree = ""; }; - 65B35E68121C261E003EAD18 /* pointlatlng.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = pointlatlng.cpp; sourceTree = ""; }; - 65B35E69121C261E003EAD18 /* pointlatlng.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pointlatlng.h; sourceTree = ""; }; - 65B35E6B121C261E003EAD18 /* lks94projection.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lks94projection.cpp; sourceTree = ""; }; - 65B35E6C121C261E003EAD18 /* lks94projection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lks94projection.h; sourceTree = ""; }; - 65B35E6D121C261E003EAD18 /* mercatorprojection.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = mercatorprojection.cpp; sourceTree = ""; }; - 65B35E6E121C261E003EAD18 /* mercatorprojection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mercatorprojection.h; sourceTree = ""; }; - 65B35E6F121C261E003EAD18 /* mercatorprojectionyandex.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = mercatorprojectionyandex.cpp; sourceTree = ""; }; - 65B35E70121C261E003EAD18 /* mercatorprojectionyandex.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mercatorprojectionyandex.h; sourceTree = ""; }; - 65B35E71121C261E003EAD18 /* platecarreeprojection.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = platecarreeprojection.cpp; sourceTree = ""; }; - 65B35E72121C261E003EAD18 /* platecarreeprojection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = platecarreeprojection.h; sourceTree = ""; }; - 65B35E73121C261E003EAD18 /* platecarreeprojectionpergo.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = platecarreeprojectionpergo.cpp; sourceTree = ""; }; - 65B35E74121C261E003EAD18 /* platecarreeprojectionpergo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = platecarreeprojectionpergo.h; sourceTree = ""; }; - 65B35E75121C261E003EAD18 /* pureprojection.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = pureprojection.cpp; sourceTree = ""; }; - 65B35E76121C261E003EAD18 /* pureprojection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pureprojection.h; sourceTree = ""; }; - 65B35E77121C261E003EAD18 /* rectangle.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = rectangle.cpp; sourceTree = ""; }; - 65B35E78121C261E003EAD18 /* rectangle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = rectangle.h; sourceTree = ""; }; - 65B35E79121C261E003EAD18 /* rectlatlng.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = rectlatlng.cpp; sourceTree = ""; }; - 65B35E7A121C261E003EAD18 /* rectlatlng.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = rectlatlng.h; sourceTree = ""; }; - 65B35E7B121C261E003EAD18 /* sizelatlng.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = sizelatlng.cpp; sourceTree = ""; }; - 65B35E7C121C261E003EAD18 /* sizelatlng.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = sizelatlng.h; sourceTree = ""; }; - 65B35E7D121C261E003EAD18 /* tile.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = tile.cpp; sourceTree = ""; }; - 65B35E7E121C261E003EAD18 /* tile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tile.h; sourceTree = ""; }; - 65B35E7F121C261E003EAD18 /* tilematrix.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = tilematrix.cpp; sourceTree = ""; }; - 65B35E80121C261E003EAD18 /* tilematrix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tilematrix.h; sourceTree = ""; }; - 65B35E82121C261E003EAD18 /* mapgraphicitem.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = mapgraphicitem.cpp; sourceTree = ""; }; - 65B35E83121C261E003EAD18 /* mapgraphicitem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mapgraphicitem.h; sourceTree = ""; }; - 65B35E84121C261E003EAD18 /* mapresources.qrc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = mapresources.qrc; sourceTree = ""; }; - 65B35E85121C261E003EAD18 /* mapwidget.pro */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = mapwidget.pro; sourceTree = ""; }; - 65B35E86121C261E003EAD18 /* opmapcontrol.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = opmapcontrol.cpp; sourceTree = ""; }; - 65B35E87121C261E003EAD18 /* opmapcontrol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = opmapcontrol.h; sourceTree = ""; }; - 65B35E88121C261E003EAD18 /* opmapwidget.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = opmapwidget.cpp; sourceTree = ""; }; - 65B35E89121C261E003EAD18 /* opmapwidget.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = opmapwidget.h; sourceTree = ""; }; - 65B35E8A121C261E003EAD18 /* OPMapControl.pro */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = OPMapControl.pro; sourceTree = ""; }; - 65B35E8C121C261E003EAD18 /* main.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = main.cpp; sourceTree = ""; }; - 65B35E8D121C261E003EAD18 /* teste.pro */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = teste.pro; sourceTree = ""; }; - 65B35E8F121C261E003EAD18 /* main.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = main.cpp; sourceTree = ""; }; - 65B35E90121C261E003EAD18 /* map.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = map.cpp; sourceTree = ""; }; - 65B35E91121C261E003EAD18 /* map.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = map.h; sourceTree = ""; }; - 65B35E92121C261E003EAD18 /* widgettest.pro */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = widgettest.pro; sourceTree = ""; }; - 65B35E95121C261E003EAD18 /* DocumentationHelper.pro */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = DocumentationHelper.pro; sourceTree = ""; }; - 65B35E96121C261E003EAD18 /* main.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = main.cpp; sourceTree = ""; }; - 65B35E97121C261E003EAD18 /* mainwindow.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = mainwindow.cpp; sourceTree = ""; }; - 65B35E98121C261E003EAD18 /* mainwindow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mainwindow.h; sourceTree = ""; }; - 65B35E99121C261E003EAD18 /* mainwindow.ui */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = mainwindow.ui; sourceTree = ""; }; - 65B35E9C121C261E003EAD18 /* aggregate.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = aggregate.cpp; sourceTree = ""; }; - 65B35E9D121C261E003EAD18 /* aggregate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = aggregate.h; sourceTree = ""; }; - 65B35E9E121C261E003EAD18 /* aggregation.pri */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = aggregation.pri; sourceTree = ""; }; - 65B35E9F121C261E003EAD18 /* aggregation.pro */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = aggregation.pro; sourceTree = ""; }; - 65B35EA0121C261E003EAD18 /* aggregation_global.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = aggregation_global.h; sourceTree = ""; }; - 65B35EA2121C261E003EAD18 /* examples.pro */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = examples.pro; sourceTree = ""; }; - 65B35EA4121C261E003EAD18 /* main.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = main.cpp; sourceTree = ""; }; - 65B35EA5121C261E003EAD18 /* main.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = main.h; sourceTree = ""; }; - 65B35EA6121C261E003EAD18 /* main.ui */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = main.ui; sourceTree = ""; }; - 65B35EA7121C261E003EAD18 /* myinterfaces.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = myinterfaces.h; sourceTree = ""; }; - 65B35EA8121C261E003EAD18 /* text.pro */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = text.pro; sourceTree = ""; }; - 65B35EAA121C261E003EAD18 /* extensionsystem.pri */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = extensionsystem.pri; sourceTree = ""; }; - 65B35EAB121C261E003EAD18 /* extensionsystem.pro */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = extensionsystem.pro; sourceTree = ""; }; - 65B35EAC121C261E003EAD18 /* extensionsystem_dependencies.pri */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = extensionsystem_dependencies.pri; sourceTree = ""; }; - 65B35EAD121C261E003EAD18 /* extensionsystem_global.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = extensionsystem_global.h; sourceTree = ""; }; - 65B35EAF121C261E003EAD18 /* error.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = error.png; sourceTree = ""; }; - 65B35EB0121C261E003EAD18 /* ok.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ok.png; sourceTree = ""; }; - 65B35EB1121C261E003EAD18 /* iplugin.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = iplugin.cpp; sourceTree = ""; }; - 65B35EB2121C261E003EAD18 /* iplugin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = iplugin.h; sourceTree = ""; }; - 65B35EB3121C261E003EAD18 /* iplugin_p.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = iplugin_p.h; sourceTree = ""; }; - 65B35EB4121C261E003EAD18 /* optionsparser.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = optionsparser.cpp; sourceTree = ""; }; - 65B35EB5121C261E003EAD18 /* optionsparser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = optionsparser.h; sourceTree = ""; }; - 65B35EB6121C261E003EAD18 /* plugindetailsview.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = plugindetailsview.cpp; sourceTree = ""; }; - 65B35EB7121C261E003EAD18 /* plugindetailsview.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = plugindetailsview.h; sourceTree = ""; }; - 65B35EB8121C261E003EAD18 /* plugindetailsview.ui */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = plugindetailsview.ui; sourceTree = ""; }; - 65B35EB9121C261E003EAD18 /* pluginerrorview.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = pluginerrorview.cpp; sourceTree = ""; }; - 65B35EBA121C261E003EAD18 /* pluginerrorview.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pluginerrorview.h; sourceTree = ""; }; - 65B35EBB121C261E003EAD18 /* pluginerrorview.ui */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = pluginerrorview.ui; sourceTree = ""; }; - 65B35EBC121C261E003EAD18 /* pluginmanager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = pluginmanager.cpp; sourceTree = ""; }; - 65B35EBD121C261E003EAD18 /* pluginmanager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pluginmanager.h; sourceTree = ""; }; - 65B35EBE121C261E003EAD18 /* pluginmanager_p.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pluginmanager_p.h; sourceTree = ""; }; - 65B35EBF121C261E003EAD18 /* pluginspec.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = pluginspec.cpp; sourceTree = ""; }; - 65B35EC0121C261E003EAD18 /* pluginspec.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pluginspec.h; sourceTree = ""; }; - 65B35EC1121C261E003EAD18 /* pluginspec_p.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pluginspec_p.h; sourceTree = ""; }; - 65B35EC2121C261E003EAD18 /* pluginview.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = pluginview.cpp; sourceTree = ""; }; - 65B35EC3121C261E003EAD18 /* pluginview.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pluginview.h; sourceTree = ""; }; - 65B35EC4121C261E003EAD18 /* pluginview.qrc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = pluginview.qrc; sourceTree = ""; }; - 65B35EC5121C261E003EAD18 /* pluginview.ui */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = pluginview.ui; sourceTree = ""; }; - 65B35EC6121C261E003EAD18 /* pluginview_p.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pluginview_p.h; sourceTree = ""; }; - 65B35EC9121C261E003EAD18 /* auto.pro */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = auto.pro; sourceTree = ""; }; - 65B35ECC121C261E003EAD18 /* circularplugins.pro */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = circularplugins.pro; sourceTree = ""; }; - 65B35ECE121C261E003EAD18 /* plugin.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = plugin.xml; sourceTree = ""; }; - 65B35ECF121C261E003EAD18 /* plugin1.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = plugin1.cpp; sourceTree = ""; }; - 65B35ED0121C261E003EAD18 /* plugin1.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = plugin1.h; sourceTree = ""; }; - 65B35ED1121C261E003EAD18 /* plugin1.pro */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = plugin1.pro; sourceTree = ""; }; - 65B35ED3121C261E003EAD18 /* plugin.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = plugin.xml; sourceTree = ""; }; - 65B35ED4121C261E003EAD18 /* plugin2.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = plugin2.cpp; sourceTree = ""; }; - 65B35ED5121C261E003EAD18 /* plugin2.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = plugin2.h; sourceTree = ""; }; - 65B35ED6121C261E003EAD18 /* plugin2.pro */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = plugin2.pro; sourceTree = ""; }; - 65B35ED8121C261E003EAD18 /* plugin.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = plugin.xml; sourceTree = ""; }; - 65B35ED9121C261E003EAD18 /* plugin3.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = plugin3.cpp; sourceTree = ""; }; - 65B35EDA121C261E003EAD18 /* plugin3.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = plugin3.h; sourceTree = ""; }; - 65B35EDB121C261E003EAD18 /* plugin3.pro */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = plugin3.pro; sourceTree = ""; }; - 65B35EDD121C261E003EAD18 /* correctplugins1.pro */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = correctplugins1.pro; sourceTree = ""; }; - 65B35EDF121C261E003EAD18 /* plugin.spec */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = plugin.spec; sourceTree = ""; }; - 65B35EE0121C261E003EAD18 /* plugin1.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = plugin1.cpp; sourceTree = ""; }; - 65B35EE1121C261E003EAD18 /* plugin1.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = plugin1.h; sourceTree = ""; }; - 65B35EE2121C261E003EAD18 /* plugin1.pro */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = plugin1.pro; sourceTree = ""; }; - 65B35EE4121C261E003EAD18 /* plugin.spec */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = plugin.spec; sourceTree = ""; }; - 65B35EE5121C261E003EAD18 /* plugin2.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = plugin2.cpp; sourceTree = ""; }; - 65B35EE6121C261E003EAD18 /* plugin2.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = plugin2.h; sourceTree = ""; }; - 65B35EE7121C261E003EAD18 /* plugin2.pro */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = plugin2.pro; sourceTree = ""; }; - 65B35EE9121C261E003EAD18 /* plugin.spec */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = plugin.spec; sourceTree = ""; }; - 65B35EEA121C261E003EAD18 /* plugin3.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = plugin3.cpp; sourceTree = ""; }; - 65B35EEB121C261E003EAD18 /* plugin3.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = plugin3.h; sourceTree = ""; }; - 65B35EEC121C261E003EAD18 /* plugin3.pro */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = plugin3.pro; sourceTree = ""; }; - 65B35EED121C261E003EAD18 /* pluginmanager.pro */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = pluginmanager.pro; sourceTree = ""; }; - 65B35EF0121C261E003EAD18 /* myplug.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = myplug.xml; sourceTree = ""; }; - 65B35EF1121C261E003EAD18 /* otherplugin.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = otherplugin.xml; sourceTree = ""; }; - 65B35EF2121C261E003EAD18 /* plugin1.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = plugin1.xml; sourceTree = ""; }; - 65B35EF3121C261E003EAD18 /* test.pro */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = test.pro; sourceTree = ""; }; - 65B35EF4121C261E003EAD18 /* test.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = test.sh; sourceTree = ""; }; - 65B35EF5121C261E003EAD18 /* tst_pluginmanager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = tst_pluginmanager.cpp; sourceTree = ""; }; - 65B35EF7121C261E003EAD18 /* pluginspec.pro */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = pluginspec.pro; sourceTree = ""; }; - 65B35EF8121C261E003EAD18 /* test.pro */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = test.pro; sourceTree = ""; }; - 65B35EF9121C261E003EAD18 /* test.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = test.sh; sourceTree = ""; }; - 65B35EFB121C261E003EAD18 /* spec1.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = spec1.xml; sourceTree = ""; }; - 65B35EFC121C261E003EAD18 /* spec2.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = spec2.xml; sourceTree = ""; }; - 65B35EFD121C261E003EAD18 /* spec3.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = spec3.xml; sourceTree = ""; }; - 65B35EFE121C261E003EAD18 /* spec4.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = spec4.xml; sourceTree = ""; }; - 65B35EFF121C261E003EAD18 /* spec5.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = spec5.xml; sourceTree = ""; }; - 65B35F01121C261E003EAD18 /* spec.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = spec.xml; sourceTree = ""; }; - 65B35F03121C261E003EAD18 /* testplugin.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = testplugin.cpp; sourceTree = ""; }; - 65B35F04121C261E003EAD18 /* testplugin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = testplugin.h; sourceTree = ""; }; - 65B35F05121C261E003EAD18 /* testplugin.pro */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = testplugin.pro; sourceTree = ""; }; - 65B35F06121C261E003EAD18 /* testplugin.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = testplugin.xml; sourceTree = ""; }; - 65B35F07121C261E003EAD18 /* testplugin_global.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = testplugin_global.h; sourceTree = ""; }; - 65B35F09121C261E003EAD18 /* simplespec.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = simplespec.xml; sourceTree = ""; }; - 65B35F0A121C261E003EAD18 /* spec1.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = spec1.xml; sourceTree = ""; }; - 65B35F0B121C261E003EAD18 /* spec2.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = spec2.xml; sourceTree = ""; }; - 65B35F0C121C261E003EAD18 /* spec_wrong1.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = spec_wrong1.xml; sourceTree = ""; }; - 65B35F0D121C261E003EAD18 /* spec_wrong2.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = spec_wrong2.xml; sourceTree = ""; }; - 65B35F0E121C261E003EAD18 /* spec_wrong3.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = spec_wrong3.xml; sourceTree = ""; }; - 65B35F0F121C261E003EAD18 /* spec_wrong4.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = spec_wrong4.xml; sourceTree = ""; }; - 65B35F10121C261E003EAD18 /* spec_wrong5.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = spec_wrong5.xml; sourceTree = ""; }; - 65B35F11121C261E003EAD18 /* tst_pluginspec.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = tst_pluginspec.cpp; sourceTree = ""; }; - 65B35F12121C261E003EAD18 /* extensionsystem_test.pri */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = extensionsystem_test.pri; sourceTree = ""; }; - 65B35F14121C261E003EAD18 /* manual.pro */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = manual.pro; sourceTree = ""; }; - 65B35F16121C261E003EAD18 /* plugindialog.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = plugindialog.cpp; sourceTree = ""; }; - 65B35F17121C261E003EAD18 /* plugindialog.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = plugindialog.h; sourceTree = ""; }; - 65B35F1A121C261E003EAD18 /* plugin.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = plugin.xml; sourceTree = ""; }; - 65B35F1B121C261E003EAD18 /* plugin1.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = plugin1.cpp; sourceTree = ""; }; - 65B35F1C121C261E003EAD18 /* plugin1.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = plugin1.h; sourceTree = ""; }; - 65B35F1D121C261E003EAD18 /* plugin1.pro */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = plugin1.pro; sourceTree = ""; }; - 65B35F1F121C261E003EAD18 /* plugin.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = plugin.xml; sourceTree = ""; }; - 65B35F20121C261E003EAD18 /* plugin2.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = plugin2.cpp; sourceTree = ""; }; - 65B35F21121C261E003EAD18 /* plugin2.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = plugin2.h; sourceTree = ""; }; - 65B35F22121C261E003EAD18 /* plugin2.pro */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = plugin2.pro; sourceTree = ""; }; - 65B35F24121C261E003EAD18 /* plugin.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = plugin.xml; sourceTree = ""; }; - 65B35F25121C261E003EAD18 /* plugin3.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = plugin3.cpp; sourceTree = ""; }; - 65B35F26121C261E003EAD18 /* plugin3.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = plugin3.h; sourceTree = ""; }; - 65B35F27121C261E003EAD18 /* plugin3.pro */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = plugin3.pro; sourceTree = ""; }; - 65B35F29121C261E003EAD18 /* plugin.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = plugin.xml; sourceTree = ""; }; - 65B35F2A121C261E003EAD18 /* plugins.pro */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = plugins.pro; sourceTree = ""; }; - 65B35F2B121C261E003EAD18 /* pluginview.pro */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = pluginview.pro; sourceTree = ""; }; - 65B35F2C121C261E003EAD18 /* test.pro */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = test.pro; sourceTree = ""; }; - 65B35F2D121C261E003EAD18 /* test.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = test.sh; sourceTree = ""; }; - 65B35F2E121C261E003EAD18 /* test.pro */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = test.pro; sourceTree = ""; }; - 65B35F31121C261E003EAD18 /* glc_3dwidget.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = glc_3dwidget.cpp; sourceTree = ""; }; - 65B35F32121C261E003EAD18 /* glc_3dwidget.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = glc_3dwidget.h; sourceTree = ""; }; - 65B35F33121C261E003EAD18 /* glc_3dwidgetmanager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = glc_3dwidgetmanager.cpp; sourceTree = ""; }; - 65B35F34121C261E003EAD18 /* glc_3dwidgetmanager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = glc_3dwidgetmanager.h; sourceTree = ""; }; - 65B35F35121C261E003EAD18 /* glc_3dwidgetmanagerhandle.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = glc_3dwidgetmanagerhandle.cpp; sourceTree = ""; }; - 65B35F36121C261E003EAD18 /* glc_3dwidgetmanagerhandle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = glc_3dwidgetmanagerhandle.h; sourceTree = ""; }; - 65B35F37121C261E003EAD18 /* glc_abstractmanipulator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = glc_abstractmanipulator.cpp; sourceTree = ""; }; - 65B35F38121C261E003EAD18 /* glc_abstractmanipulator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = glc_abstractmanipulator.h; sourceTree = ""; }; - 65B35F39121C261E003EAD18 /* glc_axis.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = glc_axis.cpp; sourceTree = ""; }; - 65B35F3A121C261E003EAD18 /* glc_axis.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = glc_axis.h; sourceTree = ""; }; - 65B35F3B121C261E003EAD18 /* glc_cuttingplane.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = glc_cuttingplane.cpp; sourceTree = ""; }; - 65B35F3C121C261E003EAD18 /* glc_cuttingplane.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = glc_cuttingplane.h; sourceTree = ""; }; - 65B35F3D121C261E003EAD18 /* glc_pullmanipulator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = glc_pullmanipulator.cpp; sourceTree = ""; }; - 65B35F3E121C261E003EAD18 /* glc_pullmanipulator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = glc_pullmanipulator.h; sourceTree = ""; }; - 65B35F3F121C261E003EAD18 /* glc_rotationmanipulator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = glc_rotationmanipulator.cpp; sourceTree = ""; }; - 65B35F40121C261E003EAD18 /* glc_rotationmanipulator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = glc_rotationmanipulator.h; sourceTree = ""; }; - 65B35F43121C261E003EAD18 /* glext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = glext.h; sourceTree = ""; }; - 65B35F45121C261E003EAD18 /* atmosphere.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = atmosphere.c; sourceTree = ""; }; - 65B35F46121C261E003EAD18 /* atmosphere.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = atmosphere.h; sourceTree = ""; }; - 65B35F47121C261E003EAD18 /* AUTHORS */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = AUTHORS; sourceTree = ""; }; - 65B35F48121C261E003EAD18 /* background.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = background.c; sourceTree = ""; }; - 65B35F49121C261E003EAD18 /* background.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = background.h; sourceTree = ""; }; - 65B35F4A121C261E003EAD18 /* camera.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = camera.c; sourceTree = ""; }; - 65B35F4B121C261E003EAD18 /* camera.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = camera.h; sourceTree = ""; }; - 65B35F4C121C261E003EAD18 /* ChangeLog */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = ChangeLog; sourceTree = ""; }; - 65B35F4D121C261E003EAD18 /* chunk.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = chunk.c; sourceTree = ""; }; - 65B35F4E121C261E003EAD18 /* chunk.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = chunk.h; sourceTree = ""; }; - 65B35F4F121C261E003EAD18 /* chunktable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = chunktable.h; sourceTree = ""; }; - 65B35F50121C261E003EAD18 /* ease.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ease.c; sourceTree = ""; }; - 65B35F51121C261E003EAD18 /* ease.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ease.h; sourceTree = ""; }; - 65B35F52121C261E003EAD18 /* file.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = file.c; sourceTree = ""; }; - 65B35F53121C261E003EAD18 /* file.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = file.h; sourceTree = ""; }; - 65B35F54121C261E003EAD18 /* io.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = io.c; sourceTree = ""; }; - 65B35F55121C261E003EAD18 /* io.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = io.h; sourceTree = ""; }; - 65B35F56121C261E003EAD18 /* light.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = light.c; sourceTree = ""; }; - 65B35F57121C261E003EAD18 /* light.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = light.h; sourceTree = ""; }; - 65B35F58121C261E003EAD18 /* material.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = material.c; sourceTree = ""; }; - 65B35F59121C261E003EAD18 /* material.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = material.h; sourceTree = ""; }; - 65B35F5A121C261E003EAD18 /* matrix.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = matrix.c; sourceTree = ""; }; - 65B35F5B121C261E003EAD18 /* matrix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = matrix.h; sourceTree = ""; }; - 65B35F5C121C261E003EAD18 /* mesh.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = mesh.c; sourceTree = ""; }; - 65B35F5D121C261E003EAD18 /* mesh.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mesh.h; sourceTree = ""; }; - 65B35F5E121C261E003EAD18 /* node.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = node.c; sourceTree = ""; }; - 65B35F5F121C261E003EAD18 /* node.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = node.h; sourceTree = ""; }; - 65B35F60121C261E003EAD18 /* quat.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = quat.c; sourceTree = ""; }; - 65B35F61121C261E003EAD18 /* quat.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = quat.h; sourceTree = ""; }; - 65B35F62121C261E003EAD18 /* README */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = README; sourceTree = ""; }; - 65B35F63121C261E003EAD18 /* shadow.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = shadow.c; sourceTree = ""; }; - 65B35F64121C261E003EAD18 /* shadow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = shadow.h; sourceTree = ""; }; - 65B35F65121C261E003EAD18 /* tcb.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tcb.c; sourceTree = ""; }; - 65B35F66121C261E003EAD18 /* tcb.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tcb.h; sourceTree = ""; }; - 65B35F67121C261E003EAD18 /* tracks.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tracks.c; sourceTree = ""; }; - 65B35F68121C261E003EAD18 /* tracks.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tracks.h; sourceTree = ""; }; - 65B35F69121C261E003EAD18 /* types.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = types.h; sourceTree = ""; }; - 65B35F6A121C261E003EAD18 /* vector.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = vector.c; sourceTree = ""; }; - 65B35F6B121C261E003EAD18 /* vector.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vector.h; sourceTree = ""; }; - 65B35F6C121C261E003EAD18 /* viewport.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = viewport.c; sourceTree = ""; }; - 65B35F6D121C261E003EAD18 /* viewport.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = viewport.h; sourceTree = ""; }; - 65B35F6F121C261E003EAD18 /* crypt.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = crypt.h; sourceTree = ""; }; - 65B35F70121C261E003EAD18 /* ioapi.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ioapi.c; sourceTree = ""; }; - 65B35F71121C261E003EAD18 /* ioapi.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ioapi.h; sourceTree = ""; }; - 65B35F72121C261E003EAD18 /* quazip.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = quazip.cpp; sourceTree = ""; }; - 65B35F73121C261E003EAD18 /* quazip.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = quazip.h; sourceTree = ""; }; - 65B35F74121C261E003EAD18 /* quazipfile.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = quazipfile.cpp; sourceTree = ""; }; - 65B35F75121C261E003EAD18 /* quazipfile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = quazipfile.h; sourceTree = ""; }; - 65B35F76121C261E003EAD18 /* quazipfileinfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = quazipfileinfo.h; sourceTree = ""; }; - 65B35F77121C261E003EAD18 /* quazipnewinfo.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = quazipnewinfo.cpp; sourceTree = ""; }; - 65B35F78121C261E003EAD18 /* quazipnewinfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = quazipnewinfo.h; sourceTree = ""; }; - 65B35F79121C261E003EAD18 /* unzip.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = unzip.c; sourceTree = ""; }; - 65B35F7A121C261E003EAD18 /* unzip.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = unzip.h; sourceTree = ""; }; - 65B35F7B121C261E003EAD18 /* zip.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = zip.c; sourceTree = ""; }; - 65B35F7C121C261E003EAD18 /* zip.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = zip.h; sourceTree = ""; }; - 65B35F7E121C261E003EAD18 /* adler32.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = adler32.c; sourceTree = ""; }; - 65B35F7F121C261E003EAD18 /* algorithm.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = algorithm.txt; sourceTree = ""; }; - 65B35F80121C261E003EAD18 /* ChangeLog */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = ChangeLog; sourceTree = ""; }; - 65B35F81121C261E003EAD18 /* compress.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = compress.c; sourceTree = ""; }; - 65B35F82121C261E003EAD18 /* configure */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = configure; sourceTree = ""; }; - 65B35F83121C261E003EAD18 /* crc32.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = crc32.c; sourceTree = ""; }; - 65B35F84121C261E003EAD18 /* crc32.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = crc32.h; sourceTree = ""; }; - 65B35F85121C261E003EAD18 /* deflate.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = deflate.c; sourceTree = ""; }; - 65B35F86121C261E003EAD18 /* deflate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = deflate.h; sourceTree = ""; }; - 65B35F87121C261E003EAD18 /* example.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = example.c; sourceTree = ""; }; - 65B35F88121C261E003EAD18 /* FAQ */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = FAQ; sourceTree = ""; }; - 65B35F89121C261E003EAD18 /* gzio.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = gzio.c; sourceTree = ""; }; - 65B35F8A121C261E003EAD18 /* INDEX */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = INDEX; sourceTree = ""; }; - 65B35F8B121C261E003EAD18 /* infback.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = infback.c; sourceTree = ""; }; - 65B35F8C121C261E003EAD18 /* inffast.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = inffast.c; sourceTree = ""; }; - 65B35F8D121C261E003EAD18 /* inffast.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = inffast.h; sourceTree = ""; }; - 65B35F8E121C261E003EAD18 /* inffixed.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = inffixed.h; sourceTree = ""; }; - 65B35F8F121C261E003EAD18 /* inflate.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = inflate.c; sourceTree = ""; }; - 65B35F90121C261E003EAD18 /* inflate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = inflate.h; sourceTree = ""; }; - 65B35F91121C261E003EAD18 /* inftrees.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = inftrees.c; sourceTree = ""; }; - 65B35F92121C261E003EAD18 /* inftrees.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = inftrees.h; sourceTree = ""; }; - 65B35F93121C261E003EAD18 /* make_vms.com */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = make_vms.com; sourceTree = ""; }; - 65B35F94121C261E003EAD18 /* Makefile */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; - 65B35F95121C261E003EAD18 /* Makefile.in */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Makefile.in; sourceTree = ""; }; - 65B35F96121C261E003EAD18 /* minigzip.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = minigzip.c; sourceTree = ""; }; - 65B35F97121C261E003EAD18 /* README */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = README; sourceTree = ""; }; - 65B35F98121C261E003EAD18 /* trees.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = trees.c; sourceTree = ""; }; - 65B35F99121C261E003EAD18 /* trees.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = trees.h; sourceTree = ""; }; - 65B35F9A121C261E003EAD18 /* uncompr.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = uncompr.c; sourceTree = ""; }; - 65B35F9B121C261E003EAD18 /* zconf.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = zconf.h; sourceTree = ""; }; - 65B35F9C121C261E003EAD18 /* zconf.in.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = zconf.in.h; sourceTree = ""; }; - 65B35F9D121C261E003EAD18 /* zlib.3 */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = zlib.3; sourceTree = ""; }; - 65B35F9E121C261E003EAD18 /* zlib.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = zlib.h; sourceTree = ""; }; - 65B35F9F121C261E003EAD18 /* zutil.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = zutil.c; sourceTree = ""; }; - 65B35FA0121C261E003EAD18 /* zutil.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = zutil.h; sourceTree = ""; }; - 65B35FA2121C261E003EAD18 /* COPYING */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = COPYING; sourceTree = ""; }; - 65B35FA4121C261E003EAD18 /* glc_3drep.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = glc_3drep.cpp; sourceTree = ""; }; - 65B35FA5121C261E003EAD18 /* glc_3drep.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = glc_3drep.h; sourceTree = ""; }; - 65B35FA6121C261E003EAD18 /* glc_arrow.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = glc_arrow.cpp; sourceTree = ""; }; - 65B35FA7121C261E003EAD18 /* glc_arrow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = glc_arrow.h; sourceTree = ""; }; - 65B35FA8121C261E003EAD18 /* glc_box.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = glc_box.cpp; sourceTree = ""; }; - 65B35FA9121C261E003EAD18 /* glc_box.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = glc_box.h; sourceTree = ""; }; - 65B35FAA121C261E003EAD18 /* glc_bsrep.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = glc_bsrep.cpp; sourceTree = ""; }; - 65B35FAB121C261E003EAD18 /* glc_bsrep.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = glc_bsrep.h; sourceTree = ""; }; - 65B35FAC121C261E003EAD18 /* glc_circle.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = glc_circle.cpp; sourceTree = ""; }; - 65B35FAD121C261E003EAD18 /* glc_circle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = glc_circle.h; sourceTree = ""; }; - 65B35FAE121C261E003EAD18 /* glc_cone.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = glc_cone.cpp; sourceTree = ""; }; - 65B35FAF121C261E003EAD18 /* glc_cone.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = glc_cone.h; sourceTree = ""; }; - 65B35FB0121C261E003EAD18 /* glc_cylinder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = glc_cylinder.cpp; sourceTree = ""; }; - 65B35FB1121C261E003EAD18 /* glc_cylinder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = glc_cylinder.h; sourceTree = ""; }; - 65B35FB2121C261E003EAD18 /* glc_disc.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = glc_disc.cpp; sourceTree = ""; }; - 65B35FB3121C261E003EAD18 /* glc_disc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = glc_disc.h; sourceTree = ""; }; - 65B35FB4121C261E003EAD18 /* glc_geometry.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = glc_geometry.cpp; sourceTree = ""; }; - 65B35FB5121C261E003EAD18 /* glc_geometry.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = glc_geometry.h; sourceTree = ""; }; - 65B35FB6121C261E003EAD18 /* glc_line.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = glc_line.cpp; sourceTree = ""; }; - 65B35FB7121C261E003EAD18 /* glc_line.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = glc_line.h; sourceTree = ""; }; - 65B35FB8121C261E003EAD18 /* glc_lod.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = glc_lod.cpp; sourceTree = ""; }; - 65B35FB9121C261E003EAD18 /* glc_lod.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = glc_lod.h; sourceTree = ""; }; - 65B35FBA121C261E003EAD18 /* glc_mesh.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = glc_mesh.cpp; sourceTree = ""; }; - 65B35FBB121C261E003EAD18 /* glc_mesh.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = glc_mesh.h; sourceTree = ""; }; - 65B35FBC121C261E003EAD18 /* glc_meshdata.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = glc_meshdata.cpp; sourceTree = ""; }; - 65B35FBD121C261E003EAD18 /* glc_meshdata.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = glc_meshdata.h; sourceTree = ""; }; - 65B35FBE121C261E003EAD18 /* glc_point.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = glc_point.cpp; sourceTree = ""; }; - 65B35FBF121C261E003EAD18 /* glc_point.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = glc_point.h; sourceTree = ""; }; - 65B35FC0121C261E003EAD18 /* glc_pointsprite.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = glc_pointsprite.cpp; sourceTree = ""; }; - 65B35FC1121C261E003EAD18 /* glc_pointsprite.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = glc_pointsprite.h; sourceTree = ""; }; - 65B35FC2121C261E003EAD18 /* glc_polylines.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = glc_polylines.cpp; sourceTree = ""; }; - 65B35FC3121C261E003EAD18 /* glc_polylines.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = glc_polylines.h; sourceTree = ""; }; - 65B35FC4121C261E003EAD18 /* glc_primitivegroup.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = glc_primitivegroup.cpp; sourceTree = ""; }; - 65B35FC5121C261E003EAD18 /* glc_primitivegroup.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = glc_primitivegroup.h; sourceTree = ""; }; - 65B35FC6121C261E003EAD18 /* glc_rectangle.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = glc_rectangle.cpp; sourceTree = ""; }; - 65B35FC7121C261E003EAD18 /* glc_rectangle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = glc_rectangle.h; sourceTree = ""; }; - 65B35FC8121C261E003EAD18 /* glc_rep.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = glc_rep.cpp; sourceTree = ""; }; - 65B35FC9121C261E003EAD18 /* glc_rep.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = glc_rep.h; sourceTree = ""; }; - 65B35FCA121C261E003EAD18 /* glc_sphere.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = glc_sphere.cpp; sourceTree = ""; }; - 65B35FCB121C261E003EAD18 /* glc_sphere.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = glc_sphere.h; sourceTree = ""; }; - 65B35FCC121C261E003EAD18 /* glc_wiredata.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = glc_wiredata.cpp; sourceTree = ""; }; - 65B35FCD121C261E003EAD18 /* glc_wiredata.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = glc_wiredata.h; sourceTree = ""; }; - 65B35FCE121C261E003EAD18 /* glc_boundingbox.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = glc_boundingbox.cpp; sourceTree = ""; }; - 65B35FCF121C261E003EAD18 /* glc_boundingbox.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = glc_boundingbox.h; sourceTree = ""; }; - 65B35FD0121C261E003EAD18 /* glc_cachemanager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = glc_cachemanager.cpp; sourceTree = ""; }; - 65B35FD1121C261E003EAD18 /* glc_cachemanager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = glc_cachemanager.h; sourceTree = ""; }; - 65B35FD2121C261E003EAD18 /* glc_config.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = glc_config.h; sourceTree = ""; }; - 65B35FD3121C261E003EAD18 /* glc_exception.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = glc_exception.cpp; sourceTree = ""; }; - 65B35FD4121C261E003EAD18 /* glc_exception.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = glc_exception.h; sourceTree = ""; }; - 65B35FD5121C261E003EAD18 /* glc_ext.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = glc_ext.cpp; sourceTree = ""; }; - 65B35FD6121C261E003EAD18 /* glc_ext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = glc_ext.h; sourceTree = ""; }; - 65B35FD7121C261E003EAD18 /* glc_factory.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = glc_factory.cpp; sourceTree = ""; }; - 65B35FD8121C261E003EAD18 /* glc_factory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = glc_factory.h; sourceTree = ""; }; - 65B35FD9121C261E003EAD18 /* glc_fileformatexception.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = glc_fileformatexception.cpp; sourceTree = ""; }; - 65B35FDA121C261E003EAD18 /* glc_fileformatexception.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = glc_fileformatexception.h; sourceTree = ""; }; - 65B35FDB121C261E003EAD18 /* glc_global.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = glc_global.cpp; sourceTree = ""; }; - 65B35FDC121C261E003EAD18 /* glc_global.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = glc_global.h; sourceTree = ""; }; - 65B35FDD121C261E003EAD18 /* glc_lib.pri */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = glc_lib.pri; sourceTree = ""; }; - 65B35FDE121C261E003EAD18 /* glc_lib.pro */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = glc_lib.pro; sourceTree = ""; }; - 65B35FDF121C261E003EAD18 /* glc_object.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = glc_object.cpp; sourceTree = ""; }; - 65B35FE0121C261E003EAD18 /* glc_object.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = glc_object.h; sourceTree = ""; }; - 65B35FE1121C261E003EAD18 /* glc_openglexception.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = glc_openglexception.cpp; sourceTree = ""; }; - 65B35FE2121C261E003EAD18 /* glc_openglexception.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = glc_openglexception.h; sourceTree = ""; }; - 65B35FE3121C261E003EAD18 /* glc_renderstatistics.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = glc_renderstatistics.cpp; sourceTree = ""; }; - 65B35FE4121C261E003EAD18 /* glc_renderstatistics.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = glc_renderstatistics.h; sourceTree = ""; }; - 65B35FE5121C261E003EAD18 /* glc_state.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = glc_state.cpp; sourceTree = ""; }; - 65B35FE6121C261E003EAD18 /* glc_state.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = glc_state.h; sourceTree = ""; }; - 65B35FE8121C261E003EAD18 /* GLC_3DRep */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = GLC_3DRep; sourceTree = ""; }; - 65B35FE9121C261E003EAD18 /* GLC_3DViewCollection */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = GLC_3DViewCollection; sourceTree = ""; }; - 65B35FEA121C261E003EAD18 /* GLC_3DViewInstance */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = GLC_3DViewInstance; sourceTree = ""; }; - 65B35FEB121C261E003EAD18 /* GLC_3DWidget */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = GLC_3DWidget; sourceTree = ""; }; - 65B35FEC121C261E003EAD18 /* GLC_3DWidgetManager */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = GLC_3DWidgetManager; sourceTree = ""; }; - 65B35FED121C261E003EAD18 /* GLC_3DWidgetManagerHandle */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = GLC_3DWidgetManagerHandle; sourceTree = ""; }; - 65B35FEE121C261E003EAD18 /* GLC_AbstractManipulator */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = GLC_AbstractManipulator; sourceTree = ""; }; - 65B35FEF121C261E003EAD18 /* GLC_Arrow */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = GLC_Arrow; sourceTree = ""; }; - 65B35FF0121C261E003EAD18 /* GLC_Attribute */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = GLC_Attribute; sourceTree = ""; }; - 65B35FF1121C261E003EAD18 /* GLC_Axis */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = GLC_Axis; sourceTree = ""; }; - 65B35FF2121C261E003EAD18 /* GLC_BoundingBox */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = GLC_BoundingBox; sourceTree = ""; }; - 65B35FF3121C261E003EAD18 /* GLC_Box */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = GLC_Box; sourceTree = ""; }; - 65B35FF4121C261E003EAD18 /* GLC_BSRep */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = GLC_BSRep; sourceTree = ""; }; - 65B35FF5121C261E003EAD18 /* GLC_CacheManager */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = GLC_CacheManager; sourceTree = ""; }; - 65B35FF6121C261E003EAD18 /* GLC_Camera */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = GLC_Camera; sourceTree = ""; }; - 65B35FF7121C261E003EAD18 /* GLC_Circle */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = GLC_Circle; sourceTree = ""; }; - 65B35FF8121C261E003EAD18 /* GLC_Cone */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = GLC_Cone; sourceTree = ""; }; - 65B35FF9121C261E003EAD18 /* GLC_CuttingPlane */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = GLC_CuttingPlane; sourceTree = ""; }; - 65B35FFA121C261E003EAD18 /* GLC_Cylinder */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = GLC_Cylinder; sourceTree = ""; }; - 65B35FFB121C261E003EAD18 /* GLC_Disc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = GLC_Disc; sourceTree = ""; }; - 65B35FFC121C261E003EAD18 /* GLC_Exception */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = GLC_Exception; sourceTree = ""; }; - 65B35FFD121C261E003EAD18 /* GLC_Ext */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = GLC_Ext; sourceTree = ""; }; - 65B35FFE121C261E003EAD18 /* GLC_Factory */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = GLC_Factory; sourceTree = ""; }; - 65B35FFF121C261E003EAD18 /* GLC_FileFormatException */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = GLC_FileFormatException; sourceTree = ""; }; - 65B36000121C261E003EAD18 /* GLC_FlyMover */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = GLC_FlyMover; sourceTree = ""; }; - 65B36001121C261E003EAD18 /* GLC_Frustum */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = GLC_Frustum; sourceTree = ""; }; - 65B36002121C261E003EAD18 /* GLC_Geometry */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = GLC_Geometry; sourceTree = ""; }; - 65B36003121C261E003EAD18 /* GLC_GeomTools */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = GLC_GeomTools; sourceTree = ""; }; - 65B36004121C261E003EAD18 /* GLC_Global */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = GLC_Global; sourceTree = ""; }; - 65B36005121C261E003EAD18 /* GLC_ImagePlane */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = GLC_ImagePlane; sourceTree = ""; }; - 65B36006121C261E003EAD18 /* GLC_Interpolator */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = GLC_Interpolator; sourceTree = ""; }; - 65B36007121C261E003EAD18 /* GLC_Light */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = GLC_Light; sourceTree = ""; }; - 65B36008121C261E003EAD18 /* GLC_Line */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = GLC_Line; sourceTree = ""; }; - 65B36009121C261E003EAD18 /* GLC_Line3d */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = GLC_Line3d; sourceTree = ""; }; - 65B3600A121C261E003EAD18 /* GLC_Material */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = GLC_Material; sourceTree = ""; }; - 65B3600B121C261E003EAD18 /* GLC_Matrix4x4 */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = GLC_Matrix4x4; sourceTree = ""; }; - 65B3600C121C261E003EAD18 /* GLC_Mesh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = GLC_Mesh; sourceTree = ""; }; - 65B3600D121C261E003EAD18 /* GLC_Mover */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = GLC_Mover; sourceTree = ""; }; - 65B3600E121C261E003EAD18 /* GLC_MoverController */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = GLC_MoverController; sourceTree = ""; }; - 65B3600F121C261E003EAD18 /* GLC_Object */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = GLC_Object; sourceTree = ""; }; - 65B36010121C261E003EAD18 /* GLC_Octree */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = GLC_Octree; sourceTree = ""; }; - 65B36011121C261E003EAD18 /* GLC_OctreeNode */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = GLC_OctreeNode; sourceTree = ""; }; - 65B36012121C261E003EAD18 /* GLC_OpenGlException */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = GLC_OpenGlException; sourceTree = ""; }; - 65B36013121C261E003EAD18 /* GLC_PanMover */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = GLC_PanMover; sourceTree = ""; }; - 65B36014121C261E003EAD18 /* GLC_Plane */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = GLC_Plane; sourceTree = ""; }; - 65B36015121C261E003EAD18 /* GLC_Point */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = GLC_Point; sourceTree = ""; }; - 65B36016121C261E003EAD18 /* GLC_Point2d */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = GLC_Point2d; sourceTree = ""; }; - 65B36017121C261E003EAD18 /* GLC_Point2df */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = GLC_Point2df; sourceTree = ""; }; - 65B36018121C261E003EAD18 /* GLC_Point3d */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = GLC_Point3d; sourceTree = ""; }; - 65B36019121C261E003EAD18 /* GLC_Point3df */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = GLC_Point3df; sourceTree = ""; }; - 65B3601A121C261E003EAD18 /* GLC_Point4d */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = GLC_Point4d; sourceTree = ""; }; - 65B3601B121C261E003EAD18 /* GLC_PointSprite */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = GLC_PointSprite; sourceTree = ""; }; - 65B3601C121C261E003EAD18 /* GLC_Polylines */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = GLC_Polylines; sourceTree = ""; }; - 65B3601D121C261E003EAD18 /* GLC_PullManipulator */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = GLC_PullManipulator; sourceTree = ""; }; - 65B3601E121C261E003EAD18 /* GLC_Rectangle */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = GLC_Rectangle; sourceTree = ""; }; - 65B3601F121C261E003EAD18 /* GLC_RenderProperties */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = GLC_RenderProperties; sourceTree = ""; }; - 65B36020121C261E003EAD18 /* GLC_RenderStatistics */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = GLC_RenderStatistics; sourceTree = ""; }; - 65B36021121C261E003EAD18 /* GLC_Rep */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = GLC_Rep; sourceTree = ""; }; - 65B36022121C261E003EAD18 /* GLC_RepCrossMover */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = GLC_RepCrossMover; sourceTree = ""; }; - 65B36023121C261E003EAD18 /* GLC_RepFlyMover */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = GLC_RepFlyMover; sourceTree = ""; }; - 65B36024121C261E003EAD18 /* GLC_RepMover */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = GLC_RepMover; sourceTree = ""; }; - 65B36025121C261E003EAD18 /* GLC_RepTrackBallMover */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = GLC_RepTrackBallMover; sourceTree = ""; }; - 65B36026121C261E003EAD18 /* GLC_RotationManipulator */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = GLC_RotationManipulator; sourceTree = ""; }; - 65B36027121C261E003EAD18 /* GLC_SelectionMaterial */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = GLC_SelectionMaterial; sourceTree = ""; }; - 65B36028121C261E003EAD18 /* GLC_Shader */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = GLC_Shader; sourceTree = ""; }; - 65B36029121C261E003EAD18 /* GLC_SpacePartitioning */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = GLC_SpacePartitioning; sourceTree = ""; }; - 65B3602A121C261E003EAD18 /* GLC_Sphere */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = GLC_Sphere; sourceTree = ""; }; - 65B3602B121C261E003EAD18 /* GLC_State */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = GLC_State; sourceTree = ""; }; - 65B3602C121C261E003EAD18 /* GLC_StructInstance */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = GLC_StructInstance; sourceTree = ""; }; - 65B3602D121C261E003EAD18 /* GLC_StructOccurence */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = GLC_StructOccurence; sourceTree = ""; }; - 65B3602E121C261E003EAD18 /* GLC_StructReference */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = GLC_StructReference; sourceTree = ""; }; - 65B3602F121C261E003EAD18 /* GLC_Texture */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = GLC_Texture; sourceTree = ""; }; - 65B36030121C261E003EAD18 /* GLC_TrackBallMover */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = GLC_TrackBallMover; sourceTree = ""; }; - 65B36031121C261E003EAD18 /* GLC_TurnTableMover */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = GLC_TurnTableMover; sourceTree = ""; }; - 65B36032121C261E003EAD18 /* GLC_Vector2d */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = GLC_Vector2d; sourceTree = ""; }; - 65B36033121C261E003EAD18 /* GLC_Vector2df */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = GLC_Vector2df; sourceTree = ""; }; - 65B36034121C261E003EAD18 /* GLC_Vector3d */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = GLC_Vector3d; sourceTree = ""; }; - 65B36035121C261E003EAD18 /* GLC_Vector3df */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = GLC_Vector3df; sourceTree = ""; }; - 65B36036121C261E003EAD18 /* GLC_Vector4d */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = GLC_Vector4d; sourceTree = ""; }; - 65B36037121C261E003EAD18 /* GLC_Viewport */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = GLC_Viewport; sourceTree = ""; }; - 65B36038121C261E003EAD18 /* GLC_World */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = GLC_World; sourceTree = ""; }; - 65B36039121C261E003EAD18 /* GLC_WorldTo3dxml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = GLC_WorldTo3dxml; sourceTree = ""; }; - 65B3603A121C261E003EAD18 /* GLC_ZoomMover */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = GLC_ZoomMover; sourceTree = ""; }; - 65B3603C121C261E003EAD18 /* glc_3dstoworld.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = glc_3dstoworld.cpp; sourceTree = ""; }; - 65B3603D121C261E003EAD18 /* glc_3dstoworld.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = glc_3dstoworld.h; sourceTree = ""; }; - 65B3603E121C261E003EAD18 /* glc_3dxmltoworld.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = glc_3dxmltoworld.cpp; sourceTree = ""; }; - 65B3603F121C261E003EAD18 /* glc_3dxmltoworld.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = glc_3dxmltoworld.h; sourceTree = ""; }; - 65B36040121C261E003EAD18 /* glc_bsreptoworld.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = glc_bsreptoworld.cpp; sourceTree = ""; }; - 65B36041121C261E003EAD18 /* glc_bsreptoworld.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = glc_bsreptoworld.h; sourceTree = ""; }; - 65B36042121C261E003EAD18 /* glc_colladatoworld.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = glc_colladatoworld.cpp; sourceTree = ""; }; - 65B36043121C261E003EAD18 /* glc_colladatoworld.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = glc_colladatoworld.h; sourceTree = ""; }; - 65B36044121C261E003EAD18 /* glc_objmtlloader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = glc_objmtlloader.cpp; sourceTree = ""; }; - 65B36045121C261E003EAD18 /* glc_objmtlloader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = glc_objmtlloader.h; sourceTree = ""; }; - 65B36046121C261E003EAD18 /* glc_objtoworld.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = glc_objtoworld.cpp; sourceTree = ""; }; - 65B36047121C261E003EAD18 /* glc_objtoworld.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = glc_objtoworld.h; sourceTree = ""; }; - 65B36048121C261E003EAD18 /* glc_offtoworld.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = glc_offtoworld.cpp; sourceTree = ""; }; - 65B36049121C261E003EAD18 /* glc_offtoworld.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = glc_offtoworld.h; sourceTree = ""; }; - 65B3604A121C261E003EAD18 /* glc_stltoworld.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = glc_stltoworld.cpp; sourceTree = ""; }; - 65B3604B121C261E003EAD18 /* glc_stltoworld.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = glc_stltoworld.h; sourceTree = ""; }; - 65B3604C121C261E003EAD18 /* glc_worldto3dxml.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = glc_worldto3dxml.cpp; sourceTree = ""; }; - 65B3604D121C261E003EAD18 /* glc_worldto3dxml.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = glc_worldto3dxml.h; sourceTree = ""; }; - 65B3604F121C261E003EAD18 /* glc_geomtools.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = glc_geomtools.cpp; sourceTree = ""; }; - 65B36050121C261E003EAD18 /* glc_geomtools.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = glc_geomtools.h; sourceTree = ""; }; - 65B36051121C261E003EAD18 /* glc_interpolator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = glc_interpolator.cpp; sourceTree = ""; }; - 65B36052121C261E003EAD18 /* glc_interpolator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = glc_interpolator.h; sourceTree = ""; }; - 65B36053121C261E003EAD18 /* glc_line3d.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = glc_line3d.cpp; sourceTree = ""; }; - 65B36054121C261E003EAD18 /* glc_line3d.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = glc_line3d.h; sourceTree = ""; }; - 65B36055121C261E003EAD18 /* glc_matrix4x4.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = glc_matrix4x4.cpp; sourceTree = ""; }; - 65B36056121C261E003EAD18 /* glc_matrix4x4.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = glc_matrix4x4.h; sourceTree = ""; }; - 65B36057121C261E003EAD18 /* glc_plane.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = glc_plane.cpp; sourceTree = ""; }; - 65B36058121C261E003EAD18 /* glc_plane.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = glc_plane.h; sourceTree = ""; }; - 65B36059121C261E003EAD18 /* glc_utils_maths.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = glc_utils_maths.h; sourceTree = ""; }; - 65B3605A121C261E003EAD18 /* glc_vector2d.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = glc_vector2d.h; sourceTree = ""; }; - 65B3605B121C261E003EAD18 /* glc_vector2df.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = glc_vector2df.h; sourceTree = ""; }; - 65B3605C121C261E003EAD18 /* glc_vector3d.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = glc_vector3d.h; sourceTree = ""; }; - 65B3605D121C261E003EAD18 /* glc_vector3df.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = glc_vector3df.h; sourceTree = ""; }; - 65B3605E121C261E003EAD18 /* glc_vector4d.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = glc_vector4d.cpp; sourceTree = ""; }; - 65B3605F121C261E003EAD18 /* glc_vector4d.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = glc_vector4d.h; sourceTree = ""; }; - 65B36061121C261E003EAD18 /* glc_3dviewcollection.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = glc_3dviewcollection.cpp; sourceTree = ""; }; - 65B36062121C261E003EAD18 /* glc_3dviewcollection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = glc_3dviewcollection.h; sourceTree = ""; }; - 65B36063121C261E003EAD18 /* glc_3dviewinstance.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = glc_3dviewinstance.cpp; sourceTree = ""; }; - 65B36064121C261E003EAD18 /* glc_3dviewinstance.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = glc_3dviewinstance.h; sourceTree = ""; }; - 65B36065121C261E003EAD18 /* glc_attributes.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = glc_attributes.cpp; sourceTree = ""; }; - 65B36066121C261E003EAD18 /* glc_attributes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = glc_attributes.h; sourceTree = ""; }; - 65B36067121C261E003EAD18 /* glc_octree.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = glc_octree.cpp; sourceTree = ""; }; - 65B36068121C261E003EAD18 /* glc_octree.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = glc_octree.h; sourceTree = ""; }; - 65B36069121C261E003EAD18 /* glc_octreenode.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = glc_octreenode.cpp; sourceTree = ""; }; - 65B3606A121C261E003EAD18 /* glc_octreenode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = glc_octreenode.h; sourceTree = ""; }; - 65B3606B121C261E003EAD18 /* glc_spacepartitioning.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = glc_spacepartitioning.cpp; sourceTree = ""; }; - 65B3606C121C261E003EAD18 /* glc_spacepartitioning.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = glc_spacepartitioning.h; sourceTree = ""; }; - 65B3606D121C261E003EAD18 /* glc_structinstance.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = glc_structinstance.cpp; sourceTree = ""; }; - 65B3606E121C261E003EAD18 /* glc_structinstance.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = glc_structinstance.h; sourceTree = ""; }; - 65B3606F121C261E003EAD18 /* glc_structoccurence.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = glc_structoccurence.cpp; sourceTree = ""; }; - 65B36070121C261E003EAD18 /* glc_structoccurence.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = glc_structoccurence.h; sourceTree = ""; }; - 65B36071121C261E003EAD18 /* glc_structreference.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = glc_structreference.cpp; sourceTree = ""; }; - 65B36072121C261E003EAD18 /* glc_structreference.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = glc_structreference.h; sourceTree = ""; }; - 65B36073121C261E003EAD18 /* glc_world.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = glc_world.cpp; sourceTree = ""; }; - 65B36074121C261E003EAD18 /* glc_world.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = glc_world.h; sourceTree = ""; }; - 65B36075121C261E003EAD18 /* glc_worldhandle.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = glc_worldhandle.cpp; sourceTree = ""; }; - 65B36076121C261E003EAD18 /* glc_worldhandle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = glc_worldhandle.h; sourceTree = ""; }; - 65B36078121C261E003EAD18 /* glc_light.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = glc_light.cpp; sourceTree = ""; }; - 65B36079121C261E003EAD18 /* glc_light.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = glc_light.h; sourceTree = ""; }; - 65B3607A121C261E003EAD18 /* glc_material.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = glc_material.cpp; sourceTree = ""; }; - 65B3607B121C261E003EAD18 /* glc_material.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = glc_material.h; sourceTree = ""; }; - 65B3607C121C261E003EAD18 /* glc_renderproperties.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = glc_renderproperties.cpp; sourceTree = ""; }; - 65B3607D121C261E003EAD18 /* glc_renderproperties.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = glc_renderproperties.h; sourceTree = ""; }; - 65B3607E121C261E003EAD18 /* glc_selectionmaterial.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = glc_selectionmaterial.cpp; sourceTree = ""; }; - 65B3607F121C261E003EAD18 /* glc_selectionmaterial.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = glc_selectionmaterial.h; sourceTree = ""; }; - 65B36080121C261E003EAD18 /* glc_shader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = glc_shader.cpp; sourceTree = ""; }; - 65B36081121C261E003EAD18 /* glc_shader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = glc_shader.h; sourceTree = ""; }; - 65B36082121C261E003EAD18 /* glc_texture.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = glc_texture.cpp; sourceTree = ""; }; - 65B36083121C261E003EAD18 /* glc_texture.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = glc_texture.h; sourceTree = ""; }; - 65B36085121C261E003EAD18 /* glc_camera.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = glc_camera.cpp; sourceTree = ""; }; - 65B36086121C261E003EAD18 /* glc_camera.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = glc_camera.h; sourceTree = ""; }; - 65B36087121C261E003EAD18 /* glc_flymover.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = glc_flymover.cpp; sourceTree = ""; }; - 65B36088121C261E003EAD18 /* glc_flymover.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = glc_flymover.h; sourceTree = ""; }; - 65B36089121C261E003EAD18 /* glc_frustum.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = glc_frustum.cpp; sourceTree = ""; }; - 65B3608A121C261E003EAD18 /* glc_frustum.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = glc_frustum.h; sourceTree = ""; }; - 65B3608B121C261E003EAD18 /* glc_imageplane.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = glc_imageplane.cpp; sourceTree = ""; }; - 65B3608C121C261E003EAD18 /* glc_imageplane.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = glc_imageplane.h; sourceTree = ""; }; - 65B3608D121C261E003EAD18 /* glc_mover.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = glc_mover.cpp; sourceTree = ""; }; - 65B3608E121C261E003EAD18 /* glc_mover.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = glc_mover.h; sourceTree = ""; }; - 65B3608F121C261E003EAD18 /* glc_movercontroller.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = glc_movercontroller.cpp; sourceTree = ""; }; - 65B36090121C261E003EAD18 /* glc_movercontroller.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = glc_movercontroller.h; sourceTree = ""; }; - 65B36091121C261E003EAD18 /* glc_panmover.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = glc_panmover.cpp; sourceTree = ""; }; - 65B36092121C261E003EAD18 /* glc_panmover.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = glc_panmover.h; sourceTree = ""; }; - 65B36093121C261E003EAD18 /* glc_repcrossmover.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = glc_repcrossmover.cpp; sourceTree = ""; }; - 65B36094121C261E003EAD18 /* glc_repcrossmover.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = glc_repcrossmover.h; sourceTree = ""; }; - 65B36095121C261E003EAD18 /* glc_repflymover.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = glc_repflymover.cpp; sourceTree = ""; }; - 65B36096121C261E003EAD18 /* glc_repflymover.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = glc_repflymover.h; sourceTree = ""; }; - 65B36097121C261E003EAD18 /* glc_repmover.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = glc_repmover.cpp; sourceTree = ""; }; - 65B36098121C261E003EAD18 /* glc_repmover.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = glc_repmover.h; sourceTree = ""; }; - 65B36099121C261E003EAD18 /* glc_reptrackballmover.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = glc_reptrackballmover.cpp; sourceTree = ""; }; - 65B3609A121C261E003EAD18 /* glc_reptrackballmover.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = glc_reptrackballmover.h; sourceTree = ""; }; - 65B3609B121C261E003EAD18 /* glc_settargetmover.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = glc_settargetmover.cpp; sourceTree = ""; }; - 65B3609C121C261E003EAD18 /* glc_settargetmover.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = glc_settargetmover.h; sourceTree = ""; }; - 65B3609D121C261E003EAD18 /* glc_trackballmover.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = glc_trackballmover.cpp; sourceTree = ""; }; - 65B3609E121C261E003EAD18 /* glc_trackballmover.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = glc_trackballmover.h; sourceTree = ""; }; - 65B3609F121C261E003EAD18 /* glc_turntablemover.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = glc_turntablemover.cpp; sourceTree = ""; }; - 65B360A0121C261E003EAD18 /* glc_turntablemover.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = glc_turntablemover.h; sourceTree = ""; }; - 65B360A1121C261E003EAD18 /* glc_viewport.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = glc_viewport.cpp; sourceTree = ""; }; - 65B360A2121C261E003EAD18 /* glc_viewport.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = glc_viewport.h; sourceTree = ""; }; - 65B360A3121C261E003EAD18 /* glc_zoommover.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = glc_zoommover.cpp; sourceTree = ""; }; - 65B360A4121C261E003EAD18 /* glc_zoommover.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = glc_zoommover.h; sourceTree = ""; }; - 65B360A6121C261E003EAD18 /* AUTHORS */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = AUTHORS; sourceTree = ""; }; - 65B360A7121C261E003EAD18 /* cpl1.0.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = cpl1.0.txt; sourceTree = ""; }; - 65B360A8121C261E003EAD18 /* lgpl-2.1.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "lgpl-2.1.txt"; sourceTree = ""; }; - 65B360A9121C261E003EAD18 /* libqxt.pri */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = libqxt.pri; sourceTree = ""; }; - 65B360AA121C261E003EAD18 /* libqxt.pro */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = libqxt.pro; sourceTree = ""; }; - 65B360AB121C261E003EAD18 /* LICENSE */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = LICENSE; sourceTree = ""; }; - 65B360AC121C261E003EAD18 /* README */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = README; sourceTree = ""; }; - 65B360AF121C261E003EAD18 /* berkeley.pri */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = berkeley.pri; sourceTree = ""; }; - 65B360B0121C261E003EAD18 /* berkeley.pro */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = berkeley.pro; sourceTree = ""; }; - 65B360B1121C261E003EAD18 /* qxtbdb.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtbdb.cpp; sourceTree = ""; }; - 65B360B2121C261E003EAD18 /* qxtbdb.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtbdb.h; sourceTree = ""; }; - 65B360B3121C261E003EAD18 /* qxtbdbhash.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtbdbhash.cpp; sourceTree = ""; }; - 65B360B4121C261E003EAD18 /* qxtbdbhash.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtbdbhash.h; sourceTree = ""; }; - 65B360B5121C261E003EAD18 /* qxtbdbtree.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtbdbtree.cpp; sourceTree = ""; }; - 65B360B6121C261E003EAD18 /* qxtbdbtree.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtbdbtree.h; sourceTree = ""; }; - 65B360B7121C261E003EAD18 /* qxtberkeley.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtberkeley.h; sourceTree = ""; }; - 65B360B9121C261E003EAD18 /* core.pri */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = core.pri; sourceTree = ""; }; - 65B360BA121C261E003EAD18 /* core.pro */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = core.pro; sourceTree = ""; }; - 65B360BC121C261E003EAD18 /* logengines.pri */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = logengines.pri; sourceTree = ""; }; - 65B360BD121C261E003EAD18 /* qxtabstractfileloggerengine.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtabstractfileloggerengine.cpp; sourceTree = ""; }; - 65B360BE121C261E003EAD18 /* qxtabstractfileloggerengine.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtabstractfileloggerengine.h; sourceTree = ""; }; - 65B360BF121C261E003EAD18 /* qxtabstractiologgerengine.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtabstractiologgerengine.cpp; sourceTree = ""; }; - 65B360C0121C261E003EAD18 /* qxtabstractiologgerengine.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtabstractiologgerengine.h; sourceTree = ""; }; - 65B360C1121C261E003EAD18 /* qxtbasicfileloggerengine.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtbasicfileloggerengine.cpp; sourceTree = ""; }; - 65B360C2121C261E003EAD18 /* qxtbasicfileloggerengine.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtbasicfileloggerengine.h; sourceTree = ""; }; - 65B360C3121C261E003EAD18 /* qxtbasicstdloggerengine.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtbasicstdloggerengine.cpp; sourceTree = ""; }; - 65B360C4121C261E003EAD18 /* qxtbasicstdloggerengine.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtbasicstdloggerengine.h; sourceTree = ""; }; - 65B360C5121C261E003EAD18 /* qxtxmlfileloggerengine.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtxmlfileloggerengine.cpp; sourceTree = ""; }; - 65B360C6121C261E003EAD18 /* qxtxmlfileloggerengine.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtxmlfileloggerengine.h; sourceTree = ""; }; - 65B360C7121C261E003EAD18 /* qxtabstractconnectionmanager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtabstractconnectionmanager.cpp; sourceTree = ""; }; - 65B360C8121C261E003EAD18 /* qxtabstractconnectionmanager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtabstractconnectionmanager.h; sourceTree = ""; }; - 65B360C9121C261E003EAD18 /* qxtabstractsignalserializer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtabstractsignalserializer.h; sourceTree = ""; }; - 65B360CA121C261E003EAD18 /* qxtalgorithms.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtalgorithms.h; sourceTree = ""; }; - 65B360CB121C261E003EAD18 /* qxtboundcfunction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtboundcfunction.h; sourceTree = ""; }; - 65B360CC121C261E003EAD18 /* qxtboundfunction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtboundfunction.h; sourceTree = ""; }; - 65B360CD121C261E003EAD18 /* qxtboundfunctionbase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtboundfunctionbase.h; sourceTree = ""; }; - 65B360CE121C261E003EAD18 /* qxtcommandoptions.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtcommandoptions.cpp; sourceTree = ""; }; - 65B360CF121C261E003EAD18 /* qxtcommandoptions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtcommandoptions.h; sourceTree = ""; }; - 65B360D0121C261E003EAD18 /* qxtcore.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtcore.h; sourceTree = ""; }; - 65B360D1121C261E003EAD18 /* qxtcsvmodel.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtcsvmodel.cpp; sourceTree = ""; }; - 65B360D2121C261E003EAD18 /* qxtcsvmodel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtcsvmodel.h; sourceTree = ""; }; - 65B360D3121C261E003EAD18 /* qxtdaemon.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtdaemon.cpp; sourceTree = ""; }; - 65B360D4121C261E003EAD18 /* qxtdaemon.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtdaemon.h; sourceTree = ""; }; - 65B360D5121C261E003EAD18 /* qxtdatastreamsignalserializer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtdatastreamsignalserializer.cpp; sourceTree = ""; }; - 65B360D6121C261E003EAD18 /* qxtdatastreamsignalserializer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtdatastreamsignalserializer.h; sourceTree = ""; }; - 65B360D7121C261E003EAD18 /* qxtdeplex.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtdeplex.cpp; sourceTree = ""; }; - 65B360D8121C261E003EAD18 /* qxtdeplex.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtdeplex.h; sourceTree = ""; }; - 65B360D9121C261E003EAD18 /* qxtdeplex_p.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtdeplex_p.h; sourceTree = ""; }; - 65B360DA121C261E003EAD18 /* qxterror.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxterror.cpp; sourceTree = ""; }; - 65B360DB121C261E003EAD18 /* qxterror.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxterror.h; sourceTree = ""; }; - 65B360DC121C261E003EAD18 /* qxtfifo.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtfifo.cpp; sourceTree = ""; }; - 65B360DD121C261E003EAD18 /* qxtfifo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtfifo.h; sourceTree = ""; }; - 65B360DE121C261E003EAD18 /* qxtfilelock.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtfilelock.cpp; sourceTree = ""; }; - 65B360DF121C261E003EAD18 /* qxtfilelock.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtfilelock.h; sourceTree = ""; }; - 65B360E0121C261E003EAD18 /* qxtfilelock_p.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtfilelock_p.h; sourceTree = ""; }; - 65B360E1121C261E003EAD18 /* qxtfilelock_unix.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtfilelock_unix.cpp; sourceTree = ""; }; - 65B360E2121C261E003EAD18 /* qxtfilelock_win.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtfilelock_win.cpp; sourceTree = ""; }; - 65B360E3121C261E003EAD18 /* qxtglobal.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtglobal.cpp; sourceTree = ""; }; - 65B360E4121C261E003EAD18 /* qxtglobal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtglobal.h; sourceTree = ""; }; - 65B360E5121C261E003EAD18 /* qxthmac.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxthmac.cpp; sourceTree = ""; }; - 65B360E6121C261E003EAD18 /* qxthmac.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxthmac.h; sourceTree = ""; }; - 65B360E7121C261E003EAD18 /* qxtjob.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtjob.cpp; sourceTree = ""; }; - 65B360E8121C261E003EAD18 /* qxtjob.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtjob.h; sourceTree = ""; }; - 65B360E9121C261E003EAD18 /* qxtjob_p.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtjob_p.h; sourceTree = ""; }; - 65B360EA121C261E003EAD18 /* qxtjson.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtjson.cpp; sourceTree = ""; }; - 65B360EB121C261E003EAD18 /* qxtjson.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtjson.h; sourceTree = ""; }; - 65B360EC121C261E003EAD18 /* qxtlinesocket.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtlinesocket.cpp; sourceTree = ""; }; - 65B360ED121C261E003EAD18 /* qxtlinesocket.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtlinesocket.h; sourceTree = ""; }; - 65B360EE121C261E003EAD18 /* qxtlinesocket_p.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtlinesocket_p.h; sourceTree = ""; }; - 65B360EF121C261E003EAD18 /* qxtlinkedtree.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtlinkedtree.cpp; sourceTree = ""; }; - 65B360F0121C261E003EAD18 /* qxtlinkedtree.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtlinkedtree.h; sourceTree = ""; }; - 65B360F1121C261E003EAD18 /* qxtlocale.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtlocale.cpp; sourceTree = ""; }; - 65B360F2121C261E003EAD18 /* qxtlocale.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtlocale.h; sourceTree = ""; }; - 65B360F3121C261E003EAD18 /* qxtlocale_data_p.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtlocale_data_p.h; sourceTree = ""; }; - 65B360F4121C261E003EAD18 /* qxtlogger.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtlogger.cpp; sourceTree = ""; }; - 65B360F5121C261E003EAD18 /* qxtlogger.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtlogger.h; sourceTree = ""; }; - 65B360F6121C261E003EAD18 /* qxtlogger_p.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtlogger_p.h; sourceTree = ""; }; - 65B360F7121C261E003EAD18 /* qxtloggerengine.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtloggerengine.cpp; sourceTree = ""; }; - 65B360F8121C261E003EAD18 /* qxtloggerengine.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtloggerengine.h; sourceTree = ""; }; - 65B360F9121C261E003EAD18 /* qxtlogstream.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtlogstream.cpp; sourceTree = ""; }; - 65B360FA121C261E003EAD18 /* qxtlogstream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtlogstream.h; sourceTree = ""; }; - 65B360FB121C261E003EAD18 /* qxtlogstream_p.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtlogstream_p.h; sourceTree = ""; }; - 65B360FC121C261E003EAD18 /* qxtmetaobject.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtmetaobject.cpp; sourceTree = ""; }; - 65B360FD121C261E003EAD18 /* qxtmetaobject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtmetaobject.h; sourceTree = ""; }; - 65B360FE121C261E003EAD18 /* qxtmetatype.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtmetatype.h; sourceTree = ""; }; - 65B360FF121C261E003EAD18 /* qxtmodelserializer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtmodelserializer.cpp; sourceTree = ""; }; - 65B36100121C261E003EAD18 /* qxtmodelserializer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtmodelserializer.h; sourceTree = ""; }; - 65B36101121C261E003EAD18 /* qxtmultisignalwaiter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtmultisignalwaiter.cpp; sourceTree = ""; }; - 65B36102121C261E003EAD18 /* qxtmultisignalwaiter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtmultisignalwaiter.h; sourceTree = ""; }; - 65B36103121C261E003EAD18 /* qxtnamespace.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtnamespace.h; sourceTree = ""; }; - 65B36104121C261F003EAD18 /* qxtnull.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtnull.cpp; sourceTree = ""; }; - 65B36105121C261F003EAD18 /* qxtnull.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtnull.h; sourceTree = ""; }; - 65B36106121C261F003EAD18 /* qxtnullable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtnullable.h; sourceTree = ""; }; - 65B36107121C261F003EAD18 /* qxtpairlist.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtpairlist.h; sourceTree = ""; }; - 65B36108121C261F003EAD18 /* qxtpimpl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtpimpl.h; sourceTree = ""; }; - 65B36109121C261F003EAD18 /* qxtpipe.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtpipe.cpp; sourceTree = ""; }; - 65B3610A121C261F003EAD18 /* qxtpipe.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtpipe.h; sourceTree = ""; }; - 65B3610B121C261F003EAD18 /* qxtpipe_p.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtpipe_p.h; sourceTree = ""; }; - 65B3610C121C261F003EAD18 /* qxtpointerlist.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtpointerlist.cpp; sourceTree = ""; }; - 65B3610D121C261F003EAD18 /* qxtpointerlist.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtpointerlist.h; sourceTree = ""; }; - 65B3610E121C261F003EAD18 /* qxtrpcservice.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtrpcservice.cpp; sourceTree = ""; }; - 65B3610F121C261F003EAD18 /* qxtrpcservice.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtrpcservice.h; sourceTree = ""; }; - 65B36110121C261F003EAD18 /* qxtrpcservice_p.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtrpcservice_p.h; sourceTree = ""; }; - 65B36111121C261F003EAD18 /* qxtserialdevice.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtserialdevice.cpp; sourceTree = ""; }; - 65B36112121C261F003EAD18 /* qxtserialdevice.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtserialdevice.h; sourceTree = ""; }; - 65B36113121C261F003EAD18 /* qxtserialdevice_p.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtserialdevice_p.h; sourceTree = ""; }; - 65B36114121C261F003EAD18 /* qxtserialdevice_unix.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtserialdevice_unix.cpp; sourceTree = ""; }; - 65B36115121C261F003EAD18 /* qxtsharedprivate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtsharedprivate.h; sourceTree = ""; }; - 65B36116121C261F003EAD18 /* qxtsignalgroup.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtsignalgroup.cpp; sourceTree = ""; }; - 65B36117121C261F003EAD18 /* qxtsignalgroup.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtsignalgroup.h; sourceTree = ""; }; - 65B36118121C261F003EAD18 /* qxtsignalwaiter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtsignalwaiter.cpp; sourceTree = ""; }; - 65B36119121C261F003EAD18 /* qxtsignalwaiter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtsignalwaiter.h; sourceTree = ""; }; - 65B3611A121C261F003EAD18 /* qxtslotjob.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtslotjob.cpp; sourceTree = ""; }; - 65B3611B121C261F003EAD18 /* qxtslotjob.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtslotjob.h; sourceTree = ""; }; - 65B3611C121C261F003EAD18 /* qxtslotjob_p.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtslotjob_p.h; sourceTree = ""; }; - 65B3611D121C261F003EAD18 /* qxtslotmapper.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtslotmapper.cpp; sourceTree = ""; }; - 65B3611E121C261F003EAD18 /* qxtslotmapper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtslotmapper.h; sourceTree = ""; }; - 65B3611F121C261F003EAD18 /* qxtstdio.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtstdio.cpp; sourceTree = ""; }; - 65B36120121C261F003EAD18 /* qxtstdio.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtstdio.h; sourceTree = ""; }; - 65B36121121C261F003EAD18 /* qxtstdio_p.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtstdio_p.h; sourceTree = ""; }; - 65B36122121C261F003EAD18 /* qxtstdstreambufdevice.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtstdstreambufdevice.cpp; sourceTree = ""; }; - 65B36123121C261F003EAD18 /* qxtstdstreambufdevice.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtstdstreambufdevice.h; sourceTree = ""; }; - 65B36124121C261F003EAD18 /* qxttimer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxttimer.cpp; sourceTree = ""; }; - 65B36125121C261F003EAD18 /* qxttimer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxttimer.h; sourceTree = ""; }; - 65B36126121C261F003EAD18 /* qxttypelist.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxttypelist.h; sourceTree = ""; }; - 65B36128121C261F003EAD18 /* designer.pri */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = designer.pri; sourceTree = ""; }; - 65B36129121C261F003EAD18 /* designer.pro */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = designer.pro; sourceTree = ""; }; - 65B3612A121C261F003EAD18 /* Makefile */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; - 65B3612B121C261F003EAD18 /* qxtbasespinboxplugin.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtbasespinboxplugin.cpp; sourceTree = ""; }; - 65B3612C121C261F003EAD18 /* qxtbasespinboxplugin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtbasespinboxplugin.h; sourceTree = ""; }; - 65B3612D121C261F003EAD18 /* qxtcheckcomboboxplugin.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtcheckcomboboxplugin.cpp; sourceTree = ""; }; - 65B3612E121C261F003EAD18 /* qxtcheckcomboboxplugin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtcheckcomboboxplugin.h; sourceTree = ""; }; - 65B3612F121C261F003EAD18 /* qxtcountrycomboboxplugin.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtcountrycomboboxplugin.cpp; sourceTree = ""; }; - 65B36130121C261F003EAD18 /* qxtcountrycomboboxplugin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtcountrycomboboxplugin.h; sourceTree = ""; }; - 65B36131121C261F003EAD18 /* qxtdesignerplugin.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtdesignerplugin.cpp; sourceTree = ""; }; - 65B36132121C261F003EAD18 /* qxtdesignerplugin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtdesignerplugin.h; sourceTree = ""; }; - 65B36133121C261F003EAD18 /* qxtdesignerplugins.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtdesignerplugins.cpp; sourceTree = ""; }; - 65B36134121C261F003EAD18 /* qxtdesignerplugins.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtdesignerplugins.h; sourceTree = ""; }; - 65B36135121C261F003EAD18 /* qxtflowviewplugin.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtflowviewplugin.cpp; sourceTree = ""; }; - 65B36136121C261F003EAD18 /* qxtflowviewplugin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtflowviewplugin.h; sourceTree = ""; }; - 65B36137121C261F003EAD18 /* qxtgroupboxplugin.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtgroupboxplugin.cpp; sourceTree = ""; }; - 65B36138121C261F003EAD18 /* qxtgroupboxplugin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtgroupboxplugin.h; sourceTree = ""; }; - 65B36139121C261F003EAD18 /* qxtlabelplugin.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtlabelplugin.cpp; sourceTree = ""; }; - 65B3613A121C261F003EAD18 /* qxtlabelplugin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtlabelplugin.h; sourceTree = ""; }; - 65B3613B121C261F003EAD18 /* qxtlanguagecomboboxplugin.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtlanguagecomboboxplugin.cpp; sourceTree = ""; }; - 65B3613C121C261F003EAD18 /* qxtlanguagecomboboxplugin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtlanguagecomboboxplugin.h; sourceTree = ""; }; - 65B3613D121C261F003EAD18 /* qxtletterboxwidgetplugin.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtletterboxwidgetplugin.cpp; sourceTree = ""; }; - 65B3613E121C261F003EAD18 /* qxtletterboxwidgetplugin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtletterboxwidgetplugin.h; sourceTree = ""; }; - 65B3613F121C261F003EAD18 /* qxtlineeditplugin.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtlineeditplugin.cpp; sourceTree = ""; }; - 65B36140121C261F003EAD18 /* qxtlineeditplugin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtlineeditplugin.h; sourceTree = ""; }; - 65B36141121C261F003EAD18 /* qxtlistwidgetplugin.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtlistwidgetplugin.cpp; sourceTree = ""; }; - 65B36142121C261F003EAD18 /* qxtlistwidgetplugin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtlistwidgetplugin.h; sourceTree = ""; }; - 65B36143121C261F003EAD18 /* qxtprogresslabelplugin.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtprogresslabelplugin.cpp; sourceTree = ""; }; - 65B36144121C261F003EAD18 /* qxtprogresslabelplugin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtprogresslabelplugin.h; sourceTree = ""; }; - 65B36145121C261F003EAD18 /* qxtpushbuttonplugin.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtpushbuttonplugin.cpp; sourceTree = ""; }; - 65B36146121C261F003EAD18 /* qxtpushbuttonplugin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtpushbuttonplugin.h; sourceTree = ""; }; - 65B36147121C261F003EAD18 /* qxtspansliderplugin.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtspansliderplugin.cpp; sourceTree = ""; }; - 65B36148121C261F003EAD18 /* qxtspansliderplugin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtspansliderplugin.h; sourceTree = ""; }; - 65B36149121C261F003EAD18 /* qxtstarsplugin.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtstarsplugin.cpp; sourceTree = ""; }; - 65B3614A121C261F003EAD18 /* qxtstarsplugin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtstarsplugin.h; sourceTree = ""; }; - 65B3614B121C261F003EAD18 /* qxtstringspinboxplugin.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtstringspinboxplugin.cpp; sourceTree = ""; }; - 65B3614C121C261F003EAD18 /* qxtstringspinboxplugin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtstringspinboxplugin.h; sourceTree = ""; }; - 65B3614D121C261F003EAD18 /* qxttablewidgetplugin.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxttablewidgetplugin.cpp; sourceTree = ""; }; - 65B3614E121C261F003EAD18 /* qxttablewidgetplugin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxttablewidgetplugin.h; sourceTree = ""; }; - 65B3614F121C261F003EAD18 /* qxttreewidgetplugin.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxttreewidgetplugin.cpp; sourceTree = ""; }; - 65B36150121C261F003EAD18 /* qxttreewidgetplugin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxttreewidgetplugin.h; sourceTree = ""; }; - 65B36151121C261F003EAD18 /* resources.qrc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = resources.qrc; sourceTree = ""; }; - 65B36153121C261F003EAD18 /* gui.pri */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = gui.pri; sourceTree = ""; }; - 65B36154121C261F003EAD18 /* gui.pro */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = gui.pro; sourceTree = ""; }; - 65B36155121C261F003EAD18 /* Makefile */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; - 65B36156121C261F003EAD18 /* qxtapplication.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtapplication.cpp; sourceTree = ""; }; - 65B36157121C261F003EAD18 /* qxtapplication.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtapplication.h; sourceTree = ""; }; - 65B36158121C261F003EAD18 /* qxtapplication_mac.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtapplication_mac.cpp; sourceTree = ""; }; - 65B36159121C261F003EAD18 /* qxtapplication_p.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtapplication_p.h; sourceTree = ""; }; - 65B3615A121C261F003EAD18 /* qxtapplication_win.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtapplication_win.cpp; sourceTree = ""; }; - 65B3615B121C261F003EAD18 /* qxtapplication_x11.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtapplication_x11.cpp; sourceTree = ""; }; - 65B3615C121C261F003EAD18 /* qxtbasespinbox.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtbasespinbox.cpp; sourceTree = ""; }; - 65B3615D121C261F003EAD18 /* qxtbasespinbox.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtbasespinbox.h; sourceTree = ""; }; - 65B3615E121C261F003EAD18 /* qxtcheckcombobox.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtcheckcombobox.cpp; sourceTree = ""; }; - 65B3615F121C261F003EAD18 /* qxtcheckcombobox.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtcheckcombobox.h; sourceTree = ""; }; - 65B36160121C261F003EAD18 /* qxtcheckcombobox_p.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtcheckcombobox_p.h; sourceTree = ""; }; - 65B36161121C261F003EAD18 /* qxtconfigdialog.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtconfigdialog.cpp; sourceTree = ""; }; - 65B36162121C261F003EAD18 /* qxtconfigdialog.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtconfigdialog.h; sourceTree = ""; }; - 65B36163121C261F003EAD18 /* qxtconfigdialog_p.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtconfigdialog_p.h; sourceTree = ""; }; - 65B36164121C261F003EAD18 /* qxtconfigwidget.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtconfigwidget.cpp; sourceTree = ""; }; - 65B36165121C261F003EAD18 /* qxtconfigwidget.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtconfigwidget.h; sourceTree = ""; }; - 65B36166121C261F003EAD18 /* qxtconfigwidget_p.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtconfigwidget_p.h; sourceTree = ""; }; - 65B36167121C261F003EAD18 /* qxtconfirmationmessage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtconfirmationmessage.cpp; sourceTree = ""; }; - 65B36168121C261F003EAD18 /* qxtconfirmationmessage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtconfirmationmessage.h; sourceTree = ""; }; - 65B36169121C261F003EAD18 /* qxtcountrycombobox.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtcountrycombobox.cpp; sourceTree = ""; }; - 65B3616A121C261F003EAD18 /* qxtcountrycombobox.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtcountrycombobox.h; sourceTree = ""; }; - 65B3616B121C261F003EAD18 /* qxtcountrycombobox_p.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtcountrycombobox_p.h; sourceTree = ""; }; - 65B3616C121C261F003EAD18 /* qxtcountrymodel.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtcountrymodel.cpp; sourceTree = ""; }; - 65B3616D121C261F003EAD18 /* qxtcountrymodel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtcountrymodel.h; sourceTree = ""; }; - 65B3616E121C261F003EAD18 /* qxtcountrymodel_p.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtcountrymodel_p.h; sourceTree = ""; }; - 65B3616F121C261F003EAD18 /* qxtcrumbview.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtcrumbview.cpp; sourceTree = ""; }; - 65B36170121C261F003EAD18 /* qxtcrumbview.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtcrumbview.h; sourceTree = ""; }; - 65B36171121C261F003EAD18 /* qxtcrumbview_p.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtcrumbview_p.h; sourceTree = ""; }; - 65B36172121C261F003EAD18 /* qxtfilterdialog.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtfilterdialog.cpp; sourceTree = ""; }; - 65B36173121C261F003EAD18 /* qxtfilterdialog.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtfilterdialog.h; sourceTree = ""; }; - 65B36174121C261F003EAD18 /* qxtfilterdialog_p.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtfilterdialog_p.h; sourceTree = ""; }; - 65B36175121C261F003EAD18 /* qxtflowview.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtflowview.cpp; sourceTree = ""; }; - 65B36176121C261F003EAD18 /* qxtflowview.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtflowview.h; sourceTree = ""; }; - 65B36177121C261F003EAD18 /* qxtflowview_p.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtflowview_p.cpp; sourceTree = ""; }; - 65B36178121C261F003EAD18 /* qxtflowview_p.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtflowview_p.h; sourceTree = ""; }; - 65B36179121C261F003EAD18 /* qxtglobalshortcut.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtglobalshortcut.cpp; sourceTree = ""; }; - 65B3617A121C261F003EAD18 /* qxtglobalshortcut.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtglobalshortcut.h; sourceTree = ""; }; - 65B3617B121C261F003EAD18 /* qxtglobalshortcut_mac.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtglobalshortcut_mac.cpp; sourceTree = ""; }; - 65B3617C121C261F003EAD18 /* qxtglobalshortcut_p.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtglobalshortcut_p.h; sourceTree = ""; }; - 65B3617D121C261F003EAD18 /* qxtglobalshortcut_win.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtglobalshortcut_win.cpp; sourceTree = ""; }; - 65B3617E121C261F003EAD18 /* qxtglobalshortcut_x11.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtglobalshortcut_x11.cpp; sourceTree = ""; }; - 65B3617F121C261F003EAD18 /* qxtgroupbox.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtgroupbox.cpp; sourceTree = ""; }; - 65B36180121C261F003EAD18 /* qxtgroupbox.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtgroupbox.h; sourceTree = ""; }; - 65B36181121C261F003EAD18 /* qxtgui.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtgui.h; sourceTree = ""; }; - 65B36182121C261F003EAD18 /* qxtheaderview.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtheaderview.cpp; sourceTree = ""; }; - 65B36183121C261F003EAD18 /* qxtheaderview.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtheaderview.h; sourceTree = ""; }; - 65B36184121C261F003EAD18 /* qxtitemdelegate.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtitemdelegate.cpp; sourceTree = ""; }; - 65B36185121C261F003EAD18 /* qxtitemdelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtitemdelegate.h; sourceTree = ""; }; - 65B36186121C261F003EAD18 /* qxtitemdelegate_p.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtitemdelegate_p.h; sourceTree = ""; }; - 65B36187121C261F003EAD18 /* qxtitemeditorcreator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtitemeditorcreator.h; sourceTree = ""; }; - 65B36188121C261F003EAD18 /* qxtitemeditorcreatorbase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtitemeditorcreatorbase.h; sourceTree = ""; }; - 65B36189121C261F003EAD18 /* qxtlabel.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtlabel.cpp; sourceTree = ""; }; - 65B3618A121C261F003EAD18 /* qxtlabel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtlabel.h; sourceTree = ""; }; - 65B3618B121C261F003EAD18 /* qxtlanguagecombobox.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtlanguagecombobox.cpp; sourceTree = ""; }; - 65B3618C121C261F003EAD18 /* qxtlanguagecombobox.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtlanguagecombobox.h; sourceTree = ""; }; - 65B3618D121C261F003EAD18 /* qxtlanguagecombobox_p.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtlanguagecombobox_p.h; sourceTree = ""; }; - 65B3618E121C261F003EAD18 /* qxtletterboxwidget.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtletterboxwidget.cpp; sourceTree = ""; }; - 65B3618F121C261F003EAD18 /* qxtletterboxwidget.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtletterboxwidget.h; sourceTree = ""; }; - 65B36190121C261F003EAD18 /* qxtletterboxwidget_p.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtletterboxwidget_p.h; sourceTree = ""; }; - 65B36191121C261F003EAD18 /* qxtlineedit.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtlineedit.cpp; sourceTree = ""; }; - 65B36192121C261F003EAD18 /* qxtlineedit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtlineedit.h; sourceTree = ""; }; - 65B36193121C261F003EAD18 /* qxtlistwidget.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtlistwidget.cpp; sourceTree = ""; }; - 65B36194121C261F003EAD18 /* qxtlistwidget.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtlistwidget.h; sourceTree = ""; }; - 65B36195121C261F003EAD18 /* qxtlistwidget_p.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtlistwidget_p.h; sourceTree = ""; }; - 65B36196121C261F003EAD18 /* qxtlistwidgetitem.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtlistwidgetitem.cpp; sourceTree = ""; }; - 65B36197121C261F003EAD18 /* qxtlistwidgetitem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtlistwidgetitem.h; sourceTree = ""; }; - 65B36198121C261F003EAD18 /* qxtlookuplineedit.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtlookuplineedit.cpp; sourceTree = ""; }; - 65B36199121C261F003EAD18 /* qxtlookuplineedit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtlookuplineedit.h; sourceTree = ""; }; - 65B3619A121C261F003EAD18 /* qxtlookuplineedit_p.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtlookuplineedit_p.h; sourceTree = ""; }; - 65B3619B121C261F003EAD18 /* qxtnativeeventfilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtnativeeventfilter.h; sourceTree = ""; }; - 65B3619C121C261F003EAD18 /* qxtprogresslabel.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtprogresslabel.cpp; sourceTree = ""; }; - 65B3619D121C261F003EAD18 /* qxtprogresslabel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtprogresslabel.h; sourceTree = ""; }; - 65B3619E121C261F003EAD18 /* qxtproxystyle.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtproxystyle.cpp; sourceTree = ""; }; - 65B3619F121C261F003EAD18 /* qxtproxystyle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtproxystyle.h; sourceTree = ""; }; - 65B361A0121C261F003EAD18 /* qxtpushbutton.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtpushbutton.cpp; sourceTree = ""; }; - 65B361A1121C261F003EAD18 /* qxtpushbutton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtpushbutton.h; sourceTree = ""; }; - 65B361A2121C261F003EAD18 /* qxtscheduleheaderwidget.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtscheduleheaderwidget.cpp; sourceTree = ""; }; - 65B361A3121C261F003EAD18 /* qxtscheduleheaderwidget.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtscheduleheaderwidget.h; sourceTree = ""; }; - 65B361A4121C261F003EAD18 /* qxtscheduleitemdelegate.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtscheduleitemdelegate.cpp; sourceTree = ""; }; - 65B361A5121C261F003EAD18 /* qxtscheduleitemdelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtscheduleitemdelegate.h; sourceTree = ""; }; - 65B361A6121C261F003EAD18 /* qxtscheduleview.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtscheduleview.cpp; sourceTree = ""; }; - 65B361A7121C261F003EAD18 /* qxtscheduleview.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtscheduleview.h; sourceTree = ""; }; - 65B361A8121C261F003EAD18 /* qxtscheduleview_p.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtscheduleview_p.cpp; sourceTree = ""; }; - 65B361A9121C261F003EAD18 /* qxtscheduleview_p.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtscheduleview_p.h; sourceTree = ""; }; - 65B361AA121C261F003EAD18 /* qxtscheduleviewheadermodel_p.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtscheduleviewheadermodel_p.cpp; sourceTree = ""; }; - 65B361AB121C261F003EAD18 /* qxtscheduleviewheadermodel_p.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtscheduleviewheadermodel_p.h; sourceTree = ""; }; - 65B361AC121C261F003EAD18 /* qxtscreen.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtscreen.cpp; sourceTree = ""; }; - 65B361AD121C261F003EAD18 /* qxtscreen.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtscreen.h; sourceTree = ""; }; - 65B361AE121C261F003EAD18 /* qxtscreen_p.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtscreen_p.h; sourceTree = ""; }; - 65B361AF121C261F003EAD18 /* qxtscreen_win.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtscreen_win.cpp; sourceTree = ""; }; - 65B361B0121C261F003EAD18 /* qxtscreen_x11.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtscreen_x11.cpp; sourceTree = ""; }; - 65B361B1121C261F003EAD18 /* qxtsortfilterproxymodel.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtsortfilterproxymodel.cpp; sourceTree = ""; }; - 65B361B2121C261F003EAD18 /* qxtsortfilterproxymodel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtsortfilterproxymodel.h; sourceTree = ""; }; - 65B361B3121C261F003EAD18 /* qxtspanslider.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtspanslider.cpp; sourceTree = ""; }; - 65B361B4121C261F003EAD18 /* qxtspanslider.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtspanslider.h; sourceTree = ""; }; - 65B361B5121C261F003EAD18 /* qxtspanslider_p.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtspanslider_p.h; sourceTree = ""; }; - 65B361B6121C261F003EAD18 /* qxtstandarditemeditorcreator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtstandarditemeditorcreator.h; sourceTree = ""; }; - 65B361B7121C261F003EAD18 /* qxtstars.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtstars.cpp; sourceTree = ""; }; - 65B361B8121C261F003EAD18 /* qxtstars.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtstars.h; sourceTree = ""; }; - 65B361B9121C261F003EAD18 /* qxtstringspinbox.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtstringspinbox.cpp; sourceTree = ""; }; - 65B361BA121C261F003EAD18 /* qxtstringspinbox.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtstringspinbox.h; sourceTree = ""; }; - 65B361BB121C261F003EAD18 /* qxtstringvalidator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtstringvalidator.cpp; sourceTree = ""; }; - 65B361BC121C261F003EAD18 /* qxtstringvalidator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtstringvalidator.h; sourceTree = ""; }; - 65B361BD121C261F003EAD18 /* qxtstringvalidator_p.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtstringvalidator_p.h; sourceTree = ""; }; - 65B361BE121C261F003EAD18 /* qxtstyleoptionscheduleviewitem.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtstyleoptionscheduleviewitem.cpp; sourceTree = ""; }; - 65B361BF121C261F003EAD18 /* qxtstyleoptionscheduleviewitem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtstyleoptionscheduleviewitem.h; sourceTree = ""; }; - 65B361C0121C261F003EAD18 /* qxttablewidget.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxttablewidget.cpp; sourceTree = ""; }; - 65B361C1121C261F003EAD18 /* qxttablewidget.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxttablewidget.h; sourceTree = ""; }; - 65B361C2121C261F003EAD18 /* qxttablewidget_p.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxttablewidget_p.h; sourceTree = ""; }; - 65B361C3121C261F003EAD18 /* qxttablewidgetitem.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxttablewidgetitem.cpp; sourceTree = ""; }; - 65B361C4121C261F003EAD18 /* qxttablewidgetitem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxttablewidgetitem.h; sourceTree = ""; }; - 65B361C5121C261F003EAD18 /* qxttabwidget.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxttabwidget.cpp; sourceTree = ""; }; - 65B361C6121C261F003EAD18 /* qxttabwidget.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxttabwidget.h; sourceTree = ""; }; - 65B361C7121C261F003EAD18 /* qxttabwidget_p.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxttabwidget_p.h; sourceTree = ""; }; - 65B361C8121C261F003EAD18 /* qxttooltip.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxttooltip.cpp; sourceTree = ""; }; - 65B361C9121C261F003EAD18 /* qxttooltip.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxttooltip.h; sourceTree = ""; }; - 65B361CA121C261F003EAD18 /* qxttooltip_p.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxttooltip_p.h; sourceTree = ""; }; - 65B361CB121C261F003EAD18 /* qxttreewidget.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxttreewidget.cpp; sourceTree = ""; }; - 65B361CC121C261F003EAD18 /* qxttreewidget.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxttreewidget.h; sourceTree = ""; }; - 65B361CD121C261F003EAD18 /* qxttreewidget_p.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxttreewidget_p.h; sourceTree = ""; }; - 65B361CE121C261F003EAD18 /* qxttreewidgetitem.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxttreewidgetitem.cpp; sourceTree = ""; }; - 65B361CF121C261F003EAD18 /* qxttreewidgetitem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxttreewidgetitem.h; sourceTree = ""; }; - 65B361D0121C261F003EAD18 /* qxtwindowsystem.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtwindowsystem.cpp; sourceTree = ""; }; - 65B361D1121C261F003EAD18 /* qxtwindowsystem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtwindowsystem.h; sourceTree = ""; }; - 65B361D2121C261F003EAD18 /* qxtwindowsystem_win.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtwindowsystem_win.cpp; sourceTree = ""; }; - 65B361D3121C261F003EAD18 /* qxtwindowsystem_x11.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtwindowsystem_x11.cpp; sourceTree = ""; }; - 65B361D6121C261F003EAD18 /* AD.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = AD.png; sourceTree = ""; }; - 65B361D7121C261F003EAD18 /* AE.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = AE.png; sourceTree = ""; }; - 65B361D8121C261F003EAD18 /* AF.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = AF.png; sourceTree = ""; }; - 65B361D9121C261F003EAD18 /* AG.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = AG.png; sourceTree = ""; }; - 65B361DA121C261F003EAD18 /* AI.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = AI.png; sourceTree = ""; }; - 65B361DB121C261F003EAD18 /* AL.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = AL.png; sourceTree = ""; }; - 65B361DC121C261F003EAD18 /* AM.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = AM.png; sourceTree = ""; }; - 65B361DD121C261F003EAD18 /* AN.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = AN.png; sourceTree = ""; }; - 65B361DE121C261F003EAD18 /* AO.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = AO.png; sourceTree = ""; }; - 65B361DF121C261F003EAD18 /* AQ.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = AQ.png; sourceTree = ""; }; - 65B361E0121C261F003EAD18 /* AR.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = AR.png; sourceTree = ""; }; - 65B361E1121C261F003EAD18 /* AS.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = AS.png; sourceTree = ""; }; - 65B361E2121C261F003EAD18 /* AT.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = AT.png; sourceTree = ""; }; - 65B361E3121C261F003EAD18 /* AU.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = AU.png; sourceTree = ""; }; - 65B361E4121C261F003EAD18 /* AW.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = AW.png; sourceTree = ""; }; - 65B361E5121C261F003EAD18 /* AX.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = AX.png; sourceTree = ""; }; - 65B361E6121C261F003EAD18 /* AZ.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = AZ.png; sourceTree = ""; }; - 65B361E7121C261F003EAD18 /* BA.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = BA.png; sourceTree = ""; }; - 65B361E8121C261F003EAD18 /* BB.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = BB.png; sourceTree = ""; }; - 65B361E9121C261F003EAD18 /* BD.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = BD.png; sourceTree = ""; }; - 65B361EA121C261F003EAD18 /* BE.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = BE.png; sourceTree = ""; }; - 65B361EB121C261F003EAD18 /* BF.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = BF.png; sourceTree = ""; }; - 65B361EC121C261F003EAD18 /* BG.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = BG.png; sourceTree = ""; }; - 65B361ED121C261F003EAD18 /* BH.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = BH.png; sourceTree = ""; }; - 65B361EE121C261F003EAD18 /* BI.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = BI.png; sourceTree = ""; }; - 65B361EF121C261F003EAD18 /* BJ.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = BJ.png; sourceTree = ""; }; - 65B361F0121C261F003EAD18 /* BM.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = BM.png; sourceTree = ""; }; - 65B361F1121C261F003EAD18 /* BN.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = BN.png; sourceTree = ""; }; - 65B361F2121C261F003EAD18 /* BO.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = BO.png; sourceTree = ""; }; - 65B361F3121C261F003EAD18 /* BR.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = BR.png; sourceTree = ""; }; - 65B361F4121C261F003EAD18 /* BS.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = BS.png; sourceTree = ""; }; - 65B361F5121C261F003EAD18 /* BT.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = BT.png; sourceTree = ""; }; - 65B361F6121C261F003EAD18 /* BV.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = BV.png; sourceTree = ""; }; - 65B361F7121C261F003EAD18 /* BW.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = BW.png; sourceTree = ""; }; - 65B361F8121C261F003EAD18 /* BY.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = BY.png; sourceTree = ""; }; - 65B361F9121C261F003EAD18 /* BZ.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = BZ.png; sourceTree = ""; }; - 65B361FA121C261F003EAD18 /* C.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = C.png; sourceTree = ""; }; - 65B361FB121C261F003EAD18 /* CA.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = CA.png; sourceTree = ""; }; - 65B361FC121C261F003EAD18 /* CC.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = CC.png; sourceTree = ""; }; - 65B361FD121C261F003EAD18 /* CD.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = CD.png; sourceTree = ""; }; - 65B361FE121C261F003EAD18 /* CF.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = CF.png; sourceTree = ""; }; - 65B361FF121C261F003EAD18 /* CG.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = CG.png; sourceTree = ""; }; - 65B36200121C261F003EAD18 /* CH.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = CH.png; sourceTree = ""; }; - 65B36201121C261F003EAD18 /* CI.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = CI.png; sourceTree = ""; }; - 65B36202121C261F003EAD18 /* CK.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = CK.png; sourceTree = ""; }; - 65B36203121C261F003EAD18 /* CL.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = CL.png; sourceTree = ""; }; - 65B36204121C261F003EAD18 /* CM.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = CM.png; sourceTree = ""; }; - 65B36205121C261F003EAD18 /* CN.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = CN.png; sourceTree = ""; }; - 65B36206121C261F003EAD18 /* CO.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = CO.png; sourceTree = ""; }; - 65B36207121C261F003EAD18 /* CR.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = CR.png; sourceTree = ""; }; - 65B36208121C261F003EAD18 /* CS.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = CS.png; sourceTree = ""; }; - 65B36209121C261F003EAD18 /* CU.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = CU.png; sourceTree = ""; }; - 65B3620A121C261F003EAD18 /* CV.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = CV.png; sourceTree = ""; }; - 65B3620B121C261F003EAD18 /* CX.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = CX.png; sourceTree = ""; }; - 65B3620C121C261F003EAD18 /* CY.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = CY.png; sourceTree = ""; }; - 65B3620D121C261F003EAD18 /* CZ.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = CZ.png; sourceTree = ""; }; - 65B3620E121C261F003EAD18 /* DE.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = DE.png; sourceTree = ""; }; - 65B3620F121C261F003EAD18 /* DJ.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = DJ.png; sourceTree = ""; }; - 65B36210121C261F003EAD18 /* DK.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = DK.png; sourceTree = ""; }; - 65B36211121C261F003EAD18 /* DM.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = DM.png; sourceTree = ""; }; - 65B36212121C261F003EAD18 /* DO.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = DO.png; sourceTree = ""; }; - 65B36213121C261F003EAD18 /* DZ.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = DZ.png; sourceTree = ""; }; - 65B36214121C261F003EAD18 /* EC.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = EC.png; sourceTree = ""; }; - 65B36215121C261F003EAD18 /* EE.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = EE.png; sourceTree = ""; }; - 65B36216121C261F003EAD18 /* EG.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = EG.png; sourceTree = ""; }; - 65B36217121C261F003EAD18 /* EH.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = EH.png; sourceTree = ""; }; - 65B36218121C261F003EAD18 /* ER.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ER.png; sourceTree = ""; }; - 65B36219121C261F003EAD18 /* ES.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ES.png; sourceTree = ""; }; - 65B3621A121C261F003EAD18 /* ET.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ET.png; sourceTree = ""; }; - 65B3621B121C261F003EAD18 /* FI.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = FI.png; sourceTree = ""; }; - 65B3621C121C261F003EAD18 /* FJ.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = FJ.png; sourceTree = ""; }; - 65B3621D121C261F003EAD18 /* FK.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = FK.png; sourceTree = ""; }; - 65B3621E121C261F003EAD18 /* FM.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = FM.png; sourceTree = ""; }; - 65B3621F121C261F003EAD18 /* FO.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = FO.png; sourceTree = ""; }; - 65B36220121C261F003EAD18 /* FR.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = FR.png; sourceTree = ""; }; - 65B36221121C261F003EAD18 /* FX.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = FX.png; sourceTree = ""; }; - 65B36222121C261F003EAD18 /* GA.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = GA.png; sourceTree = ""; }; - 65B36223121C261F003EAD18 /* GB.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = GB.png; sourceTree = ""; }; - 65B36224121C261F003EAD18 /* GD.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = GD.png; sourceTree = ""; }; - 65B36225121C261F003EAD18 /* GE.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = GE.png; sourceTree = ""; }; - 65B36226121C261F003EAD18 /* GF.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = GF.png; sourceTree = ""; }; - 65B36227121C261F003EAD18 /* GG.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = GG.png; sourceTree = ""; }; - 65B36228121C261F003EAD18 /* GH.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = GH.png; sourceTree = ""; }; - 65B36229121C261F003EAD18 /* GI.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = GI.png; sourceTree = ""; }; - 65B3622A121C261F003EAD18 /* GL.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = GL.png; sourceTree = ""; }; - 65B3622B121C261F003EAD18 /* GM.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = GM.png; sourceTree = ""; }; - 65B3622C121C261F003EAD18 /* GN.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = GN.png; sourceTree = ""; }; - 65B3622D121C261F003EAD18 /* GP.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = GP.png; sourceTree = ""; }; - 65B3622E121C261F003EAD18 /* GQ.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = GQ.png; sourceTree = ""; }; - 65B3622F121C261F003EAD18 /* GR.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = GR.png; sourceTree = ""; }; - 65B36230121C261F003EAD18 /* GS.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = GS.png; sourceTree = ""; }; - 65B36231121C261F003EAD18 /* GT.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = GT.png; sourceTree = ""; }; - 65B36232121C261F003EAD18 /* GU.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = GU.png; sourceTree = ""; }; - 65B36233121C261F003EAD18 /* GW.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = GW.png; sourceTree = ""; }; - 65B36234121C261F003EAD18 /* GY.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = GY.png; sourceTree = ""; }; - 65B36235121C261F003EAD18 /* HK.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = HK.png; sourceTree = ""; }; - 65B36236121C261F003EAD18 /* HM.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = HM.png; sourceTree = ""; }; - 65B36237121C261F003EAD18 /* HN.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = HN.png; sourceTree = ""; }; - 65B36238121C261F003EAD18 /* HR.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = HR.png; sourceTree = ""; }; - 65B36239121C261F003EAD18 /* HT.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = HT.png; sourceTree = ""; }; - 65B3623A121C261F003EAD18 /* HU.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = HU.png; sourceTree = ""; }; - 65B3623B121C261F003EAD18 /* ID.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ID.png; sourceTree = ""; }; - 65B3623C121C261F003EAD18 /* IE.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = IE.png; sourceTree = ""; }; - 65B3623D121C261F003EAD18 /* IL.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = IL.png; sourceTree = ""; }; - 65B3623E121C261F003EAD18 /* IM.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = IM.png; sourceTree = ""; }; - 65B3623F121C261F003EAD18 /* IN.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = IN.png; sourceTree = ""; }; - 65B36240121C261F003EAD18 /* IO.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = IO.png; sourceTree = ""; }; - 65B36241121C261F003EAD18 /* IQ.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = IQ.png; sourceTree = ""; }; - 65B36242121C261F003EAD18 /* IR.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = IR.png; sourceTree = ""; }; - 65B36243121C261F003EAD18 /* IS.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = IS.png; sourceTree = ""; }; - 65B36244121C261F003EAD18 /* IT.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = IT.png; sourceTree = ""; }; - 65B36245121C261F003EAD18 /* JE.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = JE.png; sourceTree = ""; }; - 65B36246121C261F003EAD18 /* JM.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = JM.png; sourceTree = ""; }; - 65B36247121C261F003EAD18 /* JO.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = JO.png; sourceTree = ""; }; - 65B36248121C261F003EAD18 /* JP.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = JP.png; sourceTree = ""; }; - 65B36249121C261F003EAD18 /* KE.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = KE.png; sourceTree = ""; }; - 65B3624A121C261F003EAD18 /* KG.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = KG.png; sourceTree = ""; }; - 65B3624B121C261F003EAD18 /* KH.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = KH.png; sourceTree = ""; }; - 65B3624C121C261F003EAD18 /* KI.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = KI.png; sourceTree = ""; }; - 65B3624D121C261F003EAD18 /* KM.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = KM.png; sourceTree = ""; }; - 65B3624E121C261F003EAD18 /* KN.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = KN.png; sourceTree = ""; }; - 65B3624F121C261F003EAD18 /* KP.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = KP.png; sourceTree = ""; }; - 65B36250121C261F003EAD18 /* KR.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = KR.png; sourceTree = ""; }; - 65B36251121C261F003EAD18 /* KW.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = KW.png; sourceTree = ""; }; - 65B36252121C261F003EAD18 /* KY.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = KY.png; sourceTree = ""; }; - 65B36253121C261F003EAD18 /* KZ.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = KZ.png; sourceTree = ""; }; - 65B36254121C261F003EAD18 /* LA.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = LA.png; sourceTree = ""; }; - 65B36255121C261F003EAD18 /* LB.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = LB.png; sourceTree = ""; }; - 65B36256121C261F003EAD18 /* LC.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = LC.png; sourceTree = ""; }; - 65B36257121C261F003EAD18 /* LI.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = LI.png; sourceTree = ""; }; - 65B36258121C261F003EAD18 /* LK.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = LK.png; sourceTree = ""; }; - 65B36259121C261F003EAD18 /* LR.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = LR.png; sourceTree = ""; }; - 65B3625A121C261F003EAD18 /* LS.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = LS.png; sourceTree = ""; }; - 65B3625B121C261F003EAD18 /* LT.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = LT.png; sourceTree = ""; }; - 65B3625C121C261F003EAD18 /* LU.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = LU.png; sourceTree = ""; }; - 65B3625D121C261F003EAD18 /* LV.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = LV.png; sourceTree = ""; }; - 65B3625E121C261F003EAD18 /* LY.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = LY.png; sourceTree = ""; }; - 65B3625F121C261F003EAD18 /* MA.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = MA.png; sourceTree = ""; }; - 65B36260121C261F003EAD18 /* MC.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = MC.png; sourceTree = ""; }; - 65B36261121C261F003EAD18 /* MD.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = MD.png; sourceTree = ""; }; - 65B36262121C261F003EAD18 /* ME.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ME.png; sourceTree = ""; }; - 65B36263121C261F003EAD18 /* MG.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = MG.png; sourceTree = ""; }; - 65B36264121C261F003EAD18 /* MH.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = MH.png; sourceTree = ""; }; - 65B36265121C261F003EAD18 /* MK.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = MK.png; sourceTree = ""; }; - 65B36266121C261F003EAD18 /* ML.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ML.png; sourceTree = ""; }; - 65B36267121C261F003EAD18 /* MM.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = MM.png; sourceTree = ""; }; - 65B36268121C261F003EAD18 /* MN.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = MN.png; sourceTree = ""; }; - 65B36269121C261F003EAD18 /* MO.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = MO.png; sourceTree = ""; }; - 65B3626A121C261F003EAD18 /* MP.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = MP.png; sourceTree = ""; }; - 65B3626B121C261F003EAD18 /* MQ.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = MQ.png; sourceTree = ""; }; - 65B3626C121C261F003EAD18 /* MR.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = MR.png; sourceTree = ""; }; - 65B3626D121C261F003EAD18 /* MS.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = MS.png; sourceTree = ""; }; - 65B3626E121C261F003EAD18 /* MT.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = MT.png; sourceTree = ""; }; - 65B3626F121C261F003EAD18 /* MU.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = MU.png; sourceTree = ""; }; - 65B36270121C261F003EAD18 /* MV.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = MV.png; sourceTree = ""; }; - 65B36271121C261F003EAD18 /* MW.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = MW.png; sourceTree = ""; }; - 65B36272121C261F003EAD18 /* MX.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = MX.png; sourceTree = ""; }; - 65B36273121C261F003EAD18 /* MY.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = MY.png; sourceTree = ""; }; - 65B36274121C261F003EAD18 /* MZ.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = MZ.png; sourceTree = ""; }; - 65B36275121C261F003EAD18 /* NA.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = NA.png; sourceTree = ""; }; - 65B36276121C261F003EAD18 /* NC.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = NC.png; sourceTree = ""; }; - 65B36277121C261F003EAD18 /* NE.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = NE.png; sourceTree = ""; }; - 65B36278121C261F003EAD18 /* NF.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = NF.png; sourceTree = ""; }; - 65B36279121C261F003EAD18 /* NG.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = NG.png; sourceTree = ""; }; - 65B3627A121C261F003EAD18 /* NI.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = NI.png; sourceTree = ""; }; - 65B3627B121C261F003EAD18 /* NL.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = NL.png; sourceTree = ""; }; - 65B3627C121C261F003EAD18 /* NO.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = NO.png; sourceTree = ""; }; - 65B3627D121C261F003EAD18 /* NP.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = NP.png; sourceTree = ""; }; - 65B3627E121C261F003EAD18 /* NR.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = NR.png; sourceTree = ""; }; - 65B3627F121C261F003EAD18 /* NU.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = NU.png; sourceTree = ""; }; - 65B36280121C261F003EAD18 /* NZ.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = NZ.png; sourceTree = ""; }; - 65B36281121C261F003EAD18 /* OM.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = OM.png; sourceTree = ""; }; - 65B36282121C261F003EAD18 /* PA.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = PA.png; sourceTree = ""; }; - 65B36283121C261F003EAD18 /* PE.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = PE.png; sourceTree = ""; }; - 65B36284121C261F003EAD18 /* PF.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = PF.png; sourceTree = ""; }; - 65B36285121C261F003EAD18 /* PG.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = PG.png; sourceTree = ""; }; - 65B36286121C261F003EAD18 /* PH.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = PH.png; sourceTree = ""; }; - 65B36287121C261F003EAD18 /* PK.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = PK.png; sourceTree = ""; }; - 65B36288121C261F003EAD18 /* PL.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = PL.png; sourceTree = ""; }; - 65B36289121C261F003EAD18 /* PM.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = PM.png; sourceTree = ""; }; - 65B3628A121C261F003EAD18 /* PN.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = PN.png; sourceTree = ""; }; - 65B3628B121C261F003EAD18 /* PR.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = PR.png; sourceTree = ""; }; - 65B3628C121C261F003EAD18 /* PS.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = PS.png; sourceTree = ""; }; - 65B3628D121C261F003EAD18 /* PT.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = PT.png; sourceTree = ""; }; - 65B3628E121C261F003EAD18 /* PW.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = PW.png; sourceTree = ""; }; - 65B3628F121C261F003EAD18 /* PY.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = PY.png; sourceTree = ""; }; - 65B36290121C261F003EAD18 /* QA.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = QA.png; sourceTree = ""; }; - 65B36291121C261F003EAD18 /* RE.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = RE.png; sourceTree = ""; }; - 65B36292121C261F003EAD18 /* RO.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = RO.png; sourceTree = ""; }; - 65B36293121C261F003EAD18 /* RS.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = RS.png; sourceTree = ""; }; - 65B36294121C261F003EAD18 /* RU.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = RU.png; sourceTree = ""; }; - 65B36295121C261F003EAD18 /* RW.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = RW.png; sourceTree = ""; }; - 65B36296121C261F003EAD18 /* SA.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = SA.png; sourceTree = ""; }; - 65B36297121C261F003EAD18 /* SB.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = SB.png; sourceTree = ""; }; - 65B36298121C261F003EAD18 /* SC.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = SC.png; sourceTree = ""; }; - 65B36299121C261F003EAD18 /* SD.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = SD.png; sourceTree = ""; }; - 65B3629A121C261F003EAD18 /* SE.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = SE.png; sourceTree = ""; }; - 65B3629B121C261F003EAD18 /* SG.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = SG.png; sourceTree = ""; }; - 65B3629C121C261F003EAD18 /* SH.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = SH.png; sourceTree = ""; }; - 65B3629D121C261F003EAD18 /* SI.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = SI.png; sourceTree = ""; }; - 65B3629E121C261F003EAD18 /* SJ.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = SJ.png; sourceTree = ""; }; - 65B3629F121C261F003EAD18 /* SK.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = SK.png; sourceTree = ""; }; - 65B362A0121C261F003EAD18 /* SL.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = SL.png; sourceTree = ""; }; - 65B362A1121C261F003EAD18 /* SM.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = SM.png; sourceTree = ""; }; - 65B362A2121C261F003EAD18 /* SN.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = SN.png; sourceTree = ""; }; - 65B362A3121C261F003EAD18 /* SO.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = SO.png; sourceTree = ""; }; - 65B362A4121C261F003EAD18 /* SR.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = SR.png; sourceTree = ""; }; - 65B362A5121C261F003EAD18 /* ST.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ST.png; sourceTree = ""; }; - 65B362A6121C261F003EAD18 /* SV.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = SV.png; sourceTree = ""; }; - 65B362A7121C261F003EAD18 /* SY.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = SY.png; sourceTree = ""; }; - 65B362A8121C261F003EAD18 /* SZ.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = SZ.png; sourceTree = ""; }; - 65B362A9121C261F003EAD18 /* TC.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = TC.png; sourceTree = ""; }; - 65B362AA121C261F003EAD18 /* TD.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = TD.png; sourceTree = ""; }; - 65B362AB121C261F003EAD18 /* TF.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = TF.png; sourceTree = ""; }; - 65B362AC121C261F003EAD18 /* TG.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = TG.png; sourceTree = ""; }; - 65B362AD121C261F003EAD18 /* TH.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = TH.png; sourceTree = ""; }; - 65B362AE121C261F003EAD18 /* TJ.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = TJ.png; sourceTree = ""; }; - 65B362AF121C261F003EAD18 /* TK.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = TK.png; sourceTree = ""; }; - 65B362B0121C261F003EAD18 /* TL.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = TL.png; sourceTree = ""; }; - 65B362B1121C261F003EAD18 /* TM.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = TM.png; sourceTree = ""; }; - 65B362B2121C261F003EAD18 /* TN.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = TN.png; sourceTree = ""; }; - 65B362B3121C261F003EAD18 /* TO.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = TO.png; sourceTree = ""; }; - 65B362B4121C261F003EAD18 /* TR.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = TR.png; sourceTree = ""; }; - 65B362B5121C261F003EAD18 /* TT.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = TT.png; sourceTree = ""; }; - 65B362B6121C261F003EAD18 /* TV.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = TV.png; sourceTree = ""; }; - 65B362B7121C261F003EAD18 /* TW.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = TW.png; sourceTree = ""; }; - 65B362B8121C261F003EAD18 /* TZ.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = TZ.png; sourceTree = ""; }; - 65B362B9121C261F003EAD18 /* UA.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = UA.png; sourceTree = ""; }; - 65B362BA121C261F003EAD18 /* UG.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = UG.png; sourceTree = ""; }; - 65B362BB121C261F003EAD18 /* UM.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = UM.png; sourceTree = ""; }; - 65B362BC121C261F003EAD18 /* US.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = US.png; sourceTree = ""; }; - 65B362BD121C261F003EAD18 /* UY.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = UY.png; sourceTree = ""; }; - 65B362BE121C261F003EAD18 /* UZ.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = UZ.png; sourceTree = ""; }; - 65B362BF121C261F003EAD18 /* VA.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = VA.png; sourceTree = ""; }; - 65B362C0121C261F003EAD18 /* VC.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = VC.png; sourceTree = ""; }; - 65B362C1121C261F003EAD18 /* VE.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = VE.png; sourceTree = ""; }; - 65B362C2121C261F003EAD18 /* VG.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = VG.png; sourceTree = ""; }; - 65B362C3121C261F003EAD18 /* VI.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = VI.png; sourceTree = ""; }; - 65B362C4121C261F003EAD18 /* VN.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = VN.png; sourceTree = ""; }; - 65B362C5121C261F003EAD18 /* VU.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = VU.png; sourceTree = ""; }; - 65B362C6121C261F003EAD18 /* WF.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = WF.png; sourceTree = ""; }; - 65B362C7121C261F003EAD18 /* WS.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = WS.png; sourceTree = ""; }; - 65B362C8121C261F003EAD18 /* YE.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = YE.png; sourceTree = ""; }; - 65B362C9121C261F003EAD18 /* YT.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = YT.png; sourceTree = ""; }; - 65B362CA121C261F003EAD18 /* ZA.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ZA.png; sourceTree = ""; }; - 65B362CB121C261F003EAD18 /* ZM.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ZM.png; sourceTree = ""; }; - 65B362CC121C261F003EAD18 /* ZW.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ZW.png; sourceTree = ""; }; - 65B362CD121C261F003EAD18 /* resources.qrc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = resources.qrc; sourceTree = ""; }; - 65B362CF121C261F003EAD18 /* Makefile */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; - 65B362D0121C261F003EAD18 /* network.pri */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = network.pri; sourceTree = ""; }; - 65B362D1121C261F003EAD18 /* network.pro */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = network.pro; sourceTree = ""; }; - 65B362D2121C261F003EAD18 /* qxtjsonrpccall.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtjsonrpccall.cpp; sourceTree = ""; }; - 65B362D3121C261F003EAD18 /* qxtjsonrpccall.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtjsonrpccall.h; sourceTree = ""; }; - 65B362D4121C261F003EAD18 /* qxtjsonrpcclient.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtjsonrpcclient.cpp; sourceTree = ""; }; - 65B362D5121C261F003EAD18 /* qxtjsonrpcclient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtjsonrpcclient.h; sourceTree = ""; }; - 65B362D6121C261F003EAD18 /* qxtmail_p.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtmail_p.h; sourceTree = ""; }; - 65B362D7121C261F003EAD18 /* qxtmailattachment.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtmailattachment.cpp; sourceTree = ""; }; - 65B362D8121C261F003EAD18 /* qxtmailattachment.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtmailattachment.h; sourceTree = ""; }; - 65B362D9121C261F003EAD18 /* qxtmailmessage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtmailmessage.cpp; sourceTree = ""; }; - 65B362DA121C261F003EAD18 /* qxtmailmessage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtmailmessage.h; sourceTree = ""; }; - 65B362DB121C261F003EAD18 /* qxtnetwork.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtnetwork.h; sourceTree = ""; }; - 65B362DC121C261F003EAD18 /* qxtrpcpeer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtrpcpeer.cpp; sourceTree = ""; }; - 65B362DD121C261F003EAD18 /* qxtrpcpeer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtrpcpeer.h; sourceTree = ""; }; - 65B362DE121C261F003EAD18 /* qxtsmtp.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtsmtp.cpp; sourceTree = ""; }; - 65B362DF121C261F003EAD18 /* qxtsmtp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtsmtp.h; sourceTree = ""; }; - 65B362E0121C261F003EAD18 /* qxtsmtp_p.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtsmtp_p.h; sourceTree = ""; }; - 65B362E1121C261F003EAD18 /* qxttcpconnectionmanager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxttcpconnectionmanager.cpp; sourceTree = ""; }; - 65B362E2121C261F003EAD18 /* qxttcpconnectionmanager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxttcpconnectionmanager.h; sourceTree = ""; }; - 65B362E3121C261F003EAD18 /* qxttcpconnectionmanager_p.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxttcpconnectionmanager_p.h; sourceTree = ""; }; - 65B362E4121C261F003EAD18 /* qxtxmlrpc_p.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtxmlrpc_p.cpp; sourceTree = ""; }; - 65B362E5121C261F003EAD18 /* qxtxmlrpc_p.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtxmlrpc_p.h; sourceTree = ""; }; - 65B362E6121C261F003EAD18 /* qxtxmlrpccall.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtxmlrpccall.cpp; sourceTree = ""; }; - 65B362E7121C261F003EAD18 /* qxtxmlrpccall.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtxmlrpccall.h; sourceTree = ""; }; - 65B362E8121C261F003EAD18 /* qxtxmlrpcclient.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtxmlrpcclient.cpp; sourceTree = ""; }; - 65B362E9121C261F003EAD18 /* qxtxmlrpcclient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtxmlrpcclient.h; sourceTree = ""; }; - 65B362EA121C261F003EAD18 /* qxtbase.pri */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = qxtbase.pri; sourceTree = ""; }; - 65B362EB121C261F003EAD18 /* qxtlibs.pri */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = qxtlibs.pri; sourceTree = ""; }; - 65B362ED121C261F003EAD18 /* Makefile */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; - 65B362EE121C261F003EAD18 /* qxtsql.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtsql.h; sourceTree = ""; }; - 65B362EF121C261F003EAD18 /* qxtsqlpackage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtsqlpackage.cpp; sourceTree = ""; }; - 65B362F0121C261F003EAD18 /* qxtsqlpackage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtsqlpackage.h; sourceTree = ""; }; - 65B362F1121C261F003EAD18 /* qxtsqlpackagemodel.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtsqlpackagemodel.cpp; sourceTree = ""; }; - 65B362F2121C261F003EAD18 /* qxtsqlpackagemodel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtsqlpackagemodel.h; sourceTree = ""; }; - 65B362F3121C261F003EAD18 /* sql.pri */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = sql.pri; sourceTree = ""; }; - 65B362F4121C261F003EAD18 /* sql.pro */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = sql.pro; sourceTree = ""; }; - 65B362F6121C261F003EAD18 /* Makefile */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; - 65B362F7121C261F003EAD18 /* qxtabstracthttpconnector.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtabstracthttpconnector.cpp; sourceTree = ""; }; - 65B362F8121C261F003EAD18 /* qxtabstracthttpconnector.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtabstracthttpconnector.h; sourceTree = ""; }; - 65B362F9121C261F003EAD18 /* qxtabstractwebservice.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtabstractwebservice.cpp; sourceTree = ""; }; - 65B362FA121C261F003EAD18 /* qxtabstractwebservice.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtabstractwebservice.h; sourceTree = ""; }; - 65B362FB121C261F003EAD18 /* qxtabstractwebsessionmanager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtabstractwebsessionmanager.cpp; sourceTree = ""; }; - 65B362FC121C261F003EAD18 /* qxtabstractwebsessionmanager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtabstractwebsessionmanager.h; sourceTree = ""; }; - 65B362FD121C261F003EAD18 /* qxtabstractwebsessionmanager_p.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtabstractwebsessionmanager_p.h; sourceTree = ""; }; - 65B362FE121C261F003EAD18 /* qxthtmltemplate.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxthtmltemplate.cpp; sourceTree = ""; }; - 65B362FF121C261F003EAD18 /* qxthtmltemplate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxthtmltemplate.h; sourceTree = ""; }; - 65B36300121C261F003EAD18 /* qxthttpserverconnector.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxthttpserverconnector.cpp; sourceTree = ""; }; - 65B36301121C261F003EAD18 /* qxthttpsessionmanager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxthttpsessionmanager.cpp; sourceTree = ""; }; - 65B36302121C261F003EAD18 /* qxthttpsessionmanager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxthttpsessionmanager.h; sourceTree = ""; }; - 65B36303121C261F003EAD18 /* qxtscgiserverconnector.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtscgiserverconnector.cpp; sourceTree = ""; }; - 65B36304121C261F003EAD18 /* qxtweb.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtweb.h; sourceTree = ""; }; - 65B36305121C261F003EAD18 /* qxtwebcgiservice.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtwebcgiservice.cpp; sourceTree = ""; }; - 65B36306121C261F003EAD18 /* qxtwebcgiservice.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtwebcgiservice.h; sourceTree = ""; }; - 65B36307121C261F003EAD18 /* qxtwebcgiservice_p.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtwebcgiservice_p.h; sourceTree = ""; }; - 65B36308121C261F003EAD18 /* qxtwebcontent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtwebcontent.cpp; sourceTree = ""; }; - 65B36309121C261F003EAD18 /* qxtwebcontent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtwebcontent.h; sourceTree = ""; }; - 65B3630A121C261F003EAD18 /* qxtwebevent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtwebevent.cpp; sourceTree = ""; }; - 65B3630B121C261F003EAD18 /* qxtwebevent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtwebevent.h; sourceTree = ""; }; - 65B3630C121C261F003EAD18 /* qxtwebservicedirectory.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtwebservicedirectory.cpp; sourceTree = ""; }; - 65B3630D121C261F003EAD18 /* qxtwebservicedirectory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtwebservicedirectory.h; sourceTree = ""; }; - 65B3630E121C261F003EAD18 /* qxtwebservicedirectory_p.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtwebservicedirectory_p.h; sourceTree = ""; }; - 65B3630F121C261F003EAD18 /* qxtwebslotservice.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtwebslotservice.cpp; sourceTree = ""; }; - 65B36310121C261F003EAD18 /* qxtwebslotservice.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtwebslotservice.h; sourceTree = ""; }; - 65B36311121C261F003EAD18 /* web.pri */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = web.pri; sourceTree = ""; }; - 65B36312121C261F003EAD18 /* web.pro */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = web.pro; sourceTree = ""; }; - 65B36314121C261F003EAD18 /* qxtavahipoll.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtavahipoll.cpp; sourceTree = ""; }; - 65B36315121C261F003EAD18 /* qxtavahipoll.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtavahipoll.h; sourceTree = ""; }; - 65B36316121C261F003EAD18 /* qxtavahipoll_p.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtavahipoll_p.h; sourceTree = ""; }; - 65B36317121C261F003EAD18 /* qxtdiscoverableservice.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtdiscoverableservice.cpp; sourceTree = ""; }; - 65B36318121C261F003EAD18 /* qxtdiscoverableservice.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtdiscoverableservice.h; sourceTree = ""; }; - 65B36319121C261F003EAD18 /* qxtdiscoverableservice_p.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtdiscoverableservice_p.h; sourceTree = ""; }; - 65B3631A121C261F003EAD18 /* qxtdiscoverableservicename.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtdiscoverableservicename.cpp; sourceTree = ""; }; - 65B3631B121C261F003EAD18 /* qxtdiscoverableservicename.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtdiscoverableservicename.h; sourceTree = ""; }; - 65B3631C121C261F003EAD18 /* qxtmdns_avahi.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtmdns_avahi.cpp; sourceTree = ""; }; - 65B3631D121C261F003EAD18 /* qxtmdns_avahi.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtmdns_avahi.h; sourceTree = ""; }; - 65B3631E121C261F003EAD18 /* qxtmdns_avahi_p.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtmdns_avahi_p.h; sourceTree = ""; }; - 65B3631F121C261F003EAD18 /* qxtmdns_bonjour.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtmdns_bonjour.cpp; sourceTree = ""; }; - 65B36320121C261F003EAD18 /* qxtmdns_bonjour.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtmdns_bonjour.h; sourceTree = ""; }; - 65B36321121C261F003EAD18 /* qxtservicebrowser.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qxtservicebrowser.cpp; sourceTree = ""; }; - 65B36322121C261F003EAD18 /* qxtservicebrowser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtservicebrowser.h; sourceTree = ""; }; - 65B36323121C261F003EAD18 /* qxtservicebrowser_p.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtservicebrowser_p.h; sourceTree = ""; }; - 65B36324121C261F003EAD18 /* qxtzeroconf.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qxtzeroconf.h; sourceTree = ""; }; - 65B36325121C261F003EAD18 /* zeroconf.pri */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = zeroconf.pri; sourceTree = ""; }; - 65B36326121C261F003EAD18 /* zeroconf.pro */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = zeroconf.pro; sourceTree = ""; }; - 65B36328121C261F003EAD18 /* gen_qlocale.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = gen_qlocale.cpp; sourceTree = ""; }; - 65B36329121C261F003EAD18 /* qxt_de.ts */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = qxt_de.ts; sourceTree = ""; }; - 65B3632A121C261F003EAD18 /* qxt_en.ts */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = qxt_en.ts; sourceTree = ""; }; - 65B3632B121C261F003EAD18 /* qxt_es.ts */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = qxt_es.ts; sourceTree = ""; }; - 65B3632C121C261F003EAD18 /* qxt_fi.ts */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = qxt_fi.ts; sourceTree = ""; }; - 65B3632D121C261F003EAD18 /* qxt_fr.ts */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = qxt_fr.ts; sourceTree = ""; }; - 65B3632E121C261F003EAD18 /* qxt_it.ts */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = qxt_it.ts; sourceTree = ""; }; - 65B3632F121C261F003EAD18 /* libs.pro */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = libs.pro; sourceTree = ""; }; - 65B36331121C261F003EAD18 /* opmapcontrol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = opmapcontrol.h; sourceTree = ""; }; - 65B36332121C261F003EAD18 /* opmapcontrol.pri */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = opmapcontrol.pri; sourceTree = ""; }; - 65B36333121C261F003EAD18 /* opmapcontrol.pro */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = opmapcontrol.pro; sourceTree = ""; }; - 65B36335121C261F003EAD18 /* common.pri */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = common.pri; sourceTree = ""; }; - 65B36337121C261F003EAD18 /* accessmode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = accessmode.h; sourceTree = ""; }; - 65B36338121C261F003EAD18 /* alllayersoftype.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = alllayersoftype.cpp; sourceTree = ""; }; - 65B36339121C261F003EAD18 /* alllayersoftype.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = alllayersoftype.h; sourceTree = ""; }; - 65B3633A121C261F003EAD18 /* cache.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = cache.cpp; sourceTree = ""; }; - 65B3633B121C261F003EAD18 /* cache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cache.h; sourceTree = ""; }; - 65B3633C121C261F003EAD18 /* cacheitemqueue.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = cacheitemqueue.cpp; sourceTree = ""; }; - 65B3633D121C261F003EAD18 /* cacheitemqueue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cacheitemqueue.h; sourceTree = ""; }; - 65B3633E121C261F003EAD18 /* core.pro */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = core.pro; sourceTree = ""; }; - 65B3633F121C261F003EAD18 /* debugheader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = debugheader.h; sourceTree = ""; }; - 65B36340121C261F003EAD18 /* geodecoderstatus.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = geodecoderstatus.h; sourceTree = ""; }; - 65B36341121C261F003EAD18 /* kibertilecache.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = kibertilecache.cpp; sourceTree = ""; }; - 65B36342121C261F003EAD18 /* kibertilecache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = kibertilecache.h; sourceTree = ""; }; - 65B36343121C261F003EAD18 /* languagetype.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = languagetype.cpp; sourceTree = ""; }; - 65B36344121C261F003EAD18 /* languagetype.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = languagetype.h; sourceTree = ""; }; - 65B36345121C261F003EAD18 /* maptype.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = maptype.h; sourceTree = ""; }; - 65B36346121C261F003EAD18 /* memorycache.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = memorycache.cpp; sourceTree = ""; }; - 65B36347121C261F003EAD18 /* memorycache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = memorycache.h; sourceTree = ""; }; - 65B36348121C261F003EAD18 /* opmaps.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = opmaps.cpp; sourceTree = ""; }; - 65B36349121C261F003EAD18 /* opmaps.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = opmaps.h; sourceTree = ""; }; - 65B3634A121C261F003EAD18 /* placemark.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = placemark.cpp; sourceTree = ""; }; - 65B3634B121C261F003EAD18 /* placemark.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = placemark.h; sourceTree = ""; }; - 65B3634C121C261F003EAD18 /* point.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = point.cpp; sourceTree = ""; }; - 65B3634D121C261F003EAD18 /* point.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = point.h; sourceTree = ""; }; - 65B3634E121C261F003EAD18 /* providerstrings.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = providerstrings.cpp; sourceTree = ""; }; - 65B3634F121C261F003EAD18 /* providerstrings.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = providerstrings.h; sourceTree = ""; }; - 65B36350121C261F003EAD18 /* pureimage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = pureimage.cpp; sourceTree = ""; }; - 65B36351121C261F003EAD18 /* pureimage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pureimage.h; sourceTree = ""; }; - 65B36352121C261F003EAD18 /* pureimagecache.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = pureimagecache.cpp; sourceTree = ""; }; - 65B36353121C261F003EAD18 /* pureimagecache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pureimagecache.h; sourceTree = ""; }; - 65B36354121C261F003EAD18 /* rawtile.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = rawtile.cpp; sourceTree = ""; }; - 65B36355121C261F003EAD18 /* rawtile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = rawtile.h; sourceTree = ""; }; - 65B36356121C261F003EAD18 /* size.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = size.cpp; sourceTree = ""; }; - 65B36357121C261F003EAD18 /* size.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = size.h; sourceTree = ""; }; - 65B36358121C261F003EAD18 /* tilecachequeue.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = tilecachequeue.cpp; sourceTree = ""; }; - 65B36359121C261F003EAD18 /* tilecachequeue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tilecachequeue.h; sourceTree = ""; }; - 65B3635A121C261F003EAD18 /* urlfactory.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = urlfactory.cpp; sourceTree = ""; }; - 65B3635B121C261F003EAD18 /* urlfactory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = urlfactory.h; sourceTree = ""; }; - 65B3635D121C261F003EAD18 /* copyrightstrings.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = copyrightstrings.h; sourceTree = ""; }; - 65B3635E121C261F003EAD18 /* core.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = core.cpp; sourceTree = ""; }; - 65B3635F121C261F003EAD18 /* core.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = core.h; sourceTree = ""; }; - 65B36360121C261F003EAD18 /* debugheader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = debugheader.h; sourceTree = ""; }; - 65B36361121C261F003EAD18 /* internals.pro */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = internals.pro; sourceTree = ""; }; - 65B36362121C261F003EAD18 /* loadtask.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = loadtask.cpp; sourceTree = ""; }; - 65B36363121C261F003EAD18 /* loadtask.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = loadtask.h; sourceTree = ""; }; - 65B36364121C261F003EAD18 /* MouseWheelZoomType.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MouseWheelZoomType.cpp; sourceTree = ""; }; - 65B36365121C261F003EAD18 /* mousewheelzoomtype.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mousewheelzoomtype.h; sourceTree = ""; }; - 65B36366121C261F003EAD18 /* pointlatlng.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = pointlatlng.cpp; sourceTree = ""; }; - 65B36367121C261F003EAD18 /* pointlatlng.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pointlatlng.h; sourceTree = ""; }; - 65B36369121C261F003EAD18 /* lks94projection.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lks94projection.cpp; sourceTree = ""; }; - 65B3636A121C261F003EAD18 /* lks94projection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lks94projection.h; sourceTree = ""; }; - 65B3636B121C261F003EAD18 /* mercatorprojection.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = mercatorprojection.cpp; sourceTree = ""; }; - 65B3636C121C261F003EAD18 /* mercatorprojection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mercatorprojection.h; sourceTree = ""; }; - 65B3636D121C261F003EAD18 /* mercatorprojectionyandex.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = mercatorprojectionyandex.cpp; sourceTree = ""; }; - 65B3636E121C261F003EAD18 /* mercatorprojectionyandex.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mercatorprojectionyandex.h; sourceTree = ""; }; - 65B3636F121C261F003EAD18 /* platecarreeprojection.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = platecarreeprojection.cpp; sourceTree = ""; }; - 65B36370121C261F003EAD18 /* platecarreeprojection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = platecarreeprojection.h; sourceTree = ""; }; - 65B36371121C261F003EAD18 /* platecarreeprojectionpergo.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = platecarreeprojectionpergo.cpp; sourceTree = ""; }; - 65B36372121C261F003EAD18 /* platecarreeprojectionpergo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = platecarreeprojectionpergo.h; sourceTree = ""; }; - 65B36373121C261F003EAD18 /* pureprojection.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = pureprojection.cpp; sourceTree = ""; }; - 65B36374121C261F003EAD18 /* pureprojection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pureprojection.h; sourceTree = ""; }; - 65B36375121C261F003EAD18 /* rectangle.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = rectangle.cpp; sourceTree = ""; }; - 65B36376121C261F003EAD18 /* rectangle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = rectangle.h; sourceTree = ""; }; - 65B36377121C261F003EAD18 /* rectlatlng.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = rectlatlng.cpp; sourceTree = ""; }; - 65B36378121C261F003EAD18 /* rectlatlng.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = rectlatlng.h; sourceTree = ""; }; - 65B36379121C261F003EAD18 /* sizelatlng.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = sizelatlng.cpp; sourceTree = ""; }; - 65B3637A121C261F003EAD18 /* sizelatlng.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = sizelatlng.h; sourceTree = ""; }; - 65B3637B121C261F003EAD18 /* tile.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = tile.cpp; sourceTree = ""; }; - 65B3637C121C261F003EAD18 /* tile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tile.h; sourceTree = ""; }; - 65B3637D121C261F003EAD18 /* tilematrix.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = tilematrix.cpp; sourceTree = ""; }; - 65B3637E121C261F003EAD18 /* tilematrix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tilematrix.h; sourceTree = ""; }; - 65B36380121C261F003EAD18 /* configuration.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = configuration.cpp; sourceTree = ""; }; - 65B36381121C261F003EAD18 /* configuration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = configuration.h; sourceTree = ""; }; - 65B36382121C261F003EAD18 /* homeitem.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = homeitem.cpp; sourceTree = ""; }; - 65B36383121C261F003EAD18 /* homeitem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = homeitem.h; sourceTree = ""; }; - 65B36385121C261F003EAD18 /* airplane.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = airplane.png; sourceTree = ""; }; - 65B36386121C261F003EAD18 /* airplane.svg */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = airplane.svg; sourceTree = ""; }; - 65B36387121C261F003EAD18 /* airplanepip.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = airplanepip.png; sourceTree = ""; }; - 65B36388121C261F003EAD18 /* bigMarkerGreen.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = bigMarkerGreen.png; sourceTree = ""; }; - 65B36389121C261F003EAD18 /* compas.svg */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = compas.svg; sourceTree = ""; }; - 65B3638A121C261F003EAD18 /* EasystarBlue.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = EasystarBlue.png; sourceTree = ""; }; - 65B3638B121C261F003EAD18 /* home.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = home.png; sourceTree = ""; }; - 65B3638C121C261F003EAD18 /* home.svg */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = home.svg; sourceTree = ""; }; - 65B3638D121C261F003EAD18 /* home2.svg */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = home2.svg; sourceTree = ""; }; - 65B3638E121C261F003EAD18 /* mapquad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = mapquad.png; sourceTree = ""; }; - 65B3638F121C261F003EAD18 /* marker.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = marker.png; sourceTree = ""; }; - 65B36390121C261F003EAD18 /* mapgraphicitem.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = mapgraphicitem.cpp; sourceTree = ""; }; - 65B36391121C261F003EAD18 /* mapgraphicitem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mapgraphicitem.h; sourceTree = ""; }; - 65B36392121C261F003EAD18 /* mapresources.qrc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = mapresources.qrc; sourceTree = ""; }; - 65B36393121C261F003EAD18 /* mapripform.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = mapripform.cpp; sourceTree = ""; }; - 65B36394121C261F003EAD18 /* mapripform.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mapripform.h; sourceTree = ""; }; - 65B36395121C261F003EAD18 /* mapripform.ui */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = mapripform.ui; sourceTree = ""; }; - 65B36396121C261F003EAD18 /* mapripper.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = mapripper.cpp; sourceTree = ""; }; - 65B36397121C261F003EAD18 /* mapripper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mapripper.h; sourceTree = ""; }; - 65B36398121C261F003EAD18 /* mapwidget.pro */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = mapwidget.pro; sourceTree = ""; }; - 65B36399121C261F003EAD18 /* opmapwidget.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = opmapwidget.cpp; sourceTree = ""; }; - 65B3639A121C261F003EAD18 /* opmapwidget.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = opmapwidget.h; sourceTree = ""; }; - 65B3639B121C261F003EAD18 /* trailitem.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = trailitem.cpp; sourceTree = ""; }; - 65B3639C121C261F003EAD18 /* trailitem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = trailitem.h; sourceTree = ""; }; - 65B3639D121C261F003EAD18 /* uavitem.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = uavitem.cpp; sourceTree = ""; }; - 65B3639E121C261F003EAD18 /* uavitem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = uavitem.h; sourceTree = ""; }; - 65B3639F121C261F003EAD18 /* uavmapfollowtype.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = uavmapfollowtype.h; sourceTree = ""; }; - 65B363A0121C261F003EAD18 /* uavtrailtype.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = uavtrailtype.h; sourceTree = ""; }; - 65B363A1121C261F003EAD18 /* waypointitem.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = waypointitem.cpp; sourceTree = ""; }; - 65B363A2121C261F003EAD18 /* waypointitem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = waypointitem.h; sourceTree = ""; }; - 65B363A3121C261F003EAD18 /* src.pro */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = src.pro; sourceTree = ""; }; - 65B363A5121C261F003EAD18 /* qextserialport.pri */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = qextserialport.pri; sourceTree = ""; }; - 65B363A6121C261F003EAD18 /* qextserialport.pro */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = qextserialport.pro; sourceTree = ""; }; - 65B363A8121C261F003EAD18 /* posix_qextserialport.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = posix_qextserialport.cpp; sourceTree = ""; }; - 65B363A9121C261F003EAD18 /* qextserialenumerator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qextserialenumerator.h; sourceTree = ""; }; - 65B363AA121C261F003EAD18 /* qextserialenumerator_osx.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qextserialenumerator_osx.cpp; sourceTree = ""; }; - 65B363AB121C261F003EAD18 /* qextserialenumerator_unix.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qextserialenumerator_unix.cpp; sourceTree = ""; }; - 65B363AC121C261F003EAD18 /* qextserialenumerator_win.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qextserialenumerator_win.cpp; sourceTree = ""; }; - 65B363AD121C261F003EAD18 /* qextserialport.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qextserialport.cpp; sourceTree = ""; }; - 65B363AE121C261F003EAD18 /* qextserialport.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qextserialport.h; sourceTree = ""; }; - 65B363AF121C261F003EAD18 /* qextserialport_global.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qextserialport_global.h; sourceTree = ""; }; - 65B363B0121C261F003EAD18 /* src.pro */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = src.pro; sourceTree = ""; }; - 65B363B1121C261F003EAD18 /* win_qextserialport.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = win_qextserialport.cpp; sourceTree = ""; }; - 65B363B3121C261F003EAD18 /* multitask.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = multitask.h; sourceTree = ""; }; - 65B363B4121C261F003EAD18 /* qtconcurrent.pri */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = qtconcurrent.pri; sourceTree = ""; }; - 65B363B5121C261F003EAD18 /* qtconcurrent.pro */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = qtconcurrent.pro; sourceTree = ""; }; - 65B363B6121C261F003EAD18 /* qtconcurrent_global.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qtconcurrent_global.h; sourceTree = ""; }; - 65B363B7121C261F003EAD18 /* QtConcurrentTools */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = QtConcurrentTools; sourceTree = ""; }; - 65B363B8121C261F003EAD18 /* runextensions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = runextensions.h; sourceTree = ""; }; - 65B363BA121C261F003EAD18 /* COPYING */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = COPYING; sourceTree = ""; }; - 65B363BB121C261F003EAD18 /* qwt.pri */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = qwt.pri; sourceTree = ""; }; - 65B363BC121C261F003EAD18 /* qwt.pro */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = qwt.pro; sourceTree = ""; }; - 65B363BD121C261F003EAD18 /* qwtconfig.pri */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = qwtconfig.pri; sourceTree = ""; }; - 65B363BF121C261F003EAD18 /* qwt.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qwt.h; sourceTree = ""; }; - 65B363C0121C261F003EAD18 /* qwt_abstract_scale.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qwt_abstract_scale.cpp; sourceTree = ""; }; - 65B363C1121C261F003EAD18 /* qwt_abstract_scale.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qwt_abstract_scale.h; sourceTree = ""; }; - 65B363C2121C261F003EAD18 /* qwt_abstract_scale_draw.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qwt_abstract_scale_draw.cpp; sourceTree = ""; }; - 65B363C3121C261F003EAD18 /* qwt_abstract_scale_draw.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qwt_abstract_scale_draw.h; sourceTree = ""; }; - 65B363C4121C261F003EAD18 /* qwt_abstract_slider.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qwt_abstract_slider.cpp; sourceTree = ""; }; - 65B363C5121C261F003EAD18 /* qwt_abstract_slider.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qwt_abstract_slider.h; sourceTree = ""; }; - 65B363C6121C261F003EAD18 /* qwt_analog_clock.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qwt_analog_clock.cpp; sourceTree = ""; }; - 65B363C7121C261F003EAD18 /* qwt_analog_clock.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qwt_analog_clock.h; sourceTree = ""; }; - 65B363C8121C261F003EAD18 /* qwt_array.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qwt_array.h; sourceTree = ""; }; - 65B363C9121C261F003EAD18 /* qwt_arrow_button.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qwt_arrow_button.cpp; sourceTree = ""; }; - 65B363CA121C261F003EAD18 /* qwt_arrow_button.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qwt_arrow_button.h; sourceTree = ""; }; - 65B363CB121C261F003EAD18 /* qwt_clipper.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qwt_clipper.cpp; sourceTree = ""; }; - 65B363CC121C261F003EAD18 /* qwt_clipper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qwt_clipper.h; sourceTree = ""; }; - 65B363CD121C261F003EAD18 /* qwt_color_map.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qwt_color_map.cpp; sourceTree = ""; }; - 65B363CE121C261F003EAD18 /* qwt_color_map.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qwt_color_map.h; sourceTree = ""; }; - 65B363CF121C261F003EAD18 /* qwt_compass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qwt_compass.cpp; sourceTree = ""; }; - 65B363D0121C261F003EAD18 /* qwt_compass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qwt_compass.h; sourceTree = ""; }; - 65B363D1121C261F003EAD18 /* qwt_compass_rose.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qwt_compass_rose.cpp; sourceTree = ""; }; - 65B363D2121C261F003EAD18 /* qwt_compass_rose.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qwt_compass_rose.h; sourceTree = ""; }; - 65B363D3121C261F003EAD18 /* qwt_counter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qwt_counter.cpp; sourceTree = ""; }; - 65B363D4121C261F003EAD18 /* qwt_counter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qwt_counter.h; sourceTree = ""; }; - 65B363D5121C261F003EAD18 /* qwt_curve_fitter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qwt_curve_fitter.cpp; sourceTree = ""; }; - 65B363D6121C261F003EAD18 /* qwt_curve_fitter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qwt_curve_fitter.h; sourceTree = ""; }; - 65B363D7121C261F003EAD18 /* qwt_data.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qwt_data.cpp; sourceTree = ""; }; - 65B363D8121C261F003EAD18 /* qwt_data.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qwt_data.h; sourceTree = ""; }; - 65B363D9121C261F003EAD18 /* qwt_dial.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qwt_dial.cpp; sourceTree = ""; }; - 65B363DA121C261F003EAD18 /* qwt_dial.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qwt_dial.h; sourceTree = ""; }; - 65B363DB121C261F003EAD18 /* qwt_dial_needle.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qwt_dial_needle.cpp; sourceTree = ""; }; - 65B363DC121C261F003EAD18 /* qwt_dial_needle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qwt_dial_needle.h; sourceTree = ""; }; - 65B363DD121C261F003EAD18 /* qwt_double_interval.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qwt_double_interval.cpp; sourceTree = ""; }; - 65B363DE121C261F003EAD18 /* qwt_double_interval.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qwt_double_interval.h; sourceTree = ""; }; - 65B363DF121C261F003EAD18 /* qwt_double_range.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qwt_double_range.cpp; sourceTree = ""; }; - 65B363E0121C261F003EAD18 /* qwt_double_range.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qwt_double_range.h; sourceTree = ""; }; - 65B363E1121C261F003EAD18 /* qwt_double_rect.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qwt_double_rect.cpp; sourceTree = ""; }; - 65B363E2121C261F003EAD18 /* qwt_double_rect.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qwt_double_rect.h; sourceTree = ""; }; - 65B363E3121C261F003EAD18 /* qwt_dyngrid_layout.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qwt_dyngrid_layout.cpp; sourceTree = ""; }; - 65B363E4121C261F003EAD18 /* qwt_dyngrid_layout.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qwt_dyngrid_layout.h; sourceTree = ""; }; - 65B363E5121C261F003EAD18 /* qwt_event_pattern.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qwt_event_pattern.cpp; sourceTree = ""; }; - 65B363E6121C261F003EAD18 /* qwt_event_pattern.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qwt_event_pattern.h; sourceTree = ""; }; - 65B363E7121C261F003EAD18 /* qwt_global.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qwt_global.h; sourceTree = ""; }; - 65B363E8121C261F003EAD18 /* qwt_interval_data.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qwt_interval_data.cpp; sourceTree = ""; }; - 65B363E9121C261F003EAD18 /* qwt_interval_data.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qwt_interval_data.h; sourceTree = ""; }; - 65B363EA121C261F003EAD18 /* qwt_knob.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qwt_knob.cpp; sourceTree = ""; }; - 65B363EB121C261F003EAD18 /* qwt_knob.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qwt_knob.h; sourceTree = ""; }; - 65B363EC121C261F003EAD18 /* qwt_layout_metrics.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qwt_layout_metrics.cpp; sourceTree = ""; }; - 65B363ED121C261F003EAD18 /* qwt_layout_metrics.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qwt_layout_metrics.h; sourceTree = ""; }; - 65B363EE121C261F003EAD18 /* qwt_legend.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qwt_legend.cpp; sourceTree = ""; }; - 65B363EF121C261F003EAD18 /* qwt_legend.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qwt_legend.h; sourceTree = ""; }; - 65B363F0121C261F003EAD18 /* qwt_legend_item.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qwt_legend_item.cpp; sourceTree = ""; }; - 65B363F1121C261F003EAD18 /* qwt_legend_item.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qwt_legend_item.h; sourceTree = ""; }; - 65B363F2121C261F003EAD18 /* qwt_legend_itemmanager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qwt_legend_itemmanager.h; sourceTree = ""; }; - 65B363F3121C261F003EAD18 /* qwt_magnifier.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qwt_magnifier.cpp; sourceTree = ""; }; - 65B363F4121C261F003EAD18 /* qwt_magnifier.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qwt_magnifier.h; sourceTree = ""; }; - 65B363F5121C261F003EAD18 /* qwt_math.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qwt_math.cpp; sourceTree = ""; }; - 65B363F6121C261F003EAD18 /* qwt_math.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qwt_math.h; sourceTree = ""; }; - 65B363F7121C261F003EAD18 /* qwt_paint_buffer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qwt_paint_buffer.cpp; sourceTree = ""; }; - 65B363F8121C261F003EAD18 /* qwt_paint_buffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qwt_paint_buffer.h; sourceTree = ""; }; - 65B363F9121C261F003EAD18 /* qwt_painter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qwt_painter.cpp; sourceTree = ""; }; - 65B363FA121C261F003EAD18 /* qwt_painter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qwt_painter.h; sourceTree = ""; }; - 65B363FB121C261F003EAD18 /* qwt_panner.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qwt_panner.cpp; sourceTree = ""; }; - 65B363FC121C261F003EAD18 /* qwt_panner.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qwt_panner.h; sourceTree = ""; }; - 65B363FD121C261F003EAD18 /* qwt_picker.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qwt_picker.cpp; sourceTree = ""; }; - 65B363FE121C261F003EAD18 /* qwt_picker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qwt_picker.h; sourceTree = ""; }; - 65B363FF121C261F003EAD18 /* qwt_picker_machine.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qwt_picker_machine.cpp; sourceTree = ""; }; - 65B36400121C261F003EAD18 /* qwt_picker_machine.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qwt_picker_machine.h; sourceTree = ""; }; - 65B36401121C261F003EAD18 /* qwt_plot.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qwt_plot.cpp; sourceTree = ""; }; - 65B36402121C261F003EAD18 /* qwt_plot.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qwt_plot.h; sourceTree = ""; }; - 65B36403121C261F003EAD18 /* qwt_plot_axis.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qwt_plot_axis.cpp; sourceTree = ""; }; - 65B36404121C261F003EAD18 /* qwt_plot_canvas.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qwt_plot_canvas.cpp; sourceTree = ""; }; - 65B36405121C261F003EAD18 /* qwt_plot_canvas.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qwt_plot_canvas.h; sourceTree = ""; }; - 65B36406121C261F003EAD18 /* qwt_plot_curve.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qwt_plot_curve.cpp; sourceTree = ""; }; - 65B36407121C261F003EAD18 /* qwt_plot_curve.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qwt_plot_curve.h; sourceTree = ""; }; - 65B36408121C261F003EAD18 /* qwt_plot_dict.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qwt_plot_dict.cpp; sourceTree = ""; }; - 65B36409121C261F003EAD18 /* qwt_plot_dict.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qwt_plot_dict.h; sourceTree = ""; }; - 65B3640A121C261F003EAD18 /* qwt_plot_grid.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qwt_plot_grid.cpp; sourceTree = ""; }; - 65B3640B121C261F003EAD18 /* qwt_plot_grid.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qwt_plot_grid.h; sourceTree = ""; }; - 65B3640C121C261F003EAD18 /* qwt_plot_item.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qwt_plot_item.cpp; sourceTree = ""; }; - 65B3640D121C261F003EAD18 /* qwt_plot_item.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qwt_plot_item.h; sourceTree = ""; }; - 65B3640E121C261F003EAD18 /* qwt_plot_layout.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qwt_plot_layout.cpp; sourceTree = ""; }; - 65B3640F121C261F003EAD18 /* qwt_plot_layout.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qwt_plot_layout.h; sourceTree = ""; }; - 65B36410121C261F003EAD18 /* qwt_plot_magnifier.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qwt_plot_magnifier.cpp; sourceTree = ""; }; - 65B36411121C261F003EAD18 /* qwt_plot_magnifier.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qwt_plot_magnifier.h; sourceTree = ""; }; - 65B36412121C261F003EAD18 /* qwt_plot_marker.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qwt_plot_marker.cpp; sourceTree = ""; }; - 65B36413121C261F003EAD18 /* qwt_plot_marker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qwt_plot_marker.h; sourceTree = ""; }; - 65B36414121C261F003EAD18 /* qwt_plot_panner.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qwt_plot_panner.cpp; sourceTree = ""; }; - 65B36415121C261F003EAD18 /* qwt_plot_panner.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qwt_plot_panner.h; sourceTree = ""; }; - 65B36416121C261F003EAD18 /* qwt_plot_picker.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qwt_plot_picker.cpp; sourceTree = ""; }; - 65B36417121C261F003EAD18 /* qwt_plot_picker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qwt_plot_picker.h; sourceTree = ""; }; - 65B36418121C261F003EAD18 /* qwt_plot_print.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qwt_plot_print.cpp; sourceTree = ""; }; - 65B36419121C261F003EAD18 /* qwt_plot_printfilter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qwt_plot_printfilter.cpp; sourceTree = ""; }; - 65B3641A121C261F003EAD18 /* qwt_plot_printfilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qwt_plot_printfilter.h; sourceTree = ""; }; - 65B3641B121C261F003EAD18 /* qwt_plot_rasteritem.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qwt_plot_rasteritem.cpp; sourceTree = ""; }; - 65B3641C121C261F003EAD18 /* qwt_plot_rasteritem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qwt_plot_rasteritem.h; sourceTree = ""; }; - 65B3641D121C261F003EAD18 /* qwt_plot_rescaler.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qwt_plot_rescaler.cpp; sourceTree = ""; }; - 65B3641E121C261F003EAD18 /* qwt_plot_rescaler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qwt_plot_rescaler.h; sourceTree = ""; }; - 65B3641F121C261F003EAD18 /* qwt_plot_scaleitem.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qwt_plot_scaleitem.cpp; sourceTree = ""; }; - 65B36420121C261F003EAD18 /* qwt_plot_scaleitem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qwt_plot_scaleitem.h; sourceTree = ""; }; - 65B36421121C261F003EAD18 /* qwt_plot_spectrogram.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qwt_plot_spectrogram.cpp; sourceTree = ""; }; - 65B36422121C261F003EAD18 /* qwt_plot_spectrogram.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qwt_plot_spectrogram.h; sourceTree = ""; }; - 65B36423121C261F003EAD18 /* qwt_plot_svgitem.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qwt_plot_svgitem.cpp; sourceTree = ""; }; - 65B36424121C261F003EAD18 /* qwt_plot_svgitem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qwt_plot_svgitem.h; sourceTree = ""; }; - 65B36425121C261F003EAD18 /* qwt_plot_xml.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qwt_plot_xml.cpp; sourceTree = ""; }; - 65B36426121C261F003EAD18 /* qwt_plot_zoomer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qwt_plot_zoomer.cpp; sourceTree = ""; }; - 65B36427121C261F003EAD18 /* qwt_plot_zoomer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qwt_plot_zoomer.h; sourceTree = ""; }; - 65B36428121C261F003EAD18 /* qwt_polygon.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qwt_polygon.h; sourceTree = ""; }; - 65B36429121C261F003EAD18 /* qwt_raster_data.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qwt_raster_data.cpp; sourceTree = ""; }; - 65B3642A121C261F003EAD18 /* qwt_raster_data.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qwt_raster_data.h; sourceTree = ""; }; - 65B3642B121C261F003EAD18 /* qwt_round_scale_draw.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qwt_round_scale_draw.cpp; sourceTree = ""; }; - 65B3642C121C261F003EAD18 /* qwt_round_scale_draw.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qwt_round_scale_draw.h; sourceTree = ""; }; - 65B3642D121C261F003EAD18 /* qwt_scale_div.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qwt_scale_div.cpp; sourceTree = ""; }; - 65B3642E121C261F003EAD18 /* qwt_scale_div.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qwt_scale_div.h; sourceTree = ""; }; - 65B3642F121C261F003EAD18 /* qwt_scale_draw.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qwt_scale_draw.cpp; sourceTree = ""; }; - 65B36430121C261F003EAD18 /* qwt_scale_draw.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qwt_scale_draw.h; sourceTree = ""; }; - 65B36431121C261F003EAD18 /* qwt_scale_engine.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qwt_scale_engine.cpp; sourceTree = ""; }; - 65B36432121C261F003EAD18 /* qwt_scale_engine.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qwt_scale_engine.h; sourceTree = ""; }; - 65B36433121C261F003EAD18 /* qwt_scale_map.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qwt_scale_map.cpp; sourceTree = ""; }; - 65B36434121C261F003EAD18 /* qwt_scale_map.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qwt_scale_map.h; sourceTree = ""; }; - 65B36435121C261F003EAD18 /* qwt_scale_widget.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qwt_scale_widget.cpp; sourceTree = ""; }; - 65B36436121C261F003EAD18 /* qwt_scale_widget.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qwt_scale_widget.h; sourceTree = ""; }; - 65B36437121C261F003EAD18 /* qwt_slider.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qwt_slider.cpp; sourceTree = ""; }; - 65B36438121C261F003EAD18 /* qwt_slider.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qwt_slider.h; sourceTree = ""; }; - 65B36439121C261F003EAD18 /* qwt_spline.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qwt_spline.cpp; sourceTree = ""; }; - 65B3643A121C261F003EAD18 /* qwt_spline.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qwt_spline.h; sourceTree = ""; }; - 65B3643B121C261F003EAD18 /* qwt_symbol.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qwt_symbol.cpp; sourceTree = ""; }; - 65B3643C121C261F003EAD18 /* qwt_symbol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qwt_symbol.h; sourceTree = ""; }; - 65B3643D121C261F003EAD18 /* qwt_text.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qwt_text.cpp; sourceTree = ""; }; - 65B3643E121C261F003EAD18 /* qwt_text.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qwt_text.h; sourceTree = ""; }; - 65B3643F121C261F003EAD18 /* qwt_text_engine.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qwt_text_engine.cpp; sourceTree = ""; }; - 65B36440121C261F003EAD18 /* qwt_text_engine.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qwt_text_engine.h; sourceTree = ""; }; - 65B36441121C261F003EAD18 /* qwt_text_label.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qwt_text_label.cpp; sourceTree = ""; }; - 65B36442121C261F003EAD18 /* qwt_text_label.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qwt_text_label.h; sourceTree = ""; }; - 65B36443121C261F003EAD18 /* qwt_thermo.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qwt_thermo.cpp; sourceTree = ""; }; - 65B36444121C261F003EAD18 /* qwt_thermo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qwt_thermo.h; sourceTree = ""; }; - 65B36445121C261F003EAD18 /* qwt_valuelist.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qwt_valuelist.h; sourceTree = ""; }; - 65B36446121C261F003EAD18 /* qwt_wheel.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qwt_wheel.cpp; sourceTree = ""; }; - 65B36447121C261F003EAD18 /* qwt_wheel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qwt_wheel.h; sourceTree = ""; }; - 65B36448121C261F003EAD18 /* src.pro */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = src.pro; sourceTree = ""; }; - 65B3644A121C261F003EAD18 /* qymodem.pri */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = qymodem.pri; sourceTree = ""; }; - 65B3644B121C261F003EAD18 /* qymodem.pro */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = qymodem.pro; sourceTree = ""; }; - 65B3644D121C261F003EAD18 /* qymodem.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qymodem.cpp; sourceTree = ""; }; - 65B3644E121C261F003EAD18 /* qymodem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qymodem.h; sourceTree = ""; }; - 65B3644F121C261F003EAD18 /* qymodem_tx.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qymodem_tx.cpp; sourceTree = ""; }; - 65B36450121C261F003EAD18 /* qymodem_tx.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qymodem_tx.h; sourceTree = ""; }; - 65B36451121C261F003EAD18 /* qymodemfilestream.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qymodemfilestream.cpp; sourceTree = ""; }; - 65B36452121C261F003EAD18 /* qymodemsend.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qymodemsend.cpp; sourceTree = ""; }; - 65B36453121C261F003EAD18 /* qymodemsend.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qymodemsend.h; sourceTree = ""; }; - 65B36454121C261F003EAD18 /* src.pro */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = src.pro; sourceTree = ""; }; - 65B36456121C261F003EAD18 /* main.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = main.cpp; sourceTree = ""; }; - 65B36457121C261F003EAD18 /* uavobjectgenerator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = uavobjectgenerator.cpp; sourceTree = ""; }; - 65B36458121C261F003EAD18 /* uavobjectgenerator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = uavobjectgenerator.h; sourceTree = ""; }; - 65B36459121C261F003EAD18 /* uavobjectparser.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = uavobjectparser.cpp; sourceTree = ""; }; - 65B3645A121C261F003EAD18 /* uavobjectparser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = uavobjectparser.h; sourceTree = ""; }; - 65B3645B121C261F003EAD18 /* uavobjgenerator.pro */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = uavobjgenerator.pro; sourceTree = ""; }; - 65B3645D121C261F003EAD18 /* abstractprocess.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = abstractprocess.h; sourceTree = ""; }; - 65B3645E121C261F003EAD18 /* abstractprocess_win.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = abstractprocess_win.cpp; sourceTree = ""; }; - 65B3645F121C261F003EAD18 /* basevalidatinglineedit.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = basevalidatinglineedit.cpp; sourceTree = ""; }; - 65B36460121C261F003EAD18 /* basevalidatinglineedit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = basevalidatinglineedit.h; sourceTree = ""; }; - 65B36461121C261F003EAD18 /* checkablemessagebox.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = checkablemessagebox.cpp; sourceTree = ""; }; - 65B36462121C261F003EAD18 /* checkablemessagebox.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = checkablemessagebox.h; sourceTree = ""; }; - 65B36463121C261F003EAD18 /* checkablemessagebox.ui */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = checkablemessagebox.ui; sourceTree = ""; }; - 65B36464121C261F003EAD18 /* classnamevalidatinglineedit.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = classnamevalidatinglineedit.cpp; sourceTree = ""; }; - 65B36465121C261F003EAD18 /* classnamevalidatinglineedit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = classnamevalidatinglineedit.h; sourceTree = ""; }; - 65B36466121C261F003EAD18 /* codegeneration.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = codegeneration.cpp; sourceTree = ""; }; - 65B36467121C261F003EAD18 /* codegeneration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = codegeneration.h; sourceTree = ""; }; - 65B36468121C261F003EAD18 /* consoleprocess.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = consoleprocess.cpp; sourceTree = ""; }; - 65B36469121C261F003EAD18 /* consoleprocess.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = consoleprocess.h; sourceTree = ""; }; - 65B3646A121C261F003EAD18 /* consoleprocess_unix.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = consoleprocess_unix.cpp; sourceTree = ""; }; - 65B3646B121C261F003EAD18 /* consoleprocess_win.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = consoleprocess_win.cpp; sourceTree = ""; }; - 65B3646C121C261F003EAD18 /* detailsbutton.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = detailsbutton.cpp; sourceTree = ""; }; - 65B3646D121C261F003EAD18 /* detailsbutton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = detailsbutton.h; sourceTree = ""; }; - 65B3646E121C261F003EAD18 /* detailswidget.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = detailswidget.cpp; sourceTree = ""; }; - 65B3646F121C261F003EAD18 /* detailswidget.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = detailswidget.h; sourceTree = ""; }; - 65B36470121C261F003EAD18 /* fancylineedit.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = fancylineedit.cpp; sourceTree = ""; }; - 65B36471121C261F003EAD18 /* fancylineedit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fancylineedit.h; sourceTree = ""; }; - 65B36472121C261F003EAD18 /* fancymainwindow.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = fancymainwindow.cpp; sourceTree = ""; }; - 65B36473121C261F003EAD18 /* fancymainwindow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fancymainwindow.h; sourceTree = ""; }; - 65B36474121C261F003EAD18 /* filenamevalidatinglineedit.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = filenamevalidatinglineedit.cpp; sourceTree = ""; }; - 65B36475121C261F003EAD18 /* filenamevalidatinglineedit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = filenamevalidatinglineedit.h; sourceTree = ""; }; - 65B36476121C261F003EAD18 /* filesearch.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = filesearch.cpp; sourceTree = ""; }; - 65B36477121C261F003EAD18 /* filesearch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = filesearch.h; sourceTree = ""; }; - 65B36478121C261F003EAD18 /* filewizarddialog.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = filewizarddialog.cpp; sourceTree = ""; }; - 65B36479121C261F003EAD18 /* filewizarddialog.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = filewizarddialog.h; sourceTree = ""; }; - 65B3647A121C261F003EAD18 /* filewizardpage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = filewizardpage.cpp; sourceTree = ""; }; - 65B3647B121C261F003EAD18 /* filewizardpage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = filewizardpage.h; sourceTree = ""; }; - 65B3647C121C261F003EAD18 /* filewizardpage.ui */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = filewizardpage.ui; sourceTree = ""; }; - 65B3647E121C261F003EAD18 /* removesubmitfield.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = removesubmitfield.png; sourceTree = ""; }; - 65B3647F121C261F003EAD18 /* iwelcomepage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = iwelcomepage.cpp; sourceTree = ""; }; - 65B36480121C261F003EAD18 /* iwelcomepage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = iwelcomepage.h; sourceTree = ""; }; - 65B36481121C261F003EAD18 /* linecolumnlabel.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = linecolumnlabel.cpp; sourceTree = ""; }; - 65B36482121C261F003EAD18 /* linecolumnlabel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = linecolumnlabel.h; sourceTree = ""; }; - 65B36483121C261F003EAD18 /* listutils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = listutils.h; sourceTree = ""; }; - 65B36484121C261F003EAD18 /* newclasswidget.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = newclasswidget.cpp; sourceTree = ""; }; - 65B36485121C261F003EAD18 /* newclasswidget.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = newclasswidget.h; sourceTree = ""; }; - 65B36486121C261F003EAD18 /* newclasswidget.ui */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = newclasswidget.ui; sourceTree = ""; }; - 65B36487121C261F003EAD18 /* parameteraction.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = parameteraction.cpp; sourceTree = ""; }; - 65B36488121C261F003EAD18 /* parameteraction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = parameteraction.h; sourceTree = ""; }; - 65B36489121C261F003EAD18 /* pathchooser.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = pathchooser.cpp; sourceTree = ""; }; - 65B3648A121C261F003EAD18 /* pathchooser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pathchooser.h; sourceTree = ""; }; - 65B3648B121C261F003EAD18 /* pathlisteditor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = pathlisteditor.cpp; sourceTree = ""; }; - 65B3648C121C261F003EAD18 /* pathlisteditor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pathlisteditor.h; sourceTree = ""; }; - 65B3648D121C261F003EAD18 /* projectintropage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = projectintropage.cpp; sourceTree = ""; }; - 65B3648E121C261F003EAD18 /* projectintropage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = projectintropage.h; sourceTree = ""; }; - 65B3648F121C261F003EAD18 /* projectintropage.ui */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = projectintropage.ui; sourceTree = ""; }; - 65B36490121C261F003EAD18 /* projectnamevalidatinglineedit.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = projectnamevalidatinglineedit.cpp; sourceTree = ""; }; - 65B36491121C261F003EAD18 /* projectnamevalidatinglineedit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = projectnamevalidatinglineedit.h; sourceTree = ""; }; - 65B36492121C261F003EAD18 /* qtcassert.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qtcassert.h; sourceTree = ""; }; - 65B36493121C261F003EAD18 /* qtcolorbutton.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qtcolorbutton.cpp; sourceTree = ""; }; - 65B36494121C261F003EAD18 /* qtcolorbutton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qtcolorbutton.h; sourceTree = ""; }; - 65B36495121C261F003EAD18 /* reloadpromptutils.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = reloadpromptutils.cpp; sourceTree = ""; }; - 65B36496121C261F003EAD18 /* reloadpromptutils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = reloadpromptutils.h; sourceTree = ""; }; - 65B36497121C261F003EAD18 /* savedaction.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = savedaction.cpp; sourceTree = ""; }; - 65B36498121C261F003EAD18 /* savedaction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = savedaction.h; sourceTree = ""; }; - 65B36499121C261F003EAD18 /* settingsutils.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = settingsutils.cpp; sourceTree = ""; }; - 65B3649A121C261F003EAD18 /* settingsutils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = settingsutils.h; sourceTree = ""; }; - 65B3649B121C261F003EAD18 /* styledbar.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = styledbar.cpp; sourceTree = ""; }; - 65B3649C121C261F003EAD18 /* styledbar.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = styledbar.h; sourceTree = ""; }; - 65B3649D121C261F003EAD18 /* stylehelper.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = stylehelper.cpp; sourceTree = ""; }; - 65B3649E121C261F003EAD18 /* stylehelper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = stylehelper.h; sourceTree = ""; }; - 65B3649F121C261F003EAD18 /* submiteditorwidget.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = submiteditorwidget.cpp; sourceTree = ""; }; - 65B364A0121C261F003EAD18 /* submiteditorwidget.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = submiteditorwidget.h; sourceTree = ""; }; - 65B364A1121C261F003EAD18 /* submiteditorwidget.ui */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = submiteditorwidget.ui; sourceTree = ""; }; - 65B364A2121C261F003EAD18 /* submitfieldwidget.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = submitfieldwidget.cpp; sourceTree = ""; }; - 65B364A3121C261F003EAD18 /* submitfieldwidget.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = submitfieldwidget.h; sourceTree = ""; }; - 65B364A4121C261F003EAD18 /* synchronousprocess.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = synchronousprocess.cpp; sourceTree = ""; }; - 65B364A5121C261F003EAD18 /* synchronousprocess.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = synchronousprocess.h; sourceTree = ""; }; - 65B364A6121C261F003EAD18 /* treewidgetcolumnstretcher.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = treewidgetcolumnstretcher.cpp; sourceTree = ""; }; - 65B364A7121C261F003EAD18 /* treewidgetcolumnstretcher.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = treewidgetcolumnstretcher.h; sourceTree = ""; }; - 65B364A8121C261F003EAD18 /* uncommentselection.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = uncommentselection.cpp; sourceTree = ""; }; - 65B364A9121C261F003EAD18 /* uncommentselection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = uncommentselection.h; sourceTree = ""; }; - 65B364AA121C261F003EAD18 /* utils.pri */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = utils.pri; sourceTree = ""; }; - 65B364AB121C261F003EAD18 /* utils.pro */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = utils.pro; sourceTree = ""; }; - 65B364AC121C261F003EAD18 /* utils.qrc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = utils.qrc; sourceTree = ""; }; - 65B364AD121C261F003EAD18 /* utils_global.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = utils_global.h; sourceTree = ""; }; - 65B364AE121C261F003EAD18 /* welcomemodetreewidget.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = welcomemodetreewidget.cpp; sourceTree = ""; }; - 65B364AF121C261F003EAD18 /* welcomemodetreewidget.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = welcomemodetreewidget.h; sourceTree = ""; }; - 65B364B0121C261F003EAD18 /* winutils.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = winutils.cpp; sourceTree = ""; }; - 65B364B1121C261F003EAD18 /* winutils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = winutils.h; sourceTree = ""; }; - 65B364B2121C261F003EAD18 /* openpilotgcslibrary.pri */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = openpilotgcslibrary.pri; sourceTree = ""; }; - 65B364B3121C261F003EAD18 /* openpilotgcsplugin.pri */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = openpilotgcsplugin.pri; sourceTree = ""; }; - 65B364B6121C261F003EAD18 /* airframe.ui */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = airframe.ui; sourceTree = ""; }; - 65B364B7121C261F003EAD18 /* Config.pluginspec */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Config.pluginspec; sourceTree = ""; }; - 65B364B8121C261F003EAD18 /* config.pro */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = config.pro; sourceTree = ""; }; - 65B364B9121C261F003EAD18 /* configfactory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = configfactory.h; sourceTree = ""; }; - 65B364BA121C261F003EAD18 /* configgadget.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = configgadget.cpp; sourceTree = ""; }; - 65B364BB121C261F003EAD18 /* configgadget.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = configgadget.h; sourceTree = ""; }; - 65B364BC121C261F003EAD18 /* configgadget.qrc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = configgadget.qrc; sourceTree = ""; }; - 65B364BD121C261F003EAD18 /* configgadgetconfiguration.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = configgadgetconfiguration.cpp; sourceTree = ""; }; - 65B364BE121C261F003EAD18 /* configgadgetconfiguration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = configgadgetconfiguration.h; sourceTree = ""; }; - 65B364BF121C261F003EAD18 /* configgadgetfactory.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = configgadgetfactory.cpp; sourceTree = ""; }; - 65B364C0121C261F003EAD18 /* configgadgetfactory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = configgadgetfactory.h; sourceTree = ""; }; - 65B364C1121C261F003EAD18 /* configgadgetoptionspage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = configgadgetoptionspage.cpp; sourceTree = ""; }; - 65B364C2121C261F003EAD18 /* configgadgetoptionspage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = configgadgetoptionspage.h; sourceTree = ""; }; - 65B364C3121C261F003EAD18 /* configgadgetwidget.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = configgadgetwidget.cpp; sourceTree = ""; }; - 65B364C4121C261F003EAD18 /* configgadgetwidget.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = configgadgetwidget.h; sourceTree = ""; }; - 65B364C5121C261F003EAD18 /* configplugin.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = configplugin.cpp; sourceTree = ""; }; - 65B364C6121C261F003EAD18 /* configplugin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = configplugin.h; sourceTree = ""; }; - 65B364C7121C261F003EAD18 /* fancytabwidget.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = fancytabwidget.cpp; sourceTree = ""; }; - 65B364C8121C261F003EAD18 /* fancytabwidget.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fancytabwidget.h; sourceTree = ""; }; - 65B364CA121C261F003EAD18 /* Airframe.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Airframe.png; sourceTree = ""; }; - 65B364CB121C261F003EAD18 /* Servo.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Servo.png; sourceTree = ""; }; - 65B364CC121C261F003EAD18 /* XBee.svg */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = XBee.svg; sourceTree = ""; }; - 65B364CD121C261F003EAD18 /* settingswidget.ui */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = settingswidget.ui; sourceTree = ""; }; - 65B364CE121C261F003EAD18 /* telemetry.ui */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = telemetry.ui; sourceTree = ""; }; - 65B364D0121C261F003EAD18 /* consolegadget.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = consolegadget.cpp; sourceTree = ""; }; - 65B364D1121C261F003EAD18 /* consolegadget.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = consolegadget.h; sourceTree = ""; }; - 65B364D2121C261F003EAD18 /* ConsoleGadget.pluginspec */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = ConsoleGadget.pluginspec; sourceTree = ""; }; - 65B364D3121C261F003EAD18 /* consolegadget.pro */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = consolegadget.pro; sourceTree = ""; }; - 65B364D4121C261F003EAD18 /* consolegadgetfactory.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = consolegadgetfactory.cpp; sourceTree = ""; }; - 65B364D5121C261F003EAD18 /* consolegadgetfactory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = consolegadgetfactory.h; sourceTree = ""; }; - 65B364D6121C261F003EAD18 /* consolegadgetwidget.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = consolegadgetwidget.cpp; sourceTree = ""; }; - 65B364D7121C261F003EAD18 /* consolegadgetwidget.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = consolegadgetwidget.h; sourceTree = ""; }; - 65B364D8121C261F003EAD18 /* consoleplugin.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = consoleplugin.cpp; sourceTree = ""; }; - 65B364D9121C261F003EAD18 /* consoleplugin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = consoleplugin.h; sourceTree = ""; }; - 65B364DA121C261F003EAD18 /* texteditloggerengine.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = texteditloggerengine.cpp; sourceTree = ""; }; - 65B364DB121C261F003EAD18 /* texteditloggerengine.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = texteditloggerengine.h; sourceTree = ""; }; - 65B364DE121C261F003EAD18 /* actioncontainer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = actioncontainer.cpp; sourceTree = ""; }; - 65B364DF121C261F003EAD18 /* actioncontainer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = actioncontainer.h; sourceTree = ""; }; - 65B364E0121C261F003EAD18 /* actioncontainer_p.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = actioncontainer_p.h; sourceTree = ""; }; - 65B364E1121C261F003EAD18 /* actionmanager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = actionmanager.cpp; sourceTree = ""; }; - 65B364E2121C261F003EAD18 /* actionmanager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = actionmanager.h; sourceTree = ""; }; - 65B364E3121C261F003EAD18 /* actionmanager_p.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = actionmanager_p.h; sourceTree = ""; }; - 65B364E4121C261F003EAD18 /* command.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = command.cpp; sourceTree = ""; }; - 65B364E5121C261F003EAD18 /* command.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = command.h; sourceTree = ""; }; - 65B364E6121C261F003EAD18 /* command_p.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = command_p.h; sourceTree = ""; }; - 65B364E7121C261F003EAD18 /* commandsfile.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = commandsfile.cpp; sourceTree = ""; }; - 65B364E8121C261F003EAD18 /* commandsfile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = commandsfile.h; sourceTree = ""; }; - 65B364E9121C261F003EAD18 /* basemode.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = basemode.cpp; sourceTree = ""; }; - 65B364EA121C261F003EAD18 /* basemode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = basemode.h; sourceTree = ""; }; - 65B364EB121C261F003EAD18 /* baseview.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = baseview.cpp; sourceTree = ""; }; - 65B364EC121C261F003EAD18 /* baseview.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = baseview.h; sourceTree = ""; }; - 65B364ED121C261F003EAD18 /* connectionmanager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = connectionmanager.cpp; sourceTree = ""; }; - 65B364EE121C261F003EAD18 /* connectionmanager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = connectionmanager.h; sourceTree = ""; }; - 65B364EF121C261F003EAD18 /* Core.pluginspec */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Core.pluginspec; sourceTree = ""; }; - 65B364F0121C261F003EAD18 /* core.qrc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = core.qrc; sourceTree = ""; }; - 65B364F1121C261F003EAD18 /* core_global.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = core_global.h; sourceTree = ""; }; - 65B364F2121C261F003EAD18 /* coreconstants.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = coreconstants.h; sourceTree = ""; }; - 65B364F3121C261F003EAD18 /* coreimpl.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = coreimpl.cpp; sourceTree = ""; }; - 65B364F4121C261F003EAD18 /* coreimpl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = coreimpl.h; sourceTree = ""; }; - 65B364F5121C261F003EAD18 /* coreplugin.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = coreplugin.cpp; sourceTree = ""; }; - 65B364F6121C261F003EAD18 /* coreplugin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = coreplugin.h; sourceTree = ""; }; - 65B364F7121C261F003EAD18 /* coreplugin.pri */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = coreplugin.pri; sourceTree = ""; }; - 65B364F8121C261F003EAD18 /* coreplugin.pro */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = coreplugin.pro; sourceTree = ""; }; - 65B364F9121C261F003EAD18 /* coreplugin_dependencies.pri */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = coreplugin_dependencies.pri; sourceTree = ""; }; - 65B364FB121C261F003EAD18 /* ioptionspage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ioptionspage.cpp; sourceTree = ""; }; - 65B364FC121C261F003EAD18 /* ioptionspage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ioptionspage.h; sourceTree = ""; }; - 65B364FD121C261F003EAD18 /* iwizard.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = iwizard.cpp; sourceTree = ""; }; - 65B364FE121C261F003EAD18 /* iwizard.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = iwizard.h; sourceTree = ""; }; - 65B364FF121C261F003EAD18 /* settingsdialog.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = settingsdialog.cpp; sourceTree = ""; }; - 65B36500121C261F003EAD18 /* settingsdialog.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = settingsdialog.h; sourceTree = ""; }; - 65B36501121C261F003EAD18 /* settingsdialog.ui */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = settingsdialog.ui; sourceTree = ""; }; - 65B36502121C261F003EAD18 /* shortcutsettings.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = shortcutsettings.cpp; sourceTree = ""; }; - 65B36503121C261F003EAD18 /* shortcutsettings.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = shortcutsettings.h; sourceTree = ""; }; - 65B36504121C261F003EAD18 /* shortcutsettings.ui */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = shortcutsettings.ui; sourceTree = ""; }; - 65B36505121C261F003EAD18 /* eventfilteringmainwindow.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = eventfilteringmainwindow.cpp; sourceTree = ""; }; - 65B36506121C261F003EAD18 /* eventfilteringmainwindow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = eventfilteringmainwindow.h; sourceTree = ""; }; - 65B36507121C261F003EAD18 /* fancyactionbar.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = fancyactionbar.cpp; sourceTree = ""; }; - 65B36508121C261F003EAD18 /* fancyactionbar.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fancyactionbar.h; sourceTree = ""; }; - 65B36509121C261F003EAD18 /* fancyactionbar.qrc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = fancyactionbar.qrc; sourceTree = ""; }; - 65B3650A121C261F003EAD18 /* fancytabwidget.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = fancytabwidget.cpp; sourceTree = ""; }; - 65B3650B121C261F003EAD18 /* fancytabwidget.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fancytabwidget.h; sourceTree = ""; }; - 65B3650C121C261F003EAD18 /* fileiconprovider.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = fileiconprovider.cpp; sourceTree = ""; }; - 65B3650D121C261F003EAD18 /* fileiconprovider.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fileiconprovider.h; sourceTree = ""; }; - 65B3650E121C261F003EAD18 /* generalsettings.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = generalsettings.cpp; sourceTree = ""; }; - 65B3650F121C261F003EAD18 /* generalsettings.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = generalsettings.h; sourceTree = ""; }; - 65B36510121C261F003EAD18 /* generalsettings.ui */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = generalsettings.ui; sourceTree = ""; }; - 65B36511121C261F003EAD18 /* iconnection.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = iconnection.cpp; sourceTree = ""; }; - 65B36512121C261F003EAD18 /* iconnection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = iconnection.h; sourceTree = ""; }; - 65B36513121C261F003EAD18 /* icontext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = icontext.h; sourceTree = ""; }; - 65B36514121C261F003EAD18 /* icore.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = icore.cpp; sourceTree = ""; }; - 65B36515121C261F003EAD18 /* icore.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = icore.h; sourceTree = ""; }; - 65B36516121C261F003EAD18 /* icorelistener.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = icorelistener.h; sourceTree = ""; }; - 65B36518121C261F003EAD18 /* clean_pane_small.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = clean_pane_small.png; sourceTree = ""; }; - 65B36519121C261F003EAD18 /* clear.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = clear.png; sourceTree = ""; }; - 65B3651A121C261F003EAD18 /* closebutton.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = closebutton.png; sourceTree = ""; }; - 65B3651B121C261F003EAD18 /* darkclosebutton.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = darkclosebutton.png; sourceTree = ""; }; - 65B3651C121C261F003EAD18 /* dir.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = dir.png; sourceTree = ""; }; - 65B3651D121C261F003EAD18 /* editcopy.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = editcopy.png; sourceTree = ""; }; - 65B3651E121C261F003EAD18 /* editcut.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = editcut.png; sourceTree = ""; }; - 65B3651F121C261F003EAD18 /* editpaste.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = editpaste.png; sourceTree = ""; }; - 65B36520121C261F003EAD18 /* empty14.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = empty14.png; sourceTree = ""; }; - 65B36521121C261F003EAD18 /* exiticon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = exiticon.png; sourceTree = ""; }; - 65B36522121C261F003EAD18 /* extension.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = extension.png; sourceTree = ""; }; - 65B36523121C261F003EAD18 /* fancytoolbutton.svg */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = fancytoolbutton.svg; sourceTree = ""; }; - 65B36524121C261F003EAD18 /* filenew.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = filenew.png; sourceTree = ""; }; - 65B36525121C261F003EAD18 /* fileopen.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = fileopen.png; sourceTree = ""; }; - 65B36526121C261F003EAD18 /* filesave.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = filesave.png; sourceTree = ""; }; - 65B36527121C261F003EAD18 /* find.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = find.png; sourceTree = ""; }; - 65B36528121C261F003EAD18 /* findnext.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = findnext.png; sourceTree = ""; }; - 65B36529121C261F003EAD18 /* helpicon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = helpicon.png; sourceTree = ""; }; - 65B3652A121C261F003EAD18 /* inputfield.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = inputfield.png; sourceTree = ""; }; - 65B3652B121C261F003EAD18 /* inputfield_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = inputfield_disabled.png; sourceTree = ""; }; - 65B3652C121C261F003EAD18 /* linkicon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = linkicon.png; sourceTree = ""; }; - 65B3652D121C261F003EAD18 /* locked.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = locked.png; sourceTree = ""; }; - 65B3652E121C261F003EAD18 /* magnifier.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = magnifier.png; sourceTree = ""; }; - 65B3652F121C261F003EAD18 /* minus.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = minus.png; sourceTree = ""; }; - 65B36530121C261F003EAD18 /* mode_Debug.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = mode_Debug.png; sourceTree = ""; }; - 65B36531121C261F003EAD18 /* mode_Edit.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = mode_Edit.png; sourceTree = ""; }; - 65B36532121C261F003EAD18 /* mode_Output.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = mode_Output.png; sourceTree = ""; }; - 65B36533121C261F003EAD18 /* mode_Project.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = mode_Project.png; sourceTree = ""; }; - 65B36534121C261F003EAD18 /* mode_Reference.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = mode_Reference.png; sourceTree = ""; }; - 65B36535121C261F003EAD18 /* next.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = next.png; sourceTree = ""; }; - 65B36536121C261F003EAD18 /* openpilot_logo_128.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = openpilot_logo_128.png; sourceTree = ""; }; - 65B36537121C261F003EAD18 /* openpilot_logo_256.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = openpilot_logo_256.png; sourceTree = ""; }; - 65B36538121C261F003EAD18 /* openpilot_logo_32.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = openpilot_logo_32.png; sourceTree = ""; }; - 65B36539121C261F003EAD18 /* openpilot_logo_64.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = openpilot_logo_64.png; sourceTree = ""; }; - 65B3653A121C261F003EAD18 /* openpiloticon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = openpiloticon.png; sourceTree = ""; }; - 65B3653B121C261F003EAD18 /* optionsicon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = optionsicon.png; sourceTree = ""; }; - 65B3653C121C261F003EAD18 /* panel_button.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = panel_button.png; sourceTree = ""; }; - 65B3653D121C261F003EAD18 /* panel_button_checked.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = panel_button_checked.png; sourceTree = ""; }; - 65B3653E121C261F003EAD18 /* panel_button_checked_hover.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = panel_button_checked_hover.png; sourceTree = ""; }; - 65B3653F121C261F003EAD18 /* panel_button_hover.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = panel_button_hover.png; sourceTree = ""; }; - 65B36540121C261F003EAD18 /* panel_button_pressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = panel_button_pressed.png; sourceTree = ""; }; - 65B36541121C261F003EAD18 /* pluginicon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = pluginicon.png; sourceTree = ""; }; - 65B36542121C261F003EAD18 /* plus.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = plus.png; sourceTree = ""; }; - 65B36543121C261F003EAD18 /* prev.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = prev.png; sourceTree = ""; }; - 65B36544121C261F003EAD18 /* pushbutton.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = pushbutton.png; sourceTree = ""; }; - 65B36545121C261F003EAD18 /* pushbutton_hover.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = pushbutton_hover.png; sourceTree = ""; }; - 65B36546121C261F003EAD18 /* pushbutton_pressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = pushbutton_pressed.png; sourceTree = ""; }; - 65B36547121C261F003EAD18 /* qtcreator_logo_32.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = qtcreator_logo_32.png; sourceTree = ""; }; - 65B36548121C261F003EAD18 /* qtwatermark.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = qtwatermark.png; sourceTree = ""; }; - 65B36549121C261F003EAD18 /* redo.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = redo.png; sourceTree = ""; }; - 65B3654A121C261F003EAD18 /* replace.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = replace.png; sourceTree = ""; }; - 65B3654B121C261F003EAD18 /* reset.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = reset.png; sourceTree = ""; }; - 65B3654C121C261F003EAD18 /* sidebaricon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = sidebaricon.png; sourceTree = ""; }; - 65B3654D121C261F003EAD18 /* splitbutton_horizontal.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = splitbutton_horizontal.png; sourceTree = ""; }; - 65B3654E121C261F003EAD18 /* statusbar.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = statusbar.png; sourceTree = ""; }; - 65B3654F121C261F003EAD18 /* undo.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = undo.png; sourceTree = ""; }; - 65B36550121C261F003EAD18 /* unknownfile.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = unknownfile.png; sourceTree = ""; }; - 65B36551121C261F003EAD18 /* unlocked.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = unlocked.png; sourceTree = ""; }; - 65B36552121C261F003EAD18 /* imode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = imode.h; sourceTree = ""; }; - 65B36553121C261F003EAD18 /* ioutputpane.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ioutputpane.h; sourceTree = ""; }; - 65B36554121C261F003EAD18 /* iuavgadget.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = iuavgadget.cpp; sourceTree = ""; }; - 65B36555121C261F003EAD18 /* iuavgadget.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = iuavgadget.h; sourceTree = ""; }; - 65B36556121C261F003EAD18 /* iuavgadgetconfiguration.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = iuavgadgetconfiguration.cpp; sourceTree = ""; }; - 65B36557121C261F003EAD18 /* iuavgadgetconfiguration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = iuavgadgetconfiguration.h; sourceTree = ""; }; - 65B36558121C261F003EAD18 /* iuavgadgetfactory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = iuavgadgetfactory.h; sourceTree = ""; }; - 65B36559121C261F003EAD18 /* iversioncontrol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = iversioncontrol.h; sourceTree = ""; }; - 65B3655A121C261F003EAD18 /* iview.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = iview.h; sourceTree = ""; }; - 65B3655B121C261F003EAD18 /* mainwindow.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = mainwindow.cpp; sourceTree = ""; }; - 65B3655C121C261F003EAD18 /* mainwindow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mainwindow.h; sourceTree = ""; }; - 65B3655D121C261F003EAD18 /* manhattanstyle.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = manhattanstyle.cpp; sourceTree = ""; }; - 65B3655E121C261F003EAD18 /* manhattanstyle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = manhattanstyle.h; sourceTree = ""; }; - 65B3655F121C261F003EAD18 /* messagemanager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = messagemanager.cpp; sourceTree = ""; }; - 65B36560121C261F003EAD18 /* messagemanager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = messagemanager.h; sourceTree = ""; }; - 65B36561121C261F003EAD18 /* messageoutputwindow.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = messageoutputwindow.cpp; sourceTree = ""; }; - 65B36562121C261F003EAD18 /* messageoutputwindow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = messageoutputwindow.h; sourceTree = ""; }; - 65B36563121C261F003EAD18 /* mimedatabase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = mimedatabase.cpp; sourceTree = ""; }; - 65B36564121C261F003EAD18 /* mimedatabase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mimedatabase.h; sourceTree = ""; }; - 65B36565121C261F003EAD18 /* minisplitter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = minisplitter.cpp; sourceTree = ""; }; - 65B36566121C261F003EAD18 /* minisplitter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = minisplitter.h; sourceTree = ""; }; - 65B36567121C261F003EAD18 /* modemanager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = modemanager.cpp; sourceTree = ""; }; - 65B36568121C261F003EAD18 /* modemanager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = modemanager.h; sourceTree = ""; }; - 65B36569121C261F003EAD18 /* outputpane.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = outputpane.h; sourceTree = ""; }; - 65B3656A121C261F003EAD18 /* plugindialog.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = plugindialog.cpp; sourceTree = ""; }; - 65B3656B121C261F003EAD18 /* plugindialog.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = plugindialog.h; sourceTree = ""; }; - 65B3656C121C261F003EAD18 /* rightpane.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = rightpane.cpp; sourceTree = ""; }; - 65B3656D121C261F003EAD18 /* rightpane.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = rightpane.h; sourceTree = ""; }; - 65B3656E121C261F003EAD18 /* settingsdatabase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = settingsdatabase.cpp; sourceTree = ""; }; - 65B3656F121C261F003EAD18 /* settingsdatabase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = settingsdatabase.h; sourceTree = ""; }; - 65B36570121C261F003EAD18 /* sidebar.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = sidebar.cpp; sourceTree = ""; }; - 65B36571121C261F003EAD18 /* sidebar.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = sidebar.h; sourceTree = ""; }; - 65B36572121C261F003EAD18 /* styleanimator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = styleanimator.cpp; sourceTree = ""; }; - 65B36573121C261F003EAD18 /* styleanimator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = styleanimator.h; sourceTree = ""; }; - 65B36574121C261F003EAD18 /* tabpositionindicator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = tabpositionindicator.cpp; sourceTree = ""; }; - 65B36575121C261F003EAD18 /* tabpositionindicator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tabpositionindicator.h; sourceTree = ""; }; - 65B36576121C261F003EAD18 /* threadmanager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = threadmanager.cpp; sourceTree = ""; }; - 65B36577121C261F003EAD18 /* threadmanager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = threadmanager.h; sourceTree = ""; }; - 65B36578121C261F003EAD18 /* uavgadgetdecorator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = uavgadgetdecorator.cpp; sourceTree = ""; }; - 65B36579121C261F003EAD18 /* uavgadgetdecorator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = uavgadgetdecorator.h; sourceTree = ""; }; - 65B3657A121C261F003EAD18 /* uavgadgetinstancemanager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = uavgadgetinstancemanager.cpp; sourceTree = ""; }; - 65B3657B121C261F003EAD18 /* uavgadgetinstancemanager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = uavgadgetinstancemanager.h; sourceTree = ""; }; - 65B3657D121C261F003EAD18 /* uavgadgetmanager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = uavgadgetmanager.cpp; sourceTree = ""; }; - 65B3657E121C261F003EAD18 /* uavgadgetmanager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = uavgadgetmanager.h; sourceTree = ""; }; - 65B3657F121C261F003EAD18 /* uavgadgetview.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = uavgadgetview.cpp; sourceTree = ""; }; - 65B36580121C261F003EAD18 /* uavgadgetview.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = uavgadgetview.h; sourceTree = ""; }; - 65B36581121C261F003EAD18 /* uavgadgetmode.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = uavgadgetmode.cpp; sourceTree = ""; }; - 65B36582121C261F003EAD18 /* uavgadgetmode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = uavgadgetmode.h; sourceTree = ""; }; - 65B36583121C261F003EAD18 /* uavgadgetoptionspage.ui */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = uavgadgetoptionspage.ui; sourceTree = ""; }; - 65B36584121C261F003EAD18 /* uavgadgetoptionspagedecorator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = uavgadgetoptionspagedecorator.cpp; sourceTree = ""; }; - 65B36585121C261F003EAD18 /* uavgadgetoptionspagedecorator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = uavgadgetoptionspagedecorator.h; sourceTree = ""; }; - 65B36586121C261F003EAD18 /* uniqueidmanager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = uniqueidmanager.cpp; sourceTree = ""; }; - 65B36587121C261F003EAD18 /* uniqueidmanager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = uniqueidmanager.h; sourceTree = ""; }; - 65B36588121C261F003EAD18 /* variablemanager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = variablemanager.cpp; sourceTree = ""; }; - 65B36589121C261F003EAD18 /* variablemanager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = variablemanager.h; sourceTree = ""; }; - 65B3658A121C261F003EAD18 /* versiondialog.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = versiondialog.cpp; sourceTree = ""; }; - 65B3658B121C261F003EAD18 /* versiondialog.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = versiondialog.h; sourceTree = ""; }; - 65B3658C121C261F003EAD18 /* viewmanager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = viewmanager.cpp; sourceTree = ""; }; - 65B3658D121C261F003EAD18 /* viewmanager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = viewmanager.h; sourceTree = ""; }; - 65B3658E121C261F003EAD18 /* workspacesettings.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = workspacesettings.cpp; sourceTree = ""; }; - 65B3658F121C261F003EAD18 /* workspacesettings.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = workspacesettings.h; sourceTree = ""; }; - 65B36590121C261F003EAD18 /* workspacesettings.ui */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = workspacesettings.ui; sourceTree = ""; }; - 65B36592121C261F003EAD18 /* dial.pro */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = dial.pro; sourceTree = ""; }; - 65B36593121C261F003EAD18 /* dial.qrc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = dial.qrc; sourceTree = ""; }; - 65B36594121C261F003EAD18 /* dial_dependencies.pri */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = dial_dependencies.pri; sourceTree = ""; }; - 65B36595121C261F003EAD18 /* dialgadget.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = dialgadget.cpp; sourceTree = ""; }; - 65B36596121C261F003EAD18 /* dialgadget.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dialgadget.h; sourceTree = ""; }; - 65B36597121C261F003EAD18 /* DialGadget.pluginspec */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = DialGadget.pluginspec; sourceTree = ""; }; - 65B36598121C261F003EAD18 /* dialgadgetconfiguration.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = dialgadgetconfiguration.cpp; sourceTree = ""; }; - 65B36599121C261F003EAD18 /* dialgadgetconfiguration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dialgadgetconfiguration.h; sourceTree = ""; }; - 65B3659A121C261F003EAD18 /* dialgadgetfactory.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = dialgadgetfactory.cpp; sourceTree = ""; }; - 65B3659B121C261F003EAD18 /* dialgadgetfactory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dialgadgetfactory.h; sourceTree = ""; }; - 65B3659C121C261F003EAD18 /* dialgadgetoptionspage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = dialgadgetoptionspage.cpp; sourceTree = ""; }; - 65B3659D121C261F003EAD18 /* dialgadgetoptionspage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dialgadgetoptionspage.h; sourceTree = ""; }; - 65B3659E121C261F003EAD18 /* dialgadgetoptionspage.ui */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = dialgadgetoptionspage.ui; sourceTree = ""; }; - 65B3659F121C261F003EAD18 /* dialgadgetwidget.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = dialgadgetwidget.cpp; sourceTree = ""; }; - 65B365A0121C261F003EAD18 /* dialgadgetwidget.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dialgadgetwidget.h; sourceTree = ""; }; - 65B365A1121C261F003EAD18 /* dialplugin.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = dialplugin.cpp; sourceTree = ""; }; - 65B365A2121C261F003EAD18 /* dialplugin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dialplugin.h; sourceTree = ""; }; - 65B365A4121C261F003EAD18 /* empty.svg */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = empty.svg; sourceTree = ""; }; - 65B365A6121C261F003EAD18 /* DoNothing.pluginspec */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = DoNothing.pluginspec; sourceTree = ""; }; - 65B365A7121C261F003EAD18 /* donothing.pro */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = donothing.pro; sourceTree = ""; }; - 65B365A8121C261F003EAD18 /* donothingplugin.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = donothingplugin.cpp; sourceTree = ""; }; - 65B365A9121C261F003EAD18 /* donothingplugin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = donothingplugin.h; sourceTree = ""; }; - 65B365AB121C261F003EAD18 /* emptygadget.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = emptygadget.cpp; sourceTree = ""; }; - 65B365AC121C261F003EAD18 /* emptygadget.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = emptygadget.h; sourceTree = ""; }; - 65B365AD121C261F003EAD18 /* EmptyGadget.pluginspec */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = EmptyGadget.pluginspec; sourceTree = ""; }; - 65B365AE121C261F003EAD18 /* emptygadget.pro */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = emptygadget.pro; sourceTree = ""; }; - 65B365AF121C261F003EAD18 /* emptygadgetfactory.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = emptygadgetfactory.cpp; sourceTree = ""; }; - 65B365B0121C261F003EAD18 /* emptygadgetfactory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = emptygadgetfactory.h; sourceTree = ""; }; - 65B365B1121C261F003EAD18 /* emptygadgetwidget.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = emptygadgetwidget.cpp; sourceTree = ""; }; - 65B365B2121C261F003EAD18 /* emptygadgetwidget.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = emptygadgetwidget.h; sourceTree = ""; }; - 65B365B3121C261F003EAD18 /* emptyplugin.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = emptyplugin.cpp; sourceTree = ""; }; - 65B365B4121C261F003EAD18 /* emptyplugin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = emptyplugin.h; sourceTree = ""; }; - 65B365B6121C261F003EAD18 /* GCSControl.pluginspec */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = GCSControl.pluginspec; sourceTree = ""; }; - 65B365B7121C261F003EAD18 /* gcscontrol.pro */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = gcscontrol.pro; sourceTree = ""; }; - 65B365B8121C261F003EAD18 /* gcscontrol.qrc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = gcscontrol.qrc; sourceTree = ""; }; - 65B365B9121C261F003EAD18 /* gcscontrol.ui */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = gcscontrol.ui; sourceTree = ""; }; - 65B365BA121C261F003EAD18 /* gcscontrolgadget.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = gcscontrolgadget.cpp; sourceTree = ""; }; - 65B365BB121C261F003EAD18 /* gcscontrolgadget.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gcscontrolgadget.h; sourceTree = ""; }; - 65B365BC121C261F003EAD18 /* gcscontrolgadgetfactory.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = gcscontrolgadgetfactory.cpp; sourceTree = ""; }; - 65B365BD121C261F003EAD18 /* gcscontrolgadgetfactory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gcscontrolgadgetfactory.h; sourceTree = ""; }; - 65B365BE121C261F003EAD18 /* gcscontrolgadgetwidget.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = gcscontrolgadgetwidget.cpp; sourceTree = ""; }; - 65B365BF121C261F003EAD18 /* gcscontrolgadgetwidget.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gcscontrolgadgetwidget.h; sourceTree = ""; }; - 65B365C0121C261F003EAD18 /* gcscontrolplugin.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = gcscontrolplugin.cpp; sourceTree = ""; }; - 65B365C1121C261F003EAD18 /* gcscontrolplugin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gcscontrolplugin.h; sourceTree = ""; }; - 65B365C2121C261F003EAD18 /* gcsonctrolgadgetwidget.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gcsonctrolgadgetwidget.h; sourceTree = ""; }; - 65B365C4121C261F003EAD18 /* joystick.svg */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = joystick.svg; sourceTree = ""; }; - 65B365C5121C261F003EAD18 /* joystickcontrol.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = joystickcontrol.cpp; sourceTree = ""; }; - 65B365C6121C261F003EAD18 /* joystickcontrol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = joystickcontrol.h; sourceTree = ""; }; - 65B365C8121C261F003EAD18 /* buffer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = buffer.cpp; sourceTree = ""; }; - 65B365C9121C261F003EAD18 /* buffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = buffer.h; sourceTree = ""; }; - 65B365CA121C261F003EAD18 /* gpsdisplay.pro */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = gpsdisplay.pro; sourceTree = ""; }; - 65B365CB121C261F003EAD18 /* gpsdisplay_dependencies.pri */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = gpsdisplay_dependencies.pri; sourceTree = ""; }; - 65B365CC121C261F003EAD18 /* gpsdisplaygadget.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = gpsdisplaygadget.cpp; sourceTree = ""; }; - 65B365CD121C261F003EAD18 /* gpsdisplaygadget.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gpsdisplaygadget.h; sourceTree = ""; }; - 65B365CE121C261F003EAD18 /* GpsDisplayGadget.pluginspec */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = GpsDisplayGadget.pluginspec; sourceTree = ""; }; - 65B365CF121C261F003EAD18 /* gpsdisplaygadgetconfiguration.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = gpsdisplaygadgetconfiguration.cpp; sourceTree = ""; }; - 65B365D0121C261F003EAD18 /* gpsdisplaygadgetconfiguration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gpsdisplaygadgetconfiguration.h; sourceTree = ""; }; - 65B365D1121C261F003EAD18 /* gpsdisplaygadgetfactory.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = gpsdisplaygadgetfactory.cpp; sourceTree = ""; }; - 65B365D2121C261F003EAD18 /* gpsdisplaygadgetfactory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gpsdisplaygadgetfactory.h; sourceTree = ""; }; - 65B365D3121C261F003EAD18 /* gpsdisplaygadgetoptionspage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = gpsdisplaygadgetoptionspage.cpp; sourceTree = ""; }; - 65B365D4121C261F003EAD18 /* gpsdisplaygadgetoptionspage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gpsdisplaygadgetoptionspage.h; sourceTree = ""; }; - 65B365D5121C261F003EAD18 /* gpsdisplaygadgetoptionspage.ui */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = gpsdisplaygadgetoptionspage.ui; sourceTree = ""; }; - 65B365D6121C261F003EAD18 /* gpsdisplayplugin.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = gpsdisplayplugin.cpp; sourceTree = ""; }; - 65B365D7121C261F003EAD18 /* gpsdisplayplugin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gpsdisplayplugin.h; sourceTree = ""; }; - 65B365D8121C261F003EAD18 /* gpsdisplaythread.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = gpsdisplaythread.cpp; sourceTree = ""; }; - 65B365D9121C261F003EAD18 /* gpsdisplaythread.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gpsdisplaythread.h; sourceTree = ""; }; - 65B365DA121C261F003EAD18 /* gpsdisplaywidget.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = gpsdisplaywidget.cpp; sourceTree = ""; }; - 65B365DB121C261F003EAD18 /* gpsdisplaywidget.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gpsdisplaywidget.h; sourceTree = ""; }; - 65B365DC121C261F003EAD18 /* gpsdisplaywidget.ui */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = gpsdisplaywidget.ui; sourceTree = ""; }; - 65B365DE121C261F003EAD18 /* flatEarth.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = flatEarth.png; sourceTree = ""; }; - 65B365DF121C261F003EAD18 /* gpsEarth.svg */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = gpsEarth.svg; sourceTree = ""; }; - 65B365E0121C261F003EAD18 /* nmeaparser.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = nmeaparser.cpp; sourceTree = ""; }; - 65B365E1121C261F003EAD18 /* nmeaparser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = nmeaparser.h; sourceTree = ""; }; - 65B365E2121C261F003EAD18 /* widgetresources.qrc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = widgetresources.qrc; sourceTree = ""; }; - 65B365E4121C261F003EAD18 /* flightgearbridge.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = flightgearbridge.cpp; sourceTree = ""; }; - 65B365E5121C2620003EAD18 /* flightgearbridge.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = flightgearbridge.h; sourceTree = ""; }; - 65B365E6121C2620003EAD18 /* hitl.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = hitl.cpp; sourceTree = ""; }; - 65B365E7121C2620003EAD18 /* hitl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = hitl.h; sourceTree = ""; }; - 65B365E8121C2620003EAD18 /* HITL.pluginspec */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = HITL.pluginspec; sourceTree = ""; }; - 65B365E9121C2620003EAD18 /* hitl.pro */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = hitl.pro; sourceTree = ""; }; - 65B365EA121C2620003EAD18 /* hitl_dependencies.pri */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = hitl_dependencies.pri; sourceTree = ""; }; - 65B365EB121C2620003EAD18 /* hitlconfiguration.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = hitlconfiguration.cpp; sourceTree = ""; }; - 65B365EC121C2620003EAD18 /* hitlconfiguration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = hitlconfiguration.h; sourceTree = ""; }; - 65B365ED121C2620003EAD18 /* hitlfactory.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = hitlfactory.cpp; sourceTree = ""; }; - 65B365EE121C2620003EAD18 /* hitlfactory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = hitlfactory.h; sourceTree = ""; }; - 65B365EF121C2620003EAD18 /* hitloptionspage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = hitloptionspage.cpp; sourceTree = ""; }; - 65B365F0121C2620003EAD18 /* hitloptionspage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = hitloptionspage.h; sourceTree = ""; }; - 65B365F1121C2620003EAD18 /* hitloptionspage.ui */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = hitloptionspage.ui; sourceTree = ""; }; - 65B365F2121C2620003EAD18 /* hitlplugin.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = hitlplugin.cpp; sourceTree = ""; }; - 65B365F3121C2620003EAD18 /* hitlplugin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = hitlplugin.h; sourceTree = ""; }; - 65B365F4121C2620003EAD18 /* hitlresources.qrc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = hitlresources.qrc; sourceTree = ""; }; - 65B365F5121C2620003EAD18 /* hitlwidget.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = hitlwidget.cpp; sourceTree = ""; }; - 65B365F6121C2620003EAD18 /* hitlwidget.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = hitlwidget.h; sourceTree = ""; }; - 65B365F7121C2620003EAD18 /* hitlwidget.ui */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = hitlwidget.ui; sourceTree = ""; }; - 65B365F8121C2620003EAD18 /* opfgprotocol.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = opfgprotocol.xml; sourceTree = ""; }; - 65B365FA121C2620003EAD18 /* hitlil2.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = hitlil2.cpp; sourceTree = ""; }; - 65B365FB121C2620003EAD18 /* hitlil2.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = hitlil2.h; sourceTree = ""; }; - 65B365FC121C2620003EAD18 /* HITLIL2.pluginspec */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = HITLIL2.pluginspec; sourceTree = ""; }; - 65B365FD121C2620003EAD18 /* hitlil2.pro */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = hitlil2.pro; sourceTree = ""; }; - 65B365FE121C2620003EAD18 /* hitlil2_dependencies.pri */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = hitlil2_dependencies.pri; sourceTree = ""; }; - 65B365FF121C2620003EAD18 /* hitlil2configuration.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = hitlil2configuration.cpp; sourceTree = ""; }; - 65B36600121C2620003EAD18 /* hitlil2configuration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = hitlil2configuration.h; sourceTree = ""; }; - 65B36601121C2620003EAD18 /* hitlil2factory.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = hitlil2factory.cpp; sourceTree = ""; }; - 65B36602121C2620003EAD18 /* hitlil2factory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = hitlil2factory.h; sourceTree = ""; }; - 65B36603121C2620003EAD18 /* hitlil2optionspage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = hitlil2optionspage.cpp; sourceTree = ""; }; - 65B36604121C2620003EAD18 /* hitlil2optionspage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = hitlil2optionspage.h; sourceTree = ""; }; - 65B36605121C2620003EAD18 /* hitlil2optionspage.ui */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = hitlil2optionspage.ui; sourceTree = ""; }; - 65B36606121C2620003EAD18 /* hitlil2plugin.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = hitlil2plugin.cpp; sourceTree = ""; }; - 65B36607121C2620003EAD18 /* hitlil2plugin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = hitlil2plugin.h; sourceTree = ""; }; - 65B36608121C2620003EAD18 /* hitlil2widget.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = hitlil2widget.cpp; sourceTree = ""; }; - 65B36609121C2620003EAD18 /* hitlil2widget.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = hitlil2widget.h; sourceTree = ""; }; - 65B3660A121C2620003EAD18 /* hitlil2widget.ui */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = hitlil2widget.ui; sourceTree = ""; }; - 65B3660B121C2620003EAD18 /* il2bridge.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = il2bridge.cpp; sourceTree = ""; }; - 65B3660C121C2620003EAD18 /* il2bridge.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = il2bridge.h; sourceTree = ""; }; - 65B3660E121C2620003EAD18 /* importexport.pro */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = importexport.pro; sourceTree = ""; }; - 65B3660F121C2620003EAD18 /* importexport_dependencies.pri */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = importexport_dependencies.pri; sourceTree = ""; }; - 65B36610121C2620003EAD18 /* importexport_global.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = importexport_global.h; sourceTree = ""; }; - 65B36611121C2620003EAD18 /* importexportgadget.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = importexportgadget.cpp; sourceTree = ""; }; - 65B36612121C2620003EAD18 /* importexportgadget.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = importexportgadget.h; sourceTree = ""; }; - 65B36613121C2620003EAD18 /* ImportExportGadget.pluginspec */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = ImportExportGadget.pluginspec; sourceTree = ""; }; - 65B36614121C2620003EAD18 /* importexportgadgetconfiguration.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = importexportgadgetconfiguration.cpp; sourceTree = ""; }; - 65B36615121C2620003EAD18 /* importexportgadgetconfiguration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = importexportgadgetconfiguration.h; sourceTree = ""; }; - 65B36616121C2620003EAD18 /* importexportgadgetfactory.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = importexportgadgetfactory.cpp; sourceTree = ""; }; - 65B36617121C2620003EAD18 /* importexportgadgetfactory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = importexportgadgetfactory.h; sourceTree = ""; }; - 65B36618121C2620003EAD18 /* importexportgadgetoptionspage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = importexportgadgetoptionspage.cpp; sourceTree = ""; }; - 65B36619121C2620003EAD18 /* importexportgadgetoptionspage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = importexportgadgetoptionspage.h; sourceTree = ""; }; - 65B3661A121C2620003EAD18 /* importexportgadgetoptionspage.ui */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = importexportgadgetoptionspage.ui; sourceTree = ""; }; - 65B3661B121C2620003EAD18 /* importexportgadgetwidget.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = importexportgadgetwidget.cpp; sourceTree = ""; }; - 65B3661C121C2620003EAD18 /* importexportgadgetwidget.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = importexportgadgetwidget.h; sourceTree = ""; }; - 65B3661D121C2620003EAD18 /* importexportgadgetwidget.ui */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = importexportgadgetwidget.ui; sourceTree = ""; }; - 65B3661E121C2620003EAD18 /* importexportplugin.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = importexportplugin.cpp; sourceTree = ""; }; - 65B3661F121C2620003EAD18 /* importexportplugin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = importexportplugin.h; sourceTree = ""; }; - 65B36621121C2620003EAD18 /* IPconnection.pluginspec */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = IPconnection.pluginspec; sourceTree = ""; }; - 65B36622121C2620003EAD18 /* ipconnection.pri */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = ipconnection.pri; sourceTree = ""; }; - 65B36623121C2620003EAD18 /* ipconnection.pro */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = ipconnection.pro; sourceTree = ""; }; - 65B36624121C2620003EAD18 /* ipconnection_dependencies.pri */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = ipconnection_dependencies.pri; sourceTree = ""; }; - 65B36625121C2620003EAD18 /* ipconnection_global.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ipconnection_global.h; sourceTree = ""; }; - 65B36626121C2620003EAD18 /* ipconnectionconfiguration.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ipconnectionconfiguration.cpp; sourceTree = ""; }; - 65B36627121C2620003EAD18 /* ipconnectionconfiguration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ipconnectionconfiguration.h; sourceTree = ""; }; - 65B36628121C2620003EAD18 /* ipconnectionoptionspage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ipconnectionoptionspage.cpp; sourceTree = ""; }; - 65B36629121C2620003EAD18 /* ipconnectionoptionspage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ipconnectionoptionspage.h; sourceTree = ""; }; - 65B3662A121C2620003EAD18 /* ipconnectionoptionspage.ui */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = ipconnectionoptionspage.ui; sourceTree = ""; }; - 65B3662B121C2620003EAD18 /* ipconnectionplugin.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ipconnectionplugin.cpp; sourceTree = ""; }; - 65B3662C121C2620003EAD18 /* ipconnectionplugin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ipconnectionplugin.h; sourceTree = ""; }; - 65B3662F121C2620003EAD18 /* empty.svg */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = empty.svg; sourceTree = ""; }; - 65B36630121C2620003EAD18 /* lineardial.pro */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = lineardial.pro; sourceTree = ""; }; - 65B36631121C2620003EAD18 /* lineardial.qrc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = lineardial.qrc; sourceTree = ""; }; - 65B36632121C2620003EAD18 /* lineardial_dependencies.pri */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = lineardial_dependencies.pri; sourceTree = ""; }; - 65B36633121C2620003EAD18 /* lineardialgadget.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lineardialgadget.cpp; sourceTree = ""; }; - 65B36634121C2620003EAD18 /* lineardialgadget.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lineardialgadget.h; sourceTree = ""; }; - 65B36635121C2620003EAD18 /* LineardialGadget.pluginspec */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = LineardialGadget.pluginspec; sourceTree = ""; }; - 65B36636121C2620003EAD18 /* lineardialgadgetconfiguration.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lineardialgadgetconfiguration.cpp; sourceTree = ""; }; - 65B36637121C2620003EAD18 /* lineardialgadgetconfiguration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lineardialgadgetconfiguration.h; sourceTree = ""; }; - 65B36638121C2620003EAD18 /* lineardialgadgetfactory.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lineardialgadgetfactory.cpp; sourceTree = ""; }; - 65B36639121C2620003EAD18 /* lineardialgadgetfactory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lineardialgadgetfactory.h; sourceTree = ""; }; - 65B3663A121C2620003EAD18 /* lineardialgadgetoptionspage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lineardialgadgetoptionspage.cpp; sourceTree = ""; }; - 65B3663B121C2620003EAD18 /* lineardialgadgetoptionspage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lineardialgadgetoptionspage.h; sourceTree = ""; }; - 65B3663C121C2620003EAD18 /* lineardialgadgetoptionspage.ui */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = lineardialgadgetoptionspage.ui; sourceTree = ""; }; - 65B3663D121C2620003EAD18 /* lineardialgadgetwidget.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lineardialgadgetwidget.cpp; sourceTree = ""; }; - 65B3663E121C2620003EAD18 /* lineardialgadgetwidget.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lineardialgadgetwidget.h; sourceTree = ""; }; - 65B3663F121C2620003EAD18 /* lineardialplugin.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lineardialplugin.cpp; sourceTree = ""; }; - 65B36640121C2620003EAD18 /* lineardialplugin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lineardialplugin.h; sourceTree = ""; }; - 65B36642121C2620003EAD18 /* modelview.pro */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = modelview.pro; sourceTree = ""; }; - 65B36643121C2620003EAD18 /* modelview_dependencies.pri */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = modelview_dependencies.pri; sourceTree = ""; }; - 65B36644121C2620003EAD18 /* modelviewgadget.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = modelviewgadget.cpp; sourceTree = ""; }; - 65B36645121C2620003EAD18 /* modelviewgadget.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = modelviewgadget.h; sourceTree = ""; }; - 65B36646121C2620003EAD18 /* ModelViewGadget.pluginspec */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = ModelViewGadget.pluginspec; sourceTree = ""; }; - 65B36647121C2620003EAD18 /* modelviewgadgetconfiguration.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = modelviewgadgetconfiguration.cpp; sourceTree = ""; }; - 65B36648121C2620003EAD18 /* modelviewgadgetconfiguration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = modelviewgadgetconfiguration.h; sourceTree = ""; }; - 65B36649121C2620003EAD18 /* modelviewgadgetfactory.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = modelviewgadgetfactory.cpp; sourceTree = ""; }; - 65B3664A121C2620003EAD18 /* modelviewgadgetfactory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = modelviewgadgetfactory.h; sourceTree = ""; }; - 65B3664B121C2620003EAD18 /* modelviewgadgetoptionspage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = modelviewgadgetoptionspage.cpp; sourceTree = ""; }; - 65B3664C121C2620003EAD18 /* modelviewgadgetoptionspage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = modelviewgadgetoptionspage.h; sourceTree = ""; }; - 65B3664D121C2620003EAD18 /* modelviewgadgetwidget.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = modelviewgadgetwidget.cpp; sourceTree = ""; }; - 65B3664E121C2620003EAD18 /* modelviewgadgetwidget.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = modelviewgadgetwidget.h; sourceTree = ""; }; - 65B3664F121C2620003EAD18 /* modelviewoptionspage.ui */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = modelviewoptionspage.ui; sourceTree = ""; }; - 65B36650121C2620003EAD18 /* modelviewplugin.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = modelviewplugin.cpp; sourceTree = ""; }; - 65B36651121C2620003EAD18 /* modelviewplugin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = modelviewplugin.h; sourceTree = ""; }; - 65B36654121C2620003EAD18 /* add.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = add.png; sourceTree = ""; }; - 65B36655121C2620003EAD18 /* delete.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = delete.png; sourceTree = ""; }; - 65B36656121C2620003EAD18 /* modify.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = modify.png; sourceTree = ""; }; - 65B36657121C2620003EAD18 /* play.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = play.png; sourceTree = ""; }; - 65B36658121C2620003EAD18 /* play2.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = play2.png; sourceTree = ""; }; - 65B36659121C2620003EAD18 /* stop.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = stop.png; sourceTree = ""; }; - 65B3665A121C2620003EAD18 /* notify.pro */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = notify.pro; sourceTree = ""; }; - 65B3665B121C2620003EAD18 /* notifyitemdelegate.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = notifyitemdelegate.cpp; sourceTree = ""; }; - 65B3665C121C2620003EAD18 /* notifyitemdelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = notifyitemdelegate.h; sourceTree = ""; }; - 65B3665D121C2620003EAD18 /* notifyplugin.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = notifyplugin.cpp; sourceTree = ""; }; - 65B3665E121C2620003EAD18 /* notifyplugin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = notifyplugin.h; sourceTree = ""; }; - 65B3665F121C2620003EAD18 /* NotifyPlugin.pluginspec */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = NotifyPlugin.pluginspec; sourceTree = ""; }; - 65B36660121C2620003EAD18 /* notifyplugin_dependencies.pri */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = notifyplugin_dependencies.pri; sourceTree = ""; }; - 65B36661121C2620003EAD18 /* notifypluginconfiguration.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = notifypluginconfiguration.cpp; sourceTree = ""; }; - 65B36662121C2620003EAD18 /* notifypluginconfiguration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = notifypluginconfiguration.h; sourceTree = ""; }; - 65B36663121C2620003EAD18 /* notifypluginfactory.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = notifypluginfactory.cpp; sourceTree = ""; }; - 65B36664121C2620003EAD18 /* notifypluginfactory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = notifypluginfactory.h; sourceTree = ""; }; - 65B36665121C2620003EAD18 /* notifyplugingadget.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = notifyplugingadget.h; sourceTree = ""; }; - 65B36666121C2620003EAD18 /* notifypluginoptionspage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = notifypluginoptionspage.cpp; sourceTree = ""; }; - 65B36667121C2620003EAD18 /* notifypluginoptionspage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = notifypluginoptionspage.h; sourceTree = ""; }; - 65B36668121C2620003EAD18 /* notifypluginoptionspage.ui */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = notifypluginoptionspage.ui; sourceTree = ""; }; - 65B36669121C2620003EAD18 /* notifytablemodel.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = notifytablemodel.cpp; sourceTree = ""; }; - 65B3666A121C2620003EAD18 /* notifytablemodel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = notifytablemodel.h; sourceTree = ""; }; - 65B3666B121C2620003EAD18 /* res.qrc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = res.qrc; sourceTree = ""; }; - 65B3666E121C2620003EAD18 /* Blank.psd */ = {isa = PBXFileReference; lastKnownFileType = file; path = Blank.psd; sourceTree = ""; }; - 65B3666F121C2620003EAD18 /* Blank_Pressed.psd */ = {isa = PBXFileReference; lastKnownFileType = file; path = Blank_Pressed.psd; sourceTree = ""; }; - 65B36670121C2620003EAD18 /* button_bar.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = button_bar.png; sourceTree = ""; }; - 65B36671121C2620003EAD18 /* circle.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = circle.png; sourceTree = ""; }; - 65B36672121C2620003EAD18 /* combobox_down_arrow.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = combobox_down_arrow.png; sourceTree = ""; }; - 65B36673121C2620003EAD18 /* gcs.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = gcs.png; sourceTree = ""; }; - 65B36674121C2620003EAD18 /* go.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = go.png; sourceTree = ""; }; - 65B36675121C2620003EAD18 /* hold.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = hold.png; sourceTree = ""; }; - 65B36676121C2620003EAD18 /* home.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = home.png; sourceTree = ""; }; - 65B36677121C2620003EAD18 /* hover.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = hover.png; sourceTree = ""; }; - 65B36678121C2620003EAD18 /* left_but.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = left_but.png; sourceTree = ""; }; - 65B36679121C2620003EAD18 /* minus.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = minus.png; sourceTree = ""; }; - 65B3667A121C2620003EAD18 /* minus2.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = minus2.png; sourceTree = ""; }; - 65B3667B121C2620003EAD18 /* next_waypoint.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = next_waypoint.png; sourceTree = ""; }; - 65B3667C121C2620003EAD18 /* ok.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ok.png; sourceTree = ""; }; - 65B3667D121C2620003EAD18 /* pause.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = pause.png; sourceTree = ""; }; - 65B3667E121C2620003EAD18 /* plus.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = plus.png; sourceTree = ""; }; - 65B3667F121C2620003EAD18 /* plus2.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = plus2.png; sourceTree = ""; }; - 65B36680121C2620003EAD18 /* prev_waypoint.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = prev_waypoint.png; sourceTree = ""; }; - 65B36681121C2620003EAD18 /* right_but.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = right_but.png; sourceTree = ""; }; - 65B36682121C2620003EAD18 /* stop.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = stop.png; sourceTree = ""; }; - 65B36683121C2620003EAD18 /* uav.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = uav.png; sourceTree = ""; }; - 65B36684121C2620003EAD18 /* uav_heading.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = uav_heading.png; sourceTree = ""; }; - 65B36685121C2620003EAD18 /* uav_trail.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = uav_trail.png; sourceTree = ""; }; - 65B36686121C2620003EAD18 /* uav_trail_clear.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = uav_trail_clear.png; sourceTree = ""; }; - 65B36687121C2620003EAD18 /* waypoint.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = waypoint.png; sourceTree = ""; }; - 65B36688121C2620003EAD18 /* waypoint_marker1.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = waypoint_marker1.png; sourceTree = ""; }; - 65B36689121C2620003EAD18 /* waypoint_marker2.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = waypoint_marker2.png; sourceTree = ""; }; - 65B3668A121C2620003EAD18 /* opmap.pro */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = opmap.pro; sourceTree = ""; }; - 65B3668B121C2620003EAD18 /* opmap.qrc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = opmap.qrc; sourceTree = ""; }; - 65B3668C121C2620003EAD18 /* opmap_edit_waypoint_dialog.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = opmap_edit_waypoint_dialog.cpp; sourceTree = ""; }; - 65B3668D121C2620003EAD18 /* opmap_edit_waypoint_dialog.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = opmap_edit_waypoint_dialog.h; sourceTree = ""; }; - 65B3668E121C2620003EAD18 /* opmap_edit_waypoint_dialog.ui */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = opmap_edit_waypoint_dialog.ui; sourceTree = ""; }; - 65B3668F121C2620003EAD18 /* opmap_overlay_widget.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = opmap_overlay_widget.cpp; sourceTree = ""; }; - 65B36690121C2620003EAD18 /* opmap_overlay_widget.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = opmap_overlay_widget.h; sourceTree = ""; }; - 65B36691121C2620003EAD18 /* opmap_overlay_widget.ui */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = opmap_overlay_widget.ui; sourceTree = ""; }; - 65B36692121C2620003EAD18 /* opmap_statusbar_widget.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = opmap_statusbar_widget.cpp; sourceTree = ""; }; - 65B36693121C2620003EAD18 /* opmap_statusbar_widget.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = opmap_statusbar_widget.h; sourceTree = ""; }; - 65B36694121C2620003EAD18 /* opmap_statusbar_widget.ui */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = opmap_statusbar_widget.ui; sourceTree = ""; }; - 65B36695121C2620003EAD18 /* opmap_waypointeditor_dialog.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = opmap_waypointeditor_dialog.cpp; sourceTree = ""; }; - 65B36696121C2620003EAD18 /* opmap_waypointeditor_dialog.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = opmap_waypointeditor_dialog.h; sourceTree = ""; }; - 65B36697121C2620003EAD18 /* opmap_waypointeditor_dialog.ui */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = opmap_waypointeditor_dialog.ui; sourceTree = ""; }; - 65B36698121C2620003EAD18 /* opmap_widget.ui */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = opmap_widget.ui; sourceTree = ""; }; - 65B36699121C2620003EAD18 /* opmap_zoom_slider_widget.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = opmap_zoom_slider_widget.cpp; sourceTree = ""; }; - 65B3669A121C2620003EAD18 /* opmap_zoom_slider_widget.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = opmap_zoom_slider_widget.h; sourceTree = ""; }; - 65B3669B121C2620003EAD18 /* opmap_zoom_slider_widget.ui */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = opmap_zoom_slider_widget.ui; sourceTree = ""; }; - 65B3669C121C2620003EAD18 /* opmapgadget.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = opmapgadget.cpp; sourceTree = ""; }; - 65B3669D121C2620003EAD18 /* opmapgadget.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = opmapgadget.h; sourceTree = ""; }; - 65B3669E121C2620003EAD18 /* OPMapGadget.pluginspec */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = OPMapGadget.pluginspec; sourceTree = ""; }; - 65B3669F121C2620003EAD18 /* opmapgadgetconfiguration.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = opmapgadgetconfiguration.cpp; sourceTree = ""; }; - 65B366A0121C2620003EAD18 /* opmapgadgetconfiguration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = opmapgadgetconfiguration.h; sourceTree = ""; }; - 65B366A1121C2620003EAD18 /* opmapgadgetfactory.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = opmapgadgetfactory.cpp; sourceTree = ""; }; - 65B366A2121C2620003EAD18 /* opmapgadgetfactory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = opmapgadgetfactory.h; sourceTree = ""; }; - 65B366A3121C2620003EAD18 /* opmapgadgetoptionspage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = opmapgadgetoptionspage.cpp; sourceTree = ""; }; - 65B366A4121C2620003EAD18 /* opmapgadgetoptionspage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = opmapgadgetoptionspage.h; sourceTree = ""; }; - 65B366A5121C2620003EAD18 /* opmapgadgetoptionspage.ui */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = opmapgadgetoptionspage.ui; sourceTree = ""; }; - 65B366A6121C2620003EAD18 /* opmapgadgetwidget.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = opmapgadgetwidget.cpp; sourceTree = ""; }; - 65B366A7121C2620003EAD18 /* opmapgadgetwidget.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = opmapgadgetwidget.h; sourceTree = ""; }; - 65B366A8121C2620003EAD18 /* opmapplugin.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = opmapplugin.cpp; sourceTree = ""; }; - 65B366A9121C2620003EAD18 /* opmapplugin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = opmapplugin.h; sourceTree = ""; }; - 65B366AC121C2620003EAD18 /* pfd-default.svg */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = "pfd-default.svg"; sourceTree = ""; }; - 65B366AD121C2620003EAD18 /* pfd.pro */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = pfd.pro; sourceTree = ""; }; - 65B366AE121C2620003EAD18 /* pfd.qrc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = pfd.qrc; sourceTree = ""; }; - 65B366AF121C2620003EAD18 /* pfd_dependencies.pri */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = pfd_dependencies.pri; sourceTree = ""; }; - 65B366B0121C2620003EAD18 /* pfdgadget.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = pfdgadget.cpp; sourceTree = ""; }; - 65B366B1121C2620003EAD18 /* pfdgadget.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pfdgadget.h; sourceTree = ""; }; - 65B366B2121C2620003EAD18 /* PFDGadget.pluginspec */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = PFDGadget.pluginspec; sourceTree = ""; }; - 65B366B3121C2620003EAD18 /* pfdgadgetconfiguration.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = pfdgadgetconfiguration.cpp; sourceTree = ""; }; - 65B366B4121C2620003EAD18 /* pfdgadgetconfiguration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pfdgadgetconfiguration.h; sourceTree = ""; }; - 65B366B5121C2620003EAD18 /* pfdgadgetfactory.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = pfdgadgetfactory.cpp; sourceTree = ""; }; - 65B366B6121C2620003EAD18 /* pfdgadgetfactory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pfdgadgetfactory.h; sourceTree = ""; }; - 65B366B7121C2620003EAD18 /* pfdgadgetoptionspage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = pfdgadgetoptionspage.cpp; sourceTree = ""; }; - 65B366B8121C2620003EAD18 /* pfdgadgetoptionspage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pfdgadgetoptionspage.h; sourceTree = ""; }; - 65B366B9121C2620003EAD18 /* pfdgadgetoptionspage.ui */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = pfdgadgetoptionspage.ui; sourceTree = ""; }; - 65B366BA121C2620003EAD18 /* pfdgadgetwidget.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = pfdgadgetwidget.cpp; sourceTree = ""; }; - 65B366BB121C2620003EAD18 /* pfdgadgetwidget.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pfdgadgetwidget.h; sourceTree = ""; }; - 65B366BC121C2620003EAD18 /* pfdplugin.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = pfdplugin.cpp; sourceTree = ""; }; - 65B366BD121C2620003EAD18 /* pfdplugin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pfdplugin.h; sourceTree = ""; }; - 65B366BE121C2620003EAD18 /* plugins.pro */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = plugins.pro; sourceTree = ""; }; - 65B366C0121C2620003EAD18 /* pjrc_rawhid.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pjrc_rawhid.h; sourceTree = ""; }; - 65B366C1121C2620003EAD18 /* pjrc_rawhid_mac.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = pjrc_rawhid_mac.cpp; sourceTree = ""; }; - 65B366C2121C2620003EAD18 /* pjrc_rawhid_unix.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = pjrc_rawhid_unix.cpp; sourceTree = ""; }; - 65B366C3121C2620003EAD18 /* pjrc_rawhid_win.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = pjrc_rawhid_win.cpp; sourceTree = ""; }; - 65B366C4121C2620003EAD18 /* rawhid.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = rawhid.cpp; sourceTree = ""; }; - 65B366C5121C2620003EAD18 /* rawhid.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = rawhid.h; sourceTree = ""; }; - 65B366C6121C2620003EAD18 /* RawHID.pluginspec */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = RawHID.pluginspec; sourceTree = ""; }; - 65B366C7121C2620003EAD18 /* rawhid.pri */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = rawhid.pri; sourceTree = ""; }; - 65B366C8121C2620003EAD18 /* rawhid.pro */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = rawhid.pro; sourceTree = ""; }; - 65B366C9121C2620003EAD18 /* rawhid_const.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = rawhid_const.h; sourceTree = ""; }; - 65B366CA121C2620003EAD18 /* rawhid_dependencies.pri */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = rawhid_dependencies.pri; sourceTree = ""; }; - 65B366CB121C2620003EAD18 /* rawhid_global.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = rawhid_global.h; sourceTree = ""; }; - 65B366CC121C2620003EAD18 /* rawhidplugin.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = rawhidplugin.cpp; sourceTree = ""; }; - 65B366CD121C2620003EAD18 /* rawhidplugin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = rawhidplugin.h; sourceTree = ""; }; - 65B366CF121C2620003EAD18 /* plotdata.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = plotdata.cpp; sourceTree = ""; }; - 65B366D0121C2620003EAD18 /* plotdata.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = plotdata.h; sourceTree = ""; }; - 65B366D1121C2620003EAD18 /* scope.pro */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = scope.pro; sourceTree = ""; }; - 65B366D2121C2620003EAD18 /* scopegadget.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = scopegadget.cpp; sourceTree = ""; }; - 65B366D3121C2620003EAD18 /* scopegadget.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = scopegadget.h; sourceTree = ""; }; - 65B366D4121C2620003EAD18 /* ScopeGadget.pluginspec */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = ScopeGadget.pluginspec; sourceTree = ""; }; - 65B366D5121C2620003EAD18 /* scopegadgetconfiguration.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = scopegadgetconfiguration.cpp; sourceTree = ""; }; - 65B366D6121C2620003EAD18 /* scopegadgetconfiguration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = scopegadgetconfiguration.h; sourceTree = ""; }; - 65B366D7121C2620003EAD18 /* scopegadgetfactory.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = scopegadgetfactory.cpp; sourceTree = ""; }; - 65B366D8121C2620003EAD18 /* scopegadgetfactory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = scopegadgetfactory.h; sourceTree = ""; }; - 65B366D9121C2620003EAD18 /* scopegadgetoptionspage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = scopegadgetoptionspage.cpp; sourceTree = ""; }; - 65B366DA121C2620003EAD18 /* scopegadgetoptionspage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = scopegadgetoptionspage.h; sourceTree = ""; }; - 65B366DB121C2620003EAD18 /* scopegadgetoptionspage.ui */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = scopegadgetoptionspage.ui; sourceTree = ""; }; - 65B366DC121C2620003EAD18 /* scopegadgetwidget.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = scopegadgetwidget.cpp; sourceTree = ""; }; - 65B366DD121C2620003EAD18 /* scopegadgetwidget.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = scopegadgetwidget.h; sourceTree = ""; }; - 65B366DE121C2620003EAD18 /* scopeplugin.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = scopeplugin.cpp; sourceTree = ""; }; - 65B366DF121C2620003EAD18 /* scopeplugin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = scopeplugin.h; sourceTree = ""; }; - 65B366E1121C2620003EAD18 /* Serial.pluginspec */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Serial.pluginspec; sourceTree = ""; }; - 65B366E2121C2620003EAD18 /* serial.pri */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = serial.pri; sourceTree = ""; }; - 65B366E3121C2620003EAD18 /* serial_dependencies.pri */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = serial_dependencies.pri; sourceTree = ""; }; - 65B366E4121C2620003EAD18 /* serial_global.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = serial_global.h; sourceTree = ""; }; - 65B366E5121C2620003EAD18 /* serialconnection.pro */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = serialconnection.pro; sourceTree = ""; }; - 65B366E6121C2620003EAD18 /* serialplugin.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = serialplugin.cpp; sourceTree = ""; }; - 65B366E7121C2620003EAD18 /* serialplugin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = serialplugin.h; sourceTree = ""; }; - 65B366E9121C2620003EAD18 /* systemhealth.pro */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = systemhealth.pro; sourceTree = ""; }; - 65B366EA121C2620003EAD18 /* systemhealth_dependencies.pri */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = systemhealth_dependencies.pri; sourceTree = ""; }; - 65B366EB121C2620003EAD18 /* systemhealthgadget.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = systemhealthgadget.cpp; sourceTree = ""; }; - 65B366EC121C2620003EAD18 /* systemhealthgadget.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = systemhealthgadget.h; sourceTree = ""; }; - 65B366ED121C2620003EAD18 /* SystemHealthGadget.pluginspec */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = SystemHealthGadget.pluginspec; sourceTree = ""; }; - 65B366EE121C2620003EAD18 /* systemhealthgadgetconfiguration.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = systemhealthgadgetconfiguration.cpp; sourceTree = ""; }; - 65B366EF121C2620003EAD18 /* systemhealthgadgetconfiguration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = systemhealthgadgetconfiguration.h; sourceTree = ""; }; - 65B366F0121C2620003EAD18 /* systemhealthgadgetfactory.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = systemhealthgadgetfactory.cpp; sourceTree = ""; }; - 65B366F1121C2620003EAD18 /* systemhealthgadgetfactory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = systemhealthgadgetfactory.h; sourceTree = ""; }; - 65B366F2121C2620003EAD18 /* systemhealthgadgetoptionspage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = systemhealthgadgetoptionspage.cpp; sourceTree = ""; }; - 65B366F3121C2620003EAD18 /* systemhealthgadgetoptionspage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = systemhealthgadgetoptionspage.h; sourceTree = ""; }; - 65B366F4121C2620003EAD18 /* systemhealthgadgetoptionspage.ui */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = systemhealthgadgetoptionspage.ui; sourceTree = ""; }; - 65B366F5121C2620003EAD18 /* systemhealthgadgetwidget.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = systemhealthgadgetwidget.cpp; sourceTree = ""; }; - 65B366F6121C2620003EAD18 /* systemhealthgadgetwidget.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = systemhealthgadgetwidget.h; sourceTree = ""; }; - 65B366F7121C2620003EAD18 /* systemhealthplugin.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = systemhealthplugin.cpp; sourceTree = ""; }; - 65B366F8121C2620003EAD18 /* systemhealthplugin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = systemhealthplugin.h; sourceTree = ""; }; - 65B366FA121C2620003EAD18 /* browseritemdelegate.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = browseritemdelegate.cpp; sourceTree = ""; }; - 65B366FB121C2620003EAD18 /* browseritemdelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = browseritemdelegate.h; sourceTree = ""; }; - 65B366FC121C2620003EAD18 /* browserplugin.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = browserplugin.cpp; sourceTree = ""; }; - 65B366FD121C2620003EAD18 /* browserplugin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = browserplugin.h; sourceTree = ""; }; - 65B366FE121C2620003EAD18 /* fieldtreeitem.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = fieldtreeitem.cpp; sourceTree = ""; }; - 65B366FF121C2620003EAD18 /* fieldtreeitem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fieldtreeitem.h; sourceTree = ""; }; - 65B36700121C2620003EAD18 /* treeitem.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = treeitem.cpp; sourceTree = ""; }; - 65B36701121C2620003EAD18 /* treeitem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = treeitem.h; sourceTree = ""; }; - 65B36702121C2620003EAD18 /* uavobjectbrowser.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = uavobjectbrowser.cpp; sourceTree = ""; }; - 65B36703121C2620003EAD18 /* uavobjectbrowser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = uavobjectbrowser.h; sourceTree = ""; }; - 65B36704121C2620003EAD18 /* UAVObjectBrowser.pluginspec */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = UAVObjectBrowser.pluginspec; sourceTree = ""; }; - 65B36705121C2620003EAD18 /* uavobjectbrowser.pro */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = uavobjectbrowser.pro; sourceTree = ""; }; - 65B36706121C2620003EAD18 /* uavobjectbrowser.ui */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = uavobjectbrowser.ui; sourceTree = ""; }; - 65B36707121C2620003EAD18 /* uavobjectbrowser_dependencies.pri */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = uavobjectbrowser_dependencies.pri; sourceTree = ""; }; - 65B36708121C2620003EAD18 /* uavobjectbrowserconfiguration.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = uavobjectbrowserconfiguration.cpp; sourceTree = ""; }; - 65B36709121C2620003EAD18 /* uavobjectbrowserconfiguration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = uavobjectbrowserconfiguration.h; sourceTree = ""; }; - 65B3670A121C2620003EAD18 /* uavobjectbrowserfactory.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = uavobjectbrowserfactory.cpp; sourceTree = ""; }; - 65B3670B121C2620003EAD18 /* uavobjectbrowserfactory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = uavobjectbrowserfactory.h; sourceTree = ""; }; - 65B3670C121C2620003EAD18 /* uavobjectbrowseroptionspage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = uavobjectbrowseroptionspage.cpp; sourceTree = ""; }; - 65B3670D121C2620003EAD18 /* uavobjectbrowseroptionspage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = uavobjectbrowseroptionspage.h; sourceTree = ""; }; - 65B3670E121C2620003EAD18 /* uavobjectbrowseroptionspage.ui */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = uavobjectbrowseroptionspage.ui; sourceTree = ""; }; - 65B3670F121C2620003EAD18 /* uavobjectbrowserwidget.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = uavobjectbrowserwidget.cpp; sourceTree = ""; }; - 65B36710121C2620003EAD18 /* uavobjectbrowserwidget.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = uavobjectbrowserwidget.h; sourceTree = ""; }; - 65B36711121C2620003EAD18 /* uavobjecttreemodel.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = uavobjecttreemodel.cpp; sourceTree = ""; }; - 65B36712121C2620003EAD18 /* uavobjecttreemodel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = uavobjecttreemodel.h; sourceTree = ""; }; - 65B36714121C2620003EAD18 /* actuatorcommand.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = actuatorcommand.cpp; sourceTree = ""; }; - 65B36715121C2620003EAD18 /* actuatorcommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = actuatorcommand.h; sourceTree = ""; }; - 65B36716121C2620003EAD18 /* actuatorcommand.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = actuatorcommand.py; sourceTree = ""; }; - 65B36717121C2620003EAD18 /* actuatordesired.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = actuatordesired.cpp; sourceTree = ""; }; - 65B36718121C2620003EAD18 /* actuatordesired.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = actuatordesired.h; sourceTree = ""; }; - 65B36719121C2620003EAD18 /* actuatordesired.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = actuatordesired.py; sourceTree = ""; }; - 65B3671A121C2620003EAD18 /* actuatorsettings.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = actuatorsettings.cpp; sourceTree = ""; }; - 65B3671B121C2620003EAD18 /* actuatorsettings.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = actuatorsettings.h; sourceTree = ""; }; - 65B3671C121C2620003EAD18 /* actuatorsettings.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = actuatorsettings.py; sourceTree = ""; }; - 65B3671D121C2620003EAD18 /* ahrsstatus.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ahrsstatus.cpp; sourceTree = ""; }; - 65B3671E121C2620003EAD18 /* ahrsstatus.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ahrsstatus.h; sourceTree = ""; }; - 65B3671F121C2620003EAD18 /* ahrsstatus.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = ahrsstatus.py; sourceTree = ""; }; - 65B36720121C2620003EAD18 /* altitudeactual.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = altitudeactual.cpp; sourceTree = ""; }; - 65B36721121C2620003EAD18 /* altitudeactual.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = altitudeactual.h; sourceTree = ""; }; - 65B36722121C2620003EAD18 /* altitudeactual.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = altitudeactual.py; sourceTree = ""; }; - 65B36723121C2620003EAD18 /* attitudeactual.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = attitudeactual.cpp; sourceTree = ""; }; - 65B36724121C2620003EAD18 /* attitudeactual.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = attitudeactual.h; sourceTree = ""; }; - 65B36725121C2620003EAD18 /* attitudeactual.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = attitudeactual.py; sourceTree = ""; }; - 65B36726121C2620003EAD18 /* attitudedesired.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = attitudedesired.cpp; sourceTree = ""; }; - 65B36727121C2620003EAD18 /* attitudedesired.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = attitudedesired.h; sourceTree = ""; }; - 65B36728121C2620003EAD18 /* attitudedesired.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = attitudedesired.py; sourceTree = ""; }; - 65B36729121C2620003EAD18 /* attituderaw.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = attituderaw.cpp; sourceTree = ""; }; - 65B3672A121C2620003EAD18 /* attituderaw.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = attituderaw.h; sourceTree = ""; }; - 65B3672B121C2620003EAD18 /* attituderaw.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = attituderaw.py; sourceTree = ""; }; - 65B3672C121C2620003EAD18 /* attitudesettings.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = attitudesettings.cpp; sourceTree = ""; }; - 65B3672D121C2620003EAD18 /* attitudesettings.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = attitudesettings.h; sourceTree = ""; }; - 65B3672E121C2620003EAD18 /* attitudesettings.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = attitudesettings.py; sourceTree = ""; }; - 65B3672F121C2620003EAD18 /* exampleobject1.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = exampleobject1.cpp; sourceTree = ""; }; - 65B36730121C2620003EAD18 /* exampleobject1.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = exampleobject1.h; sourceTree = ""; }; - 65B36731121C2620003EAD18 /* exampleobject1.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = exampleobject1.py; sourceTree = ""; }; - 65B36732121C2620003EAD18 /* exampleobject2.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = exampleobject2.cpp; sourceTree = ""; }; - 65B36733121C2620003EAD18 /* exampleobject2.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = exampleobject2.h; sourceTree = ""; }; - 65B36734121C2620003EAD18 /* exampleobject2.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = exampleobject2.py; sourceTree = ""; }; - 65B36735121C2620003EAD18 /* examplesettings.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = examplesettings.cpp; sourceTree = ""; }; - 65B36736121C2620003EAD18 /* examplesettings.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = examplesettings.h; sourceTree = ""; }; - 65B36737121C2620003EAD18 /* examplesettings.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = examplesettings.py; sourceTree = ""; }; - 65B36738121C2620003EAD18 /* flightbatterystate.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = flightbatterystate.cpp; sourceTree = ""; }; - 65B36739121C2620003EAD18 /* flightbatterystate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = flightbatterystate.h; sourceTree = ""; }; - 65B3673A121C2620003EAD18 /* flightbatterystate.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = flightbatterystate.py; sourceTree = ""; }; - 65B3673B121C2620003EAD18 /* flightsituationactual.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = flightsituationactual.cpp; sourceTree = ""; }; - 65B3673C121C2620003EAD18 /* flightsituationactual.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = flightsituationactual.h; sourceTree = ""; }; - 65B3673D121C2620003EAD18 /* flightsituationactual.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = flightsituationactual.py; sourceTree = ""; }; - 65B3673E121C2620003EAD18 /* flighttelemetrystats.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = flighttelemetrystats.cpp; sourceTree = ""; }; - 65B3673F121C2620003EAD18 /* flighttelemetrystats.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = flighttelemetrystats.h; sourceTree = ""; }; - 65B36740121C2620003EAD18 /* flighttelemetrystats.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = flighttelemetrystats.py; sourceTree = ""; }; - 65B36741121C2620003EAD18 /* gcstelemetrystats.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = gcstelemetrystats.cpp; sourceTree = ""; }; - 65B36742121C2620003EAD18 /* gcstelemetrystats.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gcstelemetrystats.h; sourceTree = ""; }; - 65B36743121C2620003EAD18 /* gcstelemetrystats.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = gcstelemetrystats.py; sourceTree = ""; }; - 65B36744121C2620003EAD18 /* manualcontrolcommand.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = manualcontrolcommand.cpp; sourceTree = ""; }; - 65B36745121C2620003EAD18 /* manualcontrolcommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = manualcontrolcommand.h; sourceTree = ""; }; - 65B36746121C2620003EAD18 /* manualcontrolcommand.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = manualcontrolcommand.py; sourceTree = ""; }; - 65B36747121C2620003EAD18 /* manualcontrolsettings.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = manualcontrolsettings.cpp; sourceTree = ""; }; - 65B36748121C2620003EAD18 /* manualcontrolsettings.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = manualcontrolsettings.h; sourceTree = ""; }; - 65B36749121C2620003EAD18 /* manualcontrolsettings.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = manualcontrolsettings.py; sourceTree = ""; }; - 65B3674A121C2620003EAD18 /* navigationdesired.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = navigationdesired.cpp; sourceTree = ""; }; - 65B3674B121C2620003EAD18 /* navigationdesired.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = navigationdesired.h; sourceTree = ""; }; - 65B3674C121C2620003EAD18 /* navigationdesired.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = navigationdesired.py; sourceTree = ""; }; - 65B3674D121C2620003EAD18 /* navigationsettings.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = navigationsettings.cpp; sourceTree = ""; }; - 65B3674E121C2620003EAD18 /* navigationsettings.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = navigationsettings.h; sourceTree = ""; }; - 65B3674F121C2620003EAD18 /* navigationsettings.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = navigationsettings.py; sourceTree = ""; }; - 65B36750121C2620003EAD18 /* objectpersistence.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = objectpersistence.cpp; sourceTree = ""; }; - 65B36751121C2620003EAD18 /* objectpersistence.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = objectpersistence.h; sourceTree = ""; }; - 65B36752121C2620003EAD18 /* objectpersistence.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = objectpersistence.py; sourceTree = ""; }; - 65B36753121C2620003EAD18 /* positionactual.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = positionactual.cpp; sourceTree = ""; }; - 65B36754121C2620003EAD18 /* positionactual.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = positionactual.h; sourceTree = ""; }; - 65B36755121C2620003EAD18 /* positionactual.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = positionactual.py; sourceTree = ""; }; - 65B36756121C2620003EAD18 /* stabilizationsettings.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = stabilizationsettings.cpp; sourceTree = ""; }; - 65B36757121C2620003EAD18 /* stabilizationsettings.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = stabilizationsettings.h; sourceTree = ""; }; - 65B36758121C2620003EAD18 /* stabilizationsettings.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = stabilizationsettings.py; sourceTree = ""; }; - 65B36759121C2620003EAD18 /* systemalarms.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = systemalarms.cpp; sourceTree = ""; }; - 65B3675A121C2620003EAD18 /* systemalarms.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = systemalarms.h; sourceTree = ""; }; - 65B3675B121C2620003EAD18 /* systemalarms.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = systemalarms.py; sourceTree = ""; }; - 65B3675C121C2620003EAD18 /* systemsettings.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = systemsettings.cpp; sourceTree = ""; }; - 65B3675D121C2620003EAD18 /* systemsettings.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = systemsettings.h; sourceTree = ""; }; - 65B3675E121C2620003EAD18 /* systemsettings.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = systemsettings.py; sourceTree = ""; }; - 65B3675F121C2620003EAD18 /* systemstats.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = systemstats.cpp; sourceTree = ""; }; - 65B36760121C2620003EAD18 /* systemstats.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = systemstats.h; sourceTree = ""; }; - 65B36761121C2620003EAD18 /* systemstats.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = systemstats.py; sourceTree = ""; }; - 65B36762121C2620003EAD18 /* telemetrysettings.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = telemetrysettings.cpp; sourceTree = ""; }; - 65B36763121C2620003EAD18 /* telemetrysettings.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = telemetrysettings.h; sourceTree = ""; }; - 65B36764121C2620003EAD18 /* telemetrysettings.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = telemetrysettings.py; sourceTree = ""; }; - 65B36766121C2620003EAD18 /* main.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = main.cpp; sourceTree = ""; }; - 65B36767121C2620003EAD18 /* uavobjectstest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = uavobjectstest.cpp; sourceTree = ""; }; - 65B36768121C2620003EAD18 /* uavobjectstest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = uavobjectstest.h; sourceTree = ""; }; - 65B36769121C2620003EAD18 /* uavobjectstest.pro */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = uavobjectstest.pro; sourceTree = ""; }; - 65B3676A121C2620003EAD18 /* uavdataobject.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = uavdataobject.cpp; sourceTree = ""; }; - 65B3676B121C2620003EAD18 /* uavdataobject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = uavdataobject.h; sourceTree = ""; }; - 65B3676C121C2620003EAD18 /* uavmetaobject.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = uavmetaobject.cpp; sourceTree = ""; }; - 65B3676D121C2620003EAD18 /* uavmetaobject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = uavmetaobject.h; sourceTree = ""; }; - 65B3676E121C2620003EAD18 /* uavobject.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = uavobject.cpp; sourceTree = ""; }; - 65B3676F121C2620003EAD18 /* uavobject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = uavobject.h; sourceTree = ""; }; - 65B36770121C2620003EAD18 /* uavobject.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = uavobject.py; sourceTree = ""; }; - 65B36771121C2620003EAD18 /* uavobjectfield.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = uavobjectfield.cpp; sourceTree = ""; }; - 65B36772121C2620003EAD18 /* uavobjectfield.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = uavobjectfield.h; sourceTree = ""; }; - 65B36773121C2620003EAD18 /* uavobjectmanager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = uavobjectmanager.cpp; sourceTree = ""; }; - 65B36774121C2620003EAD18 /* uavobjectmanager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = uavobjectmanager.h; sourceTree = ""; }; - 65B36775121C2620003EAD18 /* UAVObjects.pluginspec */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = UAVObjects.pluginspec; sourceTree = ""; }; - 65B36776121C2620003EAD18 /* uavobjects.pri */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = uavobjects.pri; sourceTree = ""; }; - 65B36777121C2620003EAD18 /* uavobjects.pro */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = uavobjects.pro; sourceTree = ""; }; - 65B36778121C2620003EAD18 /* uavobjects_dependencies.pri */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = uavobjects_dependencies.pri; sourceTree = ""; }; - 65B36779121C2620003EAD18 /* uavobjects_global.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = uavobjects_global.h; sourceTree = ""; }; - 65B3677A121C2620003EAD18 /* uavobjectsinit.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = uavobjectsinit.cpp; sourceTree = ""; }; - 65B3677B121C2620003EAD18 /* uavobjectsinit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = uavobjectsinit.h; sourceTree = ""; }; - 65B3677C121C2620003EAD18 /* uavobjectsinittemplate.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = uavobjectsinittemplate.cpp; sourceTree = ""; }; - 65B3677D121C2620003EAD18 /* uavobjectsplugin.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = uavobjectsplugin.cpp; sourceTree = ""; }; - 65B3677E121C2620003EAD18 /* uavobjectsplugin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = uavobjectsplugin.h; sourceTree = ""; }; - 65B3677F121C2620003EAD18 /* uavobjecttemplate.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = uavobjecttemplate.cpp; sourceTree = ""; }; - 65B36780121C2620003EAD18 /* uavobjecttemplate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = uavobjecttemplate.h; sourceTree = ""; }; - 65B36781121C2620003EAD18 /* uavobjecttemplate.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = uavobjecttemplate.py; sourceTree = ""; }; - 65B36783121C2620003EAD18 /* telemetry.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = telemetry.cpp; sourceTree = ""; }; - 65B36784121C2620003EAD18 /* telemetry.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = telemetry.h; sourceTree = ""; }; - 65B36785121C2620003EAD18 /* telemetrymanager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = telemetrymanager.cpp; sourceTree = ""; }; - 65B36786121C2620003EAD18 /* telemetrymanager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = telemetrymanager.h; sourceTree = ""; }; - 65B36787121C2620003EAD18 /* telemetrymonitor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = telemetrymonitor.cpp; sourceTree = ""; }; - 65B36788121C2620003EAD18 /* telemetrymonitor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = telemetrymonitor.h; sourceTree = ""; }; - 65B36789121C2620003EAD18 /* uavtalk.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = uavtalk.cpp; sourceTree = ""; }; - 65B3678A121C2620003EAD18 /* uavtalk.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = uavtalk.h; sourceTree = ""; }; - 65B3678B121C2620003EAD18 /* UAVTalk.pluginspec */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = UAVTalk.pluginspec; sourceTree = ""; }; - 65B3678C121C2620003EAD18 /* uavtalk.pri */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = uavtalk.pri; sourceTree = ""; }; - 65B3678D121C2620003EAD18 /* uavtalk.pro */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = uavtalk.pro; sourceTree = ""; }; - 65B3678E121C2620003EAD18 /* uavtalk_dependencies.pri */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = uavtalk_dependencies.pri; sourceTree = ""; }; - 65B3678F121C2620003EAD18 /* uavtalk_global.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = uavtalk_global.h; sourceTree = ""; }; - 65B36790121C2620003EAD18 /* uavtalkplugin.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = uavtalkplugin.cpp; sourceTree = ""; }; - 65B36791121C2620003EAD18 /* uavtalkplugin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = uavtalkplugin.h; sourceTree = ""; }; - 65B36793121C2620003EAD18 /* Uploader.pluginspec */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Uploader.pluginspec; sourceTree = ""; }; - 65B36794121C2620003EAD18 /* uploader.pro */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = uploader.pro; sourceTree = ""; }; - 65B36795121C2620003EAD18 /* uploadergadget.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = uploadergadget.cpp; sourceTree = ""; }; - 65B36796121C2620003EAD18 /* uploadergadget.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = uploadergadget.h; sourceTree = ""; }; - 65B36797121C2620003EAD18 /* uploadergadgetconfiguration.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = uploadergadgetconfiguration.cpp; sourceTree = ""; }; - 65B36798121C2620003EAD18 /* uploadergadgetconfiguration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = uploadergadgetconfiguration.h; sourceTree = ""; }; - 65B36799121C2620003EAD18 /* uploadergadgetfactory.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = uploadergadgetfactory.cpp; sourceTree = ""; }; - 65B3679A121C2620003EAD18 /* uploadergadgetfactory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = uploadergadgetfactory.h; sourceTree = ""; }; - 65B3679B121C2620003EAD18 /* uploadergadgetoptionspage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = uploadergadgetoptionspage.cpp; sourceTree = ""; }; - 65B3679C121C2620003EAD18 /* uploadergadgetoptionspage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = uploadergadgetoptionspage.h; sourceTree = ""; }; - 65B3679D121C2620003EAD18 /* uploadergadgetwidget.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = uploadergadgetwidget.cpp; sourceTree = ""; }; - 65B3679E121C2620003EAD18 /* uploadergadgetwidget.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = uploadergadgetwidget.h; sourceTree = ""; }; - 65B3679F121C2620003EAD18 /* uploaderplugin.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = uploaderplugin.cpp; sourceTree = ""; }; - 65B367A0121C2620003EAD18 /* uploaderplugin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = uploaderplugin.h; sourceTree = ""; }; - 65B367A2121C2620003EAD18 /* communitywelcomepage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = communitywelcomepage.cpp; sourceTree = ""; }; - 65B367A3121C2620003EAD18 /* communitywelcomepage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = communitywelcomepage.h; sourceTree = ""; }; - 65B367A4121C2620003EAD18 /* communitywelcomepagewidget.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = communitywelcomepagewidget.cpp; sourceTree = ""; }; - 65B367A5121C2620003EAD18 /* communitywelcomepagewidget.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = communitywelcomepagewidget.h; sourceTree = ""; }; - 65B367A6121C2620003EAD18 /* communitywelcomepagewidget.ui */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = communitywelcomepagewidget.ui; sourceTree = ""; }; - 65B367A8121C2620003EAD18 /* arrow-left.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "arrow-left.png"; sourceTree = ""; }; - 65B367A9121C2620003EAD18 /* arrow-right.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "arrow-right.png"; sourceTree = ""; }; - 65B367AA121C2620003EAD18 /* background_center_frame.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = background_center_frame.png; sourceTree = ""; }; - 65B367AB121C2620003EAD18 /* btn_26.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = btn_26.png; sourceTree = ""; }; - 65B367AC121C2620003EAD18 /* btn_26_hover.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = btn_26_hover.png; sourceTree = ""; }; - 65B367AD121C2620003EAD18 /* btn_26_pressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = btn_26_pressed.png; sourceTree = ""; }; - 65B367AE121C2620003EAD18 /* btn_27.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = btn_27.png; sourceTree = ""; }; - 65B367AF121C2620003EAD18 /* btn_27_hover.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = btn_27_hover.png; sourceTree = ""; }; - 65B367B0121C2620003EAD18 /* center_frame_header.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = center_frame_header.png; sourceTree = ""; }; - 65B367B1121C2620003EAD18 /* combobox_arrow.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = combobox_arrow.png; sourceTree = ""; }; - 65B367B2121C2620003EAD18 /* feedback-bar-background.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "feedback-bar-background.png"; sourceTree = ""; }; - 65B367B3121C2620003EAD18 /* feedback_arrow.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = feedback_arrow.png; sourceTree = ""; }; - 65B367B4121C2620003EAD18 /* feedback_arrow_hover.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = feedback_arrow_hover.png; sourceTree = ""; }; - 65B367B5121C2620003EAD18 /* list_bullet_arrow.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = list_bullet_arrow.png; sourceTree = ""; }; - 65B367B6121C2620003EAD18 /* mode_project.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = mode_project.png; sourceTree = ""; }; - 65B367B7121C2620003EAD18 /* nokia_logo.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = nokia_logo.png; sourceTree = ""; }; - 65B367B8121C2620003EAD18 /* product_logo.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = product_logo.png; sourceTree = ""; }; - 65B367B9121C2620003EAD18 /* qt_logo.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = qt_logo.png; sourceTree = ""; }; - 65B367BA121C2620003EAD18 /* rc_combined.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = rc_combined.png; sourceTree = ""; }; - 65B367BB121C2620003EAD18 /* rssfetcher.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = rssfetcher.cpp; sourceTree = ""; }; - 65B367BC121C2620003EAD18 /* rssfetcher.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = rssfetcher.h; sourceTree = ""; }; - 65B367BD121C2620003EAD18 /* Welcome.pluginspec */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Welcome.pluginspec; sourceTree = ""; }; - 65B367BE121C2620003EAD18 /* welcome.pri */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = welcome.pri; sourceTree = ""; }; - 65B367BF121C2620003EAD18 /* welcome.pro */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = welcome.pro; sourceTree = ""; }; - 65B367C0121C2620003EAD18 /* welcome.qrc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = welcome.qrc; sourceTree = ""; }; - 65B367C1121C2620003EAD18 /* welcome_dependencies.pri */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = welcome_dependencies.pri; sourceTree = ""; }; - 65B367C2121C2620003EAD18 /* welcome_global.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = welcome_global.h; sourceTree = ""; }; - 65B367C3121C2620003EAD18 /* welcomemode.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = welcomemode.cpp; sourceTree = ""; }; - 65B367C4121C2620003EAD18 /* welcomemode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = welcomemode.h; sourceTree = ""; }; - 65B367C5121C2620003EAD18 /* welcomemode.ui */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = welcomemode.ui; sourceTree = ""; }; - 65B367C6121C2620003EAD18 /* welcomeplugin.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = welcomeplugin.cpp; sourceTree = ""; }; - 65B367C7121C2620003EAD18 /* welcomeplugin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = welcomeplugin.h; sourceTree = ""; }; - 65B367C8121C2620003EAD18 /* rpath.pri */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = rpath.pri; sourceTree = ""; }; - 65B367CA121C2620003EAD18 /* namespace_global.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = namespace_global.h; sourceTree = ""; }; - 65B367CC121C2620003EAD18 /* namespace.patch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = namespace.patch; sourceTree = ""; }; - 65B367CD121C2620003EAD18 /* qtlockedfile.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qtlockedfile.cpp; sourceTree = ""; }; - 65B367CE121C2620003EAD18 /* qtlockedfile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qtlockedfile.h; sourceTree = ""; }; - 65B367CF121C2620003EAD18 /* qtlockedfile.pri */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = qtlockedfile.pri; sourceTree = ""; }; - 65B367D0121C2620003EAD18 /* qtlockedfile_unix.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qtlockedfile_unix.cpp; sourceTree = ""; }; - 65B367D1121C2620003EAD18 /* qtlockedfile_win.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qtlockedfile_win.cpp; sourceTree = ""; }; - 65B367D2121C2620003EAD18 /* README.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = README.txt; sourceTree = ""; }; - 65B367D4121C2620003EAD18 /* namespace.patch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = namespace.patch; sourceTree = ""; }; - 65B367D5121C2620003EAD18 /* qtlocalpeer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qtlocalpeer.cpp; sourceTree = ""; }; - 65B367D6121C2620003EAD18 /* qtlocalpeer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qtlocalpeer.h; sourceTree = ""; }; - 65B367D7121C2620003EAD18 /* qtsingleapplication.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qtsingleapplication.cpp; sourceTree = ""; }; - 65B367D8121C2620003EAD18 /* qtsingleapplication.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qtsingleapplication.h; sourceTree = ""; }; - 65B367D9121C2620003EAD18 /* qtsingleapplication.pri */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = qtsingleapplication.pri; sourceTree = ""; }; - 65B367DA121C2620003EAD18 /* qtsinglecoreapplication.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = qtsinglecoreapplication.cpp; sourceTree = ""; }; - 65B367DB121C2620003EAD18 /* qtsinglecoreapplication.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qtsinglecoreapplication.h; sourceTree = ""; }; - 65B367DC121C2620003EAD18 /* qtsinglecoreapplication.pri */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = qtsinglecoreapplication.pri; sourceTree = ""; }; - 65B367DD121C2620003EAD18 /* README.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = README.txt; sourceTree = ""; }; - 65B367DF121C2620003EAD18 /* interface_wrap_helpers.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = interface_wrap_helpers.h; sourceTree = ""; }; - 65B367E0121C2620003EAD18 /* README */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = README; sourceTree = ""; }; - 65B367E1121C2620003EAD18 /* scriptwrapper.pri */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = scriptwrapper.pri; sourceTree = ""; }; - 65B367E2121C2620003EAD18 /* wrap_helpers.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = wrap_helpers.h; sourceTree = ""; }; - 65B367E4121C2620003EAD18 /* actuatorcommand.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = actuatorcommand.xml; sourceTree = ""; }; - 65B367E5121C2620003EAD18 /* actuatordesired.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = actuatordesired.xml; sourceTree = ""; }; - 65B367E6121C2620003EAD18 /* actuatorsettings.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = actuatorsettings.xml; sourceTree = ""; }; - 65B367E7121C2620003EAD18 /* ahrsstatus.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = ahrsstatus.xml; sourceTree = ""; }; - 65B367E9121C2620003EAD18 /* attitudeactual.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = attitudeactual.xml; sourceTree = ""; }; - 65B367EA121C2620003EAD18 /* attitudedesired.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = attitudedesired.xml; sourceTree = ""; }; - 65B367EB121C2620003EAD18 /* attituderaw.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = attituderaw.xml; sourceTree = ""; }; - 65B367F0121C2620003EAD18 /* flightbatterystate.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = flightbatterystate.xml; sourceTree = ""; }; - 65B367F2121C2620003EAD18 /* flighttelemetrystats.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = flighttelemetrystats.xml; sourceTree = ""; }; - 65B367F3121C2620003EAD18 /* gcstelemetrystats.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = gcstelemetrystats.xml; sourceTree = ""; }; - 65B367F4121C2620003EAD18 /* manualcontrolcommand.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = manualcontrolcommand.xml; sourceTree = ""; }; - 65B367F5121C2620003EAD18 /* manualcontrolsettings.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = manualcontrolsettings.xml; sourceTree = ""; }; - 65B367F8121C2620003EAD18 /* objectpersistence.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = objectpersistence.xml; sourceTree = ""; }; - 65B367F9121C2620003EAD18 /* positionactual.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = positionactual.xml; sourceTree = ""; }; - 65B367FA121C2620003EAD18 /* stabilizationsettings.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = stabilizationsettings.xml; sourceTree = ""; }; - 65B367FB121C2620003EAD18 /* systemalarms.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = systemalarms.xml; sourceTree = ""; }; - 65B367FC121C2620003EAD18 /* systemsettings.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = systemsettings.xml; sourceTree = ""; }; - 65B367FD121C2620003EAD18 /* systemstats.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = systemstats.xml; sourceTree = ""; }; - 65B367FE121C2620003EAD18 /* telemetrysettings.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = telemetrysettings.xml; sourceTree = ""; }; - 65B367FF121C2620003EAD18 /* src.pro */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = src.pro; sourceTree = ""; }; - 65B7E6AE120DF1E2000C1123 /* ahrs.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = ahrs.c; path = ../../AHRS/ahrs.c; sourceTree = SOURCE_ROOT; }; - 65B7E6B0120DF1E2000C1123 /* ahrs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ahrs.h; sourceTree = ""; }; - 65B7E6B1120DF1E2000C1123 /* ahrs_fsm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ahrs_fsm.h; sourceTree = ""; }; - 65B7E6B4120DF1E2000C1123 /* pios_config.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pios_config.h; sourceTree = ""; }; - 65B7E6B6120DF1E2000C1123 /* Makefile */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.make; name = Makefile; path = ../../AHRS/Makefile; sourceTree = SOURCE_ROOT; }; - 65B7E6B7120DF1E2000C1123 /* pios_board.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pios_board.c; path = ../../AHRS/pios_board.c; sourceTree = SOURCE_ROOT; }; - 65C35E5012EFB2F3004811C2 /* actuatorcommand.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = actuatorcommand.xml; sourceTree = ""; }; - 65C35E5112EFB2F3004811C2 /* actuatordesired.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = actuatordesired.xml; sourceTree = ""; }; - 65C35E5212EFB2F3004811C2 /* actuatorsettings.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = actuatorsettings.xml; sourceTree = ""; }; - 65C35E5312EFB2F3004811C2 /* ahrscalibration.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = ahrscalibration.xml; sourceTree = ""; }; - 65C35E5412EFB2F3004811C2 /* ahrssettings.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = ahrssettings.xml; sourceTree = ""; }; - 65C35E5512EFB2F3004811C2 /* ahrsstatus.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = ahrsstatus.xml; sourceTree = ""; }; - 65C35E5612EFB2F3004811C2 /* attitudeactual.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = attitudeactual.xml; sourceTree = ""; }; - 65C35E5812EFB2F3004811C2 /* attituderaw.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = attituderaw.xml; sourceTree = ""; }; - 65C35E5912EFB2F3004811C2 /* baroaltitude.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = baroaltitude.xml; sourceTree = ""; }; - 65C35E5C12EFB2F3004811C2 /* flightbatterystate.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = flightbatterystate.xml; sourceTree = ""; }; - 65C35E5D12EFB2F3004811C2 /* flightplancontrol.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = flightplancontrol.xml; sourceTree = ""; }; - 65C35E5E12EFB2F3004811C2 /* flightplansettings.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = flightplansettings.xml; sourceTree = ""; }; - 65C35E5F12EFB2F3004811C2 /* flightplanstatus.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = flightplanstatus.xml; sourceTree = ""; }; - 65C35E6012EFB2F3004811C2 /* flighttelemetrystats.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = flighttelemetrystats.xml; sourceTree = ""; }; - 65C35E6112EFB2F3004811C2 /* gcstelemetrystats.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = gcstelemetrystats.xml; sourceTree = ""; }; - 65C35E6212EFB2F3004811C2 /* gpsposition.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = gpsposition.xml; sourceTree = ""; }; - 65C35E6312EFB2F3004811C2 /* gpssatellites.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = gpssatellites.xml; sourceTree = ""; }; - 65C35E6412EFB2F3004811C2 /* gpstime.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = gpstime.xml; sourceTree = ""; }; - 65C35E6512EFB2F3004811C2 /* guidancesettings.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = guidancesettings.xml; sourceTree = ""; }; - 65C35E6612EFB2F3004811C2 /* homelocation.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = homelocation.xml; sourceTree = ""; }; - 65C35E6712EFB2F3004811C2 /* i2cstats.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = i2cstats.xml; sourceTree = ""; }; - 65C35E6812EFB2F3004811C2 /* manualcontrolcommand.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = manualcontrolcommand.xml; sourceTree = ""; }; - 65C35E6912EFB2F3004811C2 /* manualcontrolsettings.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = manualcontrolsettings.xml; sourceTree = ""; }; - 65C35E6A12EFB2F3004811C2 /* mixersettings.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = mixersettings.xml; sourceTree = ""; }; - 65C35E6B12EFB2F3004811C2 /* mixerstatus.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = mixerstatus.xml; sourceTree = ""; }; - 65C35E6C12EFB2F3004811C2 /* nedaccel.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = nedaccel.xml; sourceTree = ""; }; - 65C35E6D12EFB2F3004811C2 /* objectpersistence.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = objectpersistence.xml; sourceTree = ""; }; - 65C35E6E12EFB2F3004811C2 /* positionactual.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = positionactual.xml; sourceTree = ""; }; - 65C35E6F12EFB2F3004811C2 /* positiondesired.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = positiondesired.xml; sourceTree = ""; }; - 65C35E7012EFB2F3004811C2 /* ratedesired.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = ratedesired.xml; sourceTree = ""; }; - 65C35E7112EFB2F3004811C2 /* stabilizationsettings.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = stabilizationsettings.xml; sourceTree = ""; }; - 65C35E7212EFB2F3004811C2 /* systemalarms.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = systemalarms.xml; sourceTree = ""; }; - 65C35E7312EFB2F3004811C2 /* systemsettings.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = systemsettings.xml; sourceTree = ""; }; - 65C35E7412EFB2F3004811C2 /* systemstats.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = systemstats.xml; sourceTree = ""; }; - 65C35E7512EFB2F3004811C2 /* taskinfo.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = taskinfo.xml; sourceTree = ""; }; - 65C35E7612EFB2F3004811C2 /* telemetrysettings.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = telemetrysettings.xml; sourceTree = ""; }; - 65C35E7712EFB2F3004811C2 /* velocityactual.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = velocityactual.xml; sourceTree = ""; }; - 65C35E7812EFB2F3004811C2 /* velocitydesired.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = velocitydesired.xml; sourceTree = ""; }; - 65C35E7912EFB2F3004811C2 /* watchdogstatus.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = watchdogstatus.xml; sourceTree = ""; }; - 65C35E9E12F0A834004811C2 /* uavobjecttemplate.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = uavobjecttemplate.c; sourceTree = ""; }; - 65C35E9F12F0A834004811C2 /* uavobjectsinittemplate.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = uavobjectsinittemplate.c; sourceTree = ""; }; - 65C35EA112F0A834004811C2 /* uavobjectmanager.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = uavobjectmanager.c; sourceTree = ""; }; - 65C35EA312F0A834004811C2 /* eventdispatcher.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = eventdispatcher.h; sourceTree = ""; }; - 65C35EA412F0A834004811C2 /* uavobjectmanager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = uavobjectmanager.h; sourceTree = ""; }; - 65C35EA512F0A834004811C2 /* uavobjectsinit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = uavobjectsinit.h; sourceTree = ""; }; - 65C35EA612F0A834004811C2 /* uavobjecttemplate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = uavobjecttemplate.h; sourceTree = ""; }; - 65C35EA712F0A834004811C2 /* utlist.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = utlist.h; sourceTree = ""; }; - 65C35EA812F0A834004811C2 /* eventdispatcher.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = eventdispatcher.c; sourceTree = ""; }; - 65C35F6612F0DC2D004811C2 /* attitude.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = attitude.c; sourceTree = ""; }; - 65C35F6812F0DC2D004811C2 /* attitude.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = attitude.h; sourceTree = ""; }; - 65C9903C13A871B90082BD60 /* camerastab.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = camerastab.c; sourceTree = ""; }; - 65C9903E13A871B90082BD60 /* camerastab.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = camerastab.h; sourceTree = ""; }; - 65D2CA841248F9A400B1E7D6 /* mixersettings.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = mixersettings.xml; sourceTree = ""; }; - 65D2CA851248F9A400B1E7D6 /* mixerstatus.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = mixerstatus.xml; sourceTree = ""; }; - 65DEA79113F2143B00095B06 /* cameradesired.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = cameradesired.xml; sourceTree = ""; }; - 65E410AE12F65AEA00725888 /* attitudesettings.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = attitudesettings.xml; sourceTree = ""; }; - 65E6D80713E3A4D0002A557A /* hwsettings.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = hwsettings.xml; sourceTree = ""; }; - 65E6DF7112E02E8E00058553 /* Makefile */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; - 65E6DF7312E02E8E00058553 /* alarms.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = alarms.c; sourceTree = ""; }; - 65E6DF7412E02E8E00058553 /* coptercontrol.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = coptercontrol.c; sourceTree = ""; }; - 65E6DF7612E02E8E00058553 /* alarms.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = alarms.h; sourceTree = ""; }; - 65E6DF7712E02E8E00058553 /* FreeRTOSConfig.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FreeRTOSConfig.h; sourceTree = ""; }; - 65E6DF7812E02E8E00058553 /* op_config.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = op_config.h; sourceTree = ""; }; - 65E6DF7912E02E8E00058553 /* openpilot.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = openpilot.h; sourceTree = ""; }; - 65E6DF7A12E02E8E00058553 /* pios_board_posix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pios_board_posix.h; sourceTree = ""; }; - 65E6DF7B12E02E8E00058553 /* pios_config.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pios_config.h; sourceTree = ""; }; - 65E6DF7C12E02E8E00058553 /* pios_config_posix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pios_config_posix.h; sourceTree = ""; }; - 65E6DF7D12E02E8E00058553 /* taskmonitor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = taskmonitor.h; sourceTree = ""; }; - 65E6DF7E12E02E8E00058553 /* pios_board.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pios_board.c; sourceTree = ""; }; - 65E6DF7F12E02E8E00058553 /* pios_board_posix.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pios_board_posix.c; sourceTree = ""; }; - 65E6DF8012E02E8E00058553 /* taskmonitor.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = taskmonitor.c; sourceTree = ""; }; - 65E6DF9112E0313E00058553 /* aes.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = aes.c; sourceTree = ""; }; - 65E6E04412E0313F00058553 /* crc.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = crc.c; sourceTree = ""; }; - 65E6E04512E0313F00058553 /* gpio_in.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = gpio_in.c; sourceTree = ""; }; - 65E6E04712E0313F00058553 /* aes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = aes.h; sourceTree = ""; }; - 65E6E04812E0313F00058553 /* crc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = crc.h; sourceTree = ""; }; - 65E6E04912E0313F00058553 /* gpio_in.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gpio_in.h; sourceTree = ""; }; - 65E6E04A12E0313F00058553 /* main.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = main.h; sourceTree = ""; }; - 65E6E04B12E0313F00058553 /* packet_handler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = packet_handler.h; sourceTree = ""; }; - 65E6E04C12E0313F00058553 /* pios_config.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pios_config.h; sourceTree = ""; }; - 65E6E04D12E0313F00058553 /* pios_usb.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pios_usb.h; sourceTree = ""; }; - 65E6E04E12E0313F00058553 /* pios_usb_hid_desc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pios_usb_hid_desc.h; sourceTree = ""; }; - 65E6E04F12E0313F00058553 /* rfm22b.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = rfm22b.h; sourceTree = ""; }; - 65E6E05012E0313F00058553 /* saved_settings.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = saved_settings.h; sourceTree = ""; }; - 65E6E05112E0313F00058553 /* stopwatch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = stopwatch.h; sourceTree = ""; }; - 65E6E05212E0313F00058553 /* transparent_comms.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = transparent_comms.h; sourceTree = ""; }; - 65E6E05312E0313F00058553 /* uavtalk_comms.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = uavtalk_comms.h; sourceTree = ""; }; - 65E6E05412E0313F00058553 /* usb_conf.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = usb_conf.h; sourceTree = ""; }; - 65E6E05512E0313F00058553 /* watchdog.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = watchdog.h; sourceTree = ""; }; - 65E6E05612E0313F00058553 /* main.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = main.c; sourceTree = ""; }; - 65E6E05712E0313F00058553 /* Makefile */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; - 65E6E05812E0313F00058553 /* packet_handler.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = packet_handler.c; sourceTree = ""; }; - 65E6E05912E0313F00058553 /* pios_board.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pios_board.c; sourceTree = ""; }; - 65E6E05A12E0313F00058553 /* pios_usb_hid_desc.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pios_usb_hid_desc.c; sourceTree = ""; }; - 65E6E05B12E0313F00058553 /* rfm22b.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = rfm22b.c; sourceTree = ""; }; - 65E6E05C12E0313F00058553 /* saved_settings.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = saved_settings.c; sourceTree = ""; }; - 65E6E05D12E0313F00058553 /* stopwatch.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = stopwatch.c; sourceTree = ""; }; - 65E6E05E12E0313F00058553 /* transparent_comms.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = transparent_comms.c; sourceTree = ""; }; - 65E6E05F12E0313F00058553 /* uavtalk_comms.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = uavtalk_comms.c; sourceTree = ""; }; - 65E6E06012E0313F00058553 /* watchdog.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = watchdog.c; sourceTree = ""; }; - 65E6E06112E031E300058553 /* STM32103CB_CC_Rev1.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = STM32103CB_CC_Rev1.h; sourceTree = ""; }; - 65E6E06212E031E300058553 /* STM32103CB_PIPXTREME_Rev1.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = STM32103CB_PIPXTREME_Rev1.h; sourceTree = ""; }; - 65E6E09912E037C800058553 /* pios_adc_priv.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pios_adc_priv.h; sourceTree = ""; }; - 65E8C743139A6D0900E1F979 /* pios_crc.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pios_crc.c; sourceTree = ""; }; - 65E8C745139A6D1A00E1F979 /* pios_crc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pios_crc.h; sourceTree = ""; }; - 65E8C788139AA2A800E1F979 /* accessorydesired.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = accessorydesired.xml; sourceTree = ""; }; - 65E8EF1F11EEA61E00BBF654 /* Makefile */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.make; name = Makefile; path = ../../OpenPilot/Makefile; sourceTree = SOURCE_ROOT; }; - 65E8EF2011EEA61E00BBF654 /* Makefile.posix */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = Makefile.posix; path = ../../OpenPilot/Makefile.posix; sourceTree = SOURCE_ROOT; }; - 65E8EF5C11EEA61E00BBF654 /* alarms.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = alarms.c; path = ../../OpenPilot/System/alarms.c; sourceTree = SOURCE_ROOT; }; - 65E8EF5E11EEA61E00BBF654 /* alarms.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = alarms.h; path = ../../OpenPilot/System/inc/alarms.h; sourceTree = SOURCE_ROOT; }; - 65E8EF5F11EEA61E00BBF654 /* op_config.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = op_config.h; path = ../../OpenPilot/System/inc/op_config.h; sourceTree = SOURCE_ROOT; }; - 65E8EF6011EEA61E00BBF654 /* openpilot.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = openpilot.h; path = ../../OpenPilot/System/inc/openpilot.h; sourceTree = SOURCE_ROOT; }; - 65E8EF6111EEA61E00BBF654 /* pios_board.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = pios_board.h; path = ../../OpenPilot/System/inc/pios_board.h; sourceTree = SOURCE_ROOT; }; - 65E8EF6211EEA61E00BBF654 /* pios_board_posix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = pios_board_posix.h; path = ../../OpenPilot/System/inc/pios_board_posix.h; sourceTree = SOURCE_ROOT; }; - 65E8EF6311EEA61E00BBF654 /* pios_config.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = pios_config.h; path = ../../OpenPilot/System/inc/pios_config.h; sourceTree = SOURCE_ROOT; }; - 65E8EF6411EEA61E00BBF654 /* pios_config_posix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = pios_config_posix.h; path = ../../OpenPilot/System/inc/pios_config_posix.h; sourceTree = SOURCE_ROOT; }; - 65E8EF6511EEA61E00BBF654 /* openpilot.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = openpilot.c; path = ../../OpenPilot/System/openpilot.c; sourceTree = SOURCE_ROOT; }; - 65E8EF6611EEA61E00BBF654 /* pios_board.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pios_board.c; path = ../../OpenPilot/System/pios_board.c; sourceTree = SOURCE_ROOT; }; - 65E8EF6711EEA61E00BBF654 /* pios_board_posix.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pios_board_posix.c; path = ../../OpenPilot/System/pios_board_posix.c; sourceTree = SOURCE_ROOT; }; - 65E8EF6911EEA61E00BBF654 /* test_BMP085.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = test_BMP085.c; path = ../../OpenPilot/Tests/test_BMP085.c; sourceTree = SOURCE_ROOT; }; - 65E8EF6A11EEA61E00BBF654 /* test_common.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = test_common.c; path = ../../OpenPilot/Tests/test_common.c; sourceTree = SOURCE_ROOT; }; - 65E8EF6B11EEA61E00BBF654 /* test_cpuload.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = test_cpuload.c; path = ../../OpenPilot/Tests/test_cpuload.c; sourceTree = SOURCE_ROOT; }; - 65E8EF6C11EEA61E00BBF654 /* test_i2c_PCF8570.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = test_i2c_PCF8570.c; path = ../../OpenPilot/Tests/test_i2c_PCF8570.c; sourceTree = SOURCE_ROOT; }; - 65E8EF6D11EEA61E00BBF654 /* test_uavobjects.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = test_uavobjects.c; path = ../../OpenPilot/Tests/test_uavobjects.c; sourceTree = SOURCE_ROOT; }; - 65E8F03111EFF25C00BBF654 /* pios_bmp085.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pios_bmp085.c; path = ../../PiOS/Common/pios_bmp085.c; sourceTree = SOURCE_ROOT; }; - 65E8F03211EFF25C00BBF654 /* pios_com.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pios_com.c; path = ../../PiOS/Common/pios_com.c; sourceTree = SOURCE_ROOT; }; - 65E8F03311EFF25C00BBF654 /* pios_hmc5843.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pios_hmc5843.c; path = ../../PiOS/Common/pios_hmc5843.c; sourceTree = SOURCE_ROOT; }; - 65E8F03411EFF25C00BBF654 /* pios_opahrs.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pios_opahrs.c; path = ../../PiOS/Common/pios_opahrs.c; sourceTree = SOURCE_ROOT; }; - 65E8F03511EFF25C00BBF654 /* pios_opahrs_proto.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pios_opahrs_proto.c; path = ../../PiOS/Common/pios_opahrs_proto.c; sourceTree = SOURCE_ROOT; }; - 65E8F03611EFF25C00BBF654 /* pios_sdcard.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pios_sdcard.c; path = ../../PiOS/Common/pios_sdcard.c; sourceTree = SOURCE_ROOT; }; - 65E8F03711EFF25C00BBF654 /* printf-stdarg.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = "printf-stdarg.c"; path = "../../PiOS/Common/printf-stdarg.c"; sourceTree = SOURCE_ROOT; }; - 65E8F03A11EFF25C00BBF654 /* pios_adc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = pios_adc.h; path = ../../PiOS/inc/pios_adc.h; sourceTree = SOURCE_ROOT; }; - 65E8F03B11EFF25C00BBF654 /* pios_bmp085.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = pios_bmp085.h; path = ../../PiOS/inc/pios_bmp085.h; sourceTree = SOURCE_ROOT; }; - 65E8F03C11EFF25C00BBF654 /* pios_com.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = pios_com.h; path = ../../PiOS/inc/pios_com.h; sourceTree = SOURCE_ROOT; }; - 65E8F03D11EFF25C00BBF654 /* pios_com_priv.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = pios_com_priv.h; path = ../../PiOS/inc/pios_com_priv.h; sourceTree = SOURCE_ROOT; }; - 65E8F03E11EFF25C00BBF654 /* pios_debug.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = pios_debug.h; path = ../../PiOS/inc/pios_debug.h; sourceTree = SOURCE_ROOT; }; - 65E8F03F11EFF25C00BBF654 /* pios_delay.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = pios_delay.h; path = ../../PiOS/inc/pios_delay.h; sourceTree = SOURCE_ROOT; }; - 65E8F04011EFF25C00BBF654 /* pios_exti.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = pios_exti.h; path = ../../PiOS/inc/pios_exti.h; sourceTree = SOURCE_ROOT; }; - 65E8F04111EFF25C00BBF654 /* pios_gpio.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = pios_gpio.h; path = ../../PiOS/inc/pios_gpio.h; sourceTree = SOURCE_ROOT; }; - 65E8F04211EFF25C00BBF654 /* pios_hmc5843.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = pios_hmc5843.h; path = ../../PiOS/inc/pios_hmc5843.h; sourceTree = SOURCE_ROOT; }; - 65E8F04311EFF25C00BBF654 /* pios_i2c.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = pios_i2c.h; path = ../../PiOS/inc/pios_i2c.h; sourceTree = SOURCE_ROOT; }; - 65E8F04411EFF25C00BBF654 /* pios_irq.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = pios_irq.h; path = ../../PiOS/inc/pios_irq.h; sourceTree = SOURCE_ROOT; }; - 65E8F04511EFF25C00BBF654 /* pios_led.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = pios_led.h; path = ../../PiOS/inc/pios_led.h; sourceTree = SOURCE_ROOT; }; - 65E8F04611EFF25C00BBF654 /* pios_opahrs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = pios_opahrs.h; path = ../../PiOS/inc/pios_opahrs.h; sourceTree = SOURCE_ROOT; }; - 65E8F04711EFF25C00BBF654 /* pios_opahrs_proto.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = pios_opahrs_proto.h; path = ../../PiOS/inc/pios_opahrs_proto.h; sourceTree = SOURCE_ROOT; }; - 65E8F04811EFF25C00BBF654 /* pios_ppm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = pios_ppm.h; path = ../../PiOS/inc/pios_ppm.h; sourceTree = SOURCE_ROOT; }; - 65E8F04911EFF25C00BBF654 /* pios_pwm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = pios_pwm.h; path = ../../PiOS/inc/pios_pwm.h; sourceTree = SOURCE_ROOT; }; - 65E8F04A11EFF25C00BBF654 /* pios_sdcard.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = pios_sdcard.h; path = ../../PiOS/inc/pios_sdcard.h; sourceTree = SOURCE_ROOT; }; - 65E8F04B11EFF25C00BBF654 /* pios_servo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = pios_servo.h; path = ../../PiOS/inc/pios_servo.h; sourceTree = SOURCE_ROOT; }; - 65E8F04C11EFF25C00BBF654 /* pios_dsm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = pios_dsm.h; path = ../../PiOS/inc/pios_dsm.h; sourceTree = SOURCE_ROOT; }; - 65E8F04D11EFF25C00BBF654 /* pios_spi.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = pios_spi.h; path = ../../PiOS/inc/pios_spi.h; sourceTree = SOURCE_ROOT; }; - 65E8F04E11EFF25C00BBF654 /* pios_spi_priv.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = pios_spi_priv.h; path = ../../PiOS/inc/pios_spi_priv.h; sourceTree = SOURCE_ROOT; }; - 65E8F04F11EFF25C00BBF654 /* pios_stm32.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = pios_stm32.h; path = ../../PiOS/inc/pios_stm32.h; sourceTree = SOURCE_ROOT; }; - 65E8F05011EFF25C00BBF654 /* pios_sys.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = pios_sys.h; path = ../../PiOS/inc/pios_sys.h; sourceTree = SOURCE_ROOT; }; - 65E8F05111EFF25C00BBF654 /* pios_usart.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = pios_usart.h; path = ../../PiOS/inc/pios_usart.h; sourceTree = SOURCE_ROOT; }; - 65E8F05211EFF25C00BBF654 /* pios_usart_priv.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = pios_usart_priv.h; path = ../../PiOS/inc/pios_usart_priv.h; sourceTree = SOURCE_ROOT; }; - 65E8F05311EFF25C00BBF654 /* pios_usb.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = pios_usb.h; path = ../../PiOS/inc/pios_usb.h; sourceTree = SOURCE_ROOT; }; - 65E8F05511EFF25C00BBF654 /* pios_usb_hid.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = pios_usb_hid.h; path = ../../PiOS/inc/pios_usb_hid.h; sourceTree = SOURCE_ROOT; }; - 65E8F05611EFF25C00BBF654 /* stm32f10x_conf.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = stm32f10x_conf.h; path = ../../PiOS/inc/stm32f10x_conf.h; sourceTree = SOURCE_ROOT; }; - 65E8F05711EFF25C00BBF654 /* pios.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = pios.h; path = ../../PiOS/pios.h; sourceTree = SOURCE_ROOT; }; - 65E8F05D11EFF25C00BBF654 /* core_cm3.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = core_cm3.c; path = ../../PiOS/STM32F10x/Libraries/CMSIS/Core/CM3/core_cm3.c; sourceTree = SOURCE_ROOT; }; - 65E8F05E11EFF25C00BBF654 /* core_cm3.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = core_cm3.h; path = ../../PiOS/STM32F10x/Libraries/CMSIS/Core/CM3/core_cm3.h; sourceTree = SOURCE_ROOT; }; - 65E8F06111EFF25C00BBF654 /* startup_stm32f10x_cl.s */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; name = startup_stm32f10x_cl.s; path = ../../PiOS/STM32F10x/Libraries/CMSIS/Core/CM3/startup/gcc/startup_stm32f10x_cl.s; sourceTree = SOURCE_ROOT; }; - 65E8F06211EFF25C00BBF654 /* startup_stm32f10x_hd.s */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; name = startup_stm32f10x_hd.s; path = ../../PiOS/STM32F10x/Libraries/CMSIS/Core/CM3/startup/gcc/startup_stm32f10x_hd.s; sourceTree = SOURCE_ROOT; }; - 65E8F06311EFF25C00BBF654 /* startup_stm32f10x_ld.s */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; name = startup_stm32f10x_ld.s; path = ../../PiOS/STM32F10x/Libraries/CMSIS/Core/CM3/startup/gcc/startup_stm32f10x_ld.s; sourceTree = SOURCE_ROOT; }; - 65E8F06411EFF25C00BBF654 /* startup_stm32f10x_md.s */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; name = startup_stm32f10x_md.s; path = ../../PiOS/STM32F10x/Libraries/CMSIS/Core/CM3/startup/gcc/startup_stm32f10x_md.s; sourceTree = SOURCE_ROOT; }; - 65E8F06511EFF25C00BBF654 /* stm32f10x.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = stm32f10x.h; path = ../../PiOS/STM32F10x/Libraries/CMSIS/Core/CM3/stm32f10x.h; sourceTree = SOURCE_ROOT; }; - 65E8F06611EFF25C00BBF654 /* system_stm32f10x.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = system_stm32f10x.c; path = ../../PiOS/STM32F10x/Libraries/CMSIS/Core/CM3/system_stm32f10x.c; sourceTree = SOURCE_ROOT; }; - 65E8F06711EFF25C00BBF654 /* system_stm32f10x.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = system_stm32f10x.h; path = ../../PiOS/STM32F10x/Libraries/CMSIS/Core/CM3/system_stm32f10x.h; sourceTree = SOURCE_ROOT; }; - 65E8F06911EFF25C00BBF654 /* CMSIS_Core.htm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html.documentation; name = CMSIS_Core.htm; path = ../../PiOS/STM32F10x/Libraries/CMSIS/Core/Documentation/CMSIS_Core.htm; sourceTree = SOURCE_ROOT; }; - 65E8F06A11EFF25C00BBF654 /* License.doc */ = {isa = PBXFileReference; lastKnownFileType = file; name = License.doc; path = ../../PiOS/STM32F10x/Libraries/CMSIS/License.doc; sourceTree = SOURCE_ROOT; }; - 65E8F06C11EFF25C00BBF654 /* dfs_sdcard.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = dfs_sdcard.c; path = ../../PiOS/STM32F10x/Libraries/dosfs/dfs_sdcard.c; sourceTree = SOURCE_ROOT; }; - 65E8F06D11EFF25C00BBF654 /* dosfs.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = dosfs.c; path = ../../PiOS/STM32F10x/Libraries/dosfs/dosfs.c; sourceTree = SOURCE_ROOT; }; - 65E8F06E11EFF25C00BBF654 /* dosfs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = dosfs.h; path = ../../PiOS/STM32F10x/Libraries/dosfs/dosfs.h; sourceTree = SOURCE_ROOT; }; - 65E8F06F11EFF25C00BBF654 /* README.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = README.txt; path = ../../PiOS/STM32F10x/Libraries/dosfs/README.txt; sourceTree = SOURCE_ROOT; }; - 65E8F07011EFF25C00BBF654 /* README_1st.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = README_1st.txt; path = ../../PiOS/STM32F10x/Libraries/dosfs/README_1st.txt; sourceTree = SOURCE_ROOT; }; - 65E8F07311EFF25C00BBF654 /* croutine.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = croutine.c; path = ../../PiOS/STM32F10x/Libraries/FreeRTOS/Source/croutine.c; sourceTree = SOURCE_ROOT; }; - 65E8F07511EFF25C00BBF654 /* croutine.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = croutine.h; path = ../../PiOS/STM32F10x/Libraries/FreeRTOS/Source/include/croutine.h; sourceTree = SOURCE_ROOT; }; - 65E8F07611EFF25C00BBF654 /* FreeRTOS.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FreeRTOS.h; path = ../../PiOS/STM32F10x/Libraries/FreeRTOS/Source/include/FreeRTOS.h; sourceTree = SOURCE_ROOT; }; - 65E8F07711EFF25C00BBF654 /* list.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = list.h; path = ../../PiOS/STM32F10x/Libraries/FreeRTOS/Source/include/list.h; sourceTree = SOURCE_ROOT; }; - 65E8F07811EFF25C00BBF654 /* mpu_wrappers.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = mpu_wrappers.h; path = ../../PiOS/STM32F10x/Libraries/FreeRTOS/Source/include/mpu_wrappers.h; sourceTree = SOURCE_ROOT; }; - 65E8F07911EFF25C00BBF654 /* portable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = portable.h; path = ../../PiOS/STM32F10x/Libraries/FreeRTOS/Source/include/portable.h; sourceTree = SOURCE_ROOT; }; - 65E8F07A11EFF25C00BBF654 /* projdefs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = projdefs.h; path = ../../PiOS/STM32F10x/Libraries/FreeRTOS/Source/include/projdefs.h; sourceTree = SOURCE_ROOT; }; - 65E8F07B11EFF25C00BBF654 /* queue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = queue.h; path = ../../PiOS/STM32F10x/Libraries/FreeRTOS/Source/include/queue.h; sourceTree = SOURCE_ROOT; }; - 65E8F07C11EFF25C00BBF654 /* semphr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = semphr.h; path = ../../PiOS/STM32F10x/Libraries/FreeRTOS/Source/include/semphr.h; sourceTree = SOURCE_ROOT; }; - 65E8F07D11EFF25C00BBF654 /* StackMacros.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = StackMacros.h; path = ../../PiOS/STM32F10x/Libraries/FreeRTOS/Source/include/StackMacros.h; sourceTree = SOURCE_ROOT; }; - 65E8F07E11EFF25C00BBF654 /* task.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = task.h; path = ../../PiOS/STM32F10x/Libraries/FreeRTOS/Source/include/task.h; sourceTree = SOURCE_ROOT; }; - 65E8F07F11EFF25C00BBF654 /* list.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = list.c; path = ../../PiOS/STM32F10x/Libraries/FreeRTOS/Source/list.c; sourceTree = SOURCE_ROOT; }; - 65E8F08311EFF25C00BBF654 /* port.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = port.c; path = ../../PiOS/STM32F10x/Libraries/FreeRTOS/Source/portable/GCC/ARM_CM3/port.c; sourceTree = SOURCE_ROOT; }; - 65E8F08411EFF25C00BBF654 /* portmacro.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = portmacro.h; path = ../../PiOS/STM32F10x/Libraries/FreeRTOS/Source/portable/GCC/ARM_CM3/portmacro.h; sourceTree = SOURCE_ROOT; }; - 65E8F08611EFF25C00BBF654 /* heap_1.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = heap_1.c; path = ../../PiOS/STM32F10x/Libraries/FreeRTOS/Source/portable/MemMang/heap_1.c; sourceTree = SOURCE_ROOT; }; - 65E8F08711EFF25C00BBF654 /* heap_2.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = heap_2.c; path = ../../PiOS/STM32F10x/Libraries/FreeRTOS/Source/portable/MemMang/heap_2.c; sourceTree = SOURCE_ROOT; }; - 65E8F08811EFF25C00BBF654 /* heap_3.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = heap_3.c; path = ../../PiOS/STM32F10x/Libraries/FreeRTOS/Source/portable/MemMang/heap_3.c; sourceTree = SOURCE_ROOT; }; - 65E8F08911EFF25C00BBF654 /* readme.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = readme.txt; path = ../../PiOS/STM32F10x/Libraries/FreeRTOS/Source/portable/readme.txt; sourceTree = SOURCE_ROOT; }; - 65E8F08A11EFF25C00BBF654 /* queue.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = queue.c; path = ../../PiOS/STM32F10x/Libraries/FreeRTOS/Source/queue.c; sourceTree = SOURCE_ROOT; }; - 65E8F08B11EFF25C00BBF654 /* readme.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = readme.txt; path = ../../PiOS/STM32F10x/Libraries/FreeRTOS/Source/readme.txt; sourceTree = SOURCE_ROOT; }; - 65E8F08C11EFF25C00BBF654 /* tasks.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = tasks.c; path = ../../PiOS/STM32F10x/Libraries/FreeRTOS/Source/tasks.c; sourceTree = SOURCE_ROOT; }; - 65E8F08E11EFF25C00BBF654 /* msd.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = msd.c; path = ../../PiOS/STM32F10x/Libraries/msd/msd.c; sourceTree = SOURCE_ROOT; }; - 65E8F08F11EFF25C00BBF654 /* msd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = msd.h; path = ../../PiOS/STM32F10x/Libraries/msd/msd.h; sourceTree = SOURCE_ROOT; }; - 65E8F09011EFF25C00BBF654 /* msd_bot.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = msd_bot.c; path = ../../PiOS/STM32F10x/Libraries/msd/msd_bot.c; sourceTree = SOURCE_ROOT; }; - 65E8F09111EFF25C00BBF654 /* msd_bot.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = msd_bot.h; path = ../../PiOS/STM32F10x/Libraries/msd/msd_bot.h; sourceTree = SOURCE_ROOT; }; - 65E8F09211EFF25C00BBF654 /* msd_desc.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = msd_desc.c; path = ../../PiOS/STM32F10x/Libraries/msd/msd_desc.c; sourceTree = SOURCE_ROOT; }; - 65E8F09311EFF25C00BBF654 /* msd_desc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = msd_desc.h; path = ../../PiOS/STM32F10x/Libraries/msd/msd_desc.h; sourceTree = SOURCE_ROOT; }; - 65E8F09411EFF25C00BBF654 /* msd_memory.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = msd_memory.c; path = ../../PiOS/STM32F10x/Libraries/msd/msd_memory.c; sourceTree = SOURCE_ROOT; }; - 65E8F09511EFF25C00BBF654 /* msd_memory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = msd_memory.h; path = ../../PiOS/STM32F10x/Libraries/msd/msd_memory.h; sourceTree = SOURCE_ROOT; }; - 65E8F09611EFF25C00BBF654 /* msd_scsi.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = msd_scsi.c; path = ../../PiOS/STM32F10x/Libraries/msd/msd_scsi.c; sourceTree = SOURCE_ROOT; }; - 65E8F09711EFF25C00BBF654 /* msd_scsi.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = msd_scsi.h; path = ../../PiOS/STM32F10x/Libraries/msd/msd_scsi.h; sourceTree = SOURCE_ROOT; }; - 65E8F09811EFF25C00BBF654 /* msd_scsi_data.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = msd_scsi_data.c; path = ../../PiOS/STM32F10x/Libraries/msd/msd_scsi_data.c; sourceTree = SOURCE_ROOT; }; - 65E8F09B11EFF25C00BBF654 /* usb_core.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = usb_core.h; path = "../../PiOS/STM32F10x/Libraries/STM32_USB-FS-Device_Driver/inc/usb_core.h"; sourceTree = SOURCE_ROOT; }; - 65E8F09C11EFF25C00BBF654 /* usb_def.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = usb_def.h; path = "../../PiOS/STM32F10x/Libraries/STM32_USB-FS-Device_Driver/inc/usb_def.h"; sourceTree = SOURCE_ROOT; }; - 65E8F09D11EFF25C00BBF654 /* usb_init.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = usb_init.h; path = "../../PiOS/STM32F10x/Libraries/STM32_USB-FS-Device_Driver/inc/usb_init.h"; sourceTree = SOURCE_ROOT; }; - 65E8F09E11EFF25C00BBF654 /* usb_int.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = usb_int.h; path = "../../PiOS/STM32F10x/Libraries/STM32_USB-FS-Device_Driver/inc/usb_int.h"; sourceTree = SOURCE_ROOT; }; - 65E8F09F11EFF25C00BBF654 /* usb_lib.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = usb_lib.h; path = "../../PiOS/STM32F10x/Libraries/STM32_USB-FS-Device_Driver/inc/usb_lib.h"; sourceTree = SOURCE_ROOT; }; - 65E8F0A011EFF25C00BBF654 /* usb_mem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = usb_mem.h; path = "../../PiOS/STM32F10x/Libraries/STM32_USB-FS-Device_Driver/inc/usb_mem.h"; sourceTree = SOURCE_ROOT; }; - 65E8F0A111EFF25C00BBF654 /* usb_regs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = usb_regs.h; path = "../../PiOS/STM32F10x/Libraries/STM32_USB-FS-Device_Driver/inc/usb_regs.h"; sourceTree = SOURCE_ROOT; }; - 65E8F0A211EFF25C00BBF654 /* usb_type.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = usb_type.h; path = "../../PiOS/STM32F10x/Libraries/STM32_USB-FS-Device_Driver/inc/usb_type.h"; sourceTree = SOURCE_ROOT; }; - 65E8F0A411EFF25C00BBF654 /* usb_core.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = usb_core.c; path = "../../PiOS/STM32F10x/Libraries/STM32_USB-FS-Device_Driver/src/usb_core.c"; sourceTree = SOURCE_ROOT; }; - 65E8F0A511EFF25C00BBF654 /* usb_init.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = usb_init.c; path = "../../PiOS/STM32F10x/Libraries/STM32_USB-FS-Device_Driver/src/usb_init.c"; sourceTree = SOURCE_ROOT; }; - 65E8F0A611EFF25C00BBF654 /* usb_int.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = usb_int.c; path = "../../PiOS/STM32F10x/Libraries/STM32_USB-FS-Device_Driver/src/usb_int.c"; sourceTree = SOURCE_ROOT; }; - 65E8F0A711EFF25C00BBF654 /* usb_mem.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = usb_mem.c; path = "../../PiOS/STM32F10x/Libraries/STM32_USB-FS-Device_Driver/src/usb_mem.c"; sourceTree = SOURCE_ROOT; }; - 65E8F0A811EFF25C00BBF654 /* usb_regs.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = usb_regs.c; path = "../../PiOS/STM32F10x/Libraries/STM32_USB-FS-Device_Driver/src/usb_regs.c"; sourceTree = SOURCE_ROOT; }; - 65E8F0AB11EFF25C00BBF654 /* misc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = misc.h; path = ../../PiOS/STM32F10x/Libraries/STM32F10x_StdPeriph_Driver/inc/misc.h; sourceTree = SOURCE_ROOT; }; - 65E8F0AC11EFF25C00BBF654 /* stm32f10x_adc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = stm32f10x_adc.h; path = ../../PiOS/STM32F10x/Libraries/STM32F10x_StdPeriph_Driver/inc/stm32f10x_adc.h; sourceTree = SOURCE_ROOT; }; - 65E8F0AD11EFF25C00BBF654 /* stm32f10x_bkp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = stm32f10x_bkp.h; path = ../../PiOS/STM32F10x/Libraries/STM32F10x_StdPeriph_Driver/inc/stm32f10x_bkp.h; sourceTree = SOURCE_ROOT; }; - 65E8F0AE11EFF25C00BBF654 /* stm32f10x_can.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = stm32f10x_can.h; path = ../../PiOS/STM32F10x/Libraries/STM32F10x_StdPeriph_Driver/inc/stm32f10x_can.h; sourceTree = SOURCE_ROOT; }; - 65E8F0AF11EFF25C00BBF654 /* stm32f10x_crc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = stm32f10x_crc.h; path = ../../PiOS/STM32F10x/Libraries/STM32F10x_StdPeriph_Driver/inc/stm32f10x_crc.h; sourceTree = SOURCE_ROOT; }; - 65E8F0B011EFF25C00BBF654 /* stm32f10x_dac.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = stm32f10x_dac.h; path = ../../PiOS/STM32F10x/Libraries/STM32F10x_StdPeriph_Driver/inc/stm32f10x_dac.h; sourceTree = SOURCE_ROOT; }; - 65E8F0B111EFF25C00BBF654 /* stm32f10x_dbgmcu.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = stm32f10x_dbgmcu.h; path = ../../PiOS/STM32F10x/Libraries/STM32F10x_StdPeriph_Driver/inc/stm32f10x_dbgmcu.h; sourceTree = SOURCE_ROOT; }; - 65E8F0B211EFF25C00BBF654 /* stm32f10x_dma.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = stm32f10x_dma.h; path = ../../PiOS/STM32F10x/Libraries/STM32F10x_StdPeriph_Driver/inc/stm32f10x_dma.h; sourceTree = SOURCE_ROOT; }; - 65E8F0B311EFF25C00BBF654 /* stm32f10x_exti.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = stm32f10x_exti.h; path = ../../PiOS/STM32F10x/Libraries/STM32F10x_StdPeriph_Driver/inc/stm32f10x_exti.h; sourceTree = SOURCE_ROOT; }; - 65E8F0B411EFF25C00BBF654 /* stm32f10x_flash.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = stm32f10x_flash.h; path = ../../PiOS/STM32F10x/Libraries/STM32F10x_StdPeriph_Driver/inc/stm32f10x_flash.h; sourceTree = SOURCE_ROOT; }; - 65E8F0B511EFF25C00BBF654 /* stm32f10x_fsmc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = stm32f10x_fsmc.h; path = ../../PiOS/STM32F10x/Libraries/STM32F10x_StdPeriph_Driver/inc/stm32f10x_fsmc.h; sourceTree = SOURCE_ROOT; }; - 65E8F0B611EFF25C00BBF654 /* stm32f10x_gpio.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = stm32f10x_gpio.h; path = ../../PiOS/STM32F10x/Libraries/STM32F10x_StdPeriph_Driver/inc/stm32f10x_gpio.h; sourceTree = SOURCE_ROOT; }; - 65E8F0B711EFF25C00BBF654 /* stm32f10x_i2c.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = stm32f10x_i2c.h; path = ../../PiOS/STM32F10x/Libraries/STM32F10x_StdPeriph_Driver/inc/stm32f10x_i2c.h; sourceTree = SOURCE_ROOT; }; - 65E8F0B811EFF25C00BBF654 /* stm32f10x_iwdg.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = stm32f10x_iwdg.h; path = ../../PiOS/STM32F10x/Libraries/STM32F10x_StdPeriph_Driver/inc/stm32f10x_iwdg.h; sourceTree = SOURCE_ROOT; }; - 65E8F0B911EFF25C00BBF654 /* stm32f10x_pwr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = stm32f10x_pwr.h; path = ../../PiOS/STM32F10x/Libraries/STM32F10x_StdPeriph_Driver/inc/stm32f10x_pwr.h; sourceTree = SOURCE_ROOT; }; - 65E8F0BA11EFF25C00BBF654 /* stm32f10x_rcc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = stm32f10x_rcc.h; path = ../../PiOS/STM32F10x/Libraries/STM32F10x_StdPeriph_Driver/inc/stm32f10x_rcc.h; sourceTree = SOURCE_ROOT; }; - 65E8F0BB11EFF25C00BBF654 /* stm32f10x_rtc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = stm32f10x_rtc.h; path = ../../PiOS/STM32F10x/Libraries/STM32F10x_StdPeriph_Driver/inc/stm32f10x_rtc.h; sourceTree = SOURCE_ROOT; }; - 65E8F0BC11EFF25C00BBF654 /* stm32f10x_sdio.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = stm32f10x_sdio.h; path = ../../PiOS/STM32F10x/Libraries/STM32F10x_StdPeriph_Driver/inc/stm32f10x_sdio.h; sourceTree = SOURCE_ROOT; }; - 65E8F0BD11EFF25C00BBF654 /* stm32f10x_spi.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = stm32f10x_spi.h; path = ../../PiOS/STM32F10x/Libraries/STM32F10x_StdPeriph_Driver/inc/stm32f10x_spi.h; sourceTree = SOURCE_ROOT; }; - 65E8F0BE11EFF25C00BBF654 /* stm32f10x_tim.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = stm32f10x_tim.h; path = ../../PiOS/STM32F10x/Libraries/STM32F10x_StdPeriph_Driver/inc/stm32f10x_tim.h; sourceTree = SOURCE_ROOT; }; - 65E8F0BF11EFF25C00BBF654 /* stm32f10x_usart.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = stm32f10x_usart.h; path = ../../PiOS/STM32F10x/Libraries/STM32F10x_StdPeriph_Driver/inc/stm32f10x_usart.h; sourceTree = SOURCE_ROOT; }; - 65E8F0C011EFF25C00BBF654 /* stm32f10x_wwdg.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = stm32f10x_wwdg.h; path = ../../PiOS/STM32F10x/Libraries/STM32F10x_StdPeriph_Driver/inc/stm32f10x_wwdg.h; sourceTree = SOURCE_ROOT; }; - 65E8F0C211EFF25C00BBF654 /* misc.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = misc.c; path = ../../PiOS/STM32F10x/Libraries/STM32F10x_StdPeriph_Driver/src/misc.c; sourceTree = SOURCE_ROOT; }; - 65E8F0C311EFF25C00BBF654 /* stm32f10x_adc.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = stm32f10x_adc.c; path = ../../PiOS/STM32F10x/Libraries/STM32F10x_StdPeriph_Driver/src/stm32f10x_adc.c; sourceTree = SOURCE_ROOT; }; - 65E8F0C411EFF25C00BBF654 /* stm32f10x_bkp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = stm32f10x_bkp.c; path = ../../PiOS/STM32F10x/Libraries/STM32F10x_StdPeriph_Driver/src/stm32f10x_bkp.c; sourceTree = SOURCE_ROOT; }; - 65E8F0C511EFF25C00BBF654 /* stm32f10x_can.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = stm32f10x_can.c; path = ../../PiOS/STM32F10x/Libraries/STM32F10x_StdPeriph_Driver/src/stm32f10x_can.c; sourceTree = SOURCE_ROOT; }; - 65E8F0C611EFF25C00BBF654 /* stm32f10x_crc.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = stm32f10x_crc.c; path = ../../PiOS/STM32F10x/Libraries/STM32F10x_StdPeriph_Driver/src/stm32f10x_crc.c; sourceTree = SOURCE_ROOT; }; - 65E8F0C711EFF25C00BBF654 /* stm32f10x_dac.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = stm32f10x_dac.c; path = ../../PiOS/STM32F10x/Libraries/STM32F10x_StdPeriph_Driver/src/stm32f10x_dac.c; sourceTree = SOURCE_ROOT; }; - 65E8F0C811EFF25C00BBF654 /* stm32f10x_dbgmcu.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = stm32f10x_dbgmcu.c; path = ../../PiOS/STM32F10x/Libraries/STM32F10x_StdPeriph_Driver/src/stm32f10x_dbgmcu.c; sourceTree = SOURCE_ROOT; }; - 65E8F0C911EFF25C00BBF654 /* stm32f10x_dma.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = stm32f10x_dma.c; path = ../../PiOS/STM32F10x/Libraries/STM32F10x_StdPeriph_Driver/src/stm32f10x_dma.c; sourceTree = SOURCE_ROOT; }; - 65E8F0CA11EFF25C00BBF654 /* stm32f10x_exti.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = stm32f10x_exti.c; path = ../../PiOS/STM32F10x/Libraries/STM32F10x_StdPeriph_Driver/src/stm32f10x_exti.c; sourceTree = SOURCE_ROOT; }; - 65E8F0CB11EFF25C00BBF654 /* stm32f10x_flash.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = stm32f10x_flash.c; path = ../../PiOS/STM32F10x/Libraries/STM32F10x_StdPeriph_Driver/src/stm32f10x_flash.c; sourceTree = SOURCE_ROOT; }; - 65E8F0CC11EFF25C00BBF654 /* stm32f10x_fsmc.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = stm32f10x_fsmc.c; path = ../../PiOS/STM32F10x/Libraries/STM32F10x_StdPeriph_Driver/src/stm32f10x_fsmc.c; sourceTree = SOURCE_ROOT; }; - 65E8F0CD11EFF25C00BBF654 /* stm32f10x_gpio.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = stm32f10x_gpio.c; path = ../../PiOS/STM32F10x/Libraries/STM32F10x_StdPeriph_Driver/src/stm32f10x_gpio.c; sourceTree = SOURCE_ROOT; }; - 65E8F0CE11EFF25C00BBF654 /* stm32f10x_i2c.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = stm32f10x_i2c.c; path = ../../PiOS/STM32F10x/Libraries/STM32F10x_StdPeriph_Driver/src/stm32f10x_i2c.c; sourceTree = SOURCE_ROOT; }; - 65E8F0CF11EFF25C00BBF654 /* stm32f10x_iwdg.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = stm32f10x_iwdg.c; path = ../../PiOS/STM32F10x/Libraries/STM32F10x_StdPeriph_Driver/src/stm32f10x_iwdg.c; sourceTree = SOURCE_ROOT; }; - 65E8F0D011EFF25C00BBF654 /* stm32f10x_pwr.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = stm32f10x_pwr.c; path = ../../PiOS/STM32F10x/Libraries/STM32F10x_StdPeriph_Driver/src/stm32f10x_pwr.c; sourceTree = SOURCE_ROOT; }; - 65E8F0D111EFF25C00BBF654 /* stm32f10x_rcc.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = stm32f10x_rcc.c; path = ../../PiOS/STM32F10x/Libraries/STM32F10x_StdPeriph_Driver/src/stm32f10x_rcc.c; sourceTree = SOURCE_ROOT; }; - 65E8F0D211EFF25C00BBF654 /* stm32f10x_rtc.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = stm32f10x_rtc.c; path = ../../PiOS/STM32F10x/Libraries/STM32F10x_StdPeriph_Driver/src/stm32f10x_rtc.c; sourceTree = SOURCE_ROOT; }; - 65E8F0D311EFF25C00BBF654 /* stm32f10x_sdio.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = stm32f10x_sdio.c; path = ../../PiOS/STM32F10x/Libraries/STM32F10x_StdPeriph_Driver/src/stm32f10x_sdio.c; sourceTree = SOURCE_ROOT; }; - 65E8F0D411EFF25C00BBF654 /* stm32f10x_spi.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = stm32f10x_spi.c; path = ../../PiOS/STM32F10x/Libraries/STM32F10x_StdPeriph_Driver/src/stm32f10x_spi.c; sourceTree = SOURCE_ROOT; }; - 65E8F0D511EFF25C00BBF654 /* stm32f10x_tim.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = stm32f10x_tim.c; path = ../../PiOS/STM32F10x/Libraries/STM32F10x_StdPeriph_Driver/src/stm32f10x_tim.c; sourceTree = SOURCE_ROOT; }; - 65E8F0D611EFF25C00BBF654 /* stm32f10x_usart.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = stm32f10x_usart.c; path = ../../PiOS/STM32F10x/Libraries/STM32F10x_StdPeriph_Driver/src/stm32f10x_usart.c; sourceTree = SOURCE_ROOT; }; - 65E8F0D711EFF25C00BBF654 /* stm32f10x_wwdg.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = stm32f10x_wwdg.c; path = ../../PiOS/STM32F10x/Libraries/STM32F10x_StdPeriph_Driver/src/stm32f10x_wwdg.c; sourceTree = SOURCE_ROOT; }; - 65E8F0D811EFF25C00BBF654 /* link_stm32f10x_HD.ld */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = link_stm32f10x_HD.ld; path = ../../PiOS/STM32F10x/link_stm32f10x_HD.ld; sourceTree = SOURCE_ROOT; }; - 65E8F0DB11EFF25C00BBF654 /* link_stm32f10x_MD.ld */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = link_stm32f10x_MD.ld; path = ../../PiOS/STM32F10x/link_stm32f10x_MD.ld; sourceTree = SOURCE_ROOT; }; - 65E8F0DC11EFF25C00BBF654 /* pios_adc.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pios_adc.c; path = ../../PiOS/STM32F10x/pios_adc.c; sourceTree = SOURCE_ROOT; }; - 65E8F0DD11EFF25C00BBF654 /* pios_debug.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pios_debug.c; path = ../../PiOS/STM32F10x/pios_debug.c; sourceTree = SOURCE_ROOT; }; - 65E8F0DE11EFF25C00BBF654 /* pios_delay.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pios_delay.c; path = ../../PiOS/STM32F10x/pios_delay.c; sourceTree = SOURCE_ROOT; }; - 65E8F0DF11EFF25C00BBF654 /* pios_exti.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pios_exti.c; path = ../../PiOS/STM32F10x/pios_exti.c; sourceTree = SOURCE_ROOT; }; - 65E8F0E011EFF25C00BBF654 /* pios_gpio.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pios_gpio.c; path = ../../PiOS/STM32F10x/pios_gpio.c; sourceTree = SOURCE_ROOT; }; - 65E8F0E111EFF25C00BBF654 /* pios_i2c.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pios_i2c.c; path = ../../PiOS/STM32F10x/pios_i2c.c; sourceTree = SOURCE_ROOT; }; - 65E8F0E211EFF25C00BBF654 /* pios_irq.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pios_irq.c; path = ../../PiOS/STM32F10x/pios_irq.c; sourceTree = SOURCE_ROOT; }; - 65E8F0E311EFF25C00BBF654 /* pios_led.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pios_led.c; path = ../../PiOS/STM32F10x/pios_led.c; sourceTree = SOURCE_ROOT; }; - 65E8F0E411EFF25C00BBF654 /* pios_ppm.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pios_ppm.c; path = ../../PiOS/STM32F10x/pios_ppm.c; sourceTree = SOURCE_ROOT; }; - 65E8F0E511EFF25C00BBF654 /* pios_pwm.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pios_pwm.c; path = ../../PiOS/STM32F10x/pios_pwm.c; sourceTree = SOURCE_ROOT; }; - 65E8F0E611EFF25C00BBF654 /* pios_servo.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pios_servo.c; path = ../../PiOS/STM32F10x/pios_servo.c; sourceTree = SOURCE_ROOT; }; - 65E8F0E711EFF25C00BBF654 /* pios_dsm.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pios_dsm.c; path = ../../PiOS/STM32F10x/pios_dsm.c; sourceTree = SOURCE_ROOT; }; - 65E8F0E811EFF25C00BBF654 /* pios_spi.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pios_spi.c; path = ../../PiOS/STM32F10x/pios_spi.c; sourceTree = SOURCE_ROOT; }; - 65E8F0E911EFF25C00BBF654 /* pios_sys.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pios_sys.c; path = ../../PiOS/STM32F10x/pios_sys.c; sourceTree = SOURCE_ROOT; }; - 65E8F0EA11EFF25C00BBF654 /* pios_usart.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pios_usart.c; path = ../../PiOS/STM32F10x/pios_usart.c; sourceTree = SOURCE_ROOT; }; - 65E8F0ED11EFF25C00BBF654 /* pios_usb_hid.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = pios_usb_hid.c; path = ../../PiOS/STM32F10x/pios_usb_hid.c; sourceTree = SOURCE_ROOT; }; - 65E8F0EE11EFF25C00BBF654 /* startup_stm32f10x_HD.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; name = startup_stm32f10x_HD.S; path = ../../PiOS/STM32F10x/startup_stm32f10x_HD.S; sourceTree = SOURCE_ROOT; }; - 65E8F0F111EFF25C00BBF654 /* startup_stm32f10x_MD.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; name = startup_stm32f10x_MD.S; path = ../../PiOS/STM32F10x/startup_stm32f10x_MD.S; sourceTree = SOURCE_ROOT; }; - 65EA2E171273C55200636061 /* ratedesired.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = ratedesired.xml; sourceTree = ""; }; - 65F93C3912EE09280047DB36 /* aes.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = aes.c; sourceTree = ""; }; - 65F93C3B12EE09280047DB36 /* aes.lst */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = aes.lst; sourceTree = ""; }; - 65F93C3C12EE09280047DB36 /* aes.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = aes.o; sourceTree = ""; }; - 65F93C3D12EE09280047DB36 /* buffer.lst */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = buffer.lst; sourceTree = ""; }; - 65F93C3E12EE09280047DB36 /* buffer.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = buffer.o; sourceTree = ""; }; - 65F93C3F12EE09280047DB36 /* core_cm3.lst */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = core_cm3.lst; sourceTree = ""; }; - 65F93C4012EE09280047DB36 /* core_cm3.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = core_cm3.o; sourceTree = ""; }; - 65F93C4112EE09280047DB36 /* crc.lst */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = crc.lst; sourceTree = ""; }; - 65F93C4212EE09280047DB36 /* crc.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = crc.o; sourceTree = ""; }; - 65F93C4412EE09280047DB36 /* aes.o.d */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.dtrace; path = aes.o.d; sourceTree = ""; }; - 65F93C4512EE09280047DB36 /* buffer.o.d */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.dtrace; path = buffer.o.d; sourceTree = ""; }; - 65F93C4612EE09280047DB36 /* core_cm3.o.d */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.dtrace; path = core_cm3.o.d; sourceTree = ""; }; - 65F93C4712EE09280047DB36 /* crc.o.d */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.dtrace; path = crc.o.d; sourceTree = ""; }; - 65F93C4812EE09280047DB36 /* fifo_buffer.o.d */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.dtrace; path = fifo_buffer.o.d; sourceTree = ""; }; - 65F93C4912EE09280047DB36 /* gpio_in.o.d */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.dtrace; path = gpio_in.o.d; sourceTree = ""; }; - 65F93C4A12EE09280047DB36 /* main.o.d */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.dtrace; path = main.o.d; sourceTree = ""; }; - 65F93C4B12EE09280047DB36 /* misc.o.d */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.dtrace; path = misc.o.d; sourceTree = ""; }; - 65F93C4C12EE09280047DB36 /* packet_handler.o.d */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.dtrace; path = packet_handler.o.d; sourceTree = ""; }; - 65F93C4D12EE09280047DB36 /* pios_adc.o.d */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.dtrace; path = pios_adc.o.d; sourceTree = ""; }; - 65F93C4E12EE09280047DB36 /* pios_board.o.d */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.dtrace; path = pios_board.o.d; sourceTree = ""; }; - 65F93C4F12EE09280047DB36 /* pios_com.o.d */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.dtrace; path = pios_com.o.d; sourceTree = ""; }; - 65F93C5012EE09280047DB36 /* pios_delay.o.d */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.dtrace; path = pios_delay.o.d; sourceTree = ""; }; - 65F93C5112EE09280047DB36 /* pios_gpio.o.d */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.dtrace; path = pios_gpio.o.d; sourceTree = ""; }; - 65F93C5212EE09280047DB36 /* pios_irq.o.d */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.dtrace; path = pios_irq.o.d; sourceTree = ""; }; - 65F93C5312EE09280047DB36 /* pios_led.o.d */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.dtrace; path = pios_led.o.d; sourceTree = ""; }; - 65F93C5412EE09280047DB36 /* pios_spi.o.d */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.dtrace; path = pios_spi.o.d; sourceTree = ""; }; - 65F93C5512EE09280047DB36 /* pios_sys.o.d */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.dtrace; path = pios_sys.o.d; sourceTree = ""; }; - 65F93C5612EE09280047DB36 /* pios_usart.o.d */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.dtrace; path = pios_usart.o.d; sourceTree = ""; }; - 65F93C5712EE09280047DB36 /* pios_usb_hid.o.d */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.dtrace; path = pios_usb_hid.o.d; sourceTree = ""; }; - 65F93C5812EE09280047DB36 /* pios_usb_hid_desc.o.d */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.dtrace; path = pios_usb_hid_desc.o.d; sourceTree = ""; }; - 65F93C5912EE09280047DB36 /* pios_usb_hid_istr.o.d */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.dtrace; path = pios_usb_hid_istr.o.d; sourceTree = ""; }; - 65F93C5A12EE09280047DB36 /* pios_usb_hid_prop.o.d */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.dtrace; path = pios_usb_hid_prop.o.d; sourceTree = ""; }; - 65F93C5B12EE09280047DB36 /* pios_usb_hid_pwr.o.d */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.dtrace; path = pios_usb_hid_pwr.o.d; sourceTree = ""; }; - 65F93C5C12EE09280047DB36 /* pios_wdg.o.d */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.dtrace; path = pios_wdg.o.d; sourceTree = ""; }; - 65F93C5D12EE09280047DB36 /* printf-stdarg.o.d */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.dtrace; path = "printf-stdarg.o.d"; sourceTree = ""; }; - 65F93C5E12EE09280047DB36 /* rfm22b.o.d */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.dtrace; path = rfm22b.o.d; sourceTree = ""; }; - 65F93C5F12EE09280047DB36 /* saved_settings.o.d */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.dtrace; path = saved_settings.o.d; sourceTree = ""; }; - 65F93C6012EE09280047DB36 /* stm32f10x_adc.o.d */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.dtrace; path = stm32f10x_adc.o.d; sourceTree = ""; }; - 65F93C6112EE09280047DB36 /* stm32f10x_bkp.o.d */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.dtrace; path = stm32f10x_bkp.o.d; sourceTree = ""; }; - 65F93C6212EE09280047DB36 /* stm32f10x_crc.o.d */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.dtrace; path = stm32f10x_crc.o.d; sourceTree = ""; }; - 65F93C6312EE09280047DB36 /* stm32f10x_dac.o.d */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.dtrace; path = stm32f10x_dac.o.d; sourceTree = ""; }; - 65F93C6412EE09280047DB36 /* stm32f10x_dbgmcu.o.d */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.dtrace; path = stm32f10x_dbgmcu.o.d; sourceTree = ""; }; - 65F93C6512EE09280047DB36 /* stm32f10x_dma.o.d */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.dtrace; path = stm32f10x_dma.o.d; sourceTree = ""; }; - 65F93C6612EE09280047DB36 /* stm32f10x_exti.o.d */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.dtrace; path = stm32f10x_exti.o.d; sourceTree = ""; }; - 65F93C6712EE09280047DB36 /* stm32f10x_flash.o.d */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.dtrace; path = stm32f10x_flash.o.d; sourceTree = ""; }; - 65F93C6812EE09280047DB36 /* stm32f10x_gpio.o.d */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.dtrace; path = stm32f10x_gpio.o.d; sourceTree = ""; }; - 65F93C6912EE09280047DB36 /* stm32f10x_i2c.o.d */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.dtrace; path = stm32f10x_i2c.o.d; sourceTree = ""; }; - 65F93C6A12EE09280047DB36 /* stm32f10x_iwdg.o.d */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.dtrace; path = stm32f10x_iwdg.o.d; sourceTree = ""; }; - 65F93C6B12EE09280047DB36 /* stm32f10x_pwr.o.d */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.dtrace; path = stm32f10x_pwr.o.d; sourceTree = ""; }; - 65F93C6C12EE09280047DB36 /* stm32f10x_rcc.o.d */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.dtrace; path = stm32f10x_rcc.o.d; sourceTree = ""; }; - 65F93C6D12EE09280047DB36 /* stm32f10x_rtc.o.d */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.dtrace; path = stm32f10x_rtc.o.d; sourceTree = ""; }; - 65F93C6E12EE09280047DB36 /* stm32f10x_spi.o.d */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.dtrace; path = stm32f10x_spi.o.d; sourceTree = ""; }; - 65F93C6F12EE09280047DB36 /* stm32f10x_tim.o.d */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.dtrace; path = stm32f10x_tim.o.d; sourceTree = ""; }; - 65F93C7012EE09280047DB36 /* stm32f10x_usart.o.d */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.dtrace; path = stm32f10x_usart.o.d; sourceTree = ""; }; - 65F93C7112EE09280047DB36 /* stopwatch.o.d */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.dtrace; path = stopwatch.o.d; sourceTree = ""; }; - 65F93C7212EE09280047DB36 /* system_stm32f10x.o.d */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.dtrace; path = system_stm32f10x.o.d; sourceTree = ""; }; - 65F93C7312EE09280047DB36 /* transparent_comms.o.d */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.dtrace; path = transparent_comms.o.d; sourceTree = ""; }; - 65F93C7412EE09280047DB36 /* uavtalk_comms.o.d */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.dtrace; path = uavtalk_comms.o.d; sourceTree = ""; }; - 65F93C7512EE09280047DB36 /* usb_core.o.d */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.dtrace; path = usb_core.o.d; sourceTree = ""; }; - 65F93C7612EE09280047DB36 /* usb_init.o.d */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.dtrace; path = usb_init.o.d; sourceTree = ""; }; - 65F93C7712EE09280047DB36 /* usb_int.o.d */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.dtrace; path = usb_int.o.d; sourceTree = ""; }; - 65F93C7812EE09280047DB36 /* usb_mem.o.d */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.dtrace; path = usb_mem.o.d; sourceTree = ""; }; - 65F93C7912EE09280047DB36 /* usb_regs.o.d */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.dtrace; path = usb_regs.o.d; sourceTree = ""; }; - 65F93C7A12EE09280047DB36 /* usb_sil.o.d */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.dtrace; path = usb_sil.o.d; sourceTree = ""; }; - 65F93C7B12EE09280047DB36 /* watchdog.o.d */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.dtrace; path = watchdog.o.d; sourceTree = ""; }; - 65F93C7C12EE09280047DB36 /* fifo_buffer.lst */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = fifo_buffer.lst; sourceTree = ""; }; - 65F93C7D12EE09280047DB36 /* fifo_buffer.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = fifo_buffer.o; sourceTree = ""; }; - 65F93C7E12EE09280047DB36 /* gpio_in.lst */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = gpio_in.lst; sourceTree = ""; }; - 65F93C7F12EE09280047DB36 /* gpio_in.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = gpio_in.o; sourceTree = ""; }; - 65F93C8012EE09280047DB36 /* main.lst */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = main.lst; sourceTree = ""; }; - 65F93C8112EE09280047DB36 /* main.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = main.o; sourceTree = ""; }; - 65F93C8212EE09280047DB36 /* misc.lst */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = misc.lst; sourceTree = ""; }; - 65F93C8312EE09280047DB36 /* misc.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = misc.o; sourceTree = ""; }; - 65F93C8412EE09290047DB36 /* packet_handler.lst */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = packet_handler.lst; sourceTree = ""; }; - 65F93C8512EE09290047DB36 /* packet_handler.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = packet_handler.o; sourceTree = ""; }; - 65F93C8612EE09290047DB36 /* pios_adc.lst */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = pios_adc.lst; sourceTree = ""; }; - 65F93C8712EE09290047DB36 /* pios_adc.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = pios_adc.o; sourceTree = ""; }; - 65F93C8812EE09290047DB36 /* pios_board.lst */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = pios_board.lst; sourceTree = ""; }; - 65F93C8912EE09290047DB36 /* pios_board.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = pios_board.o; sourceTree = ""; }; - 65F93C8A12EE09290047DB36 /* pios_com.lst */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = pios_com.lst; sourceTree = ""; }; - 65F93C8B12EE09290047DB36 /* pios_com.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = pios_com.o; sourceTree = ""; }; - 65F93C8C12EE09290047DB36 /* pios_delay.lst */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = pios_delay.lst; sourceTree = ""; }; - 65F93C8D12EE09290047DB36 /* pios_delay.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = pios_delay.o; sourceTree = ""; }; - 65F93C8E12EE09290047DB36 /* pios_gpio.lst */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = pios_gpio.lst; sourceTree = ""; }; - 65F93C8F12EE09290047DB36 /* pios_gpio.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = pios_gpio.o; sourceTree = ""; }; - 65F93C9012EE09290047DB36 /* pios_irq.lst */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = pios_irq.lst; sourceTree = ""; }; - 65F93C9112EE09290047DB36 /* pios_irq.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = pios_irq.o; sourceTree = ""; }; - 65F93C9212EE09290047DB36 /* pios_led.lst */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = pios_led.lst; sourceTree = ""; }; - 65F93C9312EE09290047DB36 /* pios_led.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = pios_led.o; sourceTree = ""; }; - 65F93C9412EE09290047DB36 /* pios_spi.lst */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = pios_spi.lst; sourceTree = ""; }; - 65F93C9512EE09290047DB36 /* pios_spi.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = pios_spi.o; sourceTree = ""; }; - 65F93C9612EE09290047DB36 /* pios_sys.lst */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = pios_sys.lst; sourceTree = ""; }; - 65F93C9712EE09290047DB36 /* pios_sys.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = pios_sys.o; sourceTree = ""; }; - 65F93C9812EE09290047DB36 /* pios_usart.lst */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = pios_usart.lst; sourceTree = ""; }; - 65F93C9912EE09290047DB36 /* pios_usart.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = pios_usart.o; sourceTree = ""; }; - 65F93C9A12EE09290047DB36 /* pios_usb_hid.lst */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = pios_usb_hid.lst; sourceTree = ""; }; - 65F93C9B12EE09290047DB36 /* pios_usb_hid.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = pios_usb_hid.o; sourceTree = ""; }; - 65F93C9C12EE09290047DB36 /* pios_usb_hid_desc.lst */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = pios_usb_hid_desc.lst; sourceTree = ""; }; - 65F93C9D12EE09290047DB36 /* pios_usb_hid_desc.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = pios_usb_hid_desc.o; sourceTree = ""; }; - 65F93C9E12EE09290047DB36 /* pios_usb_hid_istr.lst */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = pios_usb_hid_istr.lst; sourceTree = ""; }; - 65F93C9F12EE09290047DB36 /* pios_usb_hid_istr.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = pios_usb_hid_istr.o; sourceTree = ""; }; - 65F93CA012EE09290047DB36 /* pios_usb_hid_prop.lst */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = pios_usb_hid_prop.lst; sourceTree = ""; }; - 65F93CA112EE09290047DB36 /* pios_usb_hid_prop.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = pios_usb_hid_prop.o; sourceTree = ""; }; - 65F93CA212EE09290047DB36 /* pios_usb_hid_pwr.lst */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = pios_usb_hid_pwr.lst; sourceTree = ""; }; - 65F93CA312EE09290047DB36 /* pios_usb_hid_pwr.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = pios_usb_hid_pwr.o; sourceTree = ""; }; - 65F93CA412EE09290047DB36 /* pios_wdg.lst */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = pios_wdg.lst; sourceTree = ""; }; - 65F93CA512EE09290047DB36 /* pios_wdg.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = pios_wdg.o; sourceTree = ""; }; - 65F93CA612EE09290047DB36 /* PipXtreme.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = PipXtreme.bin; sourceTree = ""; }; - 65F93CA712EE09290047DB36 /* PipXtreme.elf */ = {isa = PBXFileReference; lastKnownFileType = file; path = PipXtreme.elf; sourceTree = ""; }; - 65F93CA812EE09290047DB36 /* PipXtreme.hex */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = PipXtreme.hex; sourceTree = ""; }; - 65F93CA912EE09290047DB36 /* PipXtreme.lss */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = PipXtreme.lss; sourceTree = ""; }; - 65F93CAA12EE09290047DB36 /* PipXtreme.map */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = PipXtreme.map; sourceTree = ""; }; - 65F93CAB12EE09290047DB36 /* PipXtreme.sym */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = PipXtreme.sym; sourceTree = ""; }; - 65F93CAC12EE09290047DB36 /* printf-stdarg.lst */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "printf-stdarg.lst"; sourceTree = ""; }; - 65F93CAD12EE09290047DB36 /* printf-stdarg.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = "printf-stdarg.o"; sourceTree = ""; }; - 65F93CAE12EE09290047DB36 /* rfm22b.lst */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = rfm22b.lst; sourceTree = ""; }; - 65F93CAF12EE09290047DB36 /* rfm22b.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = rfm22b.o; sourceTree = ""; }; - 65F93CB012EE09290047DB36 /* saved_settings.lst */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = saved_settings.lst; sourceTree = ""; }; - 65F93CB112EE09290047DB36 /* saved_settings.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = saved_settings.o; sourceTree = ""; }; - 65F93CB212EE09290047DB36 /* startup_stm32f10x_MD.lst */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = startup_stm32f10x_MD.lst; sourceTree = ""; }; - 65F93CB312EE09290047DB36 /* startup_stm32f10x_MD.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = startup_stm32f10x_MD.o; sourceTree = ""; }; - 65F93CB412EE09290047DB36 /* stm32f10x_adc.lst */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = stm32f10x_adc.lst; sourceTree = ""; }; - 65F93CB512EE09290047DB36 /* stm32f10x_adc.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = stm32f10x_adc.o; sourceTree = ""; }; - 65F93CB612EE09290047DB36 /* stm32f10x_bkp.lst */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = stm32f10x_bkp.lst; sourceTree = ""; }; - 65F93CB712EE09290047DB36 /* stm32f10x_bkp.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = stm32f10x_bkp.o; sourceTree = ""; }; - 65F93CB812EE09290047DB36 /* stm32f10x_crc.lst */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = stm32f10x_crc.lst; sourceTree = ""; }; - 65F93CB912EE09290047DB36 /* stm32f10x_crc.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = stm32f10x_crc.o; sourceTree = ""; }; - 65F93CBA12EE09290047DB36 /* stm32f10x_dac.lst */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = stm32f10x_dac.lst; sourceTree = ""; }; - 65F93CBB12EE09290047DB36 /* stm32f10x_dac.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = stm32f10x_dac.o; sourceTree = ""; }; - 65F93CBC12EE09290047DB36 /* stm32f10x_dbgmcu.lst */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = stm32f10x_dbgmcu.lst; sourceTree = ""; }; - 65F93CBD12EE09290047DB36 /* stm32f10x_dbgmcu.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = stm32f10x_dbgmcu.o; sourceTree = ""; }; - 65F93CBE12EE09290047DB36 /* stm32f10x_dma.lst */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = stm32f10x_dma.lst; sourceTree = ""; }; - 65F93CBF12EE09290047DB36 /* stm32f10x_dma.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = stm32f10x_dma.o; sourceTree = ""; }; - 65F93CC012EE09290047DB36 /* stm32f10x_exti.lst */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = stm32f10x_exti.lst; sourceTree = ""; }; - 65F93CC112EE09290047DB36 /* stm32f10x_exti.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = stm32f10x_exti.o; sourceTree = ""; }; - 65F93CC212EE09290047DB36 /* stm32f10x_flash.lst */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = stm32f10x_flash.lst; sourceTree = ""; }; - 65F93CC312EE09290047DB36 /* stm32f10x_flash.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = stm32f10x_flash.o; sourceTree = ""; }; - 65F93CC412EE09290047DB36 /* stm32f10x_gpio.lst */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = stm32f10x_gpio.lst; sourceTree = ""; }; - 65F93CC512EE09290047DB36 /* stm32f10x_gpio.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = stm32f10x_gpio.o; sourceTree = ""; }; - 65F93CC612EE09290047DB36 /* stm32f10x_i2c.lst */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = stm32f10x_i2c.lst; sourceTree = ""; }; - 65F93CC712EE09290047DB36 /* stm32f10x_i2c.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = stm32f10x_i2c.o; sourceTree = ""; }; - 65F93CC812EE09290047DB36 /* stm32f10x_iwdg.lst */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = stm32f10x_iwdg.lst; sourceTree = ""; }; - 65F93CC912EE09290047DB36 /* stm32f10x_iwdg.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = stm32f10x_iwdg.o; sourceTree = ""; }; - 65F93CCA12EE09290047DB36 /* stm32f10x_pwr.lst */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = stm32f10x_pwr.lst; sourceTree = ""; }; - 65F93CCB12EE09290047DB36 /* stm32f10x_pwr.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = stm32f10x_pwr.o; sourceTree = ""; }; - 65F93CCC12EE09290047DB36 /* stm32f10x_rcc.lst */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = stm32f10x_rcc.lst; sourceTree = ""; }; - 65F93CCD12EE09290047DB36 /* stm32f10x_rcc.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = stm32f10x_rcc.o; sourceTree = ""; }; - 65F93CCE12EE09290047DB36 /* stm32f10x_rtc.lst */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = stm32f10x_rtc.lst; sourceTree = ""; }; - 65F93CCF12EE09290047DB36 /* stm32f10x_rtc.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = stm32f10x_rtc.o; sourceTree = ""; }; - 65F93CD012EE09290047DB36 /* stm32f10x_spi.lst */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = stm32f10x_spi.lst; sourceTree = ""; }; - 65F93CD112EE09290047DB36 /* stm32f10x_spi.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = stm32f10x_spi.o; sourceTree = ""; }; - 65F93CD212EE09290047DB36 /* stm32f10x_tim.lst */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = stm32f10x_tim.lst; sourceTree = ""; }; - 65F93CD312EE09290047DB36 /* stm32f10x_tim.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = stm32f10x_tim.o; sourceTree = ""; }; - 65F93CD412EE09290047DB36 /* stm32f10x_usart.lst */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = stm32f10x_usart.lst; sourceTree = ""; }; - 65F93CD512EE09290047DB36 /* stm32f10x_usart.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = stm32f10x_usart.o; sourceTree = ""; }; - 65F93CD612EE09290047DB36 /* stopwatch.lst */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = stopwatch.lst; sourceTree = ""; }; - 65F93CD712EE09290047DB36 /* stopwatch.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = stopwatch.o; sourceTree = ""; }; - 65F93CD812EE09290047DB36 /* system_stm32f10x.lst */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = system_stm32f10x.lst; sourceTree = ""; }; - 65F93CD912EE09290047DB36 /* system_stm32f10x.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = system_stm32f10x.o; sourceTree = ""; }; - 65F93CDA12EE09290047DB36 /* transparent_comms.lst */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = transparent_comms.lst; sourceTree = ""; }; - 65F93CDB12EE09290047DB36 /* transparent_comms.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = transparent_comms.o; sourceTree = ""; }; - 65F93CDC12EE09290047DB36 /* uavtalk_comms.lst */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = uavtalk_comms.lst; sourceTree = ""; }; - 65F93CDD12EE09290047DB36 /* uavtalk_comms.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = uavtalk_comms.o; sourceTree = ""; }; - 65F93CDE12EE09290047DB36 /* usb_core.lst */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = usb_core.lst; sourceTree = ""; }; - 65F93CDF12EE09290047DB36 /* usb_core.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = usb_core.o; sourceTree = ""; }; - 65F93CE012EE09290047DB36 /* usb_init.lst */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = usb_init.lst; sourceTree = ""; }; - 65F93CE112EE09290047DB36 /* usb_init.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = usb_init.o; sourceTree = ""; }; - 65F93CE212EE09290047DB36 /* usb_int.lst */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = usb_int.lst; sourceTree = ""; }; - 65F93CE312EE09290047DB36 /* usb_int.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = usb_int.o; sourceTree = ""; }; - 65F93CE412EE09290047DB36 /* usb_mem.lst */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = usb_mem.lst; sourceTree = ""; }; - 65F93CE512EE09290047DB36 /* usb_mem.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = usb_mem.o; sourceTree = ""; }; - 65F93CE612EE09290047DB36 /* usb_regs.lst */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = usb_regs.lst; sourceTree = ""; }; - 65F93CE712EE09290047DB36 /* usb_regs.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = usb_regs.o; sourceTree = ""; }; - 65F93CE812EE09290047DB36 /* usb_sil.lst */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = usb_sil.lst; sourceTree = ""; }; - 65F93CE912EE09290047DB36 /* usb_sil.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = usb_sil.o; sourceTree = ""; }; - 65F93CEA12EE09290047DB36 /* watchdog.lst */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = watchdog.lst; sourceTree = ""; }; - 65F93CEB12EE09290047DB36 /* watchdog.o */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.objfile"; path = watchdog.o; sourceTree = ""; }; - 65F93CEC12EE09290047DB36 /* crc.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = crc.c; sourceTree = ""; }; - 65F93CED12EE09290047DB36 /* gpio_in.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = gpio_in.c; sourceTree = ""; }; - 65F93CEF12EE09290047DB36 /* aes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = aes.h; sourceTree = ""; }; - 65F93CF012EE09290047DB36 /* crc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = crc.h; sourceTree = ""; }; - 65F93CF112EE09290047DB36 /* gpio_in.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gpio_in.h; sourceTree = ""; }; - 65F93CF212EE09290047DB36 /* main.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = main.h; sourceTree = ""; }; - 65F93CF312EE09290047DB36 /* packet_handler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = packet_handler.h; sourceTree = ""; }; - 65F93CF412EE09290047DB36 /* pios_config.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pios_config.h; sourceTree = ""; }; - 65F93CF512EE09290047DB36 /* pios_usb.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pios_usb.h; sourceTree = ""; }; - 65F93CF612EE09290047DB36 /* pios_usb_hid_desc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pios_usb_hid_desc.h; sourceTree = ""; }; - 65F93CF712EE09290047DB36 /* rfm22b.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = rfm22b.h; sourceTree = ""; }; - 65F93CF812EE09290047DB36 /* saved_settings.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = saved_settings.h; sourceTree = ""; }; - 65F93CF912EE09290047DB36 /* stopwatch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = stopwatch.h; sourceTree = ""; }; - 65F93CFA12EE09290047DB36 /* transparent_comms.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = transparent_comms.h; sourceTree = ""; }; - 65F93CFB12EE09290047DB36 /* uavtalk_comms.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = uavtalk_comms.h; sourceTree = ""; }; - 65F93CFC12EE09290047DB36 /* usb_conf.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = usb_conf.h; sourceTree = ""; }; - 65F93CFD12EE09290047DB36 /* watchdog.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = watchdog.h; sourceTree = ""; }; - 65F93CFE12EE09290047DB36 /* main.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = main.c; sourceTree = ""; }; - 65F93CFF12EE09290047DB36 /* Makefile */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; - 65F93D0012EE09290047DB36 /* packet_handler.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = packet_handler.c; sourceTree = ""; }; - 65F93D0112EE09290047DB36 /* pios_board.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pios_board.c; sourceTree = ""; }; - 65F93D0212EE09290047DB36 /* pios_usb_hid_desc.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pios_usb_hid_desc.c; sourceTree = ""; }; - 65F93D0312EE09290047DB36 /* rfm22b.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = rfm22b.c; sourceTree = ""; }; - 65F93D0412EE09290047DB36 /* saved_settings.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = saved_settings.c; sourceTree = ""; }; - 65F93D0512EE09290047DB36 /* stopwatch.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = stopwatch.c; sourceTree = ""; }; - 65F93D0612EE09290047DB36 /* transparent_comms.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = transparent_comms.c; sourceTree = ""; }; - 65F93D0712EE09290047DB36 /* uavtalk_comms.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = uavtalk_comms.c; sourceTree = ""; }; - 65F93D0812EE09290047DB36 /* watchdog.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = watchdog.c; sourceTree = ""; }; - 65FAA03F133B669400F6F5CD /* GTOP_BIN.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = GTOP_BIN.c; sourceTree = ""; }; - 65FAB8CF147FFD76000FF8B2 /* receiveractivity.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = receiveractivity.xml; sourceTree = ""; }; - 65FBE14412E7C98100176B5A /* pios_servo_priv.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pios_servo_priv.h; sourceTree = ""; }; - 65FC66AA123F30F100B04F74 /* ahrs_timer.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = ahrs_timer.c; path = ../../AHRS/ahrs_timer.c; sourceTree = SOURCE_ROOT; }; - 65FC66AB123F312A00B04F74 /* ahrs_timer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ahrs_timer.h; sourceTree = ""; }; - 65FF4BB513791C3300146BE4 /* ahrs_slave_test.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ahrs_slave_test.c; sourceTree = ""; }; - 65FF4BB613791C3300146BE4 /* ahrs_spi_program.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ahrs_spi_program.c; sourceTree = ""; }; - 65FF4BB713791C3300146BE4 /* ahrs_spi_program_master.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ahrs_spi_program_master.c; sourceTree = ""; }; - 65FF4BB813791C3300146BE4 /* ahrs_spi_program_slave.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ahrs_spi_program_slave.c; sourceTree = ""; }; - 65FF4BB913791C3300146BE4 /* bl_fsm.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bl_fsm.c; sourceTree = ""; }; - 65FF4BBB13791C3300146BE4 /* ahrs_bl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ahrs_bl.h; sourceTree = ""; }; - 65FF4BBC13791C3300146BE4 /* ahrs_spi_program.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ahrs_spi_program.h; sourceTree = ""; }; - 65FF4BBD13791C3300146BE4 /* ahrs_spi_program_master.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ahrs_spi_program_master.h; sourceTree = ""; }; - 65FF4BBE13791C3300146BE4 /* ahrs_spi_program_slave.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ahrs_spi_program_slave.h; sourceTree = ""; }; - 65FF4BBF13791C3300146BE4 /* bl_fsm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = bl_fsm.h; sourceTree = ""; }; - 65FF4BC013791C3300146BE4 /* pios_config.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pios_config.h; sourceTree = ""; }; - 65FF4BC113791C3300146BE4 /* main.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = main.c; sourceTree = ""; }; - 65FF4BC213791C3300146BE4 /* Makefile */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; - 65FF4BC313791C3300146BE4 /* pios_board.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pios_board.c; sourceTree = ""; }; - 65FF4BC613791C3300146BE4 /* pios_config.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pios_config.h; sourceTree = ""; }; - 65FF4BC713791C3300146BE4 /* main.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = main.c; sourceTree = ""; }; - 65FF4BC813791C3300146BE4 /* Makefile */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; - 65FF4BC913791C3300146BE4 /* pios_board.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pios_board.c; sourceTree = ""; }; - 65FF4BCA13791C3300146BE4 /* test.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; path = test.bin; sourceTree = ""; }; - 65FF4BCD13791C3300146BE4 /* common.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = common.h; sourceTree = ""; }; - 65FF4BCE13791C3300146BE4 /* op_dfu.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = op_dfu.h; sourceTree = ""; }; - 65FF4BCF13791C3300146BE4 /* pios_config.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pios_config.h; sourceTree = ""; }; - 65FF4BD013791C3300146BE4 /* pios_usb.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pios_usb.h; sourceTree = ""; }; - 65FF4BD113791C3300146BE4 /* main.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = main.c; sourceTree = ""; }; - 65FF4BD213791C3300146BE4 /* Makefile */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; - 65FF4BD313791C3300146BE4 /* op_dfu.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = op_dfu.c; sourceTree = ""; }; - 65FF4BD413791C3300146BE4 /* pios_board.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pios_board.c; sourceTree = ""; }; - 65FF4BD713791C3300146BE4 /* common.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = common.h; sourceTree = ""; }; - 65FF4BD813791C3300146BE4 /* op_dfu.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = op_dfu.h; sourceTree = ""; }; - 65FF4BD913791C3300146BE4 /* pios_config.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pios_config.h; sourceTree = ""; }; - 65FF4BDA13791C3300146BE4 /* pios_usb.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pios_usb.h; sourceTree = ""; }; - 65FF4BDB13791C3300146BE4 /* ssp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ssp.h; sourceTree = ""; }; - 65FF4BDC13791C3300146BE4 /* main.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = main.c; sourceTree = ""; }; - 65FF4BDD13791C3300146BE4 /* Makefile */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; - 65FF4BDE13791C3300146BE4 /* op_dfu.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = op_dfu.c; sourceTree = ""; }; - 65FF4BDF13791C3300146BE4 /* pios_board.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pios_board.c; sourceTree = ""; }; - 65FF4BE013791C3300146BE4 /* ssp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ssp.c; sourceTree = ""; }; - 65FF4BE113791C3300146BE4 /* ssp_timer.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ssp_timer.c; sourceTree = ""; }; - 65FF4BE413791C3300146BE4 /* common.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = common.h; sourceTree = ""; }; - 65FF4BE513791C3300146BE4 /* op_dfu.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = op_dfu.h; sourceTree = ""; }; - 65FF4BE613791C3300146BE4 /* pios_config.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pios_config.h; sourceTree = ""; }; - 65FF4BE713791C3300146BE4 /* pios_usb.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pios_usb.h; sourceTree = ""; }; - 65FF4BE813791C3300146BE4 /* main.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = main.c; sourceTree = ""; }; - 65FF4BE913791C3300146BE4 /* Makefile */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; - 65FF4BEA13791C3300146BE4 /* op_dfu.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = op_dfu.c; sourceTree = ""; }; - 65FF4BEB13791C3300146BE4 /* pios_board.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pios_board.c; sourceTree = ""; }; - 65FF4D5E137EDEC100146BE4 /* pios_flashfs_objlist.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pios_flashfs_objlist.c; sourceTree = ""; }; - 65FF4D61137EFA4F00146BE4 /* pios_flashfs_objlist.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pios_flashfs_objlist.h; sourceTree = ""; }; + 65904F1814632C1700FD9482 /* firmware-defs.mk */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "firmware-defs.mk"; sourceTree = ""; }; + 65904F2214632C1700FD9482 /* board-info.mk */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "board-info.mk"; sourceTree = ""; }; + 65904F2314632C1700FD9482 /* board-info.mk */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "board-info.mk"; sourceTree = ""; }; + 65904F2414632C1700FD9482 /* board-info.mk */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "board-info.mk"; sourceTree = ""; }; + 65904F2514632C1700FD9482 /* board-info.mk */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "board-info.mk"; sourceTree = ""; }; + 65904F2614632C1700FD9482 /* board-info.mk */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "board-info.mk"; sourceTree = ""; }; + 65904F2714632C1700FD9482 /* board-info.mk */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "board-info.mk"; sourceTree = ""; }; + 65904F2814632C1700FD9482 /* version-info.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = "version-info.py"; sourceTree = ""; }; + 65904F2914632C1700FD9482 /* firmwareinfotemplate.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = firmwareinfotemplate.c; sourceTree = ""; }; + 65904F2A14632C1700FD9482 /* gcsversioninfotemplate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gcsversioninfotemplate.h; sourceTree = ""; }; + 65904F2D14632C1700FD9482 /* README.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = README.txt; sourceTree = ""; }; + 65904F2E14632C1700FD9482 /* shell_script.reg */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = shell_script.reg; sourceTree = ""; }; + 65904F2F14632C1700FD9482 /* install */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = install; sourceTree = ""; }; + 65904F3014632C1700FD9482 /* make */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = make; sourceTree = ""; }; + 65904F3114632C1700FD9482 /* make.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = make.sh; sourceTree = ""; }; + 65904F3214632C1700FD9482 /* sh.cmd */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = sh.cmd; sourceTree = ""; }; + 65904F34146362F300FD9482 /* board-info.mk */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "board-info.mk"; sourceTree = ""; }; + 65E466BC14E244020075459C /* uavobjectdefinition */ = {isa = PBXFileReference; lastKnownFileType = folder; path = uavobjectdefinition; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXGroup section */ 08FB7794FE84155DC02AAC07 /* OpenPilotOSX */ = { isa = PBXGroup; children = ( + 4354B66314FED9FE004BA3B4 /* flight */, + 65904F1614632C1700FD9482 /* make */, 65C35E4E12EFB2F3004811C2 /* shared */, 65173C9F12EBFD1700D6A7CB /* Makefile */, - 657CEEB5121DBC49007A1FBE /* flight */, - 65B35D7D121C261E003EAD18 /* ground */, ); name = OpenPilotOSX; sourceTree = ""; }; - 1AB674ADFE9D54B511CA2CBB /* Products */ = { + 65904F1614632C1700FD9482 /* make */ = { isa = PBXGroup; children = ( + 65904F1714632C1700FD9482 /* boards */, + 65904F1814632C1700FD9482 /* firmware-defs.mk */, + 65904F1914632C1700FD9482 /* scripts */, + 65904F1A14632C1700FD9482 /* templates */, + 65904F1B14632C1700FD9482 /* winx86 */, ); - name = Products; + name = make; + path = OpenPilotOSX.xcodeproj/../../../../make; sourceTree = ""; }; - 650D8E1F12DFE16400D05CC9 /* Modules */ = { + 65904F1714632C1700FD9482 /* boards */ = { isa = PBXGroup; children = ( - 650D8E2012DFE16400D05CC9 /* Actuator */, - 650D8E2412DFE16400D05CC9 /* AHRSComms */, - 650D8E2812DFE16400D05CC9 /* Altitude */, - 65C35F6512F0DC2D004811C2 /* Attitude */, - 650D8E2E12DFE16400D05CC9 /* Battery */, - 65C9903B13A871B90082BD60 /* CameraStab */, - 650D8E3212DFE16400D05CC9 /* Example */, - 650D8E3B12DFE16400D05CC9 /* FirmwareIAP */, - 650D8E3F12DFE16400D05CC9 /* FlightPlan */, - 650D8E4712DFE16400D05CC9 /* GPS */, - 650D8E4D12DFE16400D05CC9 /* Guidance */, - 650D8E5112DFE16400D05CC9 /* ManualControl */, - 650D8E5512DFE16400D05CC9 /* MK */, - 650D8E5A12DFE16400D05CC9 /* Osd */, - 650D8E5D12DFE16400D05CC9 /* Stabilization */, - 650D8E6112DFE16400D05CC9 /* System */, - 650D8E6512DFE16400D05CC9 /* Telemetry */, + 65904F33146362F300FD9482 /* revolution */, + 65904F1C14632C1700FD9482 /* ahrs */, + 65904F1D14632C1700FD9482 /* coptercontrol */, + 65904F1E14632C1700FD9482 /* esc */, + 65904F1F14632C1700FD9482 /* ins */, + 65904F2014632C1700FD9482 /* openpilot */, + 65904F2114632C1700FD9482 /* pipxtreme */, ); - name = Modules; - path = ../../Modules; - sourceTree = SOURCE_ROOT; - }; - 650D8E2012DFE16400D05CC9 /* Actuator */ = { - isa = PBXGroup; - children = ( - 650D8E2112DFE16400D05CC9 /* actuator.c */, - 650D8E2212DFE16400D05CC9 /* inc */, - ); - path = Actuator; + path = boards; sourceTree = ""; }; - 650D8E2212DFE16400D05CC9 /* inc */ = { + 65904F1914632C1700FD9482 /* scripts */ = { isa = PBXGroup; children = ( - 650D8E2312DFE16400D05CC9 /* actuator.h */, + 65904F2814632C1700FD9482 /* version-info.py */, ); - path = inc; + path = scripts; sourceTree = ""; }; - 650D8E2412DFE16400D05CC9 /* AHRSComms */ = { + 65904F1A14632C1700FD9482 /* templates */ = { isa = PBXGroup; children = ( - 650D8E2512DFE16400D05CC9 /* ahrs_comms.c */, - 650D8E2612DFE16400D05CC9 /* inc */, + 65904F2914632C1700FD9482 /* firmwareinfotemplate.c */, + 65904F2A14632C1700FD9482 /* gcsversioninfotemplate.h */, ); - path = AHRSComms; + path = templates; sourceTree = ""; }; - 650D8E2612DFE16400D05CC9 /* inc */ = { + 65904F1B14632C1700FD9482 /* winx86 */ = { isa = PBXGroup; children = ( - 650D8E2712DFE16400D05CC9 /* ahrs_comms.h */, + 65904F2B14632C1700FD9482 /* bin */, + 65904F2C14632C1700FD9482 /* cmd */, + 65904F2D14632C1700FD9482 /* README.txt */, + 65904F2E14632C1700FD9482 /* shell_script.reg */, ); - path = inc; + path = winx86; sourceTree = ""; }; - 650D8E2812DFE16400D05CC9 /* Altitude */ = { + 65904F1C14632C1700FD9482 /* ahrs */ = { isa = PBXGroup; children = ( - 650D8E2912DFE16400D05CC9 /* altitude.c */, - 650D8E2A12DFE16400D05CC9 /* inc */, + 65904F2214632C1700FD9482 /* board-info.mk */, ); - path = Altitude; + path = ahrs; sourceTree = ""; }; - 650D8E2A12DFE16400D05CC9 /* inc */ = { + 65904F1D14632C1700FD9482 /* coptercontrol */ = { isa = PBXGroup; children = ( - 650D8E2B12DFE16400D05CC9 /* altitude.h */, + 65904F2314632C1700FD9482 /* board-info.mk */, ); - path = inc; + path = coptercontrol; sourceTree = ""; }; - 650D8E2E12DFE16400D05CC9 /* Battery */ = { + 65904F1E14632C1700FD9482 /* esc */ = { isa = PBXGroup; children = ( - 650D8E2F12DFE16400D05CC9 /* battery.c */, - 650D8E3012DFE16400D05CC9 /* inc */, + 65904F2414632C1700FD9482 /* board-info.mk */, ); - path = Battery; + path = esc; sourceTree = ""; }; - 650D8E3012DFE16400D05CC9 /* inc */ = { + 65904F1F14632C1700FD9482 /* ins */ = { isa = PBXGroup; children = ( - 650D8E3112DFE16400D05CC9 /* battery.h */, + 65904F2514632C1700FD9482 /* board-info.mk */, ); - path = inc; + path = ins; sourceTree = ""; }; - 650D8E3212DFE16400D05CC9 /* Example */ = { + 65904F2014632C1700FD9482 /* openpilot */ = { isa = PBXGroup; children = ( - 650D8E3312DFE16400D05CC9 /* example.c */, - 650D8E3412DFE16400D05CC9 /* examplemodevent.c */, - 650D8E3512DFE16400D05CC9 /* examplemodperiodic.c */, - 650D8E3612DFE16400D05CC9 /* examplemodthread.c */, - 650D8E3712DFE16400D05CC9 /* inc */, + 65904F2614632C1700FD9482 /* board-info.mk */, ); - path = Example; + path = openpilot; sourceTree = ""; }; - 650D8E3712DFE16400D05CC9 /* inc */ = { + 65904F2114632C1700FD9482 /* pipxtreme */ = { isa = PBXGroup; children = ( - 650D8E3812DFE16400D05CC9 /* examplemodevent.h */, - 650D8E3912DFE16400D05CC9 /* examplemodperiodic.h */, - 650D8E3A12DFE16400D05CC9 /* examplemodthread.h */, + 65904F2714632C1700FD9482 /* board-info.mk */, ); - path = inc; + path = pipxtreme; sourceTree = ""; }; - 650D8E3B12DFE16400D05CC9 /* FirmwareIAP */ = { + 65904F2B14632C1700FD9482 /* bin */ = { isa = PBXGroup; children = ( - 650D8E3C12DFE16400D05CC9 /* firmwareiap.c */, - 650D8E3D12DFE16400D05CC9 /* inc */, - ); - path = FirmwareIAP; - sourceTree = ""; - }; - 650D8E3D12DFE16400D05CC9 /* inc */ = { - isa = PBXGroup; - children = ( - 650D8E3E12DFE16400D05CC9 /* firmwareiap.h */, - ); - path = inc; - sourceTree = ""; - }; - 650D8E3F12DFE16400D05CC9 /* FlightPlan */ = { - isa = PBXGroup; - children = ( - 650D8E4012DFE16400D05CC9 /* flightplan.c */, - 650D8E4112DFE16400D05CC9 /* flightplans */, - 650D8E4312DFE16400D05CC9 /* inc */, - 650D8E4512DFE16400D05CC9 /* lib */, - ); - path = FlightPlan; - sourceTree = ""; - }; - 650D8E4112DFE16400D05CC9 /* flightplans */ = { - isa = PBXGroup; - children = ( - 650D8E4212DFE16400D05CC9 /* test.py */, - ); - path = flightplans; - sourceTree = ""; - }; - 650D8E4312DFE16400D05CC9 /* inc */ = { - isa = PBXGroup; - children = ( - 650D8E4412DFE16400D05CC9 /* flightplan.h */, - ); - path = inc; - sourceTree = ""; - }; - 650D8E4512DFE16400D05CC9 /* lib */ = { - isa = PBXGroup; - children = ( - 650D8E4612DFE16400D05CC9 /* uavobjects.py */, - ); - path = lib; - sourceTree = ""; - }; - 650D8E4712DFE16400D05CC9 /* GPS */ = { - isa = PBXGroup; - children = ( - 65FAA03F133B669400F6F5CD /* GTOP_BIN.c */, - 650D8E4812DFE16400D05CC9 /* GPS.c */, - 650D8E4912DFE16400D05CC9 /* inc */, - 650D8E4C12DFE16400D05CC9 /* NMEA.c */, - ); - path = GPS; - sourceTree = ""; - }; - 650D8E4912DFE16400D05CC9 /* inc */ = { - isa = PBXGroup; - children = ( - 650D8E4A12DFE16400D05CC9 /* GPS.h */, - 650D8E4B12DFE16400D05CC9 /* NMEA.h */, - ); - path = inc; - sourceTree = ""; - }; - 650D8E4D12DFE16400D05CC9 /* Guidance */ = { - isa = PBXGroup; - children = ( - 650D8E4E12DFE16400D05CC9 /* guidance.c */, - 650D8E4F12DFE16400D05CC9 /* inc */, - ); - path = Guidance; - sourceTree = ""; - }; - 650D8E4F12DFE16400D05CC9 /* inc */ = { - isa = PBXGroup; - children = ( - 650D8E5012DFE16400D05CC9 /* guidance.h */, - ); - path = inc; - sourceTree = ""; - }; - 650D8E5112DFE16400D05CC9 /* ManualControl */ = { - isa = PBXGroup; - children = ( - 650D8E5212DFE16400D05CC9 /* inc */, - 650D8E5412DFE16400D05CC9 /* manualcontrol.c */, - ); - path = ManualControl; - sourceTree = ""; - }; - 650D8E5212DFE16400D05CC9 /* inc */ = { - isa = PBXGroup; - children = ( - 650D8E5312DFE16400D05CC9 /* manualcontrol.h */, - ); - path = inc; - sourceTree = ""; - }; - 650D8E5512DFE16400D05CC9 /* MK */ = { - isa = PBXGroup; - children = ( - 650D8E5612DFE16400D05CC9 /* MKSerial */, - ); - path = MK; - sourceTree = ""; - }; - 650D8E5612DFE16400D05CC9 /* MKSerial */ = { - isa = PBXGroup; - children = ( - 650D8E5712DFE16400D05CC9 /* inc */, - 650D8E5912DFE16400D05CC9 /* MKSerial.c */, - ); - path = MKSerial; - sourceTree = ""; - }; - 650D8E5712DFE16400D05CC9 /* inc */ = { - isa = PBXGroup; - children = ( - 650D8E5812DFE16400D05CC9 /* MkSerial.h */, - ); - path = inc; - sourceTree = ""; - }; - 650D8E5A12DFE16400D05CC9 /* Osd */ = { - isa = PBXGroup; - children = ( - 650D8E5B12DFE16400D05CC9 /* OsdEtStd */, - ); - path = Osd; - sourceTree = ""; - }; - 650D8E5B12DFE16400D05CC9 /* OsdEtStd */ = { - isa = PBXGroup; - children = ( - 650D8E5C12DFE16400D05CC9 /* OsdEtStd.c */, - ); - path = OsdEtStd; - sourceTree = ""; - }; - 650D8E5D12DFE16400D05CC9 /* Stabilization */ = { - isa = PBXGroup; - children = ( - 650D8E5E12DFE16400D05CC9 /* inc */, - 650D8E6012DFE16400D05CC9 /* stabilization.c */, - ); - path = Stabilization; - sourceTree = ""; - }; - 650D8E5E12DFE16400D05CC9 /* inc */ = { - isa = PBXGroup; - children = ( - 650D8E5F12DFE16400D05CC9 /* stabilization.h */, - ); - path = inc; - sourceTree = ""; - }; - 650D8E6112DFE16400D05CC9 /* System */ = { - isa = PBXGroup; - children = ( - 650D8E6212DFE16400D05CC9 /* inc */, - 650D8E6412DFE16400D05CC9 /* systemmod.c */, - ); - path = System; - sourceTree = ""; - }; - 650D8E6212DFE16400D05CC9 /* inc */ = { - isa = PBXGroup; - children = ( - 650D8E6312DFE16400D05CC9 /* systemmod.h */, - ); - path = inc; - sourceTree = ""; - }; - 650D8E6512DFE16400D05CC9 /* Telemetry */ = { - isa = PBXGroup; - children = ( - 650D8E6612DFE16400D05CC9 /* inc */, - 650D8E6812DFE16400D05CC9 /* telemetry.c */, - ); - path = Telemetry; - sourceTree = ""; - }; - 650D8E6612DFE16400D05CC9 /* inc */ = { - isa = PBXGroup; - children = ( - 650D8E6712DFE16400D05CC9 /* telemetry.h */, - ); - path = inc; - sourceTree = ""; - }; - 650D8E6A12DFE17500D05CC9 /* UAVObjects */ = { - isa = PBXGroup; - children = ( - 65C35E9E12F0A834004811C2 /* uavobjecttemplate.c */, - 65C35E9F12F0A834004811C2 /* uavobjectsinittemplate.c */, - 65C35EA112F0A834004811C2 /* uavobjectmanager.c */, - 65C35EA212F0A834004811C2 /* inc */, - 65C35EA812F0A834004811C2 /* eventdispatcher.c */, - ); - name = UAVObjects; - path = ../../UAVObjects; - sourceTree = SOURCE_ROOT; - }; - 650D8ECF12DFE17500D05CC9 /* UAVTalk */ = { - isa = PBXGroup; - children = ( - 650D8ED012DFE17500D05CC9 /* inc */, - 650D8ED212DFE17500D05CC9 /* uavtalk.c */, - ); - name = UAVTalk; - path = ../../UAVTalk; - sourceTree = SOURCE_ROOT; - }; - 650D8ED012DFE17500D05CC9 /* inc */ = { - isa = PBXGroup; - children = ( - 650D8ED112DFE17500D05CC9 /* uavtalk.h */, - ); - path = inc; - sourceTree = ""; - }; - 65632DF41251650300469B77 /* Boards */ = { - isa = PBXGroup; - children = ( - 65632DF51251650300469B77 /* pios_board.h */, - 65632DF71251650300469B77 /* STM3210E_OP.h */, - 65632DF61251650300469B77 /* STM32103CB_AHRS.h */, - 65E6E06112E031E300058553 /* STM32103CB_CC_Rev1.h */, - 65E6E06212E031E300058553 /* STM32103CB_PIPXTREME_Rev1.h */, - ); - path = Boards; - sourceTree = ""; - }; - 657CEEB5121DBC49007A1FBE /* flight */ = { - isa = PBXGroup; - children = ( - 65FF4BB313791C3300146BE4 /* Bootloaders */, - 65F93B9012EE09280047DB36 /* PipXtreme */, - 65B7E6AC120DF1CD000C1123 /* AHRS */, - 65E6DF7012E02E8E00058553 /* CopterControl */, - 65E8EF1E11EEA61E00BBF654 /* OpenPilot */, - 650D8E1F12DFE16400D05CC9 /* Modules */, - 657CEEB6121DBC63007A1FBE /* Libraries */, - 65E8F02F11EFF25C00BBF654 /* PiOS */, - 65E6DF9012E0313E00058553 /* PipXtreme */, - 650D8E6A12DFE17500D05CC9 /* UAVObjects */, - 650D8ECF12DFE17500D05CC9 /* UAVTalk */, - C6A0FF2B0290797F04C91782 /* Documentation */, - 1AB674ADFE9D54B511CA2CBB /* Products */, - ); - name = flight; - sourceTree = ""; - }; - 657CEEB6121DBC63007A1FBE /* Libraries */ = { - isa = PBXGroup; - children = ( - 6549E0D21279B3C800C5476F /* fifo_buffer.c */, - 651913371256C5240039C0A3 /* ahrs_comm_objects.c */, - 651913381256C5240039C0A3 /* ahrs_spi_comm.c */, - 657CEEB7121DBC63007A1FBE /* CoordinateConversions.c */, - 657CEEB8121DBC63007A1FBE /* inc */, - 657CEEBB121DBC63007A1FBE /* WorldMagModel.c */, - ); - name = Libraries; - path = ../../Libraries; - sourceTree = SOURCE_ROOT; - }; - 657CEEB8121DBC63007A1FBE /* inc */ = { - isa = PBXGroup; - children = ( - 6549E0D31279B3CF00C5476F /* fifo_buffer.h */, - 6519133A1256C52B0039C0A3 /* ahrs_comm_objects.h */, - 6519133B1256C52B0039C0A3 /* ahrs_spi_comm.h */, - 657CF024121F49CD007A1FBE /* WMMInternal.h */, - 657CEEB9121DBC63007A1FBE /* CoordinateConversions.h */, - 657CEEBA121DBC63007A1FBE /* WorldMagModel.h */, - ); - path = inc; - sourceTree = ""; - }; - 65B35D7D121C261E003EAD18 /* ground */ = { - isa = PBXGroup; - children = ( - 65B35D7E121C261E003EAD18 /* bin */, - 65B35D81121C261E003EAD18 /* openpilotgcs.pri */, - 65B35D82121C261E003EAD18 /* openpilotgcs.pro */, - 65B35D83121C261E003EAD18 /* openpilotgcs.pro.user */, - 65B35D84121C261E003EAD18 /* share */, - 65B35E1E121C261E003EAD18 /* src */, - ); - name = ground; - path = ../../../ground; - sourceTree = SOURCE_ROOT; - }; - 65B35D7E121C261E003EAD18 /* bin */ = { - isa = PBXGroup; - children = ( - 65B35D7F121C261E003EAD18 /* bin.pro */, - 65B35D80121C261E003EAD18 /* openpilotgcs */, + 65904F2F14632C1700FD9482 /* install */, + 65904F3014632C1700FD9482 /* make */, ); path = bin; sourceTree = ""; }; - 65B35D84121C261E003EAD18 /* share */ = { + 65904F2C14632C1700FD9482 /* cmd */ = { isa = PBXGroup; children = ( - 65B35D85121C261E003EAD18 /* openpilotgcs */, - 65B35E1D121C261E003EAD18 /* share.pro */, + 65904F3114632C1700FD9482 /* make.sh */, + 65904F3214632C1700FD9482 /* sh.cmd */, ); - path = share; + path = cmd; sourceTree = ""; }; - 65B35D85121C261E003EAD18 /* openpilotgcs */ = { + 65904F33146362F300FD9482 /* revolution */ = { isa = PBXGroup; children = ( - 65B35D86121C261E003EAD18 /* diagrams */, - 65B35D89121C261E003EAD18 /* dials */, - 65B35D9C121C261E003EAD18 /* mapicons */, - 65B35D9F121C261E003EAD18 /* models */, - 65B35DA7121C261E003EAD18 /* pfd */, - 65B35DAA121C261E003EAD18 /* sounds */, - 65B35E14121C261E003EAD18 /* translations */, + 65904F34146362F300FD9482 /* board-info.mk */, ); - path = openpilotgcs; + path = revolution; sourceTree = ""; }; - 65B35D86121C261E003EAD18 /* diagrams */ = { - isa = PBXGroup; - children = ( - 65B35D87121C261E003EAD18 /* default */, - ); - path = diagrams; - sourceTree = ""; - }; - 65B35D87121C261E003EAD18 /* default */ = { - isa = PBXGroup; - children = ( - 65B35D88121C261E003EAD18 /* system-health.svg */, - ); - path = default; - sourceTree = ""; - }; - 65B35D89121C261E003EAD18 /* dials */ = { - isa = PBXGroup; - children = ( - 65B35D8A121C261E003EAD18 /* default */, - 65B35D98121C261E003EAD18 /* deluxe */, - ); - path = dials; - sourceTree = ""; - }; - 65B35D8A121C261E003EAD18 /* default */ = { - isa = PBXGroup; - children = ( - 65B35D8B121C261E003EAD18 /* altimeter.svg */, - 65B35D8C121C261E003EAD18 /* attitude.svg */, - 65B35D8D121C261E003EAD18 /* compass.svg */, - 65B35D8E121C261E003EAD18 /* flightmode-status.svg */, - 65B35D8F121C261E003EAD18 /* gps-signal.svg */, - 65B35D90121C261E003EAD18 /* gps-status.svg */, - 65B35D91121C261E003EAD18 /* lineardial-horizontal.svg */, - 65B35D92121C261E003EAD18 /* lineardial-vertical.svg */, - 65B35D93121C261E003EAD18 /* Readme.txt */, - 65B35D94121C261E003EAD18 /* speed.svg */, - 65B35D95121C261E003EAD18 /* textonly.svg */, - 65B35D96121C261E003EAD18 /* thermometer.svg */, - 65B35D97121C261E003EAD18 /* vsi.svg */, - ); - path = default; - sourceTree = ""; - }; - 65B35D98121C261E003EAD18 /* deluxe */ = { - isa = PBXGroup; - children = ( - 65B35D99121C261E003EAD18 /* altimeter.svg */, - 65B35D9A121C261E003EAD18 /* speed.svg */, - 65B35D9B121C261E003EAD18 /* vsi.svg */, - ); - path = deluxe; - sourceTree = ""; - }; - 65B35D9C121C261E003EAD18 /* mapicons */ = { - isa = PBXGroup; - children = ( - 65B35D9D121C261E003EAD18 /* easystar.png */, - 65B35D9E121C261E003EAD18 /* quad.png */, - ); - path = mapicons; - sourceTree = ""; - }; - 65B35D9F121C261E003EAD18 /* models */ = { - isa = PBXGroup; - children = ( - 65B35DA0121C261E003EAD18 /* Easystar */, - ); - path = models; - sourceTree = ""; - }; - 65B35DA0121C261E003EAD18 /* Easystar */ = { - isa = PBXGroup; - children = ( - 65B35DA1121C261E003EAD18 /* EasyS.jpg */, - 65B35DA2121C261E003EAD18 /* EasyStar.3ds */, - 65B35DA3121C261E003EAD18 /* V1White.jpg */, - 65B35DA4121C261E003EAD18 /* V2White.jpg */, - 65B35DA5121C261E003EAD18 /* White.jpg */, - 65B35DA6121C261E003EAD18 /* wing.jpg */, - ); - path = Easystar; - sourceTree = ""; - }; - 65B35DA7121C261E003EAD18 /* pfd */ = { - isa = PBXGroup; - children = ( - 65B35DA8121C261E003EAD18 /* default */, - ); - path = pfd; - sourceTree = ""; - }; - 65B35DA8121C261E003EAD18 /* default */ = { - isa = PBXGroup; - children = ( - 65B35DA9121C261E003EAD18 /* pfd.svg */, - ); - path = default; - sourceTree = ""; - }; - 65B35DAA121C261E003EAD18 /* sounds */ = { - isa = PBXGroup; - children = ( - 65B35DAB121C261E003EAD18 /* Complete sound set.txt */, - 65B35DAC121C261E003EAD18 /* default */, - 65B35E13121C261E003EAD18 /* License.txt */, - ); - path = sounds; - sourceTree = ""; - }; - 65B35DAC121C261E003EAD18 /* default */ = { - isa = PBXGroup; - children = ( - 65B35DAD121C261E003EAD18 /* 0.wav */, - 65B35DAE121C261E003EAD18 /* 1.wav */, - 65B35DAF121C261E003EAD18 /* 10.wav */, - 65B35DB0121C261E003EAD18 /* 100.wav */, - 65B35DB1121C261E003EAD18 /* 1000.wav */, - 65B35DB2121C261E003EAD18 /* 11.wav */, - 65B35DB3121C261E003EAD18 /* 12.wav */, - 65B35DB4121C261E003EAD18 /* 13.wav */, - 65B35DB5121C261E003EAD18 /* 14.wav */, - 65B35DB6121C261E003EAD18 /* 15.wav */, - 65B35DB7121C261E003EAD18 /* 16.wav */, - 65B35DB8121C261E003EAD18 /* 17.wav */, - 65B35DB9121C261E003EAD18 /* 18.wav */, - 65B35DBA121C261E003EAD18 /* 19.wav */, - 65B35DBB121C261E003EAD18 /* 2.wav */, - 65B35DBC121C261E003EAD18 /* 20.wav */, - 65B35DBD121C261E003EAD18 /* 3.wav */, - 65B35DBE121C261E003EAD18 /* 30.wav */, - 65B35DBF121C261E003EAD18 /* 4.wav */, - 65B35DC0121C261E003EAD18 /* 40.wav */, - 65B35DC1121C261E003EAD18 /* 5.wav */, - 65B35DC2121C261E003EAD18 /* 50.wav */, - 65B35DC3121C261E003EAD18 /* 6.wav */, - 65B35DC4121C261E003EAD18 /* 60.wav */, - 65B35DC5121C261E003EAD18 /* 7.wav */, - 65B35DC6121C261E003EAD18 /* 70.wav */, - 65B35DC7121C261E003EAD18 /* 8.wav */, - 65B35DC8121C261E003EAD18 /* 80.wav */, - 65B35DC9121C261E003EAD18 /* 9.wav */, - 65B35DCA121C261E003EAD18 /* 90.wav */, - 65B35DCB121C261E003EAD18 /* aborted.wav */, - 65B35DCC121C261E003EAD18 /* active.wav */, - 65B35DCD121C261E003EAD18 /* alarmsound.wav */, - 65B35DCE121C261E003EAD18 /* alert.wav */, - 65B35DCF121C261E003EAD18 /* altitude.wav */, - 65B35DD0121C261E003EAD18 /* amps.wav */, - 65B35DD1121C261E003EAD18 /* aquired.wav */, - 65B35DD2121C261E003EAD18 /* auto flight.wav */, - 65B35DD3121C261E003EAD18 /* battery.wav */, - 65B35DD4121C261E003EAD18 /* beepsound.wav */, - 65B35DD5121C261E003EAD18 /* camera.wav */, - 65B35DD6121C261E003EAD18 /* cancelled.wav */, - 65B35DD7121C261E003EAD18 /* changed.wav */, - 65B35DD8121C261E003EAD18 /* circle position.wav */, - 65B35DD9121C261E003EAD18 /* cleared.wav */, - 65B35DDA121C261E003EAD18 /* complete.wav */, - 65B35DDB121C261E003EAD18 /* connected.wav */, - 65B35DDC121C261E003EAD18 /* connection.wav */, - 65B35DDD121C261E003EAD18 /* control.wav */, - 65B35DDE121C261E003EAD18 /* disabled.wav */, - 65B35DDF121C261E003EAD18 /* disconnected.wav */, - 65B35DE0121C261E003EAD18 /* feet.wav */, - 65B35DE1121C261E003EAD18 /* figure eight.wav */, - 65B35DE2121C261E003EAD18 /* flight.wav */, - 65B35DE3121C261E003EAD18 /* geofence.wav */, - 65B35DE4121C261E003EAD18 /* gps.wav */, - 65B35DE5121C261E003EAD18 /* ground station.wav */, - 65B35DE6121C261E003EAD18 /* heading.wav */, - 65B35DE7121C261E003EAD18 /* height.wav */, - 65B35DE8121C261E003EAD18 /* high.wav */, - 65B35DE9121C261E003EAD18 /* hippodrome.wav */, - 65B35DEA121C261E003EAD18 /* hold position.wav */, - 65B35DEB121C261E003EAD18 /* home location.wav */, - 65B35DEC121C261E003EAD18 /* initialised.wav */, - 65B35DED121C261E003EAD18 /* initiated.wav */, - 65B35DEE121C261E003EAD18 /* KPH.wav */, - 65B35DEF121C261E003EAD18 /* landing.wav */, - 65B35DF0121C261E003EAD18 /* launch.wav */, - 65B35DF1121C261E003EAD18 /* left.wav */, - 65B35DF2121C261E003EAD18 /* logging.wav */, - 65B35DF3121C261E003EAD18 /* lost.wav */, - 65B35DF4121C261E003EAD18 /* low altitude.wav */, - 65B35DF5121C261E003EAD18 /* low battery.wav */, - 65B35DF6121C261E003EAD18 /* low gps quality.wav */, - 65B35DF7121C261E003EAD18 /* manual flight.wav */, - 65B35DF8121C261E003EAD18 /* maximum.wav */, - 65B35DF9121C261E003EAD18 /* meters.wav */, - 65B35DFA121C261E003EAD18 /* minimum.wav */, - 65B35DFB121C261E003EAD18 /* mode.wav */, - 65B35DFC121C261E003EAD18 /* MPH.wav */, - 65B35DFD121C261E003EAD18 /* navigation.wav */, - 65B35DFE121C261E003EAD18 /* openpilot.wav */, - 65B35DFF121C261E003EAD18 /* point.wav */, - 65B35E00121C261E003EAD18 /* range.wav */, - 65B35E01121C261E003EAD18 /* reached.wav */, - 65B35E02121C261E003EAD18 /* ready for flight.wav */, - 65B35E03121C261E003EAD18 /* return home.wav */, - 65B35E04121C261E003EAD18 /* right.wav */, - 65B35E05121C261E003EAD18 /* set.wav */, - 65B35E06121C261E003EAD18 /* speed.wav */, - 65B35E07121C261E003EAD18 /* stabilization.wav */, - 65B35E08121C261E003EAD18 /* started.wav */, - 65B35E09121C261E003EAD18 /* stopped.wav */, - 65B35E0A121C261E003EAD18 /* takeoff.wav */, - 65B35E0B121C261E003EAD18 /* telemetry.wav */, - 65B35E0C121C261E003EAD18 /* time.wav */, - 65B35E0D121C261E003EAD18 /* triggered.wav */, - 65B35E0E121C261E003EAD18 /* uav.wav */, - 65B35E0F121C261E003EAD18 /* volts.wav */, - 65B35E10121C261E003EAD18 /* warning.wav */, - 65B35E11121C261E003EAD18 /* waypoint.wav */, - 65B35E12121C261E003EAD18 /* whoopsound.wav */, - ); - path = default; - sourceTree = ""; - }; - 65B35E14121C261E003EAD18 /* translations */ = { - isa = PBXGroup; - children = ( - 65B35E15121C261E003EAD18 /* extract-mimetypes.xq */, - 65B35E16121C261E003EAD18 /* extract-mimetypes.xq.in */, - 65B35E17121C261E003EAD18 /* openpilotgcs_de.ts */, - 65B35E18121C261E003EAD18 /* openpilotgcs_es.ts */, - 65B35E19121C261E003EAD18 /* openpilotgcs_fr.ts */, - 65B35E1A121C261E003EAD18 /* openpilotgcs_it.ts */, - 65B35E1B121C261E003EAD18 /* Readme.txt */, - 65B35E1C121C261E003EAD18 /* translations.pro */, - ); - path = translations; - sourceTree = ""; - }; - 65B35E1E121C261E003EAD18 /* src */ = { - isa = PBXGroup; - children = ( - 65B35E1F121C261E003EAD18 /* app */, - 65B35E28121C261E003EAD18 /* experimental */, - 65B35E9A121C261E003EAD18 /* libs */, - 65B364B2121C261F003EAD18 /* openpilotgcslibrary.pri */, - 65B364B3121C261F003EAD18 /* openpilotgcsplugin.pri */, - 65B364B4121C261F003EAD18 /* plugins */, - 65B367C8121C2620003EAD18 /* rpath.pri */, - 65B367C9121C2620003EAD18 /* shared */, - 65B367FF121C2620003EAD18 /* src.pro */, - ); - path = src; - sourceTree = ""; - }; - 65B35E1F121C261E003EAD18 /* app */ = { - isa = PBXGroup; - children = ( - 65B35E20121C261E003EAD18 /* app.pro */, - 65B35E21121C261E003EAD18 /* Info.plist */, - 65B35E22121C261E003EAD18 /* main.cpp */, - 65B35E23121C261E003EAD18 /* openpilotgcs.icns */, - 65B35E24121C261E003EAD18 /* openpilotgcs.ico */, - 65B35E25121C261E003EAD18 /* openpilotgcs.rc */, - 65B35E26121C261E003EAD18 /* prifile.icns */, - 65B35E27121C261E003EAD18 /* profile.icns */, - ); - path = app; - sourceTree = ""; - }; - 65B35E28121C261E003EAD18 /* experimental */ = { - isa = PBXGroup; - children = ( - 65B35E29121C261E003EAD18 /* HIDTest */, - 65B35E2C121C261E003EAD18 /* OPMapWidget */, - 65B35E93121C261E003EAD18 /* tools */, - ); - path = experimental; - sourceTree = ""; - }; - 65B35E29121C261E003EAD18 /* HIDTest */ = { - isa = PBXGroup; - children = ( - 65B35E2A121C261E003EAD18 /* HIDTest.pro */, - 65B35E2B121C261E003EAD18 /* main.cpp */, - ); - path = HIDTest; - sourceTree = ""; - }; - 65B35E2C121C261E003EAD18 /* OPMapWidget */ = { - isa = PBXGroup; - children = ( - 65B35E2D121C261E003EAD18 /* common.pri */, - 65B35E2E121C261E003EAD18 /* core */, - 65B35E54121C261E003EAD18 /* finaltest */, - 65B35E5B121C261E003EAD18 /* gettilestest */, - 65B35E5E121C261E003EAD18 /* internals */, - 65B35E81121C261E003EAD18 /* mapwidget */, - 65B35E8A121C261E003EAD18 /* OPMapControl.pro */, - 65B35E8B121C261E003EAD18 /* teste */, - 65B35E8E121C261E003EAD18 /* widgettest */, - ); - path = OPMapWidget; - sourceTree = ""; - }; - 65B35E2E121C261E003EAD18 /* core */ = { - isa = PBXGroup; - children = ( - 65B35E2F121C261E003EAD18 /* accessmode.h */, - 65B35E30121C261E003EAD18 /* alllayersoftype.cpp */, - 65B35E31121C261E003EAD18 /* alllayersoftype.h */, - 65B35E32121C261E003EAD18 /* cache.cpp */, - 65B35E33121C261E003EAD18 /* cache.h */, - 65B35E34121C261E003EAD18 /* cacheitemqueue.cpp */, - 65B35E35121C261E003EAD18 /* cacheitemqueue.h */, - 65B35E36121C261E003EAD18 /* core.pro */, - 65B35E37121C261E003EAD18 /* debugheader.h */, - 65B35E38121C261E003EAD18 /* geodecoderstatus.h */, - 65B35E39121C261E003EAD18 /* kibertilecache.cpp */, - 65B35E3A121C261E003EAD18 /* kibertilecache.h */, - 65B35E3B121C261E003EAD18 /* languagetype.cpp */, - 65B35E3C121C261E003EAD18 /* languagetype.h */, - 65B35E3D121C261E003EAD18 /* maptype.h */, - 65B35E3E121C261E003EAD18 /* memorycache.cpp */, - 65B35E3F121C261E003EAD18 /* memorycache.h */, - 65B35E40121C261E003EAD18 /* opmaps.cpp */, - 65B35E41121C261E003EAD18 /* opmaps.h */, - 65B35E42121C261E003EAD18 /* placemark.cpp */, - 65B35E43121C261E003EAD18 /* placemark.h */, - 65B35E44121C261E003EAD18 /* point.cpp */, - 65B35E45121C261E003EAD18 /* point.h */, - 65B35E46121C261E003EAD18 /* providerstrings.cpp */, - 65B35E47121C261E003EAD18 /* providerstrings.h */, - 65B35E48121C261E003EAD18 /* pureimage.cpp */, - 65B35E49121C261E003EAD18 /* pureimage.h */, - 65B35E4A121C261E003EAD18 /* pureimagecache.cpp */, - 65B35E4B121C261E003EAD18 /* pureimagecache.h */, - 65B35E4C121C261E003EAD18 /* rawtile.cpp */, - 65B35E4D121C261E003EAD18 /* rawtile.h */, - 65B35E4E121C261E003EAD18 /* size.cpp */, - 65B35E4F121C261E003EAD18 /* size.h */, - 65B35E50121C261E003EAD18 /* tilecachequeue.cpp */, - 65B35E51121C261E003EAD18 /* tilecachequeue.h */, - 65B35E52121C261E003EAD18 /* urlfactory.cpp */, - 65B35E53121C261E003EAD18 /* urlfactory.h */, - ); - path = core; - sourceTree = ""; - }; - 65B35E54121C261E003EAD18 /* finaltest */ = { - isa = PBXGroup; - children = ( - 65B35E55121C261E003EAD18 /* finaltest.pro */, - 65B35E56121C261E003EAD18 /* main.cpp */, - 65B35E57121C261E003EAD18 /* mainwindow.cpp */, - 65B35E58121C261E003EAD18 /* mainwindow.h */, - 65B35E59121C261E003EAD18 /* mainwindow.ui */, - 65B35E5A121C261E003EAD18 /* ui_mainwindow.h */, - ); - path = finaltest; - sourceTree = ""; - }; - 65B35E5B121C261E003EAD18 /* gettilestest */ = { - isa = PBXGroup; - children = ( - 65B35E5C121C261E003EAD18 /* gettilestest.pro */, - 65B35E5D121C261E003EAD18 /* main.cpp */, - ); - path = gettilestest; - sourceTree = ""; - }; - 65B35E5E121C261E003EAD18 /* internals */ = { - isa = PBXGroup; - children = ( - 65B35E5F121C261E003EAD18 /* copyrightstrings.h */, - 65B35E60121C261E003EAD18 /* core.cpp */, - 65B35E61121C261E003EAD18 /* core.h */, - 65B35E62121C261E003EAD18 /* debugheader.h */, - 65B35E63121C261E003EAD18 /* internals.pro */, - 65B35E64121C261E003EAD18 /* loadtask.cpp */, - 65B35E65121C261E003EAD18 /* loadtask.h */, - 65B35E66121C261E003EAD18 /* MouseWheelZoomType.cpp */, - 65B35E67121C261E003EAD18 /* mousewheelzoomtype.h */, - 65B35E68121C261E003EAD18 /* pointlatlng.cpp */, - 65B35E69121C261E003EAD18 /* pointlatlng.h */, - 65B35E6A121C261E003EAD18 /* projections */, - 65B35E75121C261E003EAD18 /* pureprojection.cpp */, - 65B35E76121C261E003EAD18 /* pureprojection.h */, - 65B35E77121C261E003EAD18 /* rectangle.cpp */, - 65B35E78121C261E003EAD18 /* rectangle.h */, - 65B35E79121C261E003EAD18 /* rectlatlng.cpp */, - 65B35E7A121C261E003EAD18 /* rectlatlng.h */, - 65B35E7B121C261E003EAD18 /* sizelatlng.cpp */, - 65B35E7C121C261E003EAD18 /* sizelatlng.h */, - 65B35E7D121C261E003EAD18 /* tile.cpp */, - 65B35E7E121C261E003EAD18 /* tile.h */, - 65B35E7F121C261E003EAD18 /* tilematrix.cpp */, - 65B35E80121C261E003EAD18 /* tilematrix.h */, - ); - path = internals; - sourceTree = ""; - }; - 65B35E6A121C261E003EAD18 /* projections */ = { - isa = PBXGroup; - children = ( - 65B35E6B121C261E003EAD18 /* lks94projection.cpp */, - 65B35E6C121C261E003EAD18 /* lks94projection.h */, - 65B35E6D121C261E003EAD18 /* mercatorprojection.cpp */, - 65B35E6E121C261E003EAD18 /* mercatorprojection.h */, - 65B35E6F121C261E003EAD18 /* mercatorprojectionyandex.cpp */, - 65B35E70121C261E003EAD18 /* mercatorprojectionyandex.h */, - 65B35E71121C261E003EAD18 /* platecarreeprojection.cpp */, - 65B35E72121C261E003EAD18 /* platecarreeprojection.h */, - 65B35E73121C261E003EAD18 /* platecarreeprojectionpergo.cpp */, - 65B35E74121C261E003EAD18 /* platecarreeprojectionpergo.h */, - ); - path = projections; - sourceTree = ""; - }; - 65B35E81121C261E003EAD18 /* mapwidget */ = { - isa = PBXGroup; - children = ( - 65B35E82121C261E003EAD18 /* mapgraphicitem.cpp */, - 65B35E83121C261E003EAD18 /* mapgraphicitem.h */, - 65B35E84121C261E003EAD18 /* mapresources.qrc */, - 65B35E85121C261E003EAD18 /* mapwidget.pro */, - 65B35E86121C261E003EAD18 /* opmapcontrol.cpp */, - 65B35E87121C261E003EAD18 /* opmapcontrol.h */, - 65B35E88121C261E003EAD18 /* opmapwidget.cpp */, - 65B35E89121C261E003EAD18 /* opmapwidget.h */, - ); - path = mapwidget; - sourceTree = ""; - }; - 65B35E8B121C261E003EAD18 /* teste */ = { - isa = PBXGroup; - children = ( - 65B35E8C121C261E003EAD18 /* main.cpp */, - 65B35E8D121C261E003EAD18 /* teste.pro */, - ); - path = teste; - sourceTree = ""; - }; - 65B35E8E121C261E003EAD18 /* widgettest */ = { - isa = PBXGroup; - children = ( - 65B35E8F121C261E003EAD18 /* main.cpp */, - 65B35E90121C261E003EAD18 /* map.cpp */, - 65B35E91121C261E003EAD18 /* map.h */, - 65B35E92121C261E003EAD18 /* widgettest.pro */, - ); - path = widgettest; - sourceTree = ""; - }; - 65B35E93121C261E003EAD18 /* tools */ = { - isa = PBXGroup; - children = ( - 65B35E94121C261E003EAD18 /* DocumentationHelper */, - ); - path = tools; - sourceTree = ""; - }; - 65B35E94121C261E003EAD18 /* DocumentationHelper */ = { - isa = PBXGroup; - children = ( - 65B35E95121C261E003EAD18 /* DocumentationHelper.pro */, - 65B35E96121C261E003EAD18 /* main.cpp */, - 65B35E97121C261E003EAD18 /* mainwindow.cpp */, - 65B35E98121C261E003EAD18 /* mainwindow.h */, - 65B35E99121C261E003EAD18 /* mainwindow.ui */, - ); - path = DocumentationHelper; - sourceTree = ""; - }; - 65B35E9A121C261E003EAD18 /* libs */ = { - isa = PBXGroup; - children = ( - 65B35E9B121C261E003EAD18 /* aggregation */, - 65B35EA9121C261E003EAD18 /* extensionsystem */, - 65B35F2F121C261E003EAD18 /* glc_lib */, - 65B360A5121C261E003EAD18 /* libqxt */, - 65B3632F121C261F003EAD18 /* libs.pro */, - 65B36330121C261F003EAD18 /* opmapcontrol */, - 65B363A4121C261F003EAD18 /* qextserialport */, - 65B363B2121C261F003EAD18 /* qtconcurrent */, - 65B363B9121C261F003EAD18 /* qwt */, - 65B36449121C261F003EAD18 /* qymodem */, - 65B36455121C261F003EAD18 /* uavobjgenerator */, - 65B3645C121C261F003EAD18 /* utils */, - ); - path = libs; - sourceTree = ""; - }; - 65B35E9B121C261E003EAD18 /* aggregation */ = { - isa = PBXGroup; - children = ( - 65B35E9C121C261E003EAD18 /* aggregate.cpp */, - 65B35E9D121C261E003EAD18 /* aggregate.h */, - 65B35E9E121C261E003EAD18 /* aggregation.pri */, - 65B35E9F121C261E003EAD18 /* aggregation.pro */, - 65B35EA0121C261E003EAD18 /* aggregation_global.h */, - 65B35EA1121C261E003EAD18 /* examples */, - ); - path = aggregation; - sourceTree = ""; - }; - 65B35EA1121C261E003EAD18 /* examples */ = { - isa = PBXGroup; - children = ( - 65B35EA2121C261E003EAD18 /* examples.pro */, - 65B35EA3121C261E003EAD18 /* text */, - ); - path = examples; - sourceTree = ""; - }; - 65B35EA3121C261E003EAD18 /* text */ = { - isa = PBXGroup; - children = ( - 65B35EA4121C261E003EAD18 /* main.cpp */, - 65B35EA5121C261E003EAD18 /* main.h */, - 65B35EA6121C261E003EAD18 /* main.ui */, - 65B35EA7121C261E003EAD18 /* myinterfaces.h */, - 65B35EA8121C261E003EAD18 /* text.pro */, - ); - path = text; - sourceTree = ""; - }; - 65B35EA9121C261E003EAD18 /* extensionsystem */ = { - isa = PBXGroup; - children = ( - 65B35EAA121C261E003EAD18 /* extensionsystem.pri */, - 65B35EAB121C261E003EAD18 /* extensionsystem.pro */, - 65B35EAC121C261E003EAD18 /* extensionsystem_dependencies.pri */, - 65B35EAD121C261E003EAD18 /* extensionsystem_global.h */, - 65B35EAE121C261E003EAD18 /* images */, - 65B35EB1121C261E003EAD18 /* iplugin.cpp */, - 65B35EB2121C261E003EAD18 /* iplugin.h */, - 65B35EB3121C261E003EAD18 /* iplugin_p.h */, - 65B35EB4121C261E003EAD18 /* optionsparser.cpp */, - 65B35EB5121C261E003EAD18 /* optionsparser.h */, - 65B35EB6121C261E003EAD18 /* plugindetailsview.cpp */, - 65B35EB7121C261E003EAD18 /* plugindetailsview.h */, - 65B35EB8121C261E003EAD18 /* plugindetailsview.ui */, - 65B35EB9121C261E003EAD18 /* pluginerrorview.cpp */, - 65B35EBA121C261E003EAD18 /* pluginerrorview.h */, - 65B35EBB121C261E003EAD18 /* pluginerrorview.ui */, - 65B35EBC121C261E003EAD18 /* pluginmanager.cpp */, - 65B35EBD121C261E003EAD18 /* pluginmanager.h */, - 65B35EBE121C261E003EAD18 /* pluginmanager_p.h */, - 65B35EBF121C261E003EAD18 /* pluginspec.cpp */, - 65B35EC0121C261E003EAD18 /* pluginspec.h */, - 65B35EC1121C261E003EAD18 /* pluginspec_p.h */, - 65B35EC2121C261E003EAD18 /* pluginview.cpp */, - 65B35EC3121C261E003EAD18 /* pluginview.h */, - 65B35EC4121C261E003EAD18 /* pluginview.qrc */, - 65B35EC5121C261E003EAD18 /* pluginview.ui */, - 65B35EC6121C261E003EAD18 /* pluginview_p.h */, - 65B35EC7121C261E003EAD18 /* test */, - ); - path = extensionsystem; - sourceTree = ""; - }; - 65B35EAE121C261E003EAD18 /* images */ = { - isa = PBXGroup; - children = ( - 65B35EAF121C261E003EAD18 /* error.png */, - 65B35EB0121C261E003EAD18 /* ok.png */, - ); - path = images; - sourceTree = ""; - }; - 65B35EC7121C261E003EAD18 /* test */ = { - isa = PBXGroup; - children = ( - 65B35EC8121C261E003EAD18 /* auto */, - 65B35F12121C261E003EAD18 /* extensionsystem_test.pri */, - 65B35F13121C261E003EAD18 /* manual */, - 65B35F2E121C261E003EAD18 /* test.pro */, - ); - path = test; - sourceTree = ""; - }; - 65B35EC8121C261E003EAD18 /* auto */ = { - isa = PBXGroup; - children = ( - 65B35EC9121C261E003EAD18 /* auto.pro */, - 65B35ECA121C261E003EAD18 /* pluginmanager */, - 65B35EF6121C261E003EAD18 /* pluginspec */, - ); - path = auto; - sourceTree = ""; - }; - 65B35ECA121C261E003EAD18 /* pluginmanager */ = { - isa = PBXGroup; - children = ( - 65B35ECB121C261E003EAD18 /* circularplugins */, - 65B35EDC121C261E003EAD18 /* correctplugins1 */, - 65B35EED121C261E003EAD18 /* pluginmanager.pro */, - 65B35EEE121C261E003EAD18 /* plugins */, - 65B35EF3121C261E003EAD18 /* test.pro */, - 65B35EF4121C261E003EAD18 /* test.sh */, - 65B35EF5121C261E003EAD18 /* tst_pluginmanager.cpp */, - ); - path = pluginmanager; - sourceTree = ""; - }; - 65B35ECB121C261E003EAD18 /* circularplugins */ = { - isa = PBXGroup; - children = ( - 65B35ECC121C261E003EAD18 /* circularplugins.pro */, - 65B35ECD121C261E003EAD18 /* plugin1 */, - 65B35ED2121C261E003EAD18 /* plugin2 */, - 65B35ED7121C261E003EAD18 /* plugin3 */, - ); - path = circularplugins; - sourceTree = ""; - }; - 65B35ECD121C261E003EAD18 /* plugin1 */ = { - isa = PBXGroup; - children = ( - 65B35ECE121C261E003EAD18 /* plugin.xml */, - 65B35ECF121C261E003EAD18 /* plugin1.cpp */, - 65B35ED0121C261E003EAD18 /* plugin1.h */, - 65B35ED1121C261E003EAD18 /* plugin1.pro */, - ); - path = plugin1; - sourceTree = ""; - }; - 65B35ED2121C261E003EAD18 /* plugin2 */ = { - isa = PBXGroup; - children = ( - 65B35ED3121C261E003EAD18 /* plugin.xml */, - 65B35ED4121C261E003EAD18 /* plugin2.cpp */, - 65B35ED5121C261E003EAD18 /* plugin2.h */, - 65B35ED6121C261E003EAD18 /* plugin2.pro */, - ); - path = plugin2; - sourceTree = ""; - }; - 65B35ED7121C261E003EAD18 /* plugin3 */ = { - isa = PBXGroup; - children = ( - 65B35ED8121C261E003EAD18 /* plugin.xml */, - 65B35ED9121C261E003EAD18 /* plugin3.cpp */, - 65B35EDA121C261E003EAD18 /* plugin3.h */, - 65B35EDB121C261E003EAD18 /* plugin3.pro */, - ); - path = plugin3; - sourceTree = ""; - }; - 65B35EDC121C261E003EAD18 /* correctplugins1 */ = { - isa = PBXGroup; - children = ( - 65B35EDD121C261E003EAD18 /* correctplugins1.pro */, - 65B35EDE121C261E003EAD18 /* plugin1 */, - 65B35EE3121C261E003EAD18 /* plugin2 */, - 65B35EE8121C261E003EAD18 /* plugin3 */, - ); - path = correctplugins1; - sourceTree = ""; - }; - 65B35EDE121C261E003EAD18 /* plugin1 */ = { - isa = PBXGroup; - children = ( - 65B35EDF121C261E003EAD18 /* plugin.spec */, - 65B35EE0121C261E003EAD18 /* plugin1.cpp */, - 65B35EE1121C261E003EAD18 /* plugin1.h */, - 65B35EE2121C261E003EAD18 /* plugin1.pro */, - ); - path = plugin1; - sourceTree = ""; - }; - 65B35EE3121C261E003EAD18 /* plugin2 */ = { - isa = PBXGroup; - children = ( - 65B35EE4121C261E003EAD18 /* plugin.spec */, - 65B35EE5121C261E003EAD18 /* plugin2.cpp */, - 65B35EE6121C261E003EAD18 /* plugin2.h */, - 65B35EE7121C261E003EAD18 /* plugin2.pro */, - ); - path = plugin2; - sourceTree = ""; - }; - 65B35EE8121C261E003EAD18 /* plugin3 */ = { - isa = PBXGroup; - children = ( - 65B35EE9121C261E003EAD18 /* plugin.spec */, - 65B35EEA121C261E003EAD18 /* plugin3.cpp */, - 65B35EEB121C261E003EAD18 /* plugin3.h */, - 65B35EEC121C261E003EAD18 /* plugin3.pro */, - ); - path = plugin3; - sourceTree = ""; - }; - 65B35EEE121C261E003EAD18 /* plugins */ = { - isa = PBXGroup; - children = ( - 65B35EEF121C261E003EAD18 /* myplug */, - 65B35EF1121C261E003EAD18 /* otherplugin.xml */, - 65B35EF2121C261E003EAD18 /* plugin1.xml */, - ); - path = plugins; - sourceTree = ""; - }; - 65B35EEF121C261E003EAD18 /* myplug */ = { - isa = PBXGroup; - children = ( - 65B35EF0121C261E003EAD18 /* myplug.xml */, - ); - path = myplug; - sourceTree = ""; - }; - 65B35EF6121C261E003EAD18 /* pluginspec */ = { - isa = PBXGroup; - children = ( - 65B35EF7121C261E003EAD18 /* pluginspec.pro */, - 65B35EF8121C261E003EAD18 /* test.pro */, - 65B35EF9121C261E003EAD18 /* test.sh */, - 65B35EFA121C261E003EAD18 /* testdependencies */, - 65B35F00121C261E003EAD18 /* testdir */, - 65B35F02121C261E003EAD18 /* testplugin */, - 65B35F08121C261E003EAD18 /* testspecs */, - 65B35F11121C261E003EAD18 /* tst_pluginspec.cpp */, - ); - path = pluginspec; - sourceTree = ""; - }; - 65B35EFA121C261E003EAD18 /* testdependencies */ = { - isa = PBXGroup; - children = ( - 65B35EFB121C261E003EAD18 /* spec1.xml */, - 65B35EFC121C261E003EAD18 /* spec2.xml */, - 65B35EFD121C261E003EAD18 /* spec3.xml */, - 65B35EFE121C261E003EAD18 /* spec4.xml */, - 65B35EFF121C261E003EAD18 /* spec5.xml */, - ); - path = testdependencies; - sourceTree = ""; - }; - 65B35F00121C261E003EAD18 /* testdir */ = { - isa = PBXGroup; - children = ( - 65B35F01121C261E003EAD18 /* spec.xml */, - ); - path = testdir; - sourceTree = ""; - }; - 65B35F02121C261E003EAD18 /* testplugin */ = { - isa = PBXGroup; - children = ( - 65B35F03121C261E003EAD18 /* testplugin.cpp */, - 65B35F04121C261E003EAD18 /* testplugin.h */, - 65B35F05121C261E003EAD18 /* testplugin.pro */, - 65B35F06121C261E003EAD18 /* testplugin.xml */, - 65B35F07121C261E003EAD18 /* testplugin_global.h */, - ); - path = testplugin; - sourceTree = ""; - }; - 65B35F08121C261E003EAD18 /* testspecs */ = { - isa = PBXGroup; - children = ( - 65B35F09121C261E003EAD18 /* simplespec.xml */, - 65B35F0A121C261E003EAD18 /* spec1.xml */, - 65B35F0B121C261E003EAD18 /* spec2.xml */, - 65B35F0C121C261E003EAD18 /* spec_wrong1.xml */, - 65B35F0D121C261E003EAD18 /* spec_wrong2.xml */, - 65B35F0E121C261E003EAD18 /* spec_wrong3.xml */, - 65B35F0F121C261E003EAD18 /* spec_wrong4.xml */, - 65B35F10121C261E003EAD18 /* spec_wrong5.xml */, - ); - path = testspecs; - sourceTree = ""; - }; - 65B35F13121C261E003EAD18 /* manual */ = { - isa = PBXGroup; - children = ( - 65B35F14121C261E003EAD18 /* manual.pro */, - 65B35F15121C261E003EAD18 /* pluginview */, - ); - path = manual; - sourceTree = ""; - }; - 65B35F15121C261E003EAD18 /* pluginview */ = { - isa = PBXGroup; - children = ( - 65B35F16121C261E003EAD18 /* plugindialog.cpp */, - 65B35F17121C261E003EAD18 /* plugindialog.h */, - 65B35F18121C261E003EAD18 /* plugins */, - 65B35F2B121C261E003EAD18 /* pluginview.pro */, - 65B35F2C121C261E003EAD18 /* test.pro */, - 65B35F2D121C261E003EAD18 /* test.sh */, - ); - path = pluginview; - sourceTree = ""; - }; - 65B35F18121C261E003EAD18 /* plugins */ = { - isa = PBXGroup; - children = ( - 65B35F19121C261E003EAD18 /* plugin1 */, - 65B35F1E121C261E003EAD18 /* plugin2 */, - 65B35F23121C261E003EAD18 /* plugin3 */, - 65B35F28121C261E003EAD18 /* plugin4 */, - 65B35F2A121C261E003EAD18 /* plugins.pro */, - ); - path = plugins; - sourceTree = ""; - }; - 65B35F19121C261E003EAD18 /* plugin1 */ = { - isa = PBXGroup; - children = ( - 65B35F1A121C261E003EAD18 /* plugin.xml */, - 65B35F1B121C261E003EAD18 /* plugin1.cpp */, - 65B35F1C121C261E003EAD18 /* plugin1.h */, - 65B35F1D121C261E003EAD18 /* plugin1.pro */, - ); - path = plugin1; - sourceTree = ""; - }; - 65B35F1E121C261E003EAD18 /* plugin2 */ = { - isa = PBXGroup; - children = ( - 65B35F1F121C261E003EAD18 /* plugin.xml */, - 65B35F20121C261E003EAD18 /* plugin2.cpp */, - 65B35F21121C261E003EAD18 /* plugin2.h */, - 65B35F22121C261E003EAD18 /* plugin2.pro */, - ); - path = plugin2; - sourceTree = ""; - }; - 65B35F23121C261E003EAD18 /* plugin3 */ = { - isa = PBXGroup; - children = ( - 65B35F24121C261E003EAD18 /* plugin.xml */, - 65B35F25121C261E003EAD18 /* plugin3.cpp */, - 65B35F26121C261E003EAD18 /* plugin3.h */, - 65B35F27121C261E003EAD18 /* plugin3.pro */, - ); - path = plugin3; - sourceTree = ""; - }; - 65B35F28121C261E003EAD18 /* plugin4 */ = { - isa = PBXGroup; - children = ( - 65B35F29121C261E003EAD18 /* plugin.xml */, - ); - path = plugin4; - sourceTree = ""; - }; - 65B35F2F121C261E003EAD18 /* glc_lib */ = { - isa = PBXGroup; - children = ( - 65B35F30121C261E003EAD18 /* 3DWidget */, - 65B35F41121C261E003EAD18 /* 3rdparty */, - 65B35FA1121C261E003EAD18 /* Build */, - 65B35FA2121C261E003EAD18 /* COPYING */, - 65B35FA3121C261E003EAD18 /* geometry */, - 65B35FCE121C261E003EAD18 /* glc_boundingbox.cpp */, - 65B35FCF121C261E003EAD18 /* glc_boundingbox.h */, - 65B35FD0121C261E003EAD18 /* glc_cachemanager.cpp */, - 65B35FD1121C261E003EAD18 /* glc_cachemanager.h */, - 65B35FD2121C261E003EAD18 /* glc_config.h */, - 65B35FD3121C261E003EAD18 /* glc_exception.cpp */, - 65B35FD4121C261E003EAD18 /* glc_exception.h */, - 65B35FD5121C261E003EAD18 /* glc_ext.cpp */, - 65B35FD6121C261E003EAD18 /* glc_ext.h */, - 65B35FD7121C261E003EAD18 /* glc_factory.cpp */, - 65B35FD8121C261E003EAD18 /* glc_factory.h */, - 65B35FD9121C261E003EAD18 /* glc_fileformatexception.cpp */, - 65B35FDA121C261E003EAD18 /* glc_fileformatexception.h */, - 65B35FDB121C261E003EAD18 /* glc_global.cpp */, - 65B35FDC121C261E003EAD18 /* glc_global.h */, - 65B35FDD121C261E003EAD18 /* glc_lib.pri */, - 65B35FDE121C261E003EAD18 /* glc_lib.pro */, - 65B35FDF121C261E003EAD18 /* glc_object.cpp */, - 65B35FE0121C261E003EAD18 /* glc_object.h */, - 65B35FE1121C261E003EAD18 /* glc_openglexception.cpp */, - 65B35FE2121C261E003EAD18 /* glc_openglexception.h */, - 65B35FE3121C261E003EAD18 /* glc_renderstatistics.cpp */, - 65B35FE4121C261E003EAD18 /* glc_renderstatistics.h */, - 65B35FE5121C261E003EAD18 /* glc_state.cpp */, - 65B35FE6121C261E003EAD18 /* glc_state.h */, - 65B35FE7121C261E003EAD18 /* include */, - 65B3603B121C261E003EAD18 /* io */, - 65B3604E121C261E003EAD18 /* maths */, - 65B36060121C261E003EAD18 /* sceneGraph */, - 65B36077121C261E003EAD18 /* shading */, - 65B36084121C261E003EAD18 /* viewport */, - ); - path = glc_lib; - sourceTree = ""; - }; - 65B35F30121C261E003EAD18 /* 3DWidget */ = { - isa = PBXGroup; - children = ( - 65B35F31121C261E003EAD18 /* glc_3dwidget.cpp */, - 65B35F32121C261E003EAD18 /* glc_3dwidget.h */, - 65B35F33121C261E003EAD18 /* glc_3dwidgetmanager.cpp */, - 65B35F34121C261E003EAD18 /* glc_3dwidgetmanager.h */, - 65B35F35121C261E003EAD18 /* glc_3dwidgetmanagerhandle.cpp */, - 65B35F36121C261E003EAD18 /* glc_3dwidgetmanagerhandle.h */, - 65B35F37121C261E003EAD18 /* glc_abstractmanipulator.cpp */, - 65B35F38121C261E003EAD18 /* glc_abstractmanipulator.h */, - 65B35F39121C261E003EAD18 /* glc_axis.cpp */, - 65B35F3A121C261E003EAD18 /* glc_axis.h */, - 65B35F3B121C261E003EAD18 /* glc_cuttingplane.cpp */, - 65B35F3C121C261E003EAD18 /* glc_cuttingplane.h */, - 65B35F3D121C261E003EAD18 /* glc_pullmanipulator.cpp */, - 65B35F3E121C261E003EAD18 /* glc_pullmanipulator.h */, - 65B35F3F121C261E003EAD18 /* glc_rotationmanipulator.cpp */, - 65B35F40121C261E003EAD18 /* glc_rotationmanipulator.h */, - ); - path = 3DWidget; - sourceTree = ""; - }; - 65B35F41121C261E003EAD18 /* 3rdparty */ = { - isa = PBXGroup; - children = ( - 65B35F42121C261E003EAD18 /* glext */, - 65B35F44121C261E003EAD18 /* lib3ds */, - 65B35F6E121C261E003EAD18 /* quazip */, - 65B35F7D121C261E003EAD18 /* zlib */, - ); - path = 3rdparty; - sourceTree = ""; - }; - 65B35F42121C261E003EAD18 /* glext */ = { - isa = PBXGroup; - children = ( - 65B35F43121C261E003EAD18 /* glext.h */, - ); - path = glext; - sourceTree = ""; - }; - 65B35F44121C261E003EAD18 /* lib3ds */ = { - isa = PBXGroup; - children = ( - 65B35F45121C261E003EAD18 /* atmosphere.c */, - 65B35F46121C261E003EAD18 /* atmosphere.h */, - 65B35F47121C261E003EAD18 /* AUTHORS */, - 65B35F48121C261E003EAD18 /* background.c */, - 65B35F49121C261E003EAD18 /* background.h */, - 65B35F4A121C261E003EAD18 /* camera.c */, - 65B35F4B121C261E003EAD18 /* camera.h */, - 65B35F4C121C261E003EAD18 /* ChangeLog */, - 65B35F4D121C261E003EAD18 /* chunk.c */, - 65B35F4E121C261E003EAD18 /* chunk.h */, - 65B35F4F121C261E003EAD18 /* chunktable.h */, - 65B35F50121C261E003EAD18 /* ease.c */, - 65B35F51121C261E003EAD18 /* ease.h */, - 65B35F52121C261E003EAD18 /* file.c */, - 65B35F53121C261E003EAD18 /* file.h */, - 65B35F54121C261E003EAD18 /* io.c */, - 65B35F55121C261E003EAD18 /* io.h */, - 65B35F56121C261E003EAD18 /* light.c */, - 65B35F57121C261E003EAD18 /* light.h */, - 65B35F58121C261E003EAD18 /* material.c */, - 65B35F59121C261E003EAD18 /* material.h */, - 65B35F5A121C261E003EAD18 /* matrix.c */, - 65B35F5B121C261E003EAD18 /* matrix.h */, - 65B35F5C121C261E003EAD18 /* mesh.c */, - 65B35F5D121C261E003EAD18 /* mesh.h */, - 65B35F5E121C261E003EAD18 /* node.c */, - 65B35F5F121C261E003EAD18 /* node.h */, - 65B35F60121C261E003EAD18 /* quat.c */, - 65B35F61121C261E003EAD18 /* quat.h */, - 65B35F62121C261E003EAD18 /* README */, - 65B35F63121C261E003EAD18 /* shadow.c */, - 65B35F64121C261E003EAD18 /* shadow.h */, - 65B35F65121C261E003EAD18 /* tcb.c */, - 65B35F66121C261E003EAD18 /* tcb.h */, - 65B35F67121C261E003EAD18 /* tracks.c */, - 65B35F68121C261E003EAD18 /* tracks.h */, - 65B35F69121C261E003EAD18 /* types.h */, - 65B35F6A121C261E003EAD18 /* vector.c */, - 65B35F6B121C261E003EAD18 /* vector.h */, - 65B35F6C121C261E003EAD18 /* viewport.c */, - 65B35F6D121C261E003EAD18 /* viewport.h */, - ); - path = lib3ds; - sourceTree = ""; - }; - 65B35F6E121C261E003EAD18 /* quazip */ = { - isa = PBXGroup; - children = ( - 65B35F6F121C261E003EAD18 /* crypt.h */, - 65B35F70121C261E003EAD18 /* ioapi.c */, - 65B35F71121C261E003EAD18 /* ioapi.h */, - 65B35F72121C261E003EAD18 /* quazip.cpp */, - 65B35F73121C261E003EAD18 /* quazip.h */, - 65B35F74121C261E003EAD18 /* quazipfile.cpp */, - 65B35F75121C261E003EAD18 /* quazipfile.h */, - 65B35F76121C261E003EAD18 /* quazipfileinfo.h */, - 65B35F77121C261E003EAD18 /* quazipnewinfo.cpp */, - 65B35F78121C261E003EAD18 /* quazipnewinfo.h */, - 65B35F79121C261E003EAD18 /* unzip.c */, - 65B35F7A121C261E003EAD18 /* unzip.h */, - 65B35F7B121C261E003EAD18 /* zip.c */, - 65B35F7C121C261E003EAD18 /* zip.h */, - ); - path = quazip; - sourceTree = ""; - }; - 65B35F7D121C261E003EAD18 /* zlib */ = { - isa = PBXGroup; - children = ( - 65B35F7E121C261E003EAD18 /* adler32.c */, - 65B35F7F121C261E003EAD18 /* algorithm.txt */, - 65B35F80121C261E003EAD18 /* ChangeLog */, - 65B35F81121C261E003EAD18 /* compress.c */, - 65B35F82121C261E003EAD18 /* configure */, - 65B35F83121C261E003EAD18 /* crc32.c */, - 65B35F84121C261E003EAD18 /* crc32.h */, - 65B35F85121C261E003EAD18 /* deflate.c */, - 65B35F86121C261E003EAD18 /* deflate.h */, - 65B35F87121C261E003EAD18 /* example.c */, - 65B35F88121C261E003EAD18 /* FAQ */, - 65B35F89121C261E003EAD18 /* gzio.c */, - 65B35F8A121C261E003EAD18 /* INDEX */, - 65B35F8B121C261E003EAD18 /* infback.c */, - 65B35F8C121C261E003EAD18 /* inffast.c */, - 65B35F8D121C261E003EAD18 /* inffast.h */, - 65B35F8E121C261E003EAD18 /* inffixed.h */, - 65B35F8F121C261E003EAD18 /* inflate.c */, - 65B35F90121C261E003EAD18 /* inflate.h */, - 65B35F91121C261E003EAD18 /* inftrees.c */, - 65B35F92121C261E003EAD18 /* inftrees.h */, - 65B35F93121C261E003EAD18 /* make_vms.com */, - 65B35F94121C261E003EAD18 /* Makefile */, - 65B35F95121C261E003EAD18 /* Makefile.in */, - 65B35F96121C261E003EAD18 /* minigzip.c */, - 65B35F97121C261E003EAD18 /* README */, - 65B35F98121C261E003EAD18 /* trees.c */, - 65B35F99121C261E003EAD18 /* trees.h */, - 65B35F9A121C261E003EAD18 /* uncompr.c */, - 65B35F9B121C261E003EAD18 /* zconf.h */, - 65B35F9C121C261E003EAD18 /* zconf.in.h */, - 65B35F9D121C261E003EAD18 /* zlib.3 */, - 65B35F9E121C261E003EAD18 /* zlib.h */, - 65B35F9F121C261E003EAD18 /* zutil.c */, - 65B35FA0121C261E003EAD18 /* zutil.h */, - ); - path = zlib; - sourceTree = ""; - }; - 65B35FA1121C261E003EAD18 /* Build */ = { - isa = PBXGroup; - children = ( - ); - path = Build; - sourceTree = ""; - }; - 65B35FA3121C261E003EAD18 /* geometry */ = { - isa = PBXGroup; - children = ( - 65B35FA4121C261E003EAD18 /* glc_3drep.cpp */, - 65B35FA5121C261E003EAD18 /* glc_3drep.h */, - 65B35FA6121C261E003EAD18 /* glc_arrow.cpp */, - 65B35FA7121C261E003EAD18 /* glc_arrow.h */, - 65B35FA8121C261E003EAD18 /* glc_box.cpp */, - 65B35FA9121C261E003EAD18 /* glc_box.h */, - 65B35FAA121C261E003EAD18 /* glc_bsrep.cpp */, - 65B35FAB121C261E003EAD18 /* glc_bsrep.h */, - 65B35FAC121C261E003EAD18 /* glc_circle.cpp */, - 65B35FAD121C261E003EAD18 /* glc_circle.h */, - 65B35FAE121C261E003EAD18 /* glc_cone.cpp */, - 65B35FAF121C261E003EAD18 /* glc_cone.h */, - 65B35FB0121C261E003EAD18 /* glc_cylinder.cpp */, - 65B35FB1121C261E003EAD18 /* glc_cylinder.h */, - 65B35FB2121C261E003EAD18 /* glc_disc.cpp */, - 65B35FB3121C261E003EAD18 /* glc_disc.h */, - 65B35FB4121C261E003EAD18 /* glc_geometry.cpp */, - 65B35FB5121C261E003EAD18 /* glc_geometry.h */, - 65B35FB6121C261E003EAD18 /* glc_line.cpp */, - 65B35FB7121C261E003EAD18 /* glc_line.h */, - 65B35FB8121C261E003EAD18 /* glc_lod.cpp */, - 65B35FB9121C261E003EAD18 /* glc_lod.h */, - 65B35FBA121C261E003EAD18 /* glc_mesh.cpp */, - 65B35FBB121C261E003EAD18 /* glc_mesh.h */, - 65B35FBC121C261E003EAD18 /* glc_meshdata.cpp */, - 65B35FBD121C261E003EAD18 /* glc_meshdata.h */, - 65B35FBE121C261E003EAD18 /* glc_point.cpp */, - 65B35FBF121C261E003EAD18 /* glc_point.h */, - 65B35FC0121C261E003EAD18 /* glc_pointsprite.cpp */, - 65B35FC1121C261E003EAD18 /* glc_pointsprite.h */, - 65B35FC2121C261E003EAD18 /* glc_polylines.cpp */, - 65B35FC3121C261E003EAD18 /* glc_polylines.h */, - 65B35FC4121C261E003EAD18 /* glc_primitivegroup.cpp */, - 65B35FC5121C261E003EAD18 /* glc_primitivegroup.h */, - 65B35FC6121C261E003EAD18 /* glc_rectangle.cpp */, - 65B35FC7121C261E003EAD18 /* glc_rectangle.h */, - 65B35FC8121C261E003EAD18 /* glc_rep.cpp */, - 65B35FC9121C261E003EAD18 /* glc_rep.h */, - 65B35FCA121C261E003EAD18 /* glc_sphere.cpp */, - 65B35FCB121C261E003EAD18 /* glc_sphere.h */, - 65B35FCC121C261E003EAD18 /* glc_wiredata.cpp */, - 65B35FCD121C261E003EAD18 /* glc_wiredata.h */, - ); - path = geometry; - sourceTree = ""; - }; - 65B35FE7121C261E003EAD18 /* include */ = { - isa = PBXGroup; - children = ( - 65B35FE8121C261E003EAD18 /* GLC_3DRep */, - 65B35FE9121C261E003EAD18 /* GLC_3DViewCollection */, - 65B35FEA121C261E003EAD18 /* GLC_3DViewInstance */, - 65B35FEB121C261E003EAD18 /* GLC_3DWidget */, - 65B35FEC121C261E003EAD18 /* GLC_3DWidgetManager */, - 65B35FED121C261E003EAD18 /* GLC_3DWidgetManagerHandle */, - 65B35FEE121C261E003EAD18 /* GLC_AbstractManipulator */, - 65B35FEF121C261E003EAD18 /* GLC_Arrow */, - 65B35FF0121C261E003EAD18 /* GLC_Attribute */, - 65B35FF1121C261E003EAD18 /* GLC_Axis */, - 65B35FF2121C261E003EAD18 /* GLC_BoundingBox */, - 65B35FF3121C261E003EAD18 /* GLC_Box */, - 65B35FF4121C261E003EAD18 /* GLC_BSRep */, - 65B35FF5121C261E003EAD18 /* GLC_CacheManager */, - 65B35FF6121C261E003EAD18 /* GLC_Camera */, - 65B35FF7121C261E003EAD18 /* GLC_Circle */, - 65B35FF8121C261E003EAD18 /* GLC_Cone */, - 65B35FF9121C261E003EAD18 /* GLC_CuttingPlane */, - 65B35FFA121C261E003EAD18 /* GLC_Cylinder */, - 65B35FFB121C261E003EAD18 /* GLC_Disc */, - 65B35FFC121C261E003EAD18 /* GLC_Exception */, - 65B35FFD121C261E003EAD18 /* GLC_Ext */, - 65B35FFE121C261E003EAD18 /* GLC_Factory */, - 65B35FFF121C261E003EAD18 /* GLC_FileFormatException */, - 65B36000121C261E003EAD18 /* GLC_FlyMover */, - 65B36001121C261E003EAD18 /* GLC_Frustum */, - 65B36002121C261E003EAD18 /* GLC_Geometry */, - 65B36003121C261E003EAD18 /* GLC_GeomTools */, - 65B36004121C261E003EAD18 /* GLC_Global */, - 65B36005121C261E003EAD18 /* GLC_ImagePlane */, - 65B36006121C261E003EAD18 /* GLC_Interpolator */, - 65B36007121C261E003EAD18 /* GLC_Light */, - 65B36008121C261E003EAD18 /* GLC_Line */, - 65B36009121C261E003EAD18 /* GLC_Line3d */, - 65B3600A121C261E003EAD18 /* GLC_Material */, - 65B3600B121C261E003EAD18 /* GLC_Matrix4x4 */, - 65B3600C121C261E003EAD18 /* GLC_Mesh */, - 65B3600D121C261E003EAD18 /* GLC_Mover */, - 65B3600E121C261E003EAD18 /* GLC_MoverController */, - 65B3600F121C261E003EAD18 /* GLC_Object */, - 65B36010121C261E003EAD18 /* GLC_Octree */, - 65B36011121C261E003EAD18 /* GLC_OctreeNode */, - 65B36012121C261E003EAD18 /* GLC_OpenGlException */, - 65B36013121C261E003EAD18 /* GLC_PanMover */, - 65B36014121C261E003EAD18 /* GLC_Plane */, - 65B36015121C261E003EAD18 /* GLC_Point */, - 65B36016121C261E003EAD18 /* GLC_Point2d */, - 65B36017121C261E003EAD18 /* GLC_Point2df */, - 65B36018121C261E003EAD18 /* GLC_Point3d */, - 65B36019121C261E003EAD18 /* GLC_Point3df */, - 65B3601A121C261E003EAD18 /* GLC_Point4d */, - 65B3601B121C261E003EAD18 /* GLC_PointSprite */, - 65B3601C121C261E003EAD18 /* GLC_Polylines */, - 65B3601D121C261E003EAD18 /* GLC_PullManipulator */, - 65B3601E121C261E003EAD18 /* GLC_Rectangle */, - 65B3601F121C261E003EAD18 /* GLC_RenderProperties */, - 65B36020121C261E003EAD18 /* GLC_RenderStatistics */, - 65B36021121C261E003EAD18 /* GLC_Rep */, - 65B36022121C261E003EAD18 /* GLC_RepCrossMover */, - 65B36023121C261E003EAD18 /* GLC_RepFlyMover */, - 65B36024121C261E003EAD18 /* GLC_RepMover */, - 65B36025121C261E003EAD18 /* GLC_RepTrackBallMover */, - 65B36026121C261E003EAD18 /* GLC_RotationManipulator */, - 65B36027121C261E003EAD18 /* GLC_SelectionMaterial */, - 65B36028121C261E003EAD18 /* GLC_Shader */, - 65B36029121C261E003EAD18 /* GLC_SpacePartitioning */, - 65B3602A121C261E003EAD18 /* GLC_Sphere */, - 65B3602B121C261E003EAD18 /* GLC_State */, - 65B3602C121C261E003EAD18 /* GLC_StructInstance */, - 65B3602D121C261E003EAD18 /* GLC_StructOccurence */, - 65B3602E121C261E003EAD18 /* GLC_StructReference */, - 65B3602F121C261E003EAD18 /* GLC_Texture */, - 65B36030121C261E003EAD18 /* GLC_TrackBallMover */, - 65B36031121C261E003EAD18 /* GLC_TurnTableMover */, - 65B36032121C261E003EAD18 /* GLC_Vector2d */, - 65B36033121C261E003EAD18 /* GLC_Vector2df */, - 65B36034121C261E003EAD18 /* GLC_Vector3d */, - 65B36035121C261E003EAD18 /* GLC_Vector3df */, - 65B36036121C261E003EAD18 /* GLC_Vector4d */, - 65B36037121C261E003EAD18 /* GLC_Viewport */, - 65B36038121C261E003EAD18 /* GLC_World */, - 65B36039121C261E003EAD18 /* GLC_WorldTo3dxml */, - 65B3603A121C261E003EAD18 /* GLC_ZoomMover */, - ); - path = include; - sourceTree = ""; - }; - 65B3603B121C261E003EAD18 /* io */ = { - isa = PBXGroup; - children = ( - 65B3603C121C261E003EAD18 /* glc_3dstoworld.cpp */, - 65B3603D121C261E003EAD18 /* glc_3dstoworld.h */, - 65B3603E121C261E003EAD18 /* glc_3dxmltoworld.cpp */, - 65B3603F121C261E003EAD18 /* glc_3dxmltoworld.h */, - 65B36040121C261E003EAD18 /* glc_bsreptoworld.cpp */, - 65B36041121C261E003EAD18 /* glc_bsreptoworld.h */, - 65B36042121C261E003EAD18 /* glc_colladatoworld.cpp */, - 65B36043121C261E003EAD18 /* glc_colladatoworld.h */, - 65B36044121C261E003EAD18 /* glc_objmtlloader.cpp */, - 65B36045121C261E003EAD18 /* glc_objmtlloader.h */, - 65B36046121C261E003EAD18 /* glc_objtoworld.cpp */, - 65B36047121C261E003EAD18 /* glc_objtoworld.h */, - 65B36048121C261E003EAD18 /* glc_offtoworld.cpp */, - 65B36049121C261E003EAD18 /* glc_offtoworld.h */, - 65B3604A121C261E003EAD18 /* glc_stltoworld.cpp */, - 65B3604B121C261E003EAD18 /* glc_stltoworld.h */, - 65B3604C121C261E003EAD18 /* glc_worldto3dxml.cpp */, - 65B3604D121C261E003EAD18 /* glc_worldto3dxml.h */, - ); - path = io; - sourceTree = ""; - }; - 65B3604E121C261E003EAD18 /* maths */ = { - isa = PBXGroup; - children = ( - 65B3604F121C261E003EAD18 /* glc_geomtools.cpp */, - 65B36050121C261E003EAD18 /* glc_geomtools.h */, - 65B36051121C261E003EAD18 /* glc_interpolator.cpp */, - 65B36052121C261E003EAD18 /* glc_interpolator.h */, - 65B36053121C261E003EAD18 /* glc_line3d.cpp */, - 65B36054121C261E003EAD18 /* glc_line3d.h */, - 65B36055121C261E003EAD18 /* glc_matrix4x4.cpp */, - 65B36056121C261E003EAD18 /* glc_matrix4x4.h */, - 65B36057121C261E003EAD18 /* glc_plane.cpp */, - 65B36058121C261E003EAD18 /* glc_plane.h */, - 65B36059121C261E003EAD18 /* glc_utils_maths.h */, - 65B3605A121C261E003EAD18 /* glc_vector2d.h */, - 65B3605B121C261E003EAD18 /* glc_vector2df.h */, - 65B3605C121C261E003EAD18 /* glc_vector3d.h */, - 65B3605D121C261E003EAD18 /* glc_vector3df.h */, - 65B3605E121C261E003EAD18 /* glc_vector4d.cpp */, - 65B3605F121C261E003EAD18 /* glc_vector4d.h */, - ); - path = maths; - sourceTree = ""; - }; - 65B36060121C261E003EAD18 /* sceneGraph */ = { - isa = PBXGroup; - children = ( - 65B36061121C261E003EAD18 /* glc_3dviewcollection.cpp */, - 65B36062121C261E003EAD18 /* glc_3dviewcollection.h */, - 65B36063121C261E003EAD18 /* glc_3dviewinstance.cpp */, - 65B36064121C261E003EAD18 /* glc_3dviewinstance.h */, - 65B36065121C261E003EAD18 /* glc_attributes.cpp */, - 65B36066121C261E003EAD18 /* glc_attributes.h */, - 65B36067121C261E003EAD18 /* glc_octree.cpp */, - 65B36068121C261E003EAD18 /* glc_octree.h */, - 65B36069121C261E003EAD18 /* glc_octreenode.cpp */, - 65B3606A121C261E003EAD18 /* glc_octreenode.h */, - 65B3606B121C261E003EAD18 /* glc_spacepartitioning.cpp */, - 65B3606C121C261E003EAD18 /* glc_spacepartitioning.h */, - 65B3606D121C261E003EAD18 /* glc_structinstance.cpp */, - 65B3606E121C261E003EAD18 /* glc_structinstance.h */, - 65B3606F121C261E003EAD18 /* glc_structoccurence.cpp */, - 65B36070121C261E003EAD18 /* glc_structoccurence.h */, - 65B36071121C261E003EAD18 /* glc_structreference.cpp */, - 65B36072121C261E003EAD18 /* glc_structreference.h */, - 65B36073121C261E003EAD18 /* glc_world.cpp */, - 65B36074121C261E003EAD18 /* glc_world.h */, - 65B36075121C261E003EAD18 /* glc_worldhandle.cpp */, - 65B36076121C261E003EAD18 /* glc_worldhandle.h */, - ); - path = sceneGraph; - sourceTree = ""; - }; - 65B36077121C261E003EAD18 /* shading */ = { - isa = PBXGroup; - children = ( - 65B36078121C261E003EAD18 /* glc_light.cpp */, - 65B36079121C261E003EAD18 /* glc_light.h */, - 65B3607A121C261E003EAD18 /* glc_material.cpp */, - 65B3607B121C261E003EAD18 /* glc_material.h */, - 65B3607C121C261E003EAD18 /* glc_renderproperties.cpp */, - 65B3607D121C261E003EAD18 /* glc_renderproperties.h */, - 65B3607E121C261E003EAD18 /* glc_selectionmaterial.cpp */, - 65B3607F121C261E003EAD18 /* glc_selectionmaterial.h */, - 65B36080121C261E003EAD18 /* glc_shader.cpp */, - 65B36081121C261E003EAD18 /* glc_shader.h */, - 65B36082121C261E003EAD18 /* glc_texture.cpp */, - 65B36083121C261E003EAD18 /* glc_texture.h */, - ); - path = shading; - sourceTree = ""; - }; - 65B36084121C261E003EAD18 /* viewport */ = { - isa = PBXGroup; - children = ( - 65B36085121C261E003EAD18 /* glc_camera.cpp */, - 65B36086121C261E003EAD18 /* glc_camera.h */, - 65B36087121C261E003EAD18 /* glc_flymover.cpp */, - 65B36088121C261E003EAD18 /* glc_flymover.h */, - 65B36089121C261E003EAD18 /* glc_frustum.cpp */, - 65B3608A121C261E003EAD18 /* glc_frustum.h */, - 65B3608B121C261E003EAD18 /* glc_imageplane.cpp */, - 65B3608C121C261E003EAD18 /* glc_imageplane.h */, - 65B3608D121C261E003EAD18 /* glc_mover.cpp */, - 65B3608E121C261E003EAD18 /* glc_mover.h */, - 65B3608F121C261E003EAD18 /* glc_movercontroller.cpp */, - 65B36090121C261E003EAD18 /* glc_movercontroller.h */, - 65B36091121C261E003EAD18 /* glc_panmover.cpp */, - 65B36092121C261E003EAD18 /* glc_panmover.h */, - 65B36093121C261E003EAD18 /* glc_repcrossmover.cpp */, - 65B36094121C261E003EAD18 /* glc_repcrossmover.h */, - 65B36095121C261E003EAD18 /* glc_repflymover.cpp */, - 65B36096121C261E003EAD18 /* glc_repflymover.h */, - 65B36097121C261E003EAD18 /* glc_repmover.cpp */, - 65B36098121C261E003EAD18 /* glc_repmover.h */, - 65B36099121C261E003EAD18 /* glc_reptrackballmover.cpp */, - 65B3609A121C261E003EAD18 /* glc_reptrackballmover.h */, - 65B3609B121C261E003EAD18 /* glc_settargetmover.cpp */, - 65B3609C121C261E003EAD18 /* glc_settargetmover.h */, - 65B3609D121C261E003EAD18 /* glc_trackballmover.cpp */, - 65B3609E121C261E003EAD18 /* glc_trackballmover.h */, - 65B3609F121C261E003EAD18 /* glc_turntablemover.cpp */, - 65B360A0121C261E003EAD18 /* glc_turntablemover.h */, - 65B360A1121C261E003EAD18 /* glc_viewport.cpp */, - 65B360A2121C261E003EAD18 /* glc_viewport.h */, - 65B360A3121C261E003EAD18 /* glc_zoommover.cpp */, - 65B360A4121C261E003EAD18 /* glc_zoommover.h */, - ); - path = viewport; - sourceTree = ""; - }; - 65B360A5121C261E003EAD18 /* libqxt */ = { - isa = PBXGroup; - children = ( - 65B360A6121C261E003EAD18 /* AUTHORS */, - 65B360A7121C261E003EAD18 /* cpl1.0.txt */, - 65B360A8121C261E003EAD18 /* lgpl-2.1.txt */, - 65B360A9121C261E003EAD18 /* libqxt.pri */, - 65B360AA121C261E003EAD18 /* libqxt.pro */, - 65B360AB121C261E003EAD18 /* LICENSE */, - 65B360AC121C261E003EAD18 /* README */, - 65B360AD121C261E003EAD18 /* src */, - 65B36327121C261F003EAD18 /* translations */, - ); - path = libqxt; - sourceTree = ""; - }; - 65B360AD121C261E003EAD18 /* src */ = { - isa = PBXGroup; - children = ( - 65B360AE121C261E003EAD18 /* berkeley */, - 65B360B8121C261E003EAD18 /* core */, - 65B36127121C261F003EAD18 /* designer */, - 65B36152121C261F003EAD18 /* gui */, - 65B362CE121C261F003EAD18 /* network */, - 65B362EA121C261F003EAD18 /* qxtbase.pri */, - 65B362EB121C261F003EAD18 /* qxtlibs.pri */, - 65B362EC121C261F003EAD18 /* sql */, - 65B362F5121C261F003EAD18 /* web */, - 65B36313121C261F003EAD18 /* zeroconf */, - ); - path = src; - sourceTree = ""; - }; - 65B360AE121C261E003EAD18 /* berkeley */ = { - isa = PBXGroup; - children = ( - 65B360AF121C261E003EAD18 /* berkeley.pri */, - 65B360B0121C261E003EAD18 /* berkeley.pro */, - 65B360B1121C261E003EAD18 /* qxtbdb.cpp */, - 65B360B2121C261E003EAD18 /* qxtbdb.h */, - 65B360B3121C261E003EAD18 /* qxtbdbhash.cpp */, - 65B360B4121C261E003EAD18 /* qxtbdbhash.h */, - 65B360B5121C261E003EAD18 /* qxtbdbtree.cpp */, - 65B360B6121C261E003EAD18 /* qxtbdbtree.h */, - 65B360B7121C261E003EAD18 /* qxtberkeley.h */, - ); - path = berkeley; - sourceTree = ""; - }; - 65B360B8121C261E003EAD18 /* core */ = { - isa = PBXGroup; - children = ( - 65B360B9121C261E003EAD18 /* core.pri */, - 65B360BA121C261E003EAD18 /* core.pro */, - 65B360BB121C261E003EAD18 /* logengines */, - 65B360C7121C261E003EAD18 /* qxtabstractconnectionmanager.cpp */, - 65B360C8121C261E003EAD18 /* qxtabstractconnectionmanager.h */, - 65B360C9121C261E003EAD18 /* qxtabstractsignalserializer.h */, - 65B360CA121C261E003EAD18 /* qxtalgorithms.h */, - 65B360CB121C261E003EAD18 /* qxtboundcfunction.h */, - 65B360CC121C261E003EAD18 /* qxtboundfunction.h */, - 65B360CD121C261E003EAD18 /* qxtboundfunctionbase.h */, - 65B360CE121C261E003EAD18 /* qxtcommandoptions.cpp */, - 65B360CF121C261E003EAD18 /* qxtcommandoptions.h */, - 65B360D0121C261E003EAD18 /* qxtcore.h */, - 65B360D1121C261E003EAD18 /* qxtcsvmodel.cpp */, - 65B360D2121C261E003EAD18 /* qxtcsvmodel.h */, - 65B360D3121C261E003EAD18 /* qxtdaemon.cpp */, - 65B360D4121C261E003EAD18 /* qxtdaemon.h */, - 65B360D5121C261E003EAD18 /* qxtdatastreamsignalserializer.cpp */, - 65B360D6121C261E003EAD18 /* qxtdatastreamsignalserializer.h */, - 65B360D7121C261E003EAD18 /* qxtdeplex.cpp */, - 65B360D8121C261E003EAD18 /* qxtdeplex.h */, - 65B360D9121C261E003EAD18 /* qxtdeplex_p.h */, - 65B360DA121C261E003EAD18 /* qxterror.cpp */, - 65B360DB121C261E003EAD18 /* qxterror.h */, - 65B360DC121C261E003EAD18 /* qxtfifo.cpp */, - 65B360DD121C261E003EAD18 /* qxtfifo.h */, - 65B360DE121C261E003EAD18 /* qxtfilelock.cpp */, - 65B360DF121C261E003EAD18 /* qxtfilelock.h */, - 65B360E0121C261E003EAD18 /* qxtfilelock_p.h */, - 65B360E1121C261E003EAD18 /* qxtfilelock_unix.cpp */, - 65B360E2121C261E003EAD18 /* qxtfilelock_win.cpp */, - 65B360E3121C261E003EAD18 /* qxtglobal.cpp */, - 65B360E4121C261E003EAD18 /* qxtglobal.h */, - 65B360E5121C261E003EAD18 /* qxthmac.cpp */, - 65B360E6121C261E003EAD18 /* qxthmac.h */, - 65B360E7121C261E003EAD18 /* qxtjob.cpp */, - 65B360E8121C261E003EAD18 /* qxtjob.h */, - 65B360E9121C261E003EAD18 /* qxtjob_p.h */, - 65B360EA121C261E003EAD18 /* qxtjson.cpp */, - 65B360EB121C261E003EAD18 /* qxtjson.h */, - 65B360EC121C261E003EAD18 /* qxtlinesocket.cpp */, - 65B360ED121C261E003EAD18 /* qxtlinesocket.h */, - 65B360EE121C261E003EAD18 /* qxtlinesocket_p.h */, - 65B360EF121C261E003EAD18 /* qxtlinkedtree.cpp */, - 65B360F0121C261E003EAD18 /* qxtlinkedtree.h */, - 65B360F1121C261E003EAD18 /* qxtlocale.cpp */, - 65B360F2121C261E003EAD18 /* qxtlocale.h */, - 65B360F3121C261E003EAD18 /* qxtlocale_data_p.h */, - 65B360F4121C261E003EAD18 /* qxtlogger.cpp */, - 65B360F5121C261E003EAD18 /* qxtlogger.h */, - 65B360F6121C261E003EAD18 /* qxtlogger_p.h */, - 65B360F7121C261E003EAD18 /* qxtloggerengine.cpp */, - 65B360F8121C261E003EAD18 /* qxtloggerengine.h */, - 65B360F9121C261E003EAD18 /* qxtlogstream.cpp */, - 65B360FA121C261E003EAD18 /* qxtlogstream.h */, - 65B360FB121C261E003EAD18 /* qxtlogstream_p.h */, - 65B360FC121C261E003EAD18 /* qxtmetaobject.cpp */, - 65B360FD121C261E003EAD18 /* qxtmetaobject.h */, - 65B360FE121C261E003EAD18 /* qxtmetatype.h */, - 65B360FF121C261E003EAD18 /* qxtmodelserializer.cpp */, - 65B36100121C261E003EAD18 /* qxtmodelserializer.h */, - 65B36101121C261E003EAD18 /* qxtmultisignalwaiter.cpp */, - 65B36102121C261E003EAD18 /* qxtmultisignalwaiter.h */, - 65B36103121C261E003EAD18 /* qxtnamespace.h */, - 65B36104121C261F003EAD18 /* qxtnull.cpp */, - 65B36105121C261F003EAD18 /* qxtnull.h */, - 65B36106121C261F003EAD18 /* qxtnullable.h */, - 65B36107121C261F003EAD18 /* qxtpairlist.h */, - 65B36108121C261F003EAD18 /* qxtpimpl.h */, - 65B36109121C261F003EAD18 /* qxtpipe.cpp */, - 65B3610A121C261F003EAD18 /* qxtpipe.h */, - 65B3610B121C261F003EAD18 /* qxtpipe_p.h */, - 65B3610C121C261F003EAD18 /* qxtpointerlist.cpp */, - 65B3610D121C261F003EAD18 /* qxtpointerlist.h */, - 65B3610E121C261F003EAD18 /* qxtrpcservice.cpp */, - 65B3610F121C261F003EAD18 /* qxtrpcservice.h */, - 65B36110121C261F003EAD18 /* qxtrpcservice_p.h */, - 65B36111121C261F003EAD18 /* qxtserialdevice.cpp */, - 65B36112121C261F003EAD18 /* qxtserialdevice.h */, - 65B36113121C261F003EAD18 /* qxtserialdevice_p.h */, - 65B36114121C261F003EAD18 /* qxtserialdevice_unix.cpp */, - 65B36115121C261F003EAD18 /* qxtsharedprivate.h */, - 65B36116121C261F003EAD18 /* qxtsignalgroup.cpp */, - 65B36117121C261F003EAD18 /* qxtsignalgroup.h */, - 65B36118121C261F003EAD18 /* qxtsignalwaiter.cpp */, - 65B36119121C261F003EAD18 /* qxtsignalwaiter.h */, - 65B3611A121C261F003EAD18 /* qxtslotjob.cpp */, - 65B3611B121C261F003EAD18 /* qxtslotjob.h */, - 65B3611C121C261F003EAD18 /* qxtslotjob_p.h */, - 65B3611D121C261F003EAD18 /* qxtslotmapper.cpp */, - 65B3611E121C261F003EAD18 /* qxtslotmapper.h */, - 65B3611F121C261F003EAD18 /* qxtstdio.cpp */, - 65B36120121C261F003EAD18 /* qxtstdio.h */, - 65B36121121C261F003EAD18 /* qxtstdio_p.h */, - 65B36122121C261F003EAD18 /* qxtstdstreambufdevice.cpp */, - 65B36123121C261F003EAD18 /* qxtstdstreambufdevice.h */, - 65B36124121C261F003EAD18 /* qxttimer.cpp */, - 65B36125121C261F003EAD18 /* qxttimer.h */, - 65B36126121C261F003EAD18 /* qxttypelist.h */, - ); - path = core; - sourceTree = ""; - }; - 65B360BB121C261E003EAD18 /* logengines */ = { - isa = PBXGroup; - children = ( - 65B360BC121C261E003EAD18 /* logengines.pri */, - 65B360BD121C261E003EAD18 /* qxtabstractfileloggerengine.cpp */, - 65B360BE121C261E003EAD18 /* qxtabstractfileloggerengine.h */, - 65B360BF121C261E003EAD18 /* qxtabstractiologgerengine.cpp */, - 65B360C0121C261E003EAD18 /* qxtabstractiologgerengine.h */, - 65B360C1121C261E003EAD18 /* qxtbasicfileloggerengine.cpp */, - 65B360C2121C261E003EAD18 /* qxtbasicfileloggerengine.h */, - 65B360C3121C261E003EAD18 /* qxtbasicstdloggerengine.cpp */, - 65B360C4121C261E003EAD18 /* qxtbasicstdloggerengine.h */, - 65B360C5121C261E003EAD18 /* qxtxmlfileloggerengine.cpp */, - 65B360C6121C261E003EAD18 /* qxtxmlfileloggerengine.h */, - ); - path = logengines; - sourceTree = ""; - }; - 65B36127121C261F003EAD18 /* designer */ = { - isa = PBXGroup; - children = ( - 65B36128121C261F003EAD18 /* designer.pri */, - 65B36129121C261F003EAD18 /* designer.pro */, - 65B3612A121C261F003EAD18 /* Makefile */, - 65B3612B121C261F003EAD18 /* qxtbasespinboxplugin.cpp */, - 65B3612C121C261F003EAD18 /* qxtbasespinboxplugin.h */, - 65B3612D121C261F003EAD18 /* qxtcheckcomboboxplugin.cpp */, - 65B3612E121C261F003EAD18 /* qxtcheckcomboboxplugin.h */, - 65B3612F121C261F003EAD18 /* qxtcountrycomboboxplugin.cpp */, - 65B36130121C261F003EAD18 /* qxtcountrycomboboxplugin.h */, - 65B36131121C261F003EAD18 /* qxtdesignerplugin.cpp */, - 65B36132121C261F003EAD18 /* qxtdesignerplugin.h */, - 65B36133121C261F003EAD18 /* qxtdesignerplugins.cpp */, - 65B36134121C261F003EAD18 /* qxtdesignerplugins.h */, - 65B36135121C261F003EAD18 /* qxtflowviewplugin.cpp */, - 65B36136121C261F003EAD18 /* qxtflowviewplugin.h */, - 65B36137121C261F003EAD18 /* qxtgroupboxplugin.cpp */, - 65B36138121C261F003EAD18 /* qxtgroupboxplugin.h */, - 65B36139121C261F003EAD18 /* qxtlabelplugin.cpp */, - 65B3613A121C261F003EAD18 /* qxtlabelplugin.h */, - 65B3613B121C261F003EAD18 /* qxtlanguagecomboboxplugin.cpp */, - 65B3613C121C261F003EAD18 /* qxtlanguagecomboboxplugin.h */, - 65B3613D121C261F003EAD18 /* qxtletterboxwidgetplugin.cpp */, - 65B3613E121C261F003EAD18 /* qxtletterboxwidgetplugin.h */, - 65B3613F121C261F003EAD18 /* qxtlineeditplugin.cpp */, - 65B36140121C261F003EAD18 /* qxtlineeditplugin.h */, - 65B36141121C261F003EAD18 /* qxtlistwidgetplugin.cpp */, - 65B36142121C261F003EAD18 /* qxtlistwidgetplugin.h */, - 65B36143121C261F003EAD18 /* qxtprogresslabelplugin.cpp */, - 65B36144121C261F003EAD18 /* qxtprogresslabelplugin.h */, - 65B36145121C261F003EAD18 /* qxtpushbuttonplugin.cpp */, - 65B36146121C261F003EAD18 /* qxtpushbuttonplugin.h */, - 65B36147121C261F003EAD18 /* qxtspansliderplugin.cpp */, - 65B36148121C261F003EAD18 /* qxtspansliderplugin.h */, - 65B36149121C261F003EAD18 /* qxtstarsplugin.cpp */, - 65B3614A121C261F003EAD18 /* qxtstarsplugin.h */, - 65B3614B121C261F003EAD18 /* qxtstringspinboxplugin.cpp */, - 65B3614C121C261F003EAD18 /* qxtstringspinboxplugin.h */, - 65B3614D121C261F003EAD18 /* qxttablewidgetplugin.cpp */, - 65B3614E121C261F003EAD18 /* qxttablewidgetplugin.h */, - 65B3614F121C261F003EAD18 /* qxttreewidgetplugin.cpp */, - 65B36150121C261F003EAD18 /* qxttreewidgetplugin.h */, - 65B36151121C261F003EAD18 /* resources.qrc */, - ); - path = designer; - sourceTree = ""; - }; - 65B36152121C261F003EAD18 /* gui */ = { - isa = PBXGroup; - children = ( - 65B36153121C261F003EAD18 /* gui.pri */, - 65B36154121C261F003EAD18 /* gui.pro */, - 65B36155121C261F003EAD18 /* Makefile */, - 65B36156121C261F003EAD18 /* qxtapplication.cpp */, - 65B36157121C261F003EAD18 /* qxtapplication.h */, - 65B36158121C261F003EAD18 /* qxtapplication_mac.cpp */, - 65B36159121C261F003EAD18 /* qxtapplication_p.h */, - 65B3615A121C261F003EAD18 /* qxtapplication_win.cpp */, - 65B3615B121C261F003EAD18 /* qxtapplication_x11.cpp */, - 65B3615C121C261F003EAD18 /* qxtbasespinbox.cpp */, - 65B3615D121C261F003EAD18 /* qxtbasespinbox.h */, - 65B3615E121C261F003EAD18 /* qxtcheckcombobox.cpp */, - 65B3615F121C261F003EAD18 /* qxtcheckcombobox.h */, - 65B36160121C261F003EAD18 /* qxtcheckcombobox_p.h */, - 65B36161121C261F003EAD18 /* qxtconfigdialog.cpp */, - 65B36162121C261F003EAD18 /* qxtconfigdialog.h */, - 65B36163121C261F003EAD18 /* qxtconfigdialog_p.h */, - 65B36164121C261F003EAD18 /* qxtconfigwidget.cpp */, - 65B36165121C261F003EAD18 /* qxtconfigwidget.h */, - 65B36166121C261F003EAD18 /* qxtconfigwidget_p.h */, - 65B36167121C261F003EAD18 /* qxtconfirmationmessage.cpp */, - 65B36168121C261F003EAD18 /* qxtconfirmationmessage.h */, - 65B36169121C261F003EAD18 /* qxtcountrycombobox.cpp */, - 65B3616A121C261F003EAD18 /* qxtcountrycombobox.h */, - 65B3616B121C261F003EAD18 /* qxtcountrycombobox_p.h */, - 65B3616C121C261F003EAD18 /* qxtcountrymodel.cpp */, - 65B3616D121C261F003EAD18 /* qxtcountrymodel.h */, - 65B3616E121C261F003EAD18 /* qxtcountrymodel_p.h */, - 65B3616F121C261F003EAD18 /* qxtcrumbview.cpp */, - 65B36170121C261F003EAD18 /* qxtcrumbview.h */, - 65B36171121C261F003EAD18 /* qxtcrumbview_p.h */, - 65B36172121C261F003EAD18 /* qxtfilterdialog.cpp */, - 65B36173121C261F003EAD18 /* qxtfilterdialog.h */, - 65B36174121C261F003EAD18 /* qxtfilterdialog_p.h */, - 65B36175121C261F003EAD18 /* qxtflowview.cpp */, - 65B36176121C261F003EAD18 /* qxtflowview.h */, - 65B36177121C261F003EAD18 /* qxtflowview_p.cpp */, - 65B36178121C261F003EAD18 /* qxtflowview_p.h */, - 65B36179121C261F003EAD18 /* qxtglobalshortcut.cpp */, - 65B3617A121C261F003EAD18 /* qxtglobalshortcut.h */, - 65B3617B121C261F003EAD18 /* qxtglobalshortcut_mac.cpp */, - 65B3617C121C261F003EAD18 /* qxtglobalshortcut_p.h */, - 65B3617D121C261F003EAD18 /* qxtglobalshortcut_win.cpp */, - 65B3617E121C261F003EAD18 /* qxtglobalshortcut_x11.cpp */, - 65B3617F121C261F003EAD18 /* qxtgroupbox.cpp */, - 65B36180121C261F003EAD18 /* qxtgroupbox.h */, - 65B36181121C261F003EAD18 /* qxtgui.h */, - 65B36182121C261F003EAD18 /* qxtheaderview.cpp */, - 65B36183121C261F003EAD18 /* qxtheaderview.h */, - 65B36184121C261F003EAD18 /* qxtitemdelegate.cpp */, - 65B36185121C261F003EAD18 /* qxtitemdelegate.h */, - 65B36186121C261F003EAD18 /* qxtitemdelegate_p.h */, - 65B36187121C261F003EAD18 /* qxtitemeditorcreator.h */, - 65B36188121C261F003EAD18 /* qxtitemeditorcreatorbase.h */, - 65B36189121C261F003EAD18 /* qxtlabel.cpp */, - 65B3618A121C261F003EAD18 /* qxtlabel.h */, - 65B3618B121C261F003EAD18 /* qxtlanguagecombobox.cpp */, - 65B3618C121C261F003EAD18 /* qxtlanguagecombobox.h */, - 65B3618D121C261F003EAD18 /* qxtlanguagecombobox_p.h */, - 65B3618E121C261F003EAD18 /* qxtletterboxwidget.cpp */, - 65B3618F121C261F003EAD18 /* qxtletterboxwidget.h */, - 65B36190121C261F003EAD18 /* qxtletterboxwidget_p.h */, - 65B36191121C261F003EAD18 /* qxtlineedit.cpp */, - 65B36192121C261F003EAD18 /* qxtlineedit.h */, - 65B36193121C261F003EAD18 /* qxtlistwidget.cpp */, - 65B36194121C261F003EAD18 /* qxtlistwidget.h */, - 65B36195121C261F003EAD18 /* qxtlistwidget_p.h */, - 65B36196121C261F003EAD18 /* qxtlistwidgetitem.cpp */, - 65B36197121C261F003EAD18 /* qxtlistwidgetitem.h */, - 65B36198121C261F003EAD18 /* qxtlookuplineedit.cpp */, - 65B36199121C261F003EAD18 /* qxtlookuplineedit.h */, - 65B3619A121C261F003EAD18 /* qxtlookuplineedit_p.h */, - 65B3619B121C261F003EAD18 /* qxtnativeeventfilter.h */, - 65B3619C121C261F003EAD18 /* qxtprogresslabel.cpp */, - 65B3619D121C261F003EAD18 /* qxtprogresslabel.h */, - 65B3619E121C261F003EAD18 /* qxtproxystyle.cpp */, - 65B3619F121C261F003EAD18 /* qxtproxystyle.h */, - 65B361A0121C261F003EAD18 /* qxtpushbutton.cpp */, - 65B361A1121C261F003EAD18 /* qxtpushbutton.h */, - 65B361A2121C261F003EAD18 /* qxtscheduleheaderwidget.cpp */, - 65B361A3121C261F003EAD18 /* qxtscheduleheaderwidget.h */, - 65B361A4121C261F003EAD18 /* qxtscheduleitemdelegate.cpp */, - 65B361A5121C261F003EAD18 /* qxtscheduleitemdelegate.h */, - 65B361A6121C261F003EAD18 /* qxtscheduleview.cpp */, - 65B361A7121C261F003EAD18 /* qxtscheduleview.h */, - 65B361A8121C261F003EAD18 /* qxtscheduleview_p.cpp */, - 65B361A9121C261F003EAD18 /* qxtscheduleview_p.h */, - 65B361AA121C261F003EAD18 /* qxtscheduleviewheadermodel_p.cpp */, - 65B361AB121C261F003EAD18 /* qxtscheduleviewheadermodel_p.h */, - 65B361AC121C261F003EAD18 /* qxtscreen.cpp */, - 65B361AD121C261F003EAD18 /* qxtscreen.h */, - 65B361AE121C261F003EAD18 /* qxtscreen_p.h */, - 65B361AF121C261F003EAD18 /* qxtscreen_win.cpp */, - 65B361B0121C261F003EAD18 /* qxtscreen_x11.cpp */, - 65B361B1121C261F003EAD18 /* qxtsortfilterproxymodel.cpp */, - 65B361B2121C261F003EAD18 /* qxtsortfilterproxymodel.h */, - 65B361B3121C261F003EAD18 /* qxtspanslider.cpp */, - 65B361B4121C261F003EAD18 /* qxtspanslider.h */, - 65B361B5121C261F003EAD18 /* qxtspanslider_p.h */, - 65B361B6121C261F003EAD18 /* qxtstandarditemeditorcreator.h */, - 65B361B7121C261F003EAD18 /* qxtstars.cpp */, - 65B361B8121C261F003EAD18 /* qxtstars.h */, - 65B361B9121C261F003EAD18 /* qxtstringspinbox.cpp */, - 65B361BA121C261F003EAD18 /* qxtstringspinbox.h */, - 65B361BB121C261F003EAD18 /* qxtstringvalidator.cpp */, - 65B361BC121C261F003EAD18 /* qxtstringvalidator.h */, - 65B361BD121C261F003EAD18 /* qxtstringvalidator_p.h */, - 65B361BE121C261F003EAD18 /* qxtstyleoptionscheduleviewitem.cpp */, - 65B361BF121C261F003EAD18 /* qxtstyleoptionscheduleviewitem.h */, - 65B361C0121C261F003EAD18 /* qxttablewidget.cpp */, - 65B361C1121C261F003EAD18 /* qxttablewidget.h */, - 65B361C2121C261F003EAD18 /* qxttablewidget_p.h */, - 65B361C3121C261F003EAD18 /* qxttablewidgetitem.cpp */, - 65B361C4121C261F003EAD18 /* qxttablewidgetitem.h */, - 65B361C5121C261F003EAD18 /* qxttabwidget.cpp */, - 65B361C6121C261F003EAD18 /* qxttabwidget.h */, - 65B361C7121C261F003EAD18 /* qxttabwidget_p.h */, - 65B361C8121C261F003EAD18 /* qxttooltip.cpp */, - 65B361C9121C261F003EAD18 /* qxttooltip.h */, - 65B361CA121C261F003EAD18 /* qxttooltip_p.h */, - 65B361CB121C261F003EAD18 /* qxttreewidget.cpp */, - 65B361CC121C261F003EAD18 /* qxttreewidget.h */, - 65B361CD121C261F003EAD18 /* qxttreewidget_p.h */, - 65B361CE121C261F003EAD18 /* qxttreewidgetitem.cpp */, - 65B361CF121C261F003EAD18 /* qxttreewidgetitem.h */, - 65B361D0121C261F003EAD18 /* qxtwindowsystem.cpp */, - 65B361D1121C261F003EAD18 /* qxtwindowsystem.h */, - 65B361D2121C261F003EAD18 /* qxtwindowsystem_win.cpp */, - 65B361D3121C261F003EAD18 /* qxtwindowsystem_x11.cpp */, - 65B361D4121C261F003EAD18 /* resources */, - 65B362CD121C261F003EAD18 /* resources.qrc */, - ); - path = gui; - sourceTree = ""; - }; - 65B361D4121C261F003EAD18 /* resources */ = { - isa = PBXGroup; - children = ( - 65B361D5121C261F003EAD18 /* flags */, - ); - path = resources; - sourceTree = ""; - }; - 65B361D5121C261F003EAD18 /* flags */ = { - isa = PBXGroup; - children = ( - 65B361D6121C261F003EAD18 /* AD.png */, - 65B361D7121C261F003EAD18 /* AE.png */, - 65B361D8121C261F003EAD18 /* AF.png */, - 65B361D9121C261F003EAD18 /* AG.png */, - 65B361DA121C261F003EAD18 /* AI.png */, - 65B361DB121C261F003EAD18 /* AL.png */, - 65B361DC121C261F003EAD18 /* AM.png */, - 65B361DD121C261F003EAD18 /* AN.png */, - 65B361DE121C261F003EAD18 /* AO.png */, - 65B361DF121C261F003EAD18 /* AQ.png */, - 65B361E0121C261F003EAD18 /* AR.png */, - 65B361E1121C261F003EAD18 /* AS.png */, - 65B361E2121C261F003EAD18 /* AT.png */, - 65B361E3121C261F003EAD18 /* AU.png */, - 65B361E4121C261F003EAD18 /* AW.png */, - 65B361E5121C261F003EAD18 /* AX.png */, - 65B361E6121C261F003EAD18 /* AZ.png */, - 65B361E7121C261F003EAD18 /* BA.png */, - 65B361E8121C261F003EAD18 /* BB.png */, - 65B361E9121C261F003EAD18 /* BD.png */, - 65B361EA121C261F003EAD18 /* BE.png */, - 65B361EB121C261F003EAD18 /* BF.png */, - 65B361EC121C261F003EAD18 /* BG.png */, - 65B361ED121C261F003EAD18 /* BH.png */, - 65B361EE121C261F003EAD18 /* BI.png */, - 65B361EF121C261F003EAD18 /* BJ.png */, - 65B361F0121C261F003EAD18 /* BM.png */, - 65B361F1121C261F003EAD18 /* BN.png */, - 65B361F2121C261F003EAD18 /* BO.png */, - 65B361F3121C261F003EAD18 /* BR.png */, - 65B361F4121C261F003EAD18 /* BS.png */, - 65B361F5121C261F003EAD18 /* BT.png */, - 65B361F6121C261F003EAD18 /* BV.png */, - 65B361F7121C261F003EAD18 /* BW.png */, - 65B361F8121C261F003EAD18 /* BY.png */, - 65B361F9121C261F003EAD18 /* BZ.png */, - 65B361FA121C261F003EAD18 /* C.png */, - 65B361FB121C261F003EAD18 /* CA.png */, - 65B361FC121C261F003EAD18 /* CC.png */, - 65B361FD121C261F003EAD18 /* CD.png */, - 65B361FE121C261F003EAD18 /* CF.png */, - 65B361FF121C261F003EAD18 /* CG.png */, - 65B36200121C261F003EAD18 /* CH.png */, - 65B36201121C261F003EAD18 /* CI.png */, - 65B36202121C261F003EAD18 /* CK.png */, - 65B36203121C261F003EAD18 /* CL.png */, - 65B36204121C261F003EAD18 /* CM.png */, - 65B36205121C261F003EAD18 /* CN.png */, - 65B36206121C261F003EAD18 /* CO.png */, - 65B36207121C261F003EAD18 /* CR.png */, - 65B36208121C261F003EAD18 /* CS.png */, - 65B36209121C261F003EAD18 /* CU.png */, - 65B3620A121C261F003EAD18 /* CV.png */, - 65B3620B121C261F003EAD18 /* CX.png */, - 65B3620C121C261F003EAD18 /* CY.png */, - 65B3620D121C261F003EAD18 /* CZ.png */, - 65B3620E121C261F003EAD18 /* DE.png */, - 65B3620F121C261F003EAD18 /* DJ.png */, - 65B36210121C261F003EAD18 /* DK.png */, - 65B36211121C261F003EAD18 /* DM.png */, - 65B36212121C261F003EAD18 /* DO.png */, - 65B36213121C261F003EAD18 /* DZ.png */, - 65B36214121C261F003EAD18 /* EC.png */, - 65B36215121C261F003EAD18 /* EE.png */, - 65B36216121C261F003EAD18 /* EG.png */, - 65B36217121C261F003EAD18 /* EH.png */, - 65B36218121C261F003EAD18 /* ER.png */, - 65B36219121C261F003EAD18 /* ES.png */, - 65B3621A121C261F003EAD18 /* ET.png */, - 65B3621B121C261F003EAD18 /* FI.png */, - 65B3621C121C261F003EAD18 /* FJ.png */, - 65B3621D121C261F003EAD18 /* FK.png */, - 65B3621E121C261F003EAD18 /* FM.png */, - 65B3621F121C261F003EAD18 /* FO.png */, - 65B36220121C261F003EAD18 /* FR.png */, - 65B36221121C261F003EAD18 /* FX.png */, - 65B36222121C261F003EAD18 /* GA.png */, - 65B36223121C261F003EAD18 /* GB.png */, - 65B36224121C261F003EAD18 /* GD.png */, - 65B36225121C261F003EAD18 /* GE.png */, - 65B36226121C261F003EAD18 /* GF.png */, - 65B36227121C261F003EAD18 /* GG.png */, - 65B36228121C261F003EAD18 /* GH.png */, - 65B36229121C261F003EAD18 /* GI.png */, - 65B3622A121C261F003EAD18 /* GL.png */, - 65B3622B121C261F003EAD18 /* GM.png */, - 65B3622C121C261F003EAD18 /* GN.png */, - 65B3622D121C261F003EAD18 /* GP.png */, - 65B3622E121C261F003EAD18 /* GQ.png */, - 65B3622F121C261F003EAD18 /* GR.png */, - 65B36230121C261F003EAD18 /* GS.png */, - 65B36231121C261F003EAD18 /* GT.png */, - 65B36232121C261F003EAD18 /* GU.png */, - 65B36233121C261F003EAD18 /* GW.png */, - 65B36234121C261F003EAD18 /* GY.png */, - 65B36235121C261F003EAD18 /* HK.png */, - 65B36236121C261F003EAD18 /* HM.png */, - 65B36237121C261F003EAD18 /* HN.png */, - 65B36238121C261F003EAD18 /* HR.png */, - 65B36239121C261F003EAD18 /* HT.png */, - 65B3623A121C261F003EAD18 /* HU.png */, - 65B3623B121C261F003EAD18 /* ID.png */, - 65B3623C121C261F003EAD18 /* IE.png */, - 65B3623D121C261F003EAD18 /* IL.png */, - 65B3623E121C261F003EAD18 /* IM.png */, - 65B3623F121C261F003EAD18 /* IN.png */, - 65B36240121C261F003EAD18 /* IO.png */, - 65B36241121C261F003EAD18 /* IQ.png */, - 65B36242121C261F003EAD18 /* IR.png */, - 65B36243121C261F003EAD18 /* IS.png */, - 65B36244121C261F003EAD18 /* IT.png */, - 65B36245121C261F003EAD18 /* JE.png */, - 65B36246121C261F003EAD18 /* JM.png */, - 65B36247121C261F003EAD18 /* JO.png */, - 65B36248121C261F003EAD18 /* JP.png */, - 65B36249121C261F003EAD18 /* KE.png */, - 65B3624A121C261F003EAD18 /* KG.png */, - 65B3624B121C261F003EAD18 /* KH.png */, - 65B3624C121C261F003EAD18 /* KI.png */, - 65B3624D121C261F003EAD18 /* KM.png */, - 65B3624E121C261F003EAD18 /* KN.png */, - 65B3624F121C261F003EAD18 /* KP.png */, - 65B36250121C261F003EAD18 /* KR.png */, - 65B36251121C261F003EAD18 /* KW.png */, - 65B36252121C261F003EAD18 /* KY.png */, - 65B36253121C261F003EAD18 /* KZ.png */, - 65B36254121C261F003EAD18 /* LA.png */, - 65B36255121C261F003EAD18 /* LB.png */, - 65B36256121C261F003EAD18 /* LC.png */, - 65B36257121C261F003EAD18 /* LI.png */, - 65B36258121C261F003EAD18 /* LK.png */, - 65B36259121C261F003EAD18 /* LR.png */, - 65B3625A121C261F003EAD18 /* LS.png */, - 65B3625B121C261F003EAD18 /* LT.png */, - 65B3625C121C261F003EAD18 /* LU.png */, - 65B3625D121C261F003EAD18 /* LV.png */, - 65B3625E121C261F003EAD18 /* LY.png */, - 65B3625F121C261F003EAD18 /* MA.png */, - 65B36260121C261F003EAD18 /* MC.png */, - 65B36261121C261F003EAD18 /* MD.png */, - 65B36262121C261F003EAD18 /* ME.png */, - 65B36263121C261F003EAD18 /* MG.png */, - 65B36264121C261F003EAD18 /* MH.png */, - 65B36265121C261F003EAD18 /* MK.png */, - 65B36266121C261F003EAD18 /* ML.png */, - 65B36267121C261F003EAD18 /* MM.png */, - 65B36268121C261F003EAD18 /* MN.png */, - 65B36269121C261F003EAD18 /* MO.png */, - 65B3626A121C261F003EAD18 /* MP.png */, - 65B3626B121C261F003EAD18 /* MQ.png */, - 65B3626C121C261F003EAD18 /* MR.png */, - 65B3626D121C261F003EAD18 /* MS.png */, - 65B3626E121C261F003EAD18 /* MT.png */, - 65B3626F121C261F003EAD18 /* MU.png */, - 65B36270121C261F003EAD18 /* MV.png */, - 65B36271121C261F003EAD18 /* MW.png */, - 65B36272121C261F003EAD18 /* MX.png */, - 65B36273121C261F003EAD18 /* MY.png */, - 65B36274121C261F003EAD18 /* MZ.png */, - 65B36275121C261F003EAD18 /* NA.png */, - 65B36276121C261F003EAD18 /* NC.png */, - 65B36277121C261F003EAD18 /* NE.png */, - 65B36278121C261F003EAD18 /* NF.png */, - 65B36279121C261F003EAD18 /* NG.png */, - 65B3627A121C261F003EAD18 /* NI.png */, - 65B3627B121C261F003EAD18 /* NL.png */, - 65B3627C121C261F003EAD18 /* NO.png */, - 65B3627D121C261F003EAD18 /* NP.png */, - 65B3627E121C261F003EAD18 /* NR.png */, - 65B3627F121C261F003EAD18 /* NU.png */, - 65B36280121C261F003EAD18 /* NZ.png */, - 65B36281121C261F003EAD18 /* OM.png */, - 65B36282121C261F003EAD18 /* PA.png */, - 65B36283121C261F003EAD18 /* PE.png */, - 65B36284121C261F003EAD18 /* PF.png */, - 65B36285121C261F003EAD18 /* PG.png */, - 65B36286121C261F003EAD18 /* PH.png */, - 65B36287121C261F003EAD18 /* PK.png */, - 65B36288121C261F003EAD18 /* PL.png */, - 65B36289121C261F003EAD18 /* PM.png */, - 65B3628A121C261F003EAD18 /* PN.png */, - 65B3628B121C261F003EAD18 /* PR.png */, - 65B3628C121C261F003EAD18 /* PS.png */, - 65B3628D121C261F003EAD18 /* PT.png */, - 65B3628E121C261F003EAD18 /* PW.png */, - 65B3628F121C261F003EAD18 /* PY.png */, - 65B36290121C261F003EAD18 /* QA.png */, - 65B36291121C261F003EAD18 /* RE.png */, - 65B36292121C261F003EAD18 /* RO.png */, - 65B36293121C261F003EAD18 /* RS.png */, - 65B36294121C261F003EAD18 /* RU.png */, - 65B36295121C261F003EAD18 /* RW.png */, - 65B36296121C261F003EAD18 /* SA.png */, - 65B36297121C261F003EAD18 /* SB.png */, - 65B36298121C261F003EAD18 /* SC.png */, - 65B36299121C261F003EAD18 /* SD.png */, - 65B3629A121C261F003EAD18 /* SE.png */, - 65B3629B121C261F003EAD18 /* SG.png */, - 65B3629C121C261F003EAD18 /* SH.png */, - 65B3629D121C261F003EAD18 /* SI.png */, - 65B3629E121C261F003EAD18 /* SJ.png */, - 65B3629F121C261F003EAD18 /* SK.png */, - 65B362A0121C261F003EAD18 /* SL.png */, - 65B362A1121C261F003EAD18 /* SM.png */, - 65B362A2121C261F003EAD18 /* SN.png */, - 65B362A3121C261F003EAD18 /* SO.png */, - 65B362A4121C261F003EAD18 /* SR.png */, - 65B362A5121C261F003EAD18 /* ST.png */, - 65B362A6121C261F003EAD18 /* SV.png */, - 65B362A7121C261F003EAD18 /* SY.png */, - 65B362A8121C261F003EAD18 /* SZ.png */, - 65B362A9121C261F003EAD18 /* TC.png */, - 65B362AA121C261F003EAD18 /* TD.png */, - 65B362AB121C261F003EAD18 /* TF.png */, - 65B362AC121C261F003EAD18 /* TG.png */, - 65B362AD121C261F003EAD18 /* TH.png */, - 65B362AE121C261F003EAD18 /* TJ.png */, - 65B362AF121C261F003EAD18 /* TK.png */, - 65B362B0121C261F003EAD18 /* TL.png */, - 65B362B1121C261F003EAD18 /* TM.png */, - 65B362B2121C261F003EAD18 /* TN.png */, - 65B362B3121C261F003EAD18 /* TO.png */, - 65B362B4121C261F003EAD18 /* TR.png */, - 65B362B5121C261F003EAD18 /* TT.png */, - 65B362B6121C261F003EAD18 /* TV.png */, - 65B362B7121C261F003EAD18 /* TW.png */, - 65B362B8121C261F003EAD18 /* TZ.png */, - 65B362B9121C261F003EAD18 /* UA.png */, - 65B362BA121C261F003EAD18 /* UG.png */, - 65B362BB121C261F003EAD18 /* UM.png */, - 65B362BC121C261F003EAD18 /* US.png */, - 65B362BD121C261F003EAD18 /* UY.png */, - 65B362BE121C261F003EAD18 /* UZ.png */, - 65B362BF121C261F003EAD18 /* VA.png */, - 65B362C0121C261F003EAD18 /* VC.png */, - 65B362C1121C261F003EAD18 /* VE.png */, - 65B362C2121C261F003EAD18 /* VG.png */, - 65B362C3121C261F003EAD18 /* VI.png */, - 65B362C4121C261F003EAD18 /* VN.png */, - 65B362C5121C261F003EAD18 /* VU.png */, - 65B362C6121C261F003EAD18 /* WF.png */, - 65B362C7121C261F003EAD18 /* WS.png */, - 65B362C8121C261F003EAD18 /* YE.png */, - 65B362C9121C261F003EAD18 /* YT.png */, - 65B362CA121C261F003EAD18 /* ZA.png */, - 65B362CB121C261F003EAD18 /* ZM.png */, - 65B362CC121C261F003EAD18 /* ZW.png */, - ); - path = flags; - sourceTree = ""; - }; - 65B362CE121C261F003EAD18 /* network */ = { - isa = PBXGroup; - children = ( - 65B362CF121C261F003EAD18 /* Makefile */, - 65B362D0121C261F003EAD18 /* network.pri */, - 65B362D1121C261F003EAD18 /* network.pro */, - 65B362D2121C261F003EAD18 /* qxtjsonrpccall.cpp */, - 65B362D3121C261F003EAD18 /* qxtjsonrpccall.h */, - 65B362D4121C261F003EAD18 /* qxtjsonrpcclient.cpp */, - 65B362D5121C261F003EAD18 /* qxtjsonrpcclient.h */, - 65B362D6121C261F003EAD18 /* qxtmail_p.h */, - 65B362D7121C261F003EAD18 /* qxtmailattachment.cpp */, - 65B362D8121C261F003EAD18 /* qxtmailattachment.h */, - 65B362D9121C261F003EAD18 /* qxtmailmessage.cpp */, - 65B362DA121C261F003EAD18 /* qxtmailmessage.h */, - 65B362DB121C261F003EAD18 /* qxtnetwork.h */, - 65B362DC121C261F003EAD18 /* qxtrpcpeer.cpp */, - 65B362DD121C261F003EAD18 /* qxtrpcpeer.h */, - 65B362DE121C261F003EAD18 /* qxtsmtp.cpp */, - 65B362DF121C261F003EAD18 /* qxtsmtp.h */, - 65B362E0121C261F003EAD18 /* qxtsmtp_p.h */, - 65B362E1121C261F003EAD18 /* qxttcpconnectionmanager.cpp */, - 65B362E2121C261F003EAD18 /* qxttcpconnectionmanager.h */, - 65B362E3121C261F003EAD18 /* qxttcpconnectionmanager_p.h */, - 65B362E4121C261F003EAD18 /* qxtxmlrpc_p.cpp */, - 65B362E5121C261F003EAD18 /* qxtxmlrpc_p.h */, - 65B362E6121C261F003EAD18 /* qxtxmlrpccall.cpp */, - 65B362E7121C261F003EAD18 /* qxtxmlrpccall.h */, - 65B362E8121C261F003EAD18 /* qxtxmlrpcclient.cpp */, - 65B362E9121C261F003EAD18 /* qxtxmlrpcclient.h */, - ); - path = network; - sourceTree = ""; - }; - 65B362EC121C261F003EAD18 /* sql */ = { - isa = PBXGroup; - children = ( - 65B362ED121C261F003EAD18 /* Makefile */, - 65B362EE121C261F003EAD18 /* qxtsql.h */, - 65B362EF121C261F003EAD18 /* qxtsqlpackage.cpp */, - 65B362F0121C261F003EAD18 /* qxtsqlpackage.h */, - 65B362F1121C261F003EAD18 /* qxtsqlpackagemodel.cpp */, - 65B362F2121C261F003EAD18 /* qxtsqlpackagemodel.h */, - 65B362F3121C261F003EAD18 /* sql.pri */, - 65B362F4121C261F003EAD18 /* sql.pro */, - ); - path = sql; - sourceTree = ""; - }; - 65B362F5121C261F003EAD18 /* web */ = { - isa = PBXGroup; - children = ( - 65B362F6121C261F003EAD18 /* Makefile */, - 65B362F7121C261F003EAD18 /* qxtabstracthttpconnector.cpp */, - 65B362F8121C261F003EAD18 /* qxtabstracthttpconnector.h */, - 65B362F9121C261F003EAD18 /* qxtabstractwebservice.cpp */, - 65B362FA121C261F003EAD18 /* qxtabstractwebservice.h */, - 65B362FB121C261F003EAD18 /* qxtabstractwebsessionmanager.cpp */, - 65B362FC121C261F003EAD18 /* qxtabstractwebsessionmanager.h */, - 65B362FD121C261F003EAD18 /* qxtabstractwebsessionmanager_p.h */, - 65B362FE121C261F003EAD18 /* qxthtmltemplate.cpp */, - 65B362FF121C261F003EAD18 /* qxthtmltemplate.h */, - 65B36300121C261F003EAD18 /* qxthttpserverconnector.cpp */, - 65B36301121C261F003EAD18 /* qxthttpsessionmanager.cpp */, - 65B36302121C261F003EAD18 /* qxthttpsessionmanager.h */, - 65B36303121C261F003EAD18 /* qxtscgiserverconnector.cpp */, - 65B36304121C261F003EAD18 /* qxtweb.h */, - 65B36305121C261F003EAD18 /* qxtwebcgiservice.cpp */, - 65B36306121C261F003EAD18 /* qxtwebcgiservice.h */, - 65B36307121C261F003EAD18 /* qxtwebcgiservice_p.h */, - 65B36308121C261F003EAD18 /* qxtwebcontent.cpp */, - 65B36309121C261F003EAD18 /* qxtwebcontent.h */, - 65B3630A121C261F003EAD18 /* qxtwebevent.cpp */, - 65B3630B121C261F003EAD18 /* qxtwebevent.h */, - 65B3630C121C261F003EAD18 /* qxtwebservicedirectory.cpp */, - 65B3630D121C261F003EAD18 /* qxtwebservicedirectory.h */, - 65B3630E121C261F003EAD18 /* qxtwebservicedirectory_p.h */, - 65B3630F121C261F003EAD18 /* qxtwebslotservice.cpp */, - 65B36310121C261F003EAD18 /* qxtwebslotservice.h */, - 65B36311121C261F003EAD18 /* web.pri */, - 65B36312121C261F003EAD18 /* web.pro */, - ); - path = web; - sourceTree = ""; - }; - 65B36313121C261F003EAD18 /* zeroconf */ = { - isa = PBXGroup; - children = ( - 65B36314121C261F003EAD18 /* qxtavahipoll.cpp */, - 65B36315121C261F003EAD18 /* qxtavahipoll.h */, - 65B36316121C261F003EAD18 /* qxtavahipoll_p.h */, - 65B36317121C261F003EAD18 /* qxtdiscoverableservice.cpp */, - 65B36318121C261F003EAD18 /* qxtdiscoverableservice.h */, - 65B36319121C261F003EAD18 /* qxtdiscoverableservice_p.h */, - 65B3631A121C261F003EAD18 /* qxtdiscoverableservicename.cpp */, - 65B3631B121C261F003EAD18 /* qxtdiscoverableservicename.h */, - 65B3631C121C261F003EAD18 /* qxtmdns_avahi.cpp */, - 65B3631D121C261F003EAD18 /* qxtmdns_avahi.h */, - 65B3631E121C261F003EAD18 /* qxtmdns_avahi_p.h */, - 65B3631F121C261F003EAD18 /* qxtmdns_bonjour.cpp */, - 65B36320121C261F003EAD18 /* qxtmdns_bonjour.h */, - 65B36321121C261F003EAD18 /* qxtservicebrowser.cpp */, - 65B36322121C261F003EAD18 /* qxtservicebrowser.h */, - 65B36323121C261F003EAD18 /* qxtservicebrowser_p.h */, - 65B36324121C261F003EAD18 /* qxtzeroconf.h */, - 65B36325121C261F003EAD18 /* zeroconf.pri */, - 65B36326121C261F003EAD18 /* zeroconf.pro */, - ); - path = zeroconf; - sourceTree = ""; - }; - 65B36327121C261F003EAD18 /* translations */ = { - isa = PBXGroup; - children = ( - 65B36328121C261F003EAD18 /* gen_qlocale.cpp */, - 65B36329121C261F003EAD18 /* qxt_de.ts */, - 65B3632A121C261F003EAD18 /* qxt_en.ts */, - 65B3632B121C261F003EAD18 /* qxt_es.ts */, - 65B3632C121C261F003EAD18 /* qxt_fi.ts */, - 65B3632D121C261F003EAD18 /* qxt_fr.ts */, - 65B3632E121C261F003EAD18 /* qxt_it.ts */, - ); - path = translations; - sourceTree = ""; - }; - 65B36330121C261F003EAD18 /* opmapcontrol */ = { - isa = PBXGroup; - children = ( - 65B36331121C261F003EAD18 /* opmapcontrol.h */, - 65B36332121C261F003EAD18 /* opmapcontrol.pri */, - 65B36333121C261F003EAD18 /* opmapcontrol.pro */, - 65B36334121C261F003EAD18 /* src */, - ); - path = opmapcontrol; - sourceTree = ""; - }; - 65B36334121C261F003EAD18 /* src */ = { - isa = PBXGroup; - children = ( - 65B36335121C261F003EAD18 /* common.pri */, - 65B36336121C261F003EAD18 /* core */, - 65B3635C121C261F003EAD18 /* internals */, - 65B3637F121C261F003EAD18 /* mapwidget */, - 65B363A3121C261F003EAD18 /* src.pro */, - ); - path = src; - sourceTree = ""; - }; - 65B36336121C261F003EAD18 /* core */ = { - isa = PBXGroup; - children = ( - 65B36337121C261F003EAD18 /* accessmode.h */, - 65B36338121C261F003EAD18 /* alllayersoftype.cpp */, - 65B36339121C261F003EAD18 /* alllayersoftype.h */, - 65B3633A121C261F003EAD18 /* cache.cpp */, - 65B3633B121C261F003EAD18 /* cache.h */, - 65B3633C121C261F003EAD18 /* cacheitemqueue.cpp */, - 65B3633D121C261F003EAD18 /* cacheitemqueue.h */, - 65B3633E121C261F003EAD18 /* core.pro */, - 65B3633F121C261F003EAD18 /* debugheader.h */, - 65B36340121C261F003EAD18 /* geodecoderstatus.h */, - 65B36341121C261F003EAD18 /* kibertilecache.cpp */, - 65B36342121C261F003EAD18 /* kibertilecache.h */, - 65B36343121C261F003EAD18 /* languagetype.cpp */, - 65B36344121C261F003EAD18 /* languagetype.h */, - 65B36345121C261F003EAD18 /* maptype.h */, - 65B36346121C261F003EAD18 /* memorycache.cpp */, - 65B36347121C261F003EAD18 /* memorycache.h */, - 65B36348121C261F003EAD18 /* opmaps.cpp */, - 65B36349121C261F003EAD18 /* opmaps.h */, - 65B3634A121C261F003EAD18 /* placemark.cpp */, - 65B3634B121C261F003EAD18 /* placemark.h */, - 65B3634C121C261F003EAD18 /* point.cpp */, - 65B3634D121C261F003EAD18 /* point.h */, - 65B3634E121C261F003EAD18 /* providerstrings.cpp */, - 65B3634F121C261F003EAD18 /* providerstrings.h */, - 65B36350121C261F003EAD18 /* pureimage.cpp */, - 65B36351121C261F003EAD18 /* pureimage.h */, - 65B36352121C261F003EAD18 /* pureimagecache.cpp */, - 65B36353121C261F003EAD18 /* pureimagecache.h */, - 65B36354121C261F003EAD18 /* rawtile.cpp */, - 65B36355121C261F003EAD18 /* rawtile.h */, - 65B36356121C261F003EAD18 /* size.cpp */, - 65B36357121C261F003EAD18 /* size.h */, - 65B36358121C261F003EAD18 /* tilecachequeue.cpp */, - 65B36359121C261F003EAD18 /* tilecachequeue.h */, - 65B3635A121C261F003EAD18 /* urlfactory.cpp */, - 65B3635B121C261F003EAD18 /* urlfactory.h */, - ); - path = core; - sourceTree = ""; - }; - 65B3635C121C261F003EAD18 /* internals */ = { - isa = PBXGroup; - children = ( - 65B3635D121C261F003EAD18 /* copyrightstrings.h */, - 65B3635E121C261F003EAD18 /* core.cpp */, - 65B3635F121C261F003EAD18 /* core.h */, - 65B36360121C261F003EAD18 /* debugheader.h */, - 65B36361121C261F003EAD18 /* internals.pro */, - 65B36362121C261F003EAD18 /* loadtask.cpp */, - 65B36363121C261F003EAD18 /* loadtask.h */, - 65B36364121C261F003EAD18 /* MouseWheelZoomType.cpp */, - 65B36365121C261F003EAD18 /* mousewheelzoomtype.h */, - 65B36366121C261F003EAD18 /* pointlatlng.cpp */, - 65B36367121C261F003EAD18 /* pointlatlng.h */, - 65B36368121C261F003EAD18 /* projections */, - 65B36373121C261F003EAD18 /* pureprojection.cpp */, - 65B36374121C261F003EAD18 /* pureprojection.h */, - 65B36375121C261F003EAD18 /* rectangle.cpp */, - 65B36376121C261F003EAD18 /* rectangle.h */, - 65B36377121C261F003EAD18 /* rectlatlng.cpp */, - 65B36378121C261F003EAD18 /* rectlatlng.h */, - 65B36379121C261F003EAD18 /* sizelatlng.cpp */, - 65B3637A121C261F003EAD18 /* sizelatlng.h */, - 65B3637B121C261F003EAD18 /* tile.cpp */, - 65B3637C121C261F003EAD18 /* tile.h */, - 65B3637D121C261F003EAD18 /* tilematrix.cpp */, - 65B3637E121C261F003EAD18 /* tilematrix.h */, - ); - path = internals; - sourceTree = ""; - }; - 65B36368121C261F003EAD18 /* projections */ = { - isa = PBXGroup; - children = ( - 65B36369121C261F003EAD18 /* lks94projection.cpp */, - 65B3636A121C261F003EAD18 /* lks94projection.h */, - 65B3636B121C261F003EAD18 /* mercatorprojection.cpp */, - 65B3636C121C261F003EAD18 /* mercatorprojection.h */, - 65B3636D121C261F003EAD18 /* mercatorprojectionyandex.cpp */, - 65B3636E121C261F003EAD18 /* mercatorprojectionyandex.h */, - 65B3636F121C261F003EAD18 /* platecarreeprojection.cpp */, - 65B36370121C261F003EAD18 /* platecarreeprojection.h */, - 65B36371121C261F003EAD18 /* platecarreeprojectionpergo.cpp */, - 65B36372121C261F003EAD18 /* platecarreeprojectionpergo.h */, - ); - path = projections; - sourceTree = ""; - }; - 65B3637F121C261F003EAD18 /* mapwidget */ = { - isa = PBXGroup; - children = ( - 65B36380121C261F003EAD18 /* configuration.cpp */, - 65B36381121C261F003EAD18 /* configuration.h */, - 65B36382121C261F003EAD18 /* homeitem.cpp */, - 65B36383121C261F003EAD18 /* homeitem.h */, - 65B36384121C261F003EAD18 /* images */, - 65B36390121C261F003EAD18 /* mapgraphicitem.cpp */, - 65B36391121C261F003EAD18 /* mapgraphicitem.h */, - 65B36392121C261F003EAD18 /* mapresources.qrc */, - 65B36393121C261F003EAD18 /* mapripform.cpp */, - 65B36394121C261F003EAD18 /* mapripform.h */, - 65B36395121C261F003EAD18 /* mapripform.ui */, - 65B36396121C261F003EAD18 /* mapripper.cpp */, - 65B36397121C261F003EAD18 /* mapripper.h */, - 65B36398121C261F003EAD18 /* mapwidget.pro */, - 65B36399121C261F003EAD18 /* opmapwidget.cpp */, - 65B3639A121C261F003EAD18 /* opmapwidget.h */, - 65B3639B121C261F003EAD18 /* trailitem.cpp */, - 65B3639C121C261F003EAD18 /* trailitem.h */, - 65B3639D121C261F003EAD18 /* uavitem.cpp */, - 65B3639E121C261F003EAD18 /* uavitem.h */, - 65B3639F121C261F003EAD18 /* uavmapfollowtype.h */, - 65B363A0121C261F003EAD18 /* uavtrailtype.h */, - 65B363A1121C261F003EAD18 /* waypointitem.cpp */, - 65B363A2121C261F003EAD18 /* waypointitem.h */, - ); - path = mapwidget; - sourceTree = ""; - }; - 65B36384121C261F003EAD18 /* images */ = { - isa = PBXGroup; - children = ( - 65B36385121C261F003EAD18 /* airplane.png */, - 65B36386121C261F003EAD18 /* airplane.svg */, - 65B36387121C261F003EAD18 /* airplanepip.png */, - 65B36388121C261F003EAD18 /* bigMarkerGreen.png */, - 65B36389121C261F003EAD18 /* compas.svg */, - 65B3638A121C261F003EAD18 /* EasystarBlue.png */, - 65B3638B121C261F003EAD18 /* home.png */, - 65B3638C121C261F003EAD18 /* home.svg */, - 65B3638D121C261F003EAD18 /* home2.svg */, - 65B3638E121C261F003EAD18 /* mapquad.png */, - 65B3638F121C261F003EAD18 /* marker.png */, - ); - path = images; - sourceTree = ""; - }; - 65B363A4121C261F003EAD18 /* qextserialport */ = { - isa = PBXGroup; - children = ( - 65B363A5121C261F003EAD18 /* qextserialport.pri */, - 65B363A6121C261F003EAD18 /* qextserialport.pro */, - 65B363A7121C261F003EAD18 /* src */, - ); - path = qextserialport; - sourceTree = ""; - }; - 65B363A7121C261F003EAD18 /* src */ = { - isa = PBXGroup; - children = ( - 65B363A8121C261F003EAD18 /* posix_qextserialport.cpp */, - 65B363A9121C261F003EAD18 /* qextserialenumerator.h */, - 65B363AA121C261F003EAD18 /* qextserialenumerator_osx.cpp */, - 65B363AB121C261F003EAD18 /* qextserialenumerator_unix.cpp */, - 65B363AC121C261F003EAD18 /* qextserialenumerator_win.cpp */, - 65B363AD121C261F003EAD18 /* qextserialport.cpp */, - 65B363AE121C261F003EAD18 /* qextserialport.h */, - 65B363AF121C261F003EAD18 /* qextserialport_global.h */, - 65B363B0121C261F003EAD18 /* src.pro */, - 65B363B1121C261F003EAD18 /* win_qextserialport.cpp */, - ); - path = src; - sourceTree = ""; - }; - 65B363B2121C261F003EAD18 /* qtconcurrent */ = { - isa = PBXGroup; - children = ( - 65B363B3121C261F003EAD18 /* multitask.h */, - 65B363B4121C261F003EAD18 /* qtconcurrent.pri */, - 65B363B5121C261F003EAD18 /* qtconcurrent.pro */, - 65B363B6121C261F003EAD18 /* qtconcurrent_global.h */, - 65B363B7121C261F003EAD18 /* QtConcurrentTools */, - 65B363B8121C261F003EAD18 /* runextensions.h */, - ); - path = qtconcurrent; - sourceTree = ""; - }; - 65B363B9121C261F003EAD18 /* qwt */ = { - isa = PBXGroup; - children = ( - 65B363BA121C261F003EAD18 /* COPYING */, - 65B363BB121C261F003EAD18 /* qwt.pri */, - 65B363BC121C261F003EAD18 /* qwt.pro */, - 65B363BD121C261F003EAD18 /* qwtconfig.pri */, - 65B363BE121C261F003EAD18 /* src */, - ); - path = qwt; - sourceTree = ""; - }; - 65B363BE121C261F003EAD18 /* src */ = { - isa = PBXGroup; - children = ( - 65B363BF121C261F003EAD18 /* qwt.h */, - 65B363C0121C261F003EAD18 /* qwt_abstract_scale.cpp */, - 65B363C1121C261F003EAD18 /* qwt_abstract_scale.h */, - 65B363C2121C261F003EAD18 /* qwt_abstract_scale_draw.cpp */, - 65B363C3121C261F003EAD18 /* qwt_abstract_scale_draw.h */, - 65B363C4121C261F003EAD18 /* qwt_abstract_slider.cpp */, - 65B363C5121C261F003EAD18 /* qwt_abstract_slider.h */, - 65B363C6121C261F003EAD18 /* qwt_analog_clock.cpp */, - 65B363C7121C261F003EAD18 /* qwt_analog_clock.h */, - 65B363C8121C261F003EAD18 /* qwt_array.h */, - 65B363C9121C261F003EAD18 /* qwt_arrow_button.cpp */, - 65B363CA121C261F003EAD18 /* qwt_arrow_button.h */, - 65B363CB121C261F003EAD18 /* qwt_clipper.cpp */, - 65B363CC121C261F003EAD18 /* qwt_clipper.h */, - 65B363CD121C261F003EAD18 /* qwt_color_map.cpp */, - 65B363CE121C261F003EAD18 /* qwt_color_map.h */, - 65B363CF121C261F003EAD18 /* qwt_compass.cpp */, - 65B363D0121C261F003EAD18 /* qwt_compass.h */, - 65B363D1121C261F003EAD18 /* qwt_compass_rose.cpp */, - 65B363D2121C261F003EAD18 /* qwt_compass_rose.h */, - 65B363D3121C261F003EAD18 /* qwt_counter.cpp */, - 65B363D4121C261F003EAD18 /* qwt_counter.h */, - 65B363D5121C261F003EAD18 /* qwt_curve_fitter.cpp */, - 65B363D6121C261F003EAD18 /* qwt_curve_fitter.h */, - 65B363D7121C261F003EAD18 /* qwt_data.cpp */, - 65B363D8121C261F003EAD18 /* qwt_data.h */, - 65B363D9121C261F003EAD18 /* qwt_dial.cpp */, - 65B363DA121C261F003EAD18 /* qwt_dial.h */, - 65B363DB121C261F003EAD18 /* qwt_dial_needle.cpp */, - 65B363DC121C261F003EAD18 /* qwt_dial_needle.h */, - 65B363DD121C261F003EAD18 /* qwt_double_interval.cpp */, - 65B363DE121C261F003EAD18 /* qwt_double_interval.h */, - 65B363DF121C261F003EAD18 /* qwt_double_range.cpp */, - 65B363E0121C261F003EAD18 /* qwt_double_range.h */, - 65B363E1121C261F003EAD18 /* qwt_double_rect.cpp */, - 65B363E2121C261F003EAD18 /* qwt_double_rect.h */, - 65B363E3121C261F003EAD18 /* qwt_dyngrid_layout.cpp */, - 65B363E4121C261F003EAD18 /* qwt_dyngrid_layout.h */, - 65B363E5121C261F003EAD18 /* qwt_event_pattern.cpp */, - 65B363E6121C261F003EAD18 /* qwt_event_pattern.h */, - 65B363E7121C261F003EAD18 /* qwt_global.h */, - 65B363E8121C261F003EAD18 /* qwt_interval_data.cpp */, - 65B363E9121C261F003EAD18 /* qwt_interval_data.h */, - 65B363EA121C261F003EAD18 /* qwt_knob.cpp */, - 65B363EB121C261F003EAD18 /* qwt_knob.h */, - 65B363EC121C261F003EAD18 /* qwt_layout_metrics.cpp */, - 65B363ED121C261F003EAD18 /* qwt_layout_metrics.h */, - 65B363EE121C261F003EAD18 /* qwt_legend.cpp */, - 65B363EF121C261F003EAD18 /* qwt_legend.h */, - 65B363F0121C261F003EAD18 /* qwt_legend_item.cpp */, - 65B363F1121C261F003EAD18 /* qwt_legend_item.h */, - 65B363F2121C261F003EAD18 /* qwt_legend_itemmanager.h */, - 65B363F3121C261F003EAD18 /* qwt_magnifier.cpp */, - 65B363F4121C261F003EAD18 /* qwt_magnifier.h */, - 65B363F5121C261F003EAD18 /* qwt_math.cpp */, - 65B363F6121C261F003EAD18 /* qwt_math.h */, - 65B363F7121C261F003EAD18 /* qwt_paint_buffer.cpp */, - 65B363F8121C261F003EAD18 /* qwt_paint_buffer.h */, - 65B363F9121C261F003EAD18 /* qwt_painter.cpp */, - 65B363FA121C261F003EAD18 /* qwt_painter.h */, - 65B363FB121C261F003EAD18 /* qwt_panner.cpp */, - 65B363FC121C261F003EAD18 /* qwt_panner.h */, - 65B363FD121C261F003EAD18 /* qwt_picker.cpp */, - 65B363FE121C261F003EAD18 /* qwt_picker.h */, - 65B363FF121C261F003EAD18 /* qwt_picker_machine.cpp */, - 65B36400121C261F003EAD18 /* qwt_picker_machine.h */, - 65B36401121C261F003EAD18 /* qwt_plot.cpp */, - 65B36402121C261F003EAD18 /* qwt_plot.h */, - 65B36403121C261F003EAD18 /* qwt_plot_axis.cpp */, - 65B36404121C261F003EAD18 /* qwt_plot_canvas.cpp */, - 65B36405121C261F003EAD18 /* qwt_plot_canvas.h */, - 65B36406121C261F003EAD18 /* qwt_plot_curve.cpp */, - 65B36407121C261F003EAD18 /* qwt_plot_curve.h */, - 65B36408121C261F003EAD18 /* qwt_plot_dict.cpp */, - 65B36409121C261F003EAD18 /* qwt_plot_dict.h */, - 65B3640A121C261F003EAD18 /* qwt_plot_grid.cpp */, - 65B3640B121C261F003EAD18 /* qwt_plot_grid.h */, - 65B3640C121C261F003EAD18 /* qwt_plot_item.cpp */, - 65B3640D121C261F003EAD18 /* qwt_plot_item.h */, - 65B3640E121C261F003EAD18 /* qwt_plot_layout.cpp */, - 65B3640F121C261F003EAD18 /* qwt_plot_layout.h */, - 65B36410121C261F003EAD18 /* qwt_plot_magnifier.cpp */, - 65B36411121C261F003EAD18 /* qwt_plot_magnifier.h */, - 65B36412121C261F003EAD18 /* qwt_plot_marker.cpp */, - 65B36413121C261F003EAD18 /* qwt_plot_marker.h */, - 65B36414121C261F003EAD18 /* qwt_plot_panner.cpp */, - 65B36415121C261F003EAD18 /* qwt_plot_panner.h */, - 65B36416121C261F003EAD18 /* qwt_plot_picker.cpp */, - 65B36417121C261F003EAD18 /* qwt_plot_picker.h */, - 65B36418121C261F003EAD18 /* qwt_plot_print.cpp */, - 65B36419121C261F003EAD18 /* qwt_plot_printfilter.cpp */, - 65B3641A121C261F003EAD18 /* qwt_plot_printfilter.h */, - 65B3641B121C261F003EAD18 /* qwt_plot_rasteritem.cpp */, - 65B3641C121C261F003EAD18 /* qwt_plot_rasteritem.h */, - 65B3641D121C261F003EAD18 /* qwt_plot_rescaler.cpp */, - 65B3641E121C261F003EAD18 /* qwt_plot_rescaler.h */, - 65B3641F121C261F003EAD18 /* qwt_plot_scaleitem.cpp */, - 65B36420121C261F003EAD18 /* qwt_plot_scaleitem.h */, - 65B36421121C261F003EAD18 /* qwt_plot_spectrogram.cpp */, - 65B36422121C261F003EAD18 /* qwt_plot_spectrogram.h */, - 65B36423121C261F003EAD18 /* qwt_plot_svgitem.cpp */, - 65B36424121C261F003EAD18 /* qwt_plot_svgitem.h */, - 65B36425121C261F003EAD18 /* qwt_plot_xml.cpp */, - 65B36426121C261F003EAD18 /* qwt_plot_zoomer.cpp */, - 65B36427121C261F003EAD18 /* qwt_plot_zoomer.h */, - 65B36428121C261F003EAD18 /* qwt_polygon.h */, - 65B36429121C261F003EAD18 /* qwt_raster_data.cpp */, - 65B3642A121C261F003EAD18 /* qwt_raster_data.h */, - 65B3642B121C261F003EAD18 /* qwt_round_scale_draw.cpp */, - 65B3642C121C261F003EAD18 /* qwt_round_scale_draw.h */, - 65B3642D121C261F003EAD18 /* qwt_scale_div.cpp */, - 65B3642E121C261F003EAD18 /* qwt_scale_div.h */, - 65B3642F121C261F003EAD18 /* qwt_scale_draw.cpp */, - 65B36430121C261F003EAD18 /* qwt_scale_draw.h */, - 65B36431121C261F003EAD18 /* qwt_scale_engine.cpp */, - 65B36432121C261F003EAD18 /* qwt_scale_engine.h */, - 65B36433121C261F003EAD18 /* qwt_scale_map.cpp */, - 65B36434121C261F003EAD18 /* qwt_scale_map.h */, - 65B36435121C261F003EAD18 /* qwt_scale_widget.cpp */, - 65B36436121C261F003EAD18 /* qwt_scale_widget.h */, - 65B36437121C261F003EAD18 /* qwt_slider.cpp */, - 65B36438121C261F003EAD18 /* qwt_slider.h */, - 65B36439121C261F003EAD18 /* qwt_spline.cpp */, - 65B3643A121C261F003EAD18 /* qwt_spline.h */, - 65B3643B121C261F003EAD18 /* qwt_symbol.cpp */, - 65B3643C121C261F003EAD18 /* qwt_symbol.h */, - 65B3643D121C261F003EAD18 /* qwt_text.cpp */, - 65B3643E121C261F003EAD18 /* qwt_text.h */, - 65B3643F121C261F003EAD18 /* qwt_text_engine.cpp */, - 65B36440121C261F003EAD18 /* qwt_text_engine.h */, - 65B36441121C261F003EAD18 /* qwt_text_label.cpp */, - 65B36442121C261F003EAD18 /* qwt_text_label.h */, - 65B36443121C261F003EAD18 /* qwt_thermo.cpp */, - 65B36444121C261F003EAD18 /* qwt_thermo.h */, - 65B36445121C261F003EAD18 /* qwt_valuelist.h */, - 65B36446121C261F003EAD18 /* qwt_wheel.cpp */, - 65B36447121C261F003EAD18 /* qwt_wheel.h */, - 65B36448121C261F003EAD18 /* src.pro */, - ); - path = src; - sourceTree = ""; - }; - 65B36449121C261F003EAD18 /* qymodem */ = { - isa = PBXGroup; - children = ( - 65B3644A121C261F003EAD18 /* qymodem.pri */, - 65B3644B121C261F003EAD18 /* qymodem.pro */, - 65B3644C121C261F003EAD18 /* src */, - ); - path = qymodem; - sourceTree = ""; - }; - 65B3644C121C261F003EAD18 /* src */ = { - isa = PBXGroup; - children = ( - 65B3644D121C261F003EAD18 /* qymodem.cpp */, - 65B3644E121C261F003EAD18 /* qymodem.h */, - 65B3644F121C261F003EAD18 /* qymodem_tx.cpp */, - 65B36450121C261F003EAD18 /* qymodem_tx.h */, - 65B36451121C261F003EAD18 /* qymodemfilestream.cpp */, - 65B36452121C261F003EAD18 /* qymodemsend.cpp */, - 65B36453121C261F003EAD18 /* qymodemsend.h */, - 65B36454121C261F003EAD18 /* src.pro */, - ); - path = src; - sourceTree = ""; - }; - 65B36455121C261F003EAD18 /* uavobjgenerator */ = { - isa = PBXGroup; - children = ( - 65B36456121C261F003EAD18 /* main.cpp */, - 65B36457121C261F003EAD18 /* uavobjectgenerator.cpp */, - 65B36458121C261F003EAD18 /* uavobjectgenerator.h */, - 65B36459121C261F003EAD18 /* uavobjectparser.cpp */, - 65B3645A121C261F003EAD18 /* uavobjectparser.h */, - 65B3645B121C261F003EAD18 /* uavobjgenerator.pro */, - ); - path = uavobjgenerator; - sourceTree = ""; - }; - 65B3645C121C261F003EAD18 /* utils */ = { - isa = PBXGroup; - children = ( - 65B3645D121C261F003EAD18 /* abstractprocess.h */, - 65B3645E121C261F003EAD18 /* abstractprocess_win.cpp */, - 65B3645F121C261F003EAD18 /* basevalidatinglineedit.cpp */, - 65B36460121C261F003EAD18 /* basevalidatinglineedit.h */, - 65B36461121C261F003EAD18 /* checkablemessagebox.cpp */, - 65B36462121C261F003EAD18 /* checkablemessagebox.h */, - 65B36463121C261F003EAD18 /* checkablemessagebox.ui */, - 65B36464121C261F003EAD18 /* classnamevalidatinglineedit.cpp */, - 65B36465121C261F003EAD18 /* classnamevalidatinglineedit.h */, - 65B36466121C261F003EAD18 /* codegeneration.cpp */, - 65B36467121C261F003EAD18 /* codegeneration.h */, - 65B36468121C261F003EAD18 /* consoleprocess.cpp */, - 65B36469121C261F003EAD18 /* consoleprocess.h */, - 65B3646A121C261F003EAD18 /* consoleprocess_unix.cpp */, - 65B3646B121C261F003EAD18 /* consoleprocess_win.cpp */, - 65B3646C121C261F003EAD18 /* detailsbutton.cpp */, - 65B3646D121C261F003EAD18 /* detailsbutton.h */, - 65B3646E121C261F003EAD18 /* detailswidget.cpp */, - 65B3646F121C261F003EAD18 /* detailswidget.h */, - 65B36470121C261F003EAD18 /* fancylineedit.cpp */, - 65B36471121C261F003EAD18 /* fancylineedit.h */, - 65B36472121C261F003EAD18 /* fancymainwindow.cpp */, - 65B36473121C261F003EAD18 /* fancymainwindow.h */, - 65B36474121C261F003EAD18 /* filenamevalidatinglineedit.cpp */, - 65B36475121C261F003EAD18 /* filenamevalidatinglineedit.h */, - 65B36476121C261F003EAD18 /* filesearch.cpp */, - 65B36477121C261F003EAD18 /* filesearch.h */, - 65B36478121C261F003EAD18 /* filewizarddialog.cpp */, - 65B36479121C261F003EAD18 /* filewizarddialog.h */, - 65B3647A121C261F003EAD18 /* filewizardpage.cpp */, - 65B3647B121C261F003EAD18 /* filewizardpage.h */, - 65B3647C121C261F003EAD18 /* filewizardpage.ui */, - 65B3647D121C261F003EAD18 /* images */, - 65B3647F121C261F003EAD18 /* iwelcomepage.cpp */, - 65B36480121C261F003EAD18 /* iwelcomepage.h */, - 65B36481121C261F003EAD18 /* linecolumnlabel.cpp */, - 65B36482121C261F003EAD18 /* linecolumnlabel.h */, - 65B36483121C261F003EAD18 /* listutils.h */, - 65B36484121C261F003EAD18 /* newclasswidget.cpp */, - 65B36485121C261F003EAD18 /* newclasswidget.h */, - 65B36486121C261F003EAD18 /* newclasswidget.ui */, - 65B36487121C261F003EAD18 /* parameteraction.cpp */, - 65B36488121C261F003EAD18 /* parameteraction.h */, - 65B36489121C261F003EAD18 /* pathchooser.cpp */, - 65B3648A121C261F003EAD18 /* pathchooser.h */, - 65B3648B121C261F003EAD18 /* pathlisteditor.cpp */, - 65B3648C121C261F003EAD18 /* pathlisteditor.h */, - 65B3648D121C261F003EAD18 /* projectintropage.cpp */, - 65B3648E121C261F003EAD18 /* projectintropage.h */, - 65B3648F121C261F003EAD18 /* projectintropage.ui */, - 65B36490121C261F003EAD18 /* projectnamevalidatinglineedit.cpp */, - 65B36491121C261F003EAD18 /* projectnamevalidatinglineedit.h */, - 65B36492121C261F003EAD18 /* qtcassert.h */, - 65B36493121C261F003EAD18 /* qtcolorbutton.cpp */, - 65B36494121C261F003EAD18 /* qtcolorbutton.h */, - 65B36495121C261F003EAD18 /* reloadpromptutils.cpp */, - 65B36496121C261F003EAD18 /* reloadpromptutils.h */, - 65B36497121C261F003EAD18 /* savedaction.cpp */, - 65B36498121C261F003EAD18 /* savedaction.h */, - 65B36499121C261F003EAD18 /* settingsutils.cpp */, - 65B3649A121C261F003EAD18 /* settingsutils.h */, - 65B3649B121C261F003EAD18 /* styledbar.cpp */, - 65B3649C121C261F003EAD18 /* styledbar.h */, - 65B3649D121C261F003EAD18 /* stylehelper.cpp */, - 65B3649E121C261F003EAD18 /* stylehelper.h */, - 65B3649F121C261F003EAD18 /* submiteditorwidget.cpp */, - 65B364A0121C261F003EAD18 /* submiteditorwidget.h */, - 65B364A1121C261F003EAD18 /* submiteditorwidget.ui */, - 65B364A2121C261F003EAD18 /* submitfieldwidget.cpp */, - 65B364A3121C261F003EAD18 /* submitfieldwidget.h */, - 65B364A4121C261F003EAD18 /* synchronousprocess.cpp */, - 65B364A5121C261F003EAD18 /* synchronousprocess.h */, - 65B364A6121C261F003EAD18 /* treewidgetcolumnstretcher.cpp */, - 65B364A7121C261F003EAD18 /* treewidgetcolumnstretcher.h */, - 65B364A8121C261F003EAD18 /* uncommentselection.cpp */, - 65B364A9121C261F003EAD18 /* uncommentselection.h */, - 65B364AA121C261F003EAD18 /* utils.pri */, - 65B364AB121C261F003EAD18 /* utils.pro */, - 65B364AC121C261F003EAD18 /* utils.qrc */, - 65B364AD121C261F003EAD18 /* utils_global.h */, - 65B364AE121C261F003EAD18 /* welcomemodetreewidget.cpp */, - 65B364AF121C261F003EAD18 /* welcomemodetreewidget.h */, - 65B364B0121C261F003EAD18 /* winutils.cpp */, - 65B364B1121C261F003EAD18 /* winutils.h */, - ); - path = utils; - sourceTree = ""; - }; - 65B3647D121C261F003EAD18 /* images */ = { - isa = PBXGroup; - children = ( - 65B3647E121C261F003EAD18 /* removesubmitfield.png */, - ); - path = images; - sourceTree = ""; - }; - 65B364B4121C261F003EAD18 /* plugins */ = { - isa = PBXGroup; - children = ( - 65B364B5121C261F003EAD18 /* config */, - 65B364CF121C261F003EAD18 /* consolegadget */, - 65B364DC121C261F003EAD18 /* coreplugin */, - 65B36591121C261F003EAD18 /* dial */, - 65B365A5121C261F003EAD18 /* donothing */, - 65B365AA121C261F003EAD18 /* emptygadget */, - 65B365B5121C261F003EAD18 /* gcscontrol */, - 65B365C7121C261F003EAD18 /* gpsdisplay */, - 65B365E3121C261F003EAD18 /* hitl */, - 65B365F9121C2620003EAD18 /* hitlil2 */, - 65B3660D121C2620003EAD18 /* importexport */, - 65B36620121C2620003EAD18 /* ipconnection */, - 65B3662D121C2620003EAD18 /* lineardial */, - 65B36641121C2620003EAD18 /* modelview */, - 65B36652121C2620003EAD18 /* notify */, - 65B3666C121C2620003EAD18 /* opmap */, - 65B366AA121C2620003EAD18 /* pfd */, - 65B366BE121C2620003EAD18 /* plugins.pro */, - 65B366BF121C2620003EAD18 /* rawhid */, - 65B366CE121C2620003EAD18 /* scope */, - 65B366E0121C2620003EAD18 /* serialconnection */, - 65B366E8121C2620003EAD18 /* systemhealth */, - 65B366F9121C2620003EAD18 /* uavobjectbrowser */, - 65B36713121C2620003EAD18 /* uavobjects */, - 65B36782121C2620003EAD18 /* uavtalk */, - 65B36792121C2620003EAD18 /* uploader */, - 65B367A1121C2620003EAD18 /* welcome */, - ); - path = plugins; - sourceTree = ""; - }; - 65B364B5121C261F003EAD18 /* config */ = { - isa = PBXGroup; - children = ( - 65B364B6121C261F003EAD18 /* airframe.ui */, - 65B364B7121C261F003EAD18 /* Config.pluginspec */, - 65B364B8121C261F003EAD18 /* config.pro */, - 65B364B9121C261F003EAD18 /* configfactory.h */, - 65B364BA121C261F003EAD18 /* configgadget.cpp */, - 65B364BB121C261F003EAD18 /* configgadget.h */, - 65B364BC121C261F003EAD18 /* configgadget.qrc */, - 65B364BD121C261F003EAD18 /* configgadgetconfiguration.cpp */, - 65B364BE121C261F003EAD18 /* configgadgetconfiguration.h */, - 65B364BF121C261F003EAD18 /* configgadgetfactory.cpp */, - 65B364C0121C261F003EAD18 /* configgadgetfactory.h */, - 65B364C1121C261F003EAD18 /* configgadgetoptionspage.cpp */, - 65B364C2121C261F003EAD18 /* configgadgetoptionspage.h */, - 65B364C3121C261F003EAD18 /* configgadgetwidget.cpp */, - 65B364C4121C261F003EAD18 /* configgadgetwidget.h */, - 65B364C5121C261F003EAD18 /* configplugin.cpp */, - 65B364C6121C261F003EAD18 /* configplugin.h */, - 65B364C7121C261F003EAD18 /* fancytabwidget.cpp */, - 65B364C8121C261F003EAD18 /* fancytabwidget.h */, - 65B364C9121C261F003EAD18 /* images */, - 65B364CD121C261F003EAD18 /* settingswidget.ui */, - 65B364CE121C261F003EAD18 /* telemetry.ui */, - ); - path = config; - sourceTree = ""; - }; - 65B364C9121C261F003EAD18 /* images */ = { - isa = PBXGroup; - children = ( - 65B364CA121C261F003EAD18 /* Airframe.png */, - 65B364CB121C261F003EAD18 /* Servo.png */, - 65B364CC121C261F003EAD18 /* XBee.svg */, - ); - path = images; - sourceTree = ""; - }; - 65B364CF121C261F003EAD18 /* consolegadget */ = { - isa = PBXGroup; - children = ( - 65B364D0121C261F003EAD18 /* consolegadget.cpp */, - 65B364D1121C261F003EAD18 /* consolegadget.h */, - 65B364D2121C261F003EAD18 /* ConsoleGadget.pluginspec */, - 65B364D3121C261F003EAD18 /* consolegadget.pro */, - 65B364D4121C261F003EAD18 /* consolegadgetfactory.cpp */, - 65B364D5121C261F003EAD18 /* consolegadgetfactory.h */, - 65B364D6121C261F003EAD18 /* consolegadgetwidget.cpp */, - 65B364D7121C261F003EAD18 /* consolegadgetwidget.h */, - 65B364D8121C261F003EAD18 /* consoleplugin.cpp */, - 65B364D9121C261F003EAD18 /* consoleplugin.h */, - 65B364DA121C261F003EAD18 /* texteditloggerengine.cpp */, - 65B364DB121C261F003EAD18 /* texteditloggerengine.h */, - ); - path = consolegadget; - sourceTree = ""; - }; - 65B364DC121C261F003EAD18 /* coreplugin */ = { - isa = PBXGroup; - children = ( - 65B364DD121C261F003EAD18 /* actionmanager */, - 65B364E9121C261F003EAD18 /* basemode.cpp */, - 65B364EA121C261F003EAD18 /* basemode.h */, - 65B364EB121C261F003EAD18 /* baseview.cpp */, - 65B364EC121C261F003EAD18 /* baseview.h */, - 65B364ED121C261F003EAD18 /* connectionmanager.cpp */, - 65B364EE121C261F003EAD18 /* connectionmanager.h */, - 65B364EF121C261F003EAD18 /* Core.pluginspec */, - 65B364F0121C261F003EAD18 /* core.qrc */, - 65B364F1121C261F003EAD18 /* core_global.h */, - 65B364F2121C261F003EAD18 /* coreconstants.h */, - 65B364F3121C261F003EAD18 /* coreimpl.cpp */, - 65B364F4121C261F003EAD18 /* coreimpl.h */, - 65B364F5121C261F003EAD18 /* coreplugin.cpp */, - 65B364F6121C261F003EAD18 /* coreplugin.h */, - 65B364F7121C261F003EAD18 /* coreplugin.pri */, - 65B364F8121C261F003EAD18 /* coreplugin.pro */, - 65B364F9121C261F003EAD18 /* coreplugin_dependencies.pri */, - 65B364FA121C261F003EAD18 /* dialogs */, - 65B36505121C261F003EAD18 /* eventfilteringmainwindow.cpp */, - 65B36506121C261F003EAD18 /* eventfilteringmainwindow.h */, - 65B36507121C261F003EAD18 /* fancyactionbar.cpp */, - 65B36508121C261F003EAD18 /* fancyactionbar.h */, - 65B36509121C261F003EAD18 /* fancyactionbar.qrc */, - 65B3650A121C261F003EAD18 /* fancytabwidget.cpp */, - 65B3650B121C261F003EAD18 /* fancytabwidget.h */, - 65B3650C121C261F003EAD18 /* fileiconprovider.cpp */, - 65B3650D121C261F003EAD18 /* fileiconprovider.h */, - 65B3650E121C261F003EAD18 /* generalsettings.cpp */, - 65B3650F121C261F003EAD18 /* generalsettings.h */, - 65B36510121C261F003EAD18 /* generalsettings.ui */, - 65B36511121C261F003EAD18 /* iconnection.cpp */, - 65B36512121C261F003EAD18 /* iconnection.h */, - 65B36513121C261F003EAD18 /* icontext.h */, - 65B36514121C261F003EAD18 /* icore.cpp */, - 65B36515121C261F003EAD18 /* icore.h */, - 65B36516121C261F003EAD18 /* icorelistener.h */, - 65B36517121C261F003EAD18 /* images */, - 65B36552121C261F003EAD18 /* imode.h */, - 65B36553121C261F003EAD18 /* ioutputpane.h */, - 65B36554121C261F003EAD18 /* iuavgadget.cpp */, - 65B36555121C261F003EAD18 /* iuavgadget.h */, - 65B36556121C261F003EAD18 /* iuavgadgetconfiguration.cpp */, - 65B36557121C261F003EAD18 /* iuavgadgetconfiguration.h */, - 65B36558121C261F003EAD18 /* iuavgadgetfactory.h */, - 65B36559121C261F003EAD18 /* iversioncontrol.h */, - 65B3655A121C261F003EAD18 /* iview.h */, - 65B3655B121C261F003EAD18 /* mainwindow.cpp */, - 65B3655C121C261F003EAD18 /* mainwindow.h */, - 65B3655D121C261F003EAD18 /* manhattanstyle.cpp */, - 65B3655E121C261F003EAD18 /* manhattanstyle.h */, - 65B3655F121C261F003EAD18 /* messagemanager.cpp */, - 65B36560121C261F003EAD18 /* messagemanager.h */, - 65B36561121C261F003EAD18 /* messageoutputwindow.cpp */, - 65B36562121C261F003EAD18 /* messageoutputwindow.h */, - 65B36563121C261F003EAD18 /* mimedatabase.cpp */, - 65B36564121C261F003EAD18 /* mimedatabase.h */, - 65B36565121C261F003EAD18 /* minisplitter.cpp */, - 65B36566121C261F003EAD18 /* minisplitter.h */, - 65B36567121C261F003EAD18 /* modemanager.cpp */, - 65B36568121C261F003EAD18 /* modemanager.h */, - 65B36569121C261F003EAD18 /* outputpane.h */, - 65B3656A121C261F003EAD18 /* plugindialog.cpp */, - 65B3656B121C261F003EAD18 /* plugindialog.h */, - 65B3656C121C261F003EAD18 /* rightpane.cpp */, - 65B3656D121C261F003EAD18 /* rightpane.h */, - 65B3656E121C261F003EAD18 /* settingsdatabase.cpp */, - 65B3656F121C261F003EAD18 /* settingsdatabase.h */, - 65B36570121C261F003EAD18 /* sidebar.cpp */, - 65B36571121C261F003EAD18 /* sidebar.h */, - 65B36572121C261F003EAD18 /* styleanimator.cpp */, - 65B36573121C261F003EAD18 /* styleanimator.h */, - 65B36574121C261F003EAD18 /* tabpositionindicator.cpp */, - 65B36575121C261F003EAD18 /* tabpositionindicator.h */, - 65B36576121C261F003EAD18 /* threadmanager.cpp */, - 65B36577121C261F003EAD18 /* threadmanager.h */, - 65B36578121C261F003EAD18 /* uavgadgetdecorator.cpp */, - 65B36579121C261F003EAD18 /* uavgadgetdecorator.h */, - 65B3657A121C261F003EAD18 /* uavgadgetinstancemanager.cpp */, - 65B3657B121C261F003EAD18 /* uavgadgetinstancemanager.h */, - 65B3657C121C261F003EAD18 /* uavgadgetmanager */, - 65B36581121C261F003EAD18 /* uavgadgetmode.cpp */, - 65B36582121C261F003EAD18 /* uavgadgetmode.h */, - 65B36583121C261F003EAD18 /* uavgadgetoptionspage.ui */, - 65B36584121C261F003EAD18 /* uavgadgetoptionspagedecorator.cpp */, - 65B36585121C261F003EAD18 /* uavgadgetoptionspagedecorator.h */, - 65B36586121C261F003EAD18 /* uniqueidmanager.cpp */, - 65B36587121C261F003EAD18 /* uniqueidmanager.h */, - 65B36588121C261F003EAD18 /* variablemanager.cpp */, - 65B36589121C261F003EAD18 /* variablemanager.h */, - 65B3658A121C261F003EAD18 /* versiondialog.cpp */, - 65B3658B121C261F003EAD18 /* versiondialog.h */, - 65B3658C121C261F003EAD18 /* viewmanager.cpp */, - 65B3658D121C261F003EAD18 /* viewmanager.h */, - 65B3658E121C261F003EAD18 /* workspacesettings.cpp */, - 65B3658F121C261F003EAD18 /* workspacesettings.h */, - 65B36590121C261F003EAD18 /* workspacesettings.ui */, - ); - path = coreplugin; - sourceTree = ""; - }; - 65B364DD121C261F003EAD18 /* actionmanager */ = { - isa = PBXGroup; - children = ( - 65B364DE121C261F003EAD18 /* actioncontainer.cpp */, - 65B364DF121C261F003EAD18 /* actioncontainer.h */, - 65B364E0121C261F003EAD18 /* actioncontainer_p.h */, - 65B364E1121C261F003EAD18 /* actionmanager.cpp */, - 65B364E2121C261F003EAD18 /* actionmanager.h */, - 65B364E3121C261F003EAD18 /* actionmanager_p.h */, - 65B364E4121C261F003EAD18 /* command.cpp */, - 65B364E5121C261F003EAD18 /* command.h */, - 65B364E6121C261F003EAD18 /* command_p.h */, - 65B364E7121C261F003EAD18 /* commandsfile.cpp */, - 65B364E8121C261F003EAD18 /* commandsfile.h */, - ); - path = actionmanager; - sourceTree = ""; - }; - 65B364FA121C261F003EAD18 /* dialogs */ = { - isa = PBXGroup; - children = ( - 65B364FB121C261F003EAD18 /* ioptionspage.cpp */, - 65B364FC121C261F003EAD18 /* ioptionspage.h */, - 65B364FD121C261F003EAD18 /* iwizard.cpp */, - 65B364FE121C261F003EAD18 /* iwizard.h */, - 65B364FF121C261F003EAD18 /* settingsdialog.cpp */, - 65B36500121C261F003EAD18 /* settingsdialog.h */, - 65B36501121C261F003EAD18 /* settingsdialog.ui */, - 65B36502121C261F003EAD18 /* shortcutsettings.cpp */, - 65B36503121C261F003EAD18 /* shortcutsettings.h */, - 65B36504121C261F003EAD18 /* shortcutsettings.ui */, - ); - path = dialogs; - sourceTree = ""; - }; - 65B36517121C261F003EAD18 /* images */ = { - isa = PBXGroup; - children = ( - 65B36518121C261F003EAD18 /* clean_pane_small.png */, - 65B36519121C261F003EAD18 /* clear.png */, - 65B3651A121C261F003EAD18 /* closebutton.png */, - 65B3651B121C261F003EAD18 /* darkclosebutton.png */, - 65B3651C121C261F003EAD18 /* dir.png */, - 65B3651D121C261F003EAD18 /* editcopy.png */, - 65B3651E121C261F003EAD18 /* editcut.png */, - 65B3651F121C261F003EAD18 /* editpaste.png */, - 65B36520121C261F003EAD18 /* empty14.png */, - 65B36521121C261F003EAD18 /* exiticon.png */, - 65B36522121C261F003EAD18 /* extension.png */, - 65B36523121C261F003EAD18 /* fancytoolbutton.svg */, - 65B36524121C261F003EAD18 /* filenew.png */, - 65B36525121C261F003EAD18 /* fileopen.png */, - 65B36526121C261F003EAD18 /* filesave.png */, - 65B36527121C261F003EAD18 /* find.png */, - 65B36528121C261F003EAD18 /* findnext.png */, - 65B36529121C261F003EAD18 /* helpicon.png */, - 65B3652A121C261F003EAD18 /* inputfield.png */, - 65B3652B121C261F003EAD18 /* inputfield_disabled.png */, - 65B3652C121C261F003EAD18 /* linkicon.png */, - 65B3652D121C261F003EAD18 /* locked.png */, - 65B3652E121C261F003EAD18 /* magnifier.png */, - 65B3652F121C261F003EAD18 /* minus.png */, - 65B36530121C261F003EAD18 /* mode_Debug.png */, - 65B36531121C261F003EAD18 /* mode_Edit.png */, - 65B36532121C261F003EAD18 /* mode_Output.png */, - 65B36533121C261F003EAD18 /* mode_Project.png */, - 65B36534121C261F003EAD18 /* mode_Reference.png */, - 65B36535121C261F003EAD18 /* next.png */, - 65B36536121C261F003EAD18 /* openpilot_logo_128.png */, - 65B36537121C261F003EAD18 /* openpilot_logo_256.png */, - 65B36538121C261F003EAD18 /* openpilot_logo_32.png */, - 65B36539121C261F003EAD18 /* openpilot_logo_64.png */, - 65B3653A121C261F003EAD18 /* openpiloticon.png */, - 65B3653B121C261F003EAD18 /* optionsicon.png */, - 65B3653C121C261F003EAD18 /* panel_button.png */, - 65B3653D121C261F003EAD18 /* panel_button_checked.png */, - 65B3653E121C261F003EAD18 /* panel_button_checked_hover.png */, - 65B3653F121C261F003EAD18 /* panel_button_hover.png */, - 65B36540121C261F003EAD18 /* panel_button_pressed.png */, - 65B36541121C261F003EAD18 /* pluginicon.png */, - 65B36542121C261F003EAD18 /* plus.png */, - 65B36543121C261F003EAD18 /* prev.png */, - 65B36544121C261F003EAD18 /* pushbutton.png */, - 65B36545121C261F003EAD18 /* pushbutton_hover.png */, - 65B36546121C261F003EAD18 /* pushbutton_pressed.png */, - 65B36547121C261F003EAD18 /* qtcreator_logo_32.png */, - 65B36548121C261F003EAD18 /* qtwatermark.png */, - 65B36549121C261F003EAD18 /* redo.png */, - 65B3654A121C261F003EAD18 /* replace.png */, - 65B3654B121C261F003EAD18 /* reset.png */, - 65B3654C121C261F003EAD18 /* sidebaricon.png */, - 65B3654D121C261F003EAD18 /* splitbutton_horizontal.png */, - 65B3654E121C261F003EAD18 /* statusbar.png */, - 65B3654F121C261F003EAD18 /* undo.png */, - 65B36550121C261F003EAD18 /* unknownfile.png */, - 65B36551121C261F003EAD18 /* unlocked.png */, - ); - path = images; - sourceTree = ""; - }; - 65B3657C121C261F003EAD18 /* uavgadgetmanager */ = { - isa = PBXGroup; - children = ( - 65B3657D121C261F003EAD18 /* uavgadgetmanager.cpp */, - 65B3657E121C261F003EAD18 /* uavgadgetmanager.h */, - 65B3657F121C261F003EAD18 /* uavgadgetview.cpp */, - 65B36580121C261F003EAD18 /* uavgadgetview.h */, - ); - path = uavgadgetmanager; - sourceTree = ""; - }; - 65B36591121C261F003EAD18 /* dial */ = { - isa = PBXGroup; - children = ( - 65B36592121C261F003EAD18 /* dial.pro */, - 65B36593121C261F003EAD18 /* dial.qrc */, - 65B36594121C261F003EAD18 /* dial_dependencies.pri */, - 65B36595121C261F003EAD18 /* dialgadget.cpp */, - 65B36596121C261F003EAD18 /* dialgadget.h */, - 65B36597121C261F003EAD18 /* DialGadget.pluginspec */, - 65B36598121C261F003EAD18 /* dialgadgetconfiguration.cpp */, - 65B36599121C261F003EAD18 /* dialgadgetconfiguration.h */, - 65B3659A121C261F003EAD18 /* dialgadgetfactory.cpp */, - 65B3659B121C261F003EAD18 /* dialgadgetfactory.h */, - 65B3659C121C261F003EAD18 /* dialgadgetoptionspage.cpp */, - 65B3659D121C261F003EAD18 /* dialgadgetoptionspage.h */, - 65B3659E121C261F003EAD18 /* dialgadgetoptionspage.ui */, - 65B3659F121C261F003EAD18 /* dialgadgetwidget.cpp */, - 65B365A0121C261F003EAD18 /* dialgadgetwidget.h */, - 65B365A1121C261F003EAD18 /* dialplugin.cpp */, - 65B365A2121C261F003EAD18 /* dialplugin.h */, - 65B365A3121C261F003EAD18 /* images */, - ); - path = dial; - sourceTree = ""; - }; - 65B365A3121C261F003EAD18 /* images */ = { - isa = PBXGroup; - children = ( - 65B365A4121C261F003EAD18 /* empty.svg */, - ); - path = images; - sourceTree = ""; - }; - 65B365A5121C261F003EAD18 /* donothing */ = { - isa = PBXGroup; - children = ( - 65B365A6121C261F003EAD18 /* DoNothing.pluginspec */, - 65B365A7121C261F003EAD18 /* donothing.pro */, - 65B365A8121C261F003EAD18 /* donothingplugin.cpp */, - 65B365A9121C261F003EAD18 /* donothingplugin.h */, - ); - path = donothing; - sourceTree = ""; - }; - 65B365AA121C261F003EAD18 /* emptygadget */ = { - isa = PBXGroup; - children = ( - 65B365AB121C261F003EAD18 /* emptygadget.cpp */, - 65B365AC121C261F003EAD18 /* emptygadget.h */, - 65B365AD121C261F003EAD18 /* EmptyGadget.pluginspec */, - 65B365AE121C261F003EAD18 /* emptygadget.pro */, - 65B365AF121C261F003EAD18 /* emptygadgetfactory.cpp */, - 65B365B0121C261F003EAD18 /* emptygadgetfactory.h */, - 65B365B1121C261F003EAD18 /* emptygadgetwidget.cpp */, - 65B365B2121C261F003EAD18 /* emptygadgetwidget.h */, - 65B365B3121C261F003EAD18 /* emptyplugin.cpp */, - 65B365B4121C261F003EAD18 /* emptyplugin.h */, - ); - path = emptygadget; - sourceTree = ""; - }; - 65B365B5121C261F003EAD18 /* gcscontrol */ = { - isa = PBXGroup; - children = ( - 65B365B6121C261F003EAD18 /* GCSControl.pluginspec */, - 65B365B7121C261F003EAD18 /* gcscontrol.pro */, - 65B365B8121C261F003EAD18 /* gcscontrol.qrc */, - 65B365B9121C261F003EAD18 /* gcscontrol.ui */, - 65B365BA121C261F003EAD18 /* gcscontrolgadget.cpp */, - 65B365BB121C261F003EAD18 /* gcscontrolgadget.h */, - 65B365BC121C261F003EAD18 /* gcscontrolgadgetfactory.cpp */, - 65B365BD121C261F003EAD18 /* gcscontrolgadgetfactory.h */, - 65B365BE121C261F003EAD18 /* gcscontrolgadgetwidget.cpp */, - 65B365BF121C261F003EAD18 /* gcscontrolgadgetwidget.h */, - 65B365C0121C261F003EAD18 /* gcscontrolplugin.cpp */, - 65B365C1121C261F003EAD18 /* gcscontrolplugin.h */, - 65B365C2121C261F003EAD18 /* gcsonctrolgadgetwidget.h */, - 65B365C3121C261F003EAD18 /* images */, - 65B365C5121C261F003EAD18 /* joystickcontrol.cpp */, - 65B365C6121C261F003EAD18 /* joystickcontrol.h */, - ); - path = gcscontrol; - sourceTree = ""; - }; - 65B365C3121C261F003EAD18 /* images */ = { - isa = PBXGroup; - children = ( - 65B365C4121C261F003EAD18 /* joystick.svg */, - ); - path = images; - sourceTree = ""; - }; - 65B365C7121C261F003EAD18 /* gpsdisplay */ = { - isa = PBXGroup; - children = ( - 65B365C8121C261F003EAD18 /* buffer.cpp */, - 65B365C9121C261F003EAD18 /* buffer.h */, - 65B365CA121C261F003EAD18 /* gpsdisplay.pro */, - 65B365CB121C261F003EAD18 /* gpsdisplay_dependencies.pri */, - 65B365CC121C261F003EAD18 /* gpsdisplaygadget.cpp */, - 65B365CD121C261F003EAD18 /* gpsdisplaygadget.h */, - 65B365CE121C261F003EAD18 /* GpsDisplayGadget.pluginspec */, - 65B365CF121C261F003EAD18 /* gpsdisplaygadgetconfiguration.cpp */, - 65B365D0121C261F003EAD18 /* gpsdisplaygadgetconfiguration.h */, - 65B365D1121C261F003EAD18 /* gpsdisplaygadgetfactory.cpp */, - 65B365D2121C261F003EAD18 /* gpsdisplaygadgetfactory.h */, - 65B365D3121C261F003EAD18 /* gpsdisplaygadgetoptionspage.cpp */, - 65B365D4121C261F003EAD18 /* gpsdisplaygadgetoptionspage.h */, - 65B365D5121C261F003EAD18 /* gpsdisplaygadgetoptionspage.ui */, - 65B365D6121C261F003EAD18 /* gpsdisplayplugin.cpp */, - 65B365D7121C261F003EAD18 /* gpsdisplayplugin.h */, - 65B365D8121C261F003EAD18 /* gpsdisplaythread.cpp */, - 65B365D9121C261F003EAD18 /* gpsdisplaythread.h */, - 65B365DA121C261F003EAD18 /* gpsdisplaywidget.cpp */, - 65B365DB121C261F003EAD18 /* gpsdisplaywidget.h */, - 65B365DC121C261F003EAD18 /* gpsdisplaywidget.ui */, - 65B365DD121C261F003EAD18 /* images */, - 65B365E0121C261F003EAD18 /* nmeaparser.cpp */, - 65B365E1121C261F003EAD18 /* nmeaparser.h */, - 65B365E2121C261F003EAD18 /* widgetresources.qrc */, - ); - path = gpsdisplay; - sourceTree = ""; - }; - 65B365DD121C261F003EAD18 /* images */ = { - isa = PBXGroup; - children = ( - 65B365DE121C261F003EAD18 /* flatEarth.png */, - 65B365DF121C261F003EAD18 /* gpsEarth.svg */, - ); - path = images; - sourceTree = ""; - }; - 65B365E3121C261F003EAD18 /* hitl */ = { - isa = PBXGroup; - children = ( - 65B365E4121C261F003EAD18 /* flightgearbridge.cpp */, - 65B365E5121C2620003EAD18 /* flightgearbridge.h */, - 65B365E6121C2620003EAD18 /* hitl.cpp */, - 65B365E7121C2620003EAD18 /* hitl.h */, - 65B365E8121C2620003EAD18 /* HITL.pluginspec */, - 65B365E9121C2620003EAD18 /* hitl.pro */, - 65B365EA121C2620003EAD18 /* hitl_dependencies.pri */, - 65B365EB121C2620003EAD18 /* hitlconfiguration.cpp */, - 65B365EC121C2620003EAD18 /* hitlconfiguration.h */, - 65B365ED121C2620003EAD18 /* hitlfactory.cpp */, - 65B365EE121C2620003EAD18 /* hitlfactory.h */, - 65B365EF121C2620003EAD18 /* hitloptionspage.cpp */, - 65B365F0121C2620003EAD18 /* hitloptionspage.h */, - 65B365F1121C2620003EAD18 /* hitloptionspage.ui */, - 65B365F2121C2620003EAD18 /* hitlplugin.cpp */, - 65B365F3121C2620003EAD18 /* hitlplugin.h */, - 65B365F4121C2620003EAD18 /* hitlresources.qrc */, - 65B365F5121C2620003EAD18 /* hitlwidget.cpp */, - 65B365F6121C2620003EAD18 /* hitlwidget.h */, - 65B365F7121C2620003EAD18 /* hitlwidget.ui */, - 65B365F8121C2620003EAD18 /* opfgprotocol.xml */, - ); - path = hitl; - sourceTree = ""; - }; - 65B365F9121C2620003EAD18 /* hitlil2 */ = { - isa = PBXGroup; - children = ( - 65B365FA121C2620003EAD18 /* hitlil2.cpp */, - 65B365FB121C2620003EAD18 /* hitlil2.h */, - 65B365FC121C2620003EAD18 /* HITLIL2.pluginspec */, - 65B365FD121C2620003EAD18 /* hitlil2.pro */, - 65B365FE121C2620003EAD18 /* hitlil2_dependencies.pri */, - 65B365FF121C2620003EAD18 /* hitlil2configuration.cpp */, - 65B36600121C2620003EAD18 /* hitlil2configuration.h */, - 65B36601121C2620003EAD18 /* hitlil2factory.cpp */, - 65B36602121C2620003EAD18 /* hitlil2factory.h */, - 65B36603121C2620003EAD18 /* hitlil2optionspage.cpp */, - 65B36604121C2620003EAD18 /* hitlil2optionspage.h */, - 65B36605121C2620003EAD18 /* hitlil2optionspage.ui */, - 65B36606121C2620003EAD18 /* hitlil2plugin.cpp */, - 65B36607121C2620003EAD18 /* hitlil2plugin.h */, - 65B36608121C2620003EAD18 /* hitlil2widget.cpp */, - 65B36609121C2620003EAD18 /* hitlil2widget.h */, - 65B3660A121C2620003EAD18 /* hitlil2widget.ui */, - 65B3660B121C2620003EAD18 /* il2bridge.cpp */, - 65B3660C121C2620003EAD18 /* il2bridge.h */, - ); - path = hitlil2; - sourceTree = ""; - }; - 65B3660D121C2620003EAD18 /* importexport */ = { - isa = PBXGroup; - children = ( - 65B3660E121C2620003EAD18 /* importexport.pro */, - 65B3660F121C2620003EAD18 /* importexport_dependencies.pri */, - 65B36610121C2620003EAD18 /* importexport_global.h */, - 65B36611121C2620003EAD18 /* importexportgadget.cpp */, - 65B36612121C2620003EAD18 /* importexportgadget.h */, - 65B36613121C2620003EAD18 /* ImportExportGadget.pluginspec */, - 65B36614121C2620003EAD18 /* importexportgadgetconfiguration.cpp */, - 65B36615121C2620003EAD18 /* importexportgadgetconfiguration.h */, - 65B36616121C2620003EAD18 /* importexportgadgetfactory.cpp */, - 65B36617121C2620003EAD18 /* importexportgadgetfactory.h */, - 65B36618121C2620003EAD18 /* importexportgadgetoptionspage.cpp */, - 65B36619121C2620003EAD18 /* importexportgadgetoptionspage.h */, - 65B3661A121C2620003EAD18 /* importexportgadgetoptionspage.ui */, - 65B3661B121C2620003EAD18 /* importexportgadgetwidget.cpp */, - 65B3661C121C2620003EAD18 /* importexportgadgetwidget.h */, - 65B3661D121C2620003EAD18 /* importexportgadgetwidget.ui */, - 65B3661E121C2620003EAD18 /* importexportplugin.cpp */, - 65B3661F121C2620003EAD18 /* importexportplugin.h */, - ); - path = importexport; - sourceTree = ""; - }; - 65B36620121C2620003EAD18 /* ipconnection */ = { - isa = PBXGroup; - children = ( - 65B36621121C2620003EAD18 /* IPconnection.pluginspec */, - 65B36622121C2620003EAD18 /* ipconnection.pri */, - 65B36623121C2620003EAD18 /* ipconnection.pro */, - 65B36624121C2620003EAD18 /* ipconnection_dependencies.pri */, - 65B36625121C2620003EAD18 /* ipconnection_global.h */, - 65B36626121C2620003EAD18 /* ipconnectionconfiguration.cpp */, - 65B36627121C2620003EAD18 /* ipconnectionconfiguration.h */, - 65B36628121C2620003EAD18 /* ipconnectionoptionspage.cpp */, - 65B36629121C2620003EAD18 /* ipconnectionoptionspage.h */, - 65B3662A121C2620003EAD18 /* ipconnectionoptionspage.ui */, - 65B3662B121C2620003EAD18 /* ipconnectionplugin.cpp */, - 65B3662C121C2620003EAD18 /* ipconnectionplugin.h */, - ); - path = ipconnection; - sourceTree = ""; - }; - 65B3662D121C2620003EAD18 /* lineardial */ = { - isa = PBXGroup; - children = ( - 65B3662E121C2620003EAD18 /* images */, - 65B36630121C2620003EAD18 /* lineardial.pro */, - 65B36631121C2620003EAD18 /* lineardial.qrc */, - 65B36632121C2620003EAD18 /* lineardial_dependencies.pri */, - 65B36633121C2620003EAD18 /* lineardialgadget.cpp */, - 65B36634121C2620003EAD18 /* lineardialgadget.h */, - 65B36635121C2620003EAD18 /* LineardialGadget.pluginspec */, - 65B36636121C2620003EAD18 /* lineardialgadgetconfiguration.cpp */, - 65B36637121C2620003EAD18 /* lineardialgadgetconfiguration.h */, - 65B36638121C2620003EAD18 /* lineardialgadgetfactory.cpp */, - 65B36639121C2620003EAD18 /* lineardialgadgetfactory.h */, - 65B3663A121C2620003EAD18 /* lineardialgadgetoptionspage.cpp */, - 65B3663B121C2620003EAD18 /* lineardialgadgetoptionspage.h */, - 65B3663C121C2620003EAD18 /* lineardialgadgetoptionspage.ui */, - 65B3663D121C2620003EAD18 /* lineardialgadgetwidget.cpp */, - 65B3663E121C2620003EAD18 /* lineardialgadgetwidget.h */, - 65B3663F121C2620003EAD18 /* lineardialplugin.cpp */, - 65B36640121C2620003EAD18 /* lineardialplugin.h */, - ); - path = lineardial; - sourceTree = ""; - }; - 65B3662E121C2620003EAD18 /* images */ = { - isa = PBXGroup; - children = ( - 65B3662F121C2620003EAD18 /* empty.svg */, - ); - path = images; - sourceTree = ""; - }; - 65B36641121C2620003EAD18 /* modelview */ = { - isa = PBXGroup; - children = ( - 65B36642121C2620003EAD18 /* modelview.pro */, - 65B36643121C2620003EAD18 /* modelview_dependencies.pri */, - 65B36644121C2620003EAD18 /* modelviewgadget.cpp */, - 65B36645121C2620003EAD18 /* modelviewgadget.h */, - 65B36646121C2620003EAD18 /* ModelViewGadget.pluginspec */, - 65B36647121C2620003EAD18 /* modelviewgadgetconfiguration.cpp */, - 65B36648121C2620003EAD18 /* modelviewgadgetconfiguration.h */, - 65B36649121C2620003EAD18 /* modelviewgadgetfactory.cpp */, - 65B3664A121C2620003EAD18 /* modelviewgadgetfactory.h */, - 65B3664B121C2620003EAD18 /* modelviewgadgetoptionspage.cpp */, - 65B3664C121C2620003EAD18 /* modelviewgadgetoptionspage.h */, - 65B3664D121C2620003EAD18 /* modelviewgadgetwidget.cpp */, - 65B3664E121C2620003EAD18 /* modelviewgadgetwidget.h */, - 65B3664F121C2620003EAD18 /* modelviewoptionspage.ui */, - 65B36650121C2620003EAD18 /* modelviewplugin.cpp */, - 65B36651121C2620003EAD18 /* modelviewplugin.h */, - ); - path = modelview; - sourceTree = ""; - }; - 65B36652121C2620003EAD18 /* notify */ = { - isa = PBXGroup; - children = ( - 65B36653121C2620003EAD18 /* images */, - 65B3665A121C2620003EAD18 /* notify.pro */, - 65B3665B121C2620003EAD18 /* notifyitemdelegate.cpp */, - 65B3665C121C2620003EAD18 /* notifyitemdelegate.h */, - 65B3665D121C2620003EAD18 /* notifyplugin.cpp */, - 65B3665E121C2620003EAD18 /* notifyplugin.h */, - 65B3665F121C2620003EAD18 /* NotifyPlugin.pluginspec */, - 65B36660121C2620003EAD18 /* notifyplugin_dependencies.pri */, - 65B36661121C2620003EAD18 /* notifypluginconfiguration.cpp */, - 65B36662121C2620003EAD18 /* notifypluginconfiguration.h */, - 65B36663121C2620003EAD18 /* notifypluginfactory.cpp */, - 65B36664121C2620003EAD18 /* notifypluginfactory.h */, - 65B36665121C2620003EAD18 /* notifyplugingadget.h */, - 65B36666121C2620003EAD18 /* notifypluginoptionspage.cpp */, - 65B36667121C2620003EAD18 /* notifypluginoptionspage.h */, - 65B36668121C2620003EAD18 /* notifypluginoptionspage.ui */, - 65B36669121C2620003EAD18 /* notifytablemodel.cpp */, - 65B3666A121C2620003EAD18 /* notifytablemodel.h */, - 65B3666B121C2620003EAD18 /* res.qrc */, - ); - path = notify; - sourceTree = ""; - }; - 65B36653121C2620003EAD18 /* images */ = { - isa = PBXGroup; - children = ( - 65B36654121C2620003EAD18 /* add.png */, - 65B36655121C2620003EAD18 /* delete.png */, - 65B36656121C2620003EAD18 /* modify.png */, - 65B36657121C2620003EAD18 /* play.png */, - 65B36658121C2620003EAD18 /* play2.png */, - 65B36659121C2620003EAD18 /* stop.png */, - ); - path = images; - sourceTree = ""; - }; - 65B3666C121C2620003EAD18 /* opmap */ = { - isa = PBXGroup; - children = ( - 65B3666D121C2620003EAD18 /* images */, - 65B3668A121C2620003EAD18 /* opmap.pro */, - 65B3668B121C2620003EAD18 /* opmap.qrc */, - 65B3668C121C2620003EAD18 /* opmap_edit_waypoint_dialog.cpp */, - 65B3668D121C2620003EAD18 /* opmap_edit_waypoint_dialog.h */, - 65B3668E121C2620003EAD18 /* opmap_edit_waypoint_dialog.ui */, - 65B3668F121C2620003EAD18 /* opmap_overlay_widget.cpp */, - 65B36690121C2620003EAD18 /* opmap_overlay_widget.h */, - 65B36691121C2620003EAD18 /* opmap_overlay_widget.ui */, - 65B36692121C2620003EAD18 /* opmap_statusbar_widget.cpp */, - 65B36693121C2620003EAD18 /* opmap_statusbar_widget.h */, - 65B36694121C2620003EAD18 /* opmap_statusbar_widget.ui */, - 65B36695121C2620003EAD18 /* opmap_waypointeditor_dialog.cpp */, - 65B36696121C2620003EAD18 /* opmap_waypointeditor_dialog.h */, - 65B36697121C2620003EAD18 /* opmap_waypointeditor_dialog.ui */, - 65B36698121C2620003EAD18 /* opmap_widget.ui */, - 65B36699121C2620003EAD18 /* opmap_zoom_slider_widget.cpp */, - 65B3669A121C2620003EAD18 /* opmap_zoom_slider_widget.h */, - 65B3669B121C2620003EAD18 /* opmap_zoom_slider_widget.ui */, - 65B3669C121C2620003EAD18 /* opmapgadget.cpp */, - 65B3669D121C2620003EAD18 /* opmapgadget.h */, - 65B3669E121C2620003EAD18 /* OPMapGadget.pluginspec */, - 65B3669F121C2620003EAD18 /* opmapgadgetconfiguration.cpp */, - 65B366A0121C2620003EAD18 /* opmapgadgetconfiguration.h */, - 65B366A1121C2620003EAD18 /* opmapgadgetfactory.cpp */, - 65B366A2121C2620003EAD18 /* opmapgadgetfactory.h */, - 65B366A3121C2620003EAD18 /* opmapgadgetoptionspage.cpp */, - 65B366A4121C2620003EAD18 /* opmapgadgetoptionspage.h */, - 65B366A5121C2620003EAD18 /* opmapgadgetoptionspage.ui */, - 65B366A6121C2620003EAD18 /* opmapgadgetwidget.cpp */, - 65B366A7121C2620003EAD18 /* opmapgadgetwidget.h */, - 65B366A8121C2620003EAD18 /* opmapplugin.cpp */, - 65B366A9121C2620003EAD18 /* opmapplugin.h */, - ); - path = opmap; - sourceTree = ""; - }; - 65B3666D121C2620003EAD18 /* images */ = { - isa = PBXGroup; - children = ( - 65B3666E121C2620003EAD18 /* Blank.psd */, - 65B3666F121C2620003EAD18 /* Blank_Pressed.psd */, - 65B36670121C2620003EAD18 /* button_bar.png */, - 65B36671121C2620003EAD18 /* circle.png */, - 65B36672121C2620003EAD18 /* combobox_down_arrow.png */, - 65B36673121C2620003EAD18 /* gcs.png */, - 65B36674121C2620003EAD18 /* go.png */, - 65B36675121C2620003EAD18 /* hold.png */, - 65B36676121C2620003EAD18 /* home.png */, - 65B36677121C2620003EAD18 /* hover.png */, - 65B36678121C2620003EAD18 /* left_but.png */, - 65B36679121C2620003EAD18 /* minus.png */, - 65B3667A121C2620003EAD18 /* minus2.png */, - 65B3667B121C2620003EAD18 /* next_waypoint.png */, - 65B3667C121C2620003EAD18 /* ok.png */, - 65B3667D121C2620003EAD18 /* pause.png */, - 65B3667E121C2620003EAD18 /* plus.png */, - 65B3667F121C2620003EAD18 /* plus2.png */, - 65B36680121C2620003EAD18 /* prev_waypoint.png */, - 65B36681121C2620003EAD18 /* right_but.png */, - 65B36682121C2620003EAD18 /* stop.png */, - 65B36683121C2620003EAD18 /* uav.png */, - 65B36684121C2620003EAD18 /* uav_heading.png */, - 65B36685121C2620003EAD18 /* uav_trail.png */, - 65B36686121C2620003EAD18 /* uav_trail_clear.png */, - 65B36687121C2620003EAD18 /* waypoint.png */, - 65B36688121C2620003EAD18 /* waypoint_marker1.png */, - 65B36689121C2620003EAD18 /* waypoint_marker2.png */, - ); - path = images; - sourceTree = ""; - }; - 65B366AA121C2620003EAD18 /* pfd */ = { - isa = PBXGroup; - children = ( - 65B366AB121C2620003EAD18 /* images */, - 65B366AD121C2620003EAD18 /* pfd.pro */, - 65B366AE121C2620003EAD18 /* pfd.qrc */, - 65B366AF121C2620003EAD18 /* pfd_dependencies.pri */, - 65B366B0121C2620003EAD18 /* pfdgadget.cpp */, - 65B366B1121C2620003EAD18 /* pfdgadget.h */, - 65B366B2121C2620003EAD18 /* PFDGadget.pluginspec */, - 65B366B3121C2620003EAD18 /* pfdgadgetconfiguration.cpp */, - 65B366B4121C2620003EAD18 /* pfdgadgetconfiguration.h */, - 65B366B5121C2620003EAD18 /* pfdgadgetfactory.cpp */, - 65B366B6121C2620003EAD18 /* pfdgadgetfactory.h */, - 65B366B7121C2620003EAD18 /* pfdgadgetoptionspage.cpp */, - 65B366B8121C2620003EAD18 /* pfdgadgetoptionspage.h */, - 65B366B9121C2620003EAD18 /* pfdgadgetoptionspage.ui */, - 65B366BA121C2620003EAD18 /* pfdgadgetwidget.cpp */, - 65B366BB121C2620003EAD18 /* pfdgadgetwidget.h */, - 65B366BC121C2620003EAD18 /* pfdplugin.cpp */, - 65B366BD121C2620003EAD18 /* pfdplugin.h */, - ); - path = pfd; - sourceTree = ""; - }; - 65B366AB121C2620003EAD18 /* images */ = { - isa = PBXGroup; - children = ( - 65B366AC121C2620003EAD18 /* pfd-default.svg */, - ); - path = images; - sourceTree = ""; - }; - 65B366BF121C2620003EAD18 /* rawhid */ = { - isa = PBXGroup; - children = ( - 65B366C0121C2620003EAD18 /* pjrc_rawhid.h */, - 65B366C1121C2620003EAD18 /* pjrc_rawhid_mac.cpp */, - 65B366C2121C2620003EAD18 /* pjrc_rawhid_unix.cpp */, - 65B366C3121C2620003EAD18 /* pjrc_rawhid_win.cpp */, - 65B366C4121C2620003EAD18 /* rawhid.cpp */, - 65B366C5121C2620003EAD18 /* rawhid.h */, - 65B366C6121C2620003EAD18 /* RawHID.pluginspec */, - 65B366C7121C2620003EAD18 /* rawhid.pri */, - 65B366C8121C2620003EAD18 /* rawhid.pro */, - 65B366C9121C2620003EAD18 /* rawhid_const.h */, - 65B366CA121C2620003EAD18 /* rawhid_dependencies.pri */, - 65B366CB121C2620003EAD18 /* rawhid_global.h */, - 65B366CC121C2620003EAD18 /* rawhidplugin.cpp */, - 65B366CD121C2620003EAD18 /* rawhidplugin.h */, - ); - path = rawhid; - sourceTree = ""; - }; - 65B366CE121C2620003EAD18 /* scope */ = { - isa = PBXGroup; - children = ( - 65B366CF121C2620003EAD18 /* plotdata.cpp */, - 65B366D0121C2620003EAD18 /* plotdata.h */, - 65B366D1121C2620003EAD18 /* scope.pro */, - 65B366D2121C2620003EAD18 /* scopegadget.cpp */, - 65B366D3121C2620003EAD18 /* scopegadget.h */, - 65B366D4121C2620003EAD18 /* ScopeGadget.pluginspec */, - 65B366D5121C2620003EAD18 /* scopegadgetconfiguration.cpp */, - 65B366D6121C2620003EAD18 /* scopegadgetconfiguration.h */, - 65B366D7121C2620003EAD18 /* scopegadgetfactory.cpp */, - 65B366D8121C2620003EAD18 /* scopegadgetfactory.h */, - 65B366D9121C2620003EAD18 /* scopegadgetoptionspage.cpp */, - 65B366DA121C2620003EAD18 /* scopegadgetoptionspage.h */, - 65B366DB121C2620003EAD18 /* scopegadgetoptionspage.ui */, - 65B366DC121C2620003EAD18 /* scopegadgetwidget.cpp */, - 65B366DD121C2620003EAD18 /* scopegadgetwidget.h */, - 65B366DE121C2620003EAD18 /* scopeplugin.cpp */, - 65B366DF121C2620003EAD18 /* scopeplugin.h */, - ); - path = scope; - sourceTree = ""; - }; - 65B366E0121C2620003EAD18 /* serialconnection */ = { - isa = PBXGroup; - children = ( - 65B366E1121C2620003EAD18 /* Serial.pluginspec */, - 65B366E2121C2620003EAD18 /* serial.pri */, - 65B366E3121C2620003EAD18 /* serial_dependencies.pri */, - 65B366E4121C2620003EAD18 /* serial_global.h */, - 65B366E5121C2620003EAD18 /* serialconnection.pro */, - 65B366E6121C2620003EAD18 /* serialplugin.cpp */, - 65B366E7121C2620003EAD18 /* serialplugin.h */, - ); - path = serialconnection; - sourceTree = ""; - }; - 65B366E8121C2620003EAD18 /* systemhealth */ = { - isa = PBXGroup; - children = ( - 65B366E9121C2620003EAD18 /* systemhealth.pro */, - 65B366EA121C2620003EAD18 /* systemhealth_dependencies.pri */, - 65B366EB121C2620003EAD18 /* systemhealthgadget.cpp */, - 65B366EC121C2620003EAD18 /* systemhealthgadget.h */, - 65B366ED121C2620003EAD18 /* SystemHealthGadget.pluginspec */, - 65B366EE121C2620003EAD18 /* systemhealthgadgetconfiguration.cpp */, - 65B366EF121C2620003EAD18 /* systemhealthgadgetconfiguration.h */, - 65B366F0121C2620003EAD18 /* systemhealthgadgetfactory.cpp */, - 65B366F1121C2620003EAD18 /* systemhealthgadgetfactory.h */, - 65B366F2121C2620003EAD18 /* systemhealthgadgetoptionspage.cpp */, - 65B366F3121C2620003EAD18 /* systemhealthgadgetoptionspage.h */, - 65B366F4121C2620003EAD18 /* systemhealthgadgetoptionspage.ui */, - 65B366F5121C2620003EAD18 /* systemhealthgadgetwidget.cpp */, - 65B366F6121C2620003EAD18 /* systemhealthgadgetwidget.h */, - 65B366F7121C2620003EAD18 /* systemhealthplugin.cpp */, - 65B366F8121C2620003EAD18 /* systemhealthplugin.h */, - ); - path = systemhealth; - sourceTree = ""; - }; - 65B366F9121C2620003EAD18 /* uavobjectbrowser */ = { - isa = PBXGroup; - children = ( - 65B366FA121C2620003EAD18 /* browseritemdelegate.cpp */, - 65B366FB121C2620003EAD18 /* browseritemdelegate.h */, - 65B366FC121C2620003EAD18 /* browserplugin.cpp */, - 65B366FD121C2620003EAD18 /* browserplugin.h */, - 65B366FE121C2620003EAD18 /* fieldtreeitem.cpp */, - 65B366FF121C2620003EAD18 /* fieldtreeitem.h */, - 65B36700121C2620003EAD18 /* treeitem.cpp */, - 65B36701121C2620003EAD18 /* treeitem.h */, - 65B36702121C2620003EAD18 /* uavobjectbrowser.cpp */, - 65B36703121C2620003EAD18 /* uavobjectbrowser.h */, - 65B36704121C2620003EAD18 /* UAVObjectBrowser.pluginspec */, - 65B36705121C2620003EAD18 /* uavobjectbrowser.pro */, - 65B36706121C2620003EAD18 /* uavobjectbrowser.ui */, - 65B36707121C2620003EAD18 /* uavobjectbrowser_dependencies.pri */, - 65B36708121C2620003EAD18 /* uavobjectbrowserconfiguration.cpp */, - 65B36709121C2620003EAD18 /* uavobjectbrowserconfiguration.h */, - 65B3670A121C2620003EAD18 /* uavobjectbrowserfactory.cpp */, - 65B3670B121C2620003EAD18 /* uavobjectbrowserfactory.h */, - 65B3670C121C2620003EAD18 /* uavobjectbrowseroptionspage.cpp */, - 65B3670D121C2620003EAD18 /* uavobjectbrowseroptionspage.h */, - 65B3670E121C2620003EAD18 /* uavobjectbrowseroptionspage.ui */, - 65B3670F121C2620003EAD18 /* uavobjectbrowserwidget.cpp */, - 65B36710121C2620003EAD18 /* uavobjectbrowserwidget.h */, - 65B36711121C2620003EAD18 /* uavobjecttreemodel.cpp */, - 65B36712121C2620003EAD18 /* uavobjecttreemodel.h */, - ); - path = uavobjectbrowser; - sourceTree = ""; - }; - 65B36713121C2620003EAD18 /* uavobjects */ = { - isa = PBXGroup; - children = ( - 65B36714121C2620003EAD18 /* actuatorcommand.cpp */, - 65B36715121C2620003EAD18 /* actuatorcommand.h */, - 65B36716121C2620003EAD18 /* actuatorcommand.py */, - 65B36717121C2620003EAD18 /* actuatordesired.cpp */, - 65B36718121C2620003EAD18 /* actuatordesired.h */, - 65B36719121C2620003EAD18 /* actuatordesired.py */, - 65B3671A121C2620003EAD18 /* actuatorsettings.cpp */, - 65B3671B121C2620003EAD18 /* actuatorsettings.h */, - 65B3671C121C2620003EAD18 /* actuatorsettings.py */, - 65B3671D121C2620003EAD18 /* ahrsstatus.cpp */, - 65B3671E121C2620003EAD18 /* ahrsstatus.h */, - 65B3671F121C2620003EAD18 /* ahrsstatus.py */, - 65B36720121C2620003EAD18 /* altitudeactual.cpp */, - 65B36721121C2620003EAD18 /* altitudeactual.h */, - 65B36722121C2620003EAD18 /* altitudeactual.py */, - 65B36723121C2620003EAD18 /* attitudeactual.cpp */, - 65B36724121C2620003EAD18 /* attitudeactual.h */, - 65B36725121C2620003EAD18 /* attitudeactual.py */, - 65B36726121C2620003EAD18 /* attitudedesired.cpp */, - 65B36727121C2620003EAD18 /* attitudedesired.h */, - 65B36728121C2620003EAD18 /* attitudedesired.py */, - 65B36729121C2620003EAD18 /* attituderaw.cpp */, - 65B3672A121C2620003EAD18 /* attituderaw.h */, - 65B3672B121C2620003EAD18 /* attituderaw.py */, - 65B3672C121C2620003EAD18 /* attitudesettings.cpp */, - 65B3672D121C2620003EAD18 /* attitudesettings.h */, - 65B3672E121C2620003EAD18 /* attitudesettings.py */, - 65B3672F121C2620003EAD18 /* exampleobject1.cpp */, - 65B36730121C2620003EAD18 /* exampleobject1.h */, - 65B36731121C2620003EAD18 /* exampleobject1.py */, - 65B36732121C2620003EAD18 /* exampleobject2.cpp */, - 65B36733121C2620003EAD18 /* exampleobject2.h */, - 65B36734121C2620003EAD18 /* exampleobject2.py */, - 65B36735121C2620003EAD18 /* examplesettings.cpp */, - 65B36736121C2620003EAD18 /* examplesettings.h */, - 65B36737121C2620003EAD18 /* examplesettings.py */, - 65B36738121C2620003EAD18 /* flightbatterystate.cpp */, - 65B36739121C2620003EAD18 /* flightbatterystate.h */, - 65B3673A121C2620003EAD18 /* flightbatterystate.py */, - 65B3673B121C2620003EAD18 /* flightsituationactual.cpp */, - 65B3673C121C2620003EAD18 /* flightsituationactual.h */, - 65B3673D121C2620003EAD18 /* flightsituationactual.py */, - 65B3673E121C2620003EAD18 /* flighttelemetrystats.cpp */, - 65B3673F121C2620003EAD18 /* flighttelemetrystats.h */, - 65B36740121C2620003EAD18 /* flighttelemetrystats.py */, - 65B36741121C2620003EAD18 /* gcstelemetrystats.cpp */, - 65B36742121C2620003EAD18 /* gcstelemetrystats.h */, - 65B36743121C2620003EAD18 /* gcstelemetrystats.py */, - 65B36744121C2620003EAD18 /* manualcontrolcommand.cpp */, - 65B36745121C2620003EAD18 /* manualcontrolcommand.h */, - 65B36746121C2620003EAD18 /* manualcontrolcommand.py */, - 65B36747121C2620003EAD18 /* manualcontrolsettings.cpp */, - 65B36748121C2620003EAD18 /* manualcontrolsettings.h */, - 65B36749121C2620003EAD18 /* manualcontrolsettings.py */, - 65B3674A121C2620003EAD18 /* navigationdesired.cpp */, - 65B3674B121C2620003EAD18 /* navigationdesired.h */, - 65B3674C121C2620003EAD18 /* navigationdesired.py */, - 65B3674D121C2620003EAD18 /* navigationsettings.cpp */, - 65B3674E121C2620003EAD18 /* navigationsettings.h */, - 65B3674F121C2620003EAD18 /* navigationsettings.py */, - 65B36750121C2620003EAD18 /* objectpersistence.cpp */, - 65B36751121C2620003EAD18 /* objectpersistence.h */, - 65B36752121C2620003EAD18 /* objectpersistence.py */, - 65B36753121C2620003EAD18 /* positionactual.cpp */, - 65B36754121C2620003EAD18 /* positionactual.h */, - 65B36755121C2620003EAD18 /* positionactual.py */, - 65B36756121C2620003EAD18 /* stabilizationsettings.cpp */, - 65B36757121C2620003EAD18 /* stabilizationsettings.h */, - 65B36758121C2620003EAD18 /* stabilizationsettings.py */, - 65B36759121C2620003EAD18 /* systemalarms.cpp */, - 65B3675A121C2620003EAD18 /* systemalarms.h */, - 65B3675B121C2620003EAD18 /* systemalarms.py */, - 65B3675C121C2620003EAD18 /* systemsettings.cpp */, - 65B3675D121C2620003EAD18 /* systemsettings.h */, - 65B3675E121C2620003EAD18 /* systemsettings.py */, - 65B3675F121C2620003EAD18 /* systemstats.cpp */, - 65B36760121C2620003EAD18 /* systemstats.h */, - 65B36761121C2620003EAD18 /* systemstats.py */, - 65B36762121C2620003EAD18 /* telemetrysettings.cpp */, - 65B36763121C2620003EAD18 /* telemetrysettings.h */, - 65B36764121C2620003EAD18 /* telemetrysettings.py */, - 65B36765121C2620003EAD18 /* tests */, - 65B3676A121C2620003EAD18 /* uavdataobject.cpp */, - 65B3676B121C2620003EAD18 /* uavdataobject.h */, - 65B3676C121C2620003EAD18 /* uavmetaobject.cpp */, - 65B3676D121C2620003EAD18 /* uavmetaobject.h */, - 65B3676E121C2620003EAD18 /* uavobject.cpp */, - 65B3676F121C2620003EAD18 /* uavobject.h */, - 65B36770121C2620003EAD18 /* uavobject.py */, - 65B36771121C2620003EAD18 /* uavobjectfield.cpp */, - 65B36772121C2620003EAD18 /* uavobjectfield.h */, - 65B36773121C2620003EAD18 /* uavobjectmanager.cpp */, - 65B36774121C2620003EAD18 /* uavobjectmanager.h */, - 65B36775121C2620003EAD18 /* UAVObjects.pluginspec */, - 65B36776121C2620003EAD18 /* uavobjects.pri */, - 65B36777121C2620003EAD18 /* uavobjects.pro */, - 65B36778121C2620003EAD18 /* uavobjects_dependencies.pri */, - 65B36779121C2620003EAD18 /* uavobjects_global.h */, - 65B3677A121C2620003EAD18 /* uavobjectsinit.cpp */, - 65B3677B121C2620003EAD18 /* uavobjectsinit.h */, - 65B3677C121C2620003EAD18 /* uavobjectsinittemplate.cpp */, - 65B3677D121C2620003EAD18 /* uavobjectsplugin.cpp */, - 65B3677E121C2620003EAD18 /* uavobjectsplugin.h */, - 65B3677F121C2620003EAD18 /* uavobjecttemplate.cpp */, - 65B36780121C2620003EAD18 /* uavobjecttemplate.h */, - 65B36781121C2620003EAD18 /* uavobjecttemplate.py */, - ); - path = uavobjects; - sourceTree = ""; - }; - 65B36765121C2620003EAD18 /* tests */ = { - isa = PBXGroup; - children = ( - 65B36766121C2620003EAD18 /* main.cpp */, - 65B36767121C2620003EAD18 /* uavobjectstest.cpp */, - 65B36768121C2620003EAD18 /* uavobjectstest.h */, - 65B36769121C2620003EAD18 /* uavobjectstest.pro */, - ); - path = tests; - sourceTree = ""; - }; - 65B36782121C2620003EAD18 /* uavtalk */ = { - isa = PBXGroup; - children = ( - 65B36783121C2620003EAD18 /* telemetry.cpp */, - 65B36784121C2620003EAD18 /* telemetry.h */, - 65B36785121C2620003EAD18 /* telemetrymanager.cpp */, - 65B36786121C2620003EAD18 /* telemetrymanager.h */, - 65B36787121C2620003EAD18 /* telemetrymonitor.cpp */, - 65B36788121C2620003EAD18 /* telemetrymonitor.h */, - 65B36789121C2620003EAD18 /* uavtalk.cpp */, - 65B3678A121C2620003EAD18 /* uavtalk.h */, - 65B3678B121C2620003EAD18 /* UAVTalk.pluginspec */, - 65B3678C121C2620003EAD18 /* uavtalk.pri */, - 65B3678D121C2620003EAD18 /* uavtalk.pro */, - 65B3678E121C2620003EAD18 /* uavtalk_dependencies.pri */, - 65B3678F121C2620003EAD18 /* uavtalk_global.h */, - 65B36790121C2620003EAD18 /* uavtalkplugin.cpp */, - 65B36791121C2620003EAD18 /* uavtalkplugin.h */, - ); - path = uavtalk; - sourceTree = ""; - }; - 65B36792121C2620003EAD18 /* uploader */ = { - isa = PBXGroup; - children = ( - 65B36793121C2620003EAD18 /* Uploader.pluginspec */, - 65B36794121C2620003EAD18 /* uploader.pro */, - 65B36795121C2620003EAD18 /* uploadergadget.cpp */, - 65B36796121C2620003EAD18 /* uploadergadget.h */, - 65B36797121C2620003EAD18 /* uploadergadgetconfiguration.cpp */, - 65B36798121C2620003EAD18 /* uploadergadgetconfiguration.h */, - 65B36799121C2620003EAD18 /* uploadergadgetfactory.cpp */, - 65B3679A121C2620003EAD18 /* uploadergadgetfactory.h */, - 65B3679B121C2620003EAD18 /* uploadergadgetoptionspage.cpp */, - 65B3679C121C2620003EAD18 /* uploadergadgetoptionspage.h */, - 65B3679D121C2620003EAD18 /* uploadergadgetwidget.cpp */, - 65B3679E121C2620003EAD18 /* uploadergadgetwidget.h */, - 65B3679F121C2620003EAD18 /* uploaderplugin.cpp */, - 65B367A0121C2620003EAD18 /* uploaderplugin.h */, - ); - path = uploader; - sourceTree = ""; - }; - 65B367A1121C2620003EAD18 /* welcome */ = { - isa = PBXGroup; - children = ( - 65B367A2121C2620003EAD18 /* communitywelcomepage.cpp */, - 65B367A3121C2620003EAD18 /* communitywelcomepage.h */, - 65B367A4121C2620003EAD18 /* communitywelcomepagewidget.cpp */, - 65B367A5121C2620003EAD18 /* communitywelcomepagewidget.h */, - 65B367A6121C2620003EAD18 /* communitywelcomepagewidget.ui */, - 65B367A7121C2620003EAD18 /* images */, - 65B367BB121C2620003EAD18 /* rssfetcher.cpp */, - 65B367BC121C2620003EAD18 /* rssfetcher.h */, - 65B367BD121C2620003EAD18 /* Welcome.pluginspec */, - 65B367BE121C2620003EAD18 /* welcome.pri */, - 65B367BF121C2620003EAD18 /* welcome.pro */, - 65B367C0121C2620003EAD18 /* welcome.qrc */, - 65B367C1121C2620003EAD18 /* welcome_dependencies.pri */, - 65B367C2121C2620003EAD18 /* welcome_global.h */, - 65B367C3121C2620003EAD18 /* welcomemode.cpp */, - 65B367C4121C2620003EAD18 /* welcomemode.h */, - 65B367C5121C2620003EAD18 /* welcomemode.ui */, - 65B367C6121C2620003EAD18 /* welcomeplugin.cpp */, - 65B367C7121C2620003EAD18 /* welcomeplugin.h */, - ); - path = welcome; - sourceTree = ""; - }; - 65B367A7121C2620003EAD18 /* images */ = { - isa = PBXGroup; - children = ( - 65B367A8121C2620003EAD18 /* arrow-left.png */, - 65B367A9121C2620003EAD18 /* arrow-right.png */, - 65B367AA121C2620003EAD18 /* background_center_frame.png */, - 65B367AB121C2620003EAD18 /* btn_26.png */, - 65B367AC121C2620003EAD18 /* btn_26_hover.png */, - 65B367AD121C2620003EAD18 /* btn_26_pressed.png */, - 65B367AE121C2620003EAD18 /* btn_27.png */, - 65B367AF121C2620003EAD18 /* btn_27_hover.png */, - 65B367B0121C2620003EAD18 /* center_frame_header.png */, - 65B367B1121C2620003EAD18 /* combobox_arrow.png */, - 65B367B2121C2620003EAD18 /* feedback-bar-background.png */, - 65B367B3121C2620003EAD18 /* feedback_arrow.png */, - 65B367B4121C2620003EAD18 /* feedback_arrow_hover.png */, - 65B367B5121C2620003EAD18 /* list_bullet_arrow.png */, - 65B367B6121C2620003EAD18 /* mode_project.png */, - 65B367B7121C2620003EAD18 /* nokia_logo.png */, - 65B367B8121C2620003EAD18 /* product_logo.png */, - 65B367B9121C2620003EAD18 /* qt_logo.png */, - 65B367BA121C2620003EAD18 /* rc_combined.png */, - ); - path = images; - sourceTree = ""; - }; - 65B367C9121C2620003EAD18 /* shared */ = { - isa = PBXGroup; - children = ( - 65B367CA121C2620003EAD18 /* namespace_global.h */, - 65B367CB121C2620003EAD18 /* qtlockedfile */, - 65B367D3121C2620003EAD18 /* qtsingleapplication */, - 65B367DE121C2620003EAD18 /* scriptwrapper */, - 65B367E3121C2620003EAD18 /* uavobjectdefinition */, - ); - path = shared; - sourceTree = ""; - }; - 65B367CB121C2620003EAD18 /* qtlockedfile */ = { - isa = PBXGroup; - children = ( - 65B367CC121C2620003EAD18 /* namespace.patch */, - 65B367CD121C2620003EAD18 /* qtlockedfile.cpp */, - 65B367CE121C2620003EAD18 /* qtlockedfile.h */, - 65B367CF121C2620003EAD18 /* qtlockedfile.pri */, - 65B367D0121C2620003EAD18 /* qtlockedfile_unix.cpp */, - 65B367D1121C2620003EAD18 /* qtlockedfile_win.cpp */, - 65B367D2121C2620003EAD18 /* README.txt */, - ); - path = qtlockedfile; - sourceTree = ""; - }; - 65B367D3121C2620003EAD18 /* qtsingleapplication */ = { - isa = PBXGroup; - children = ( - 65B367D4121C2620003EAD18 /* namespace.patch */, - 65B367D5121C2620003EAD18 /* qtlocalpeer.cpp */, - 65B367D6121C2620003EAD18 /* qtlocalpeer.h */, - 65B367D7121C2620003EAD18 /* qtsingleapplication.cpp */, - 65B367D8121C2620003EAD18 /* qtsingleapplication.h */, - 65B367D9121C2620003EAD18 /* qtsingleapplication.pri */, - 65B367DA121C2620003EAD18 /* qtsinglecoreapplication.cpp */, - 65B367DB121C2620003EAD18 /* qtsinglecoreapplication.h */, - 65B367DC121C2620003EAD18 /* qtsinglecoreapplication.pri */, - 65B367DD121C2620003EAD18 /* README.txt */, - ); - path = qtsingleapplication; - sourceTree = ""; - }; - 65B367DE121C2620003EAD18 /* scriptwrapper */ = { - isa = PBXGroup; - children = ( - 65B367DF121C2620003EAD18 /* interface_wrap_helpers.h */, - 65B367E0121C2620003EAD18 /* README */, - 65B367E1121C2620003EAD18 /* scriptwrapper.pri */, - 65B367E2121C2620003EAD18 /* wrap_helpers.h */, - ); - path = scriptwrapper; - sourceTree = ""; - }; - 65B367E3121C2620003EAD18 /* uavobjectdefinition */ = { - isa = PBXGroup; - children = ( - 65D2CA841248F9A400B1E7D6 /* mixersettings.xml */, - 65D2CA851248F9A400B1E7D6 /* mixerstatus.xml */, - 655268BC121FBD2900410C6E /* ahrscalibration.xml */, - 659ED317122226B60011010E /* ahrssettings.xml */, - 65B367E7121C2620003EAD18 /* ahrsstatus.xml */, - 65B367E4121C2620003EAD18 /* actuatorcommand.xml */, - 65B367E5121C2620003EAD18 /* actuatordesired.xml */, - 65B367E6121C2620003EAD18 /* actuatorsettings.xml */, - 65B367E9121C2620003EAD18 /* attitudeactual.xml */, - 65B367EA121C2620003EAD18 /* attitudedesired.xml */, - 65B367EB121C2620003EAD18 /* attituderaw.xml */, - 65209A1812208B0600453371 /* baroaltitude.xml */, - 65B367F0121C2620003EAD18 /* flightbatterystate.xml */, - 65B367F2121C2620003EAD18 /* flighttelemetrystats.xml */, - 65B367F3121C2620003EAD18 /* gcstelemetrystats.xml */, - 65209A1912208B0600453371 /* gpsposition.xml */, - 65322D3B122841F60046CD7C /* gpstime.xml */, - 65345C871288668B00A5E4E8 /* guidancesettings.xml */, - 657CEEAD121DB6C8007A1FBE /* homelocation.xml */, - 65B367F4121C2620003EAD18 /* manualcontrolcommand.xml */, - 65B367F5121C2620003EAD18 /* manualcontrolsettings.xml */, - 65B367F8121C2620003EAD18 /* objectpersistence.xml */, - 65B367F9121C2620003EAD18 /* positionactual.xml */, - 65EA2E171273C55200636061 /* ratedesired.xml */, - 65B367FA121C2620003EAD18 /* stabilizationsettings.xml */, - 65B367FB121C2620003EAD18 /* systemalarms.xml */, - 65B367FC121C2620003EAD18 /* systemsettings.xml */, - 65B367FD121C2620003EAD18 /* systemstats.xml */, - 65B367FE121C2620003EAD18 /* telemetrysettings.xml */, - 65408AA812BB1648004DACC5 /* i2cstats.xml */, - 656268C612DC1923007B0A0F /* nedaccel.xml */, - ); - path = uavobjectdefinition; - sourceTree = ""; - }; - 65B7E6AC120DF1CD000C1123 /* AHRS */ = { - isa = PBXGroup; - children = ( - 6509C7E912CA57DC002E5DC2 /* insgps16state.c */, - 6502584212CA4D2600583CDF /* insgps13state.c */, - 65FC66AA123F30F100B04F74 /* ahrs_timer.c */, - 65B7E6AE120DF1E2000C1123 /* ahrs.c */, - 65B7E6AF120DF1E2000C1123 /* inc */, - 65B7E6B6120DF1E2000C1123 /* Makefile */, - 65B7E6B7120DF1E2000C1123 /* pios_board.c */, - ); - name = AHRS; - sourceTree = ""; - }; - 65B7E6AF120DF1E2000C1123 /* inc */ = { - isa = PBXGroup; - children = ( - 65FC66AB123F312A00B04F74 /* ahrs_timer.h */, - 6543304F121980300063F913 /* insgps.h */, - 65B7E6B0120DF1E2000C1123 /* ahrs.h */, - 65B7E6B1120DF1E2000C1123 /* ahrs_fsm.h */, - 65B7E6B4120DF1E2000C1123 /* pios_config.h */, - ); - name = inc; - path = ../../AHRS/inc; - sourceTree = SOURCE_ROOT; - }; 65C35E4E12EFB2F3004811C2 /* shared */ = { isa = PBXGroup; children = ( - 65C35E4F12EFB2F3004811C2 /* uavobjectdefinition */, + 65E466BC14E244020075459C /* uavobjectdefinition */, ); name = shared; path = ../../../shared; sourceTree = SOURCE_ROOT; }; - 65C35E4F12EFB2F3004811C2 /* uavobjectdefinition */ = { - isa = PBXGroup; - children = ( - 65E8C788139AA2A800E1F979 /* accessorydesired.xml */, - 65C35E5012EFB2F3004811C2 /* actuatorcommand.xml */, - 65C35E5112EFB2F3004811C2 /* actuatordesired.xml */, - 65C35E5212EFB2F3004811C2 /* actuatorsettings.xml */, - 65C35E5312EFB2F3004811C2 /* ahrscalibration.xml */, - 65C35E5412EFB2F3004811C2 /* ahrssettings.xml */, - 65C35E5512EFB2F3004811C2 /* ahrsstatus.xml */, - 65C35E5612EFB2F3004811C2 /* attitudeactual.xml */, - 65C35E5812EFB2F3004811C2 /* attituderaw.xml */, - 65E410AE12F65AEA00725888 /* attitudesettings.xml */, - 65C35E5912EFB2F3004811C2 /* baroaltitude.xml */, - 655B1A8E13B2FC0900B0E48D /* camerastabsettings.xml */, - 652C8568132B632A00BFCC70 /* firmwareiapobj.xml */, - 65C35E5C12EFB2F3004811C2 /* flightbatterystate.xml */, - 65C35E5D12EFB2F3004811C2 /* flightplancontrol.xml */, - 65C35E5E12EFB2F3004811C2 /* flightplansettings.xml */, - 65C35E5F12EFB2F3004811C2 /* flightplanstatus.xml */, - 65C35E6012EFB2F3004811C2 /* flighttelemetrystats.xml */, - 65078B09136FCEE600536549 /* flightstatus.xml */, - 65C35E6112EFB2F3004811C2 /* gcstelemetrystats.xml */, - 65C35E6212EFB2F3004811C2 /* gpsposition.xml */, - 65C35E6312EFB2F3004811C2 /* gpssatellites.xml */, - 65C35E6412EFB2F3004811C2 /* gpstime.xml */, - 65C35E6512EFB2F3004811C2 /* guidancesettings.xml */, - 65C35E6612EFB2F3004811C2 /* homelocation.xml */, - 65E6D80713E3A4D0002A557A /* hwsettings.xml */, - 65C35E6712EFB2F3004811C2 /* i2cstats.xml */, - 65C35E6812EFB2F3004811C2 /* manualcontrolcommand.xml */, - 65C35E6912EFB2F3004811C2 /* manualcontrolsettings.xml */, - 65C35E6A12EFB2F3004811C2 /* mixersettings.xml */, - 65C35E6B12EFB2F3004811C2 /* mixerstatus.xml */, - 65C35E6C12EFB2F3004811C2 /* nedaccel.xml */, - 65C35E6D12EFB2F3004811C2 /* objectpersistence.xml */, - 65C35E6E12EFB2F3004811C2 /* positionactual.xml */, - 65C35E6F12EFB2F3004811C2 /* positiondesired.xml */, - 65C35E7012EFB2F3004811C2 /* ratedesired.xml */, - 65FAB8CF147FFD76000FF8B2 /* receiveractivity.xml */, - 652C856A132B6EA600BFCC70 /* sonaraltitude.xml */, - 6536D47B1307962C0042A298 /* stabilizationdesired.xml */, - 65C35E7112EFB2F3004811C2 /* stabilizationsettings.xml */, - 65C35E7212EFB2F3004811C2 /* systemalarms.xml */, - 65C35E7312EFB2F3004811C2 /* systemsettings.xml */, - 65C35E7412EFB2F3004811C2 /* systemstats.xml */, - 65C35E7512EFB2F3004811C2 /* taskinfo.xml */, - 65C35E7612EFB2F3004811C2 /* telemetrysettings.xml */, - 65C35E7712EFB2F3004811C2 /* velocityactual.xml */, - 65C35E7812EFB2F3004811C2 /* velocitydesired.xml */, - 65C35E7912EFB2F3004811C2 /* watchdogstatus.xml */, - 65DEA79113F2143B00095B06 /* cameradesired.xml */, - ); - path = uavobjectdefinition; - sourceTree = ""; - }; - 65C35EA212F0A834004811C2 /* inc */ = { - isa = PBXGroup; - children = ( - 65C35EA312F0A834004811C2 /* eventdispatcher.h */, - 65C35EA412F0A834004811C2 /* uavobjectmanager.h */, - 65C35EA512F0A834004811C2 /* uavobjectsinit.h */, - 65C35EA612F0A834004811C2 /* uavobjecttemplate.h */, - 65C35EA712F0A834004811C2 /* utlist.h */, - ); - path = inc; - sourceTree = ""; - }; - 65C35F6512F0DC2D004811C2 /* Attitude */ = { - isa = PBXGroup; - children = ( - 65C35F6612F0DC2D004811C2 /* attitude.c */, - 65C35F6712F0DC2D004811C2 /* inc */, - ); - path = Attitude; - sourceTree = ""; - }; - 65C35F6712F0DC2D004811C2 /* inc */ = { - isa = PBXGroup; - children = ( - 65C35F6812F0DC2D004811C2 /* attitude.h */, - ); - path = inc; - sourceTree = ""; - }; - 65C9903B13A871B90082BD60 /* CameraStab */ = { - isa = PBXGroup; - children = ( - 65C9903C13A871B90082BD60 /* camerastab.c */, - 65C9903D13A871B90082BD60 /* inc */, - ); - path = CameraStab; - sourceTree = ""; - }; - 65C9903D13A871B90082BD60 /* inc */ = { - isa = PBXGroup; - children = ( - 65C9903E13A871B90082BD60 /* camerastab.h */, - ); - path = inc; - sourceTree = ""; - }; - 65E6DF7012E02E8E00058553 /* CopterControl */ = { - isa = PBXGroup; - children = ( - 65E6DF7112E02E8E00058553 /* Makefile */, - 65E6DF7212E02E8E00058553 /* System */, - ); - name = CopterControl; - path = ../../CopterControl; - sourceTree = SOURCE_ROOT; - }; - 65E6DF7212E02E8E00058553 /* System */ = { - isa = PBXGroup; - children = ( - 65E6DF7312E02E8E00058553 /* alarms.c */, - 65E6DF7412E02E8E00058553 /* coptercontrol.c */, - 65E6DF7512E02E8E00058553 /* inc */, - 65E6DF7E12E02E8E00058553 /* pios_board.c */, - 65E6DF7F12E02E8E00058553 /* pios_board_posix.c */, - 65E6DF8012E02E8E00058553 /* taskmonitor.c */, - ); - path = System; - sourceTree = ""; - }; - 65E6DF7512E02E8E00058553 /* inc */ = { - isa = PBXGroup; - children = ( - 65E6DF7612E02E8E00058553 /* alarms.h */, - 65E6DF7712E02E8E00058553 /* FreeRTOSConfig.h */, - 65E6DF7812E02E8E00058553 /* op_config.h */, - 65E6DF7912E02E8E00058553 /* openpilot.h */, - 65E6DF7A12E02E8E00058553 /* pios_board_posix.h */, - 65E6DF7B12E02E8E00058553 /* pios_config.h */, - 65E6DF7C12E02E8E00058553 /* pios_config_posix.h */, - 65E6DF7D12E02E8E00058553 /* taskmonitor.h */, - ); - path = inc; - sourceTree = ""; - }; - 65E6DF9012E0313E00058553 /* PipXtreme */ = { - isa = PBXGroup; - children = ( - 65E6DF9112E0313E00058553 /* aes.c */, - 65E6E04412E0313F00058553 /* crc.c */, - 65E6E04512E0313F00058553 /* gpio_in.c */, - 65E6E04612E0313F00058553 /* inc */, - 65E6E05612E0313F00058553 /* main.c */, - 65E6E05712E0313F00058553 /* Makefile */, - 65E6E05812E0313F00058553 /* packet_handler.c */, - 65E6E05912E0313F00058553 /* pios_board.c */, - 65E6E05A12E0313F00058553 /* pios_usb_hid_desc.c */, - 65E6E05B12E0313F00058553 /* rfm22b.c */, - 65E6E05C12E0313F00058553 /* saved_settings.c */, - 65E6E05D12E0313F00058553 /* stopwatch.c */, - 65E6E05E12E0313F00058553 /* transparent_comms.c */, - 65E6E05F12E0313F00058553 /* uavtalk_comms.c */, - 65E6E06012E0313F00058553 /* watchdog.c */, - ); - name = PipXtreme; - path = ../../PipXtreme; - sourceTree = SOURCE_ROOT; - }; - 65E6E04612E0313F00058553 /* inc */ = { - isa = PBXGroup; - children = ( - 65E6E04712E0313F00058553 /* aes.h */, - 65E6E04812E0313F00058553 /* crc.h */, - 65E6E04912E0313F00058553 /* gpio_in.h */, - 65E6E04A12E0313F00058553 /* main.h */, - 65E6E04B12E0313F00058553 /* packet_handler.h */, - 65E6E04C12E0313F00058553 /* pios_config.h */, - 65E6E04D12E0313F00058553 /* pios_usb.h */, - 65E6E04E12E0313F00058553 /* pios_usb_hid_desc.h */, - 65E6E04F12E0313F00058553 /* rfm22b.h */, - 65E6E05012E0313F00058553 /* saved_settings.h */, - 65E6E05112E0313F00058553 /* stopwatch.h */, - 65E6E05212E0313F00058553 /* transparent_comms.h */, - 65E6E05312E0313F00058553 /* uavtalk_comms.h */, - 65E6E05412E0313F00058553 /* usb_conf.h */, - 65E6E05512E0313F00058553 /* watchdog.h */, - ); - path = inc; - sourceTree = ""; - }; - 65E8EF1E11EEA61E00BBF654 /* OpenPilot */ = { - isa = PBXGroup; - children = ( - 6536D4881307AB950042A298 /* UAVObjects.inc */, - 65E8EF1F11EEA61E00BBF654 /* Makefile */, - 65E8EF2011EEA61E00BBF654 /* Makefile.posix */, - 65E8EF5B11EEA61E00BBF654 /* System */, - 65E8EF6811EEA61E00BBF654 /* Tests */, - ); - name = OpenPilot; - path = ../../OpenPilot; - sourceTree = SOURCE_ROOT; - }; - 65E8EF5B11EEA61E00BBF654 /* System */ = { - isa = PBXGroup; - children = ( - 65E8EF5C11EEA61E00BBF654 /* alarms.c */, - 65E8EF5D11EEA61E00BBF654 /* inc */, - 65E8EF6511EEA61E00BBF654 /* openpilot.c */, - 65E8EF6611EEA61E00BBF654 /* pios_board.c */, - 65E8EF6711EEA61E00BBF654 /* pios_board_posix.c */, - 6589A983131DE24F006BD67C /* taskmonitor.c */, - ); - name = System; - path = ../../OpenPilot/System; - sourceTree = SOURCE_ROOT; - }; - 65E8EF5D11EEA61E00BBF654 /* inc */ = { - isa = PBXGroup; - children = ( - 6589A972131DDE93006BD67C /* FreeRTOSConfig.h */, - 65E8EF5E11EEA61E00BBF654 /* alarms.h */, - 65E8EF5F11EEA61E00BBF654 /* op_config.h */, - 65E8EF6011EEA61E00BBF654 /* openpilot.h */, - 65E8EF6111EEA61E00BBF654 /* pios_board.h */, - 65E8EF6211EEA61E00BBF654 /* pios_board_posix.h */, - 65E8EF6311EEA61E00BBF654 /* pios_config.h */, - 65E8EF6411EEA61E00BBF654 /* pios_config_posix.h */, - ); - name = inc; - path = ../../OpenPilot/System/inc; - sourceTree = SOURCE_ROOT; - }; - 65E8EF6811EEA61E00BBF654 /* Tests */ = { - isa = PBXGroup; - children = ( - 65E8EF6911EEA61E00BBF654 /* test_BMP085.c */, - 65E8EF6A11EEA61E00BBF654 /* test_common.c */, - 65E8EF6B11EEA61E00BBF654 /* test_cpuload.c */, - 65E8EF6C11EEA61E00BBF654 /* test_i2c_PCF8570.c */, - 65E8EF6D11EEA61E00BBF654 /* test_uavobjects.c */, - ); - name = Tests; - path = ../../OpenPilot/Tests; - sourceTree = SOURCE_ROOT; - }; - 65E8F02F11EFF25C00BBF654 /* PiOS */ = { - isa = PBXGroup; - children = ( - 65632DF41251650300469B77 /* Boards */, - 65E8F03011EFF25C00BBF654 /* Common */, - 65E8F03811EFF25C00BBF654 /* inc */, - 65E8F05711EFF25C00BBF654 /* pios.h */, - 65E8F05811EFF25C00BBF654 /* STM32F10x */, - ); - name = PiOS; - path = ../../PiOS; - sourceTree = SOURCE_ROOT; - }; - 65E8F03011EFF25C00BBF654 /* Common */ = { - isa = PBXGroup; - children = ( - 654612D812B5E9A900B719D0 /* pios_iap.c */, - 65E8F03111EFF25C00BBF654 /* pios_bmp085.c */, - 65E8F03211EFF25C00BBF654 /* pios_com.c */, - 65E8F03311EFF25C00BBF654 /* pios_hmc5843.c */, - 65E8F03411EFF25C00BBF654 /* pios_opahrs.c */, - 65E8F03511EFF25C00BBF654 /* pios_opahrs_proto.c */, - 65E8F03611EFF25C00BBF654 /* pios_sdcard.c */, - 65E8F03711EFF25C00BBF654 /* printf-stdarg.c */, - 6528CCB412E406B800CF5144 /* pios_adxl345.c */, - 6512D60712ED4CB8008175E5 /* pios_flash_w25x.c */, - 65FF4D5E137EDEC100146BE4 /* pios_flashfs_objlist.c */, - 6562BE1713CCAD0600C823E8 /* pios_rcvr.c */, - 65E8C743139A6D0900E1F979 /* pios_crc.c */, - ); - name = Common; - path = ../../PiOS/Common; - sourceTree = SOURCE_ROOT; - }; - 65E8F03811EFF25C00BBF654 /* inc */ = { - isa = PBXGroup; - children = ( - 6528CCE212E40F6700CF5144 /* pios_adxl345.h */, - 65E8C745139A6D1A00E1F979 /* pios_crc.h */, - 65E8F03A11EFF25C00BBF654 /* pios_adc.h */, - 65E6E09912E037C800058553 /* pios_adc_priv.h */, - 65E8F03B11EFF25C00BBF654 /* pios_bmp085.h */, - 65E8F03C11EFF25C00BBF654 /* pios_com.h */, - 65E8F03D11EFF25C00BBF654 /* pios_com_priv.h */, - 65E8F03E11EFF25C00BBF654 /* pios_debug.h */, - 65E8F03F11EFF25C00BBF654 /* pios_delay.h */, - 65E8F04011EFF25C00BBF654 /* pios_exti.h */, - 6512D60512ED4CA2008175E5 /* pios_flash_w25x.h */, - 65FF4D61137EFA4F00146BE4 /* pios_flashfs_objlist.h */, - 65E8F04111EFF25C00BBF654 /* pios_gpio.h */, - 65E8F04211EFF25C00BBF654 /* pios_hmc5843.h */, - 65E8F04311EFF25C00BBF654 /* pios_i2c.h */, - 6526645A122DF972006F9A3C /* pios_i2c_priv.h */, - 65E8F04411EFF25C00BBF654 /* pios_irq.h */, - 65E8F04511EFF25C00BBF654 /* pios_led.h */, - 65E8F04611EFF25C00BBF654 /* pios_opahrs.h */, - 65E8F04711EFF25C00BBF654 /* pios_opahrs_proto.h */, - 65E8F04811EFF25C00BBF654 /* pios_ppm.h */, - 65E8F04911EFF25C00BBF654 /* pios_pwm.h */, - 657FF86A12EA8BFB00801617 /* pios_pwm_priv.h */, - 65643CAC1413322000A32F59 /* pios_rcvr.h */, - 65643CAB1413322000A32F59 /* pios_rcvr_priv.h */, - 6589A9E2131DF1C7006BD67C /* pios_rtc.h */, - 65643CAD1413322000A32F59 /* pios_rtc_priv.h */, - 65643CAE1413322000A32F59 /* pios_sbus_priv.h */, - 65643CAF1413322000A32F59 /* pios_sbus.h */, - 65E8F04A11EFF25C00BBF654 /* pios_sdcard.h */, - 65E8F04B11EFF25C00BBF654 /* pios_servo.h */, - 65FBE14412E7C98100176B5A /* pios_servo_priv.h */, - 65E8F04C11EFF25C00BBF654 /* pios_dsm.h */, - 65643CB01413322000A32F59 /* pios_dsm_priv.h */, - 65E8F04D11EFF25C00BBF654 /* pios_spi.h */, - 65E8F04E11EFF25C00BBF654 /* pios_spi_priv.h */, - 65E8F04F11EFF25C00BBF654 /* pios_stm32.h */, - 65E8F05011EFF25C00BBF654 /* pios_sys.h */, - 65E8F05111EFF25C00BBF654 /* pios_usart.h */, - 65E8F05211EFF25C00BBF654 /* pios_usart_priv.h */, - 65E8F05311EFF25C00BBF654 /* pios_usb.h */, - 65E8F05511EFF25C00BBF654 /* pios_usb_hid.h */, - 651CF9EF120B700D00EEFD70 /* pios_usb_hid_desc.h */, - 651CF9F0120B700D00EEFD70 /* pios_usb_hid_istr.h */, - 651CF9F1120B700D00EEFD70 /* pios_usb_hid_prop.h */, - 651CF9F2120B700D00EEFD70 /* pios_usb_hid_pwr.h */, - 6526645B122DF972006F9A3C /* pios_wdg.h */, - 651CF9F3120B700D00EEFD70 /* usb_conf.h */, - 65E8F05611EFF25C00BBF654 /* stm32f10x_conf.h */, - ); - name = inc; - path = ../../PiOS/inc; - sourceTree = SOURCE_ROOT; - }; - 65E8F05811EFF25C00BBF654 /* STM32F10x */ = { - isa = PBXGroup; - children = ( - 6572CB1613D0F2B200FC2972 /* link_STM32103CB_CC_Rev1_memory.ld */, - 6572CB1713D0F2B200FC2972 /* link_STM32103CB_CC_Rev1_sections.ld */, - 65E8F05911EFF25C00BBF654 /* Libraries */, - 65E8F0D811EFF25C00BBF654 /* link_stm32f10x_HD.ld */, - 65E8F0DB11EFF25C00BBF654 /* link_stm32f10x_MD.ld */, - 65E8F0DC11EFF25C00BBF654 /* pios_adc.c */, - 65E8F0DD11EFF25C00BBF654 /* pios_debug.c */, - 65E8F0DE11EFF25C00BBF654 /* pios_delay.c */, - 65E8F0DF11EFF25C00BBF654 /* pios_exti.c */, - 65E8F0E011EFF25C00BBF654 /* pios_gpio.c */, - 65E8F0E111EFF25C00BBF654 /* pios_i2c.c */, - 65E8F0E211EFF25C00BBF654 /* pios_irq.c */, - 65E8F0E311EFF25C00BBF654 /* pios_led.c */, - 65E8F0E411EFF25C00BBF654 /* pios_ppm.c */, - 65E8F0E511EFF25C00BBF654 /* pios_pwm.c */, - 6589A9DB131DEE76006BD67C /* pios_rtc.c */, - 65643CBA141350C200A32F59 /* pios_sbus.c */, - 65E8F0E611EFF25C00BBF654 /* pios_servo.c */, - 65E8F0E711EFF25C00BBF654 /* pios_dsm.c */, - 65E8F0E811EFF25C00BBF654 /* pios_spi.c */, - 65E8F0E911EFF25C00BBF654 /* pios_sys.c */, - 65643CB91413456D00A32F59 /* pios_tim.c */, - 65E8F0EA11EFF25C00BBF654 /* pios_usart.c */, - 65E8F0ED11EFF25C00BBF654 /* pios_usb_hid.c */, - 651CF9E5120B5D8300EEFD70 /* pios_usb_hid_desc.c */, - 651CF9E6120B5D8300EEFD70 /* pios_usb_hid_istr.c */, - 651CF9E7120B5D8300EEFD70 /* pios_usb_hid_prop.c */, - 651CF9E8120B5D8300EEFD70 /* pios_usb_hid_pwr.c */, - 65003B31121249CA00C183DD /* pios_wdg.c */, - 65E8F0EE11EFF25C00BBF654 /* startup_stm32f10x_HD.S */, - 65E8F0F111EFF25C00BBF654 /* startup_stm32f10x_MD.S */, - ); - name = STM32F10x; - path = ../../PiOS/STM32F10x; - sourceTree = SOURCE_ROOT; - }; - 65E8F05911EFF25C00BBF654 /* Libraries */ = { - isa = PBXGroup; - children = ( - 65E8F05A11EFF25C00BBF654 /* CMSIS */, - 65E8F06B11EFF25C00BBF654 /* dosfs */, - 65E8F07111EFF25C00BBF654 /* FreeRTOS */, - 65E8F08D11EFF25C00BBF654 /* msd */, - 65E8F09911EFF25C00BBF654 /* STM32_USB-FS-Device_Driver */, - 65E8F0A911EFF25C00BBF654 /* STM32F10x_StdPeriph_Driver */, - ); - name = Libraries; - path = ../../PiOS/STM32F10x/Libraries; - sourceTree = SOURCE_ROOT; - }; - 65E8F05A11EFF25C00BBF654 /* CMSIS */ = { - isa = PBXGroup; - children = ( - 65E8F05B11EFF25C00BBF654 /* Core */, - 65E8F06A11EFF25C00BBF654 /* License.doc */, - ); - name = CMSIS; - path = ../../PiOS/STM32F10x/Libraries/CMSIS; - sourceTree = SOURCE_ROOT; - }; - 65E8F05B11EFF25C00BBF654 /* Core */ = { - isa = PBXGroup; - children = ( - 65E8F05C11EFF25C00BBF654 /* CM3 */, - 65E8F06811EFF25C00BBF654 /* Documentation */, - ); - name = Core; - path = ../../PiOS/STM32F10x/Libraries/CMSIS/Core; - sourceTree = SOURCE_ROOT; - }; - 65E8F05C11EFF25C00BBF654 /* CM3 */ = { - isa = PBXGroup; - children = ( - 65E8F05D11EFF25C00BBF654 /* core_cm3.c */, - 65E8F05E11EFF25C00BBF654 /* core_cm3.h */, - 65E8F05F11EFF25C00BBF654 /* startup */, - 65E8F06511EFF25C00BBF654 /* stm32f10x.h */, - 65E8F06611EFF25C00BBF654 /* system_stm32f10x.c */, - 65E8F06711EFF25C00BBF654 /* system_stm32f10x.h */, - ); - name = CM3; - path = ../../PiOS/STM32F10x/Libraries/CMSIS/Core/CM3; - sourceTree = SOURCE_ROOT; - }; - 65E8F05F11EFF25C00BBF654 /* startup */ = { - isa = PBXGroup; - children = ( - 65E8F06011EFF25C00BBF654 /* gcc */, - ); - name = startup; - path = ../../PiOS/STM32F10x/Libraries/CMSIS/Core/CM3/startup; - sourceTree = SOURCE_ROOT; - }; - 65E8F06011EFF25C00BBF654 /* gcc */ = { - isa = PBXGroup; - children = ( - 65E8F06111EFF25C00BBF654 /* startup_stm32f10x_cl.s */, - 65E8F06211EFF25C00BBF654 /* startup_stm32f10x_hd.s */, - 65E8F06311EFF25C00BBF654 /* startup_stm32f10x_ld.s */, - 65E8F06411EFF25C00BBF654 /* startup_stm32f10x_md.s */, - ); - name = gcc; - path = ../../PiOS/STM32F10x/Libraries/CMSIS/Core/CM3/startup/gcc; - sourceTree = SOURCE_ROOT; - }; - 65E8F06811EFF25C00BBF654 /* Documentation */ = { - isa = PBXGroup; - children = ( - 65E8F06911EFF25C00BBF654 /* CMSIS_Core.htm */, - ); - name = Documentation; - path = ../../PiOS/STM32F10x/Libraries/CMSIS/Core/Documentation; - sourceTree = SOURCE_ROOT; - }; - 65E8F06B11EFF25C00BBF654 /* dosfs */ = { - isa = PBXGroup; - children = ( - 65E8F06C11EFF25C00BBF654 /* dfs_sdcard.c */, - 65E8F06D11EFF25C00BBF654 /* dosfs.c */, - 65E8F06E11EFF25C00BBF654 /* dosfs.h */, - 65E8F06F11EFF25C00BBF654 /* README.txt */, - 65E8F07011EFF25C00BBF654 /* README_1st.txt */, - ); - name = dosfs; - path = ../../PiOS/STM32F10x/Libraries/dosfs; - sourceTree = SOURCE_ROOT; - }; - 65E8F07111EFF25C00BBF654 /* FreeRTOS */ = { - isa = PBXGroup; - children = ( - 65E8F07211EFF25C00BBF654 /* Source */, - ); - name = FreeRTOS; - path = ../../PiOS/STM32F10x/Libraries/FreeRTOS; - sourceTree = SOURCE_ROOT; - }; - 65E8F07211EFF25C00BBF654 /* Source */ = { - isa = PBXGroup; - children = ( - 65E8F07311EFF25C00BBF654 /* croutine.c */, - 65E8F07411EFF25C00BBF654 /* include */, - 65E8F07F11EFF25C00BBF654 /* list.c */, - 65E8F08011EFF25C00BBF654 /* portable */, - 65E8F08A11EFF25C00BBF654 /* queue.c */, - 65E8F08B11EFF25C00BBF654 /* readme.txt */, - 65E8F08C11EFF25C00BBF654 /* tasks.c */, - ); - name = Source; - path = ../../PiOS/STM32F10x/Libraries/FreeRTOS/Source; - sourceTree = SOURCE_ROOT; - }; - 65E8F07411EFF25C00BBF654 /* include */ = { - isa = PBXGroup; - children = ( - 65E8F07511EFF25C00BBF654 /* croutine.h */, - 65E8F07611EFF25C00BBF654 /* FreeRTOS.h */, - 65E8F07711EFF25C00BBF654 /* list.h */, - 65E8F07811EFF25C00BBF654 /* mpu_wrappers.h */, - 65E8F07911EFF25C00BBF654 /* portable.h */, - 65E8F07A11EFF25C00BBF654 /* projdefs.h */, - 65E8F07B11EFF25C00BBF654 /* queue.h */, - 65E8F07C11EFF25C00BBF654 /* semphr.h */, - 65E8F07D11EFF25C00BBF654 /* StackMacros.h */, - 65E8F07E11EFF25C00BBF654 /* task.h */, - ); - name = include; - path = ../../PiOS/STM32F10x/Libraries/FreeRTOS/Source/include; - sourceTree = SOURCE_ROOT; - }; - 65E8F08011EFF25C00BBF654 /* portable */ = { - isa = PBXGroup; - children = ( - 65E8F08111EFF25C00BBF654 /* GCC */, - 65E8F08511EFF25C00BBF654 /* MemMang */, - 65E8F08911EFF25C00BBF654 /* readme.txt */, - ); - name = portable; - path = ../../PiOS/STM32F10x/Libraries/FreeRTOS/Source/portable; - sourceTree = SOURCE_ROOT; - }; - 65E8F08111EFF25C00BBF654 /* GCC */ = { - isa = PBXGroup; - children = ( - 65E8F08211EFF25C00BBF654 /* ARM_CM3 */, - ); - name = GCC; - path = ../../PiOS/STM32F10x/Libraries/FreeRTOS/Source/portable/GCC; - sourceTree = SOURCE_ROOT; - }; - 65E8F08211EFF25C00BBF654 /* ARM_CM3 */ = { - isa = PBXGroup; - children = ( - 65E8F08311EFF25C00BBF654 /* port.c */, - 65E8F08411EFF25C00BBF654 /* portmacro.h */, - ); - name = ARM_CM3; - path = ../../PiOS/STM32F10x/Libraries/FreeRTOS/Source/portable/GCC/ARM_CM3; - sourceTree = SOURCE_ROOT; - }; - 65E8F08511EFF25C00BBF654 /* MemMang */ = { - isa = PBXGroup; - children = ( - 65E8F08611EFF25C00BBF654 /* heap_1.c */, - 65E8F08711EFF25C00BBF654 /* heap_2.c */, - 65E8F08811EFF25C00BBF654 /* heap_3.c */, - ); - name = MemMang; - path = ../../PiOS/STM32F10x/Libraries/FreeRTOS/Source/portable/MemMang; - sourceTree = SOURCE_ROOT; - }; - 65E8F08D11EFF25C00BBF654 /* msd */ = { - isa = PBXGroup; - children = ( - 65E8F08E11EFF25C00BBF654 /* msd.c */, - 65E8F08F11EFF25C00BBF654 /* msd.h */, - 65E8F09011EFF25C00BBF654 /* msd_bot.c */, - 65E8F09111EFF25C00BBF654 /* msd_bot.h */, - 65E8F09211EFF25C00BBF654 /* msd_desc.c */, - 65E8F09311EFF25C00BBF654 /* msd_desc.h */, - 65E8F09411EFF25C00BBF654 /* msd_memory.c */, - 65E8F09511EFF25C00BBF654 /* msd_memory.h */, - 65E8F09611EFF25C00BBF654 /* msd_scsi.c */, - 65E8F09711EFF25C00BBF654 /* msd_scsi.h */, - 65E8F09811EFF25C00BBF654 /* msd_scsi_data.c */, - ); - name = msd; - path = ../../PiOS/STM32F10x/Libraries/msd; - sourceTree = SOURCE_ROOT; - }; - 65E8F09911EFF25C00BBF654 /* STM32_USB-FS-Device_Driver */ = { - isa = PBXGroup; - children = ( - 65E8F09A11EFF25C00BBF654 /* inc */, - 65E8F0A311EFF25C00BBF654 /* src */, - ); - name = "STM32_USB-FS-Device_Driver"; - path = "../../PiOS/STM32F10x/Libraries/STM32_USB-FS-Device_Driver"; - sourceTree = SOURCE_ROOT; - }; - 65E8F09A11EFF25C00BBF654 /* inc */ = { - isa = PBXGroup; - children = ( - 65E8F09B11EFF25C00BBF654 /* usb_core.h */, - 65E8F09C11EFF25C00BBF654 /* usb_def.h */, - 65E8F09D11EFF25C00BBF654 /* usb_init.h */, - 65E8F09E11EFF25C00BBF654 /* usb_int.h */, - 65E8F09F11EFF25C00BBF654 /* usb_lib.h */, - 65E8F0A011EFF25C00BBF654 /* usb_mem.h */, - 65E8F0A111EFF25C00BBF654 /* usb_regs.h */, - 65E8F0A211EFF25C00BBF654 /* usb_type.h */, - ); - name = inc; - path = "../../PiOS/STM32F10x/Libraries/STM32_USB-FS-Device_Driver/inc"; - sourceTree = SOURCE_ROOT; - }; - 65E8F0A311EFF25C00BBF654 /* src */ = { - isa = PBXGroup; - children = ( - 65E8F0A411EFF25C00BBF654 /* usb_core.c */, - 65E8F0A511EFF25C00BBF654 /* usb_init.c */, - 65E8F0A611EFF25C00BBF654 /* usb_int.c */, - 65E8F0A711EFF25C00BBF654 /* usb_mem.c */, - 65E8F0A811EFF25C00BBF654 /* usb_regs.c */, - ); - name = src; - path = "../../PiOS/STM32F10x/Libraries/STM32_USB-FS-Device_Driver/src"; - sourceTree = SOURCE_ROOT; - }; - 65E8F0A911EFF25C00BBF654 /* STM32F10x_StdPeriph_Driver */ = { - isa = PBXGroup; - children = ( - 65E8F0AA11EFF25C00BBF654 /* inc */, - 65E8F0C111EFF25C00BBF654 /* src */, - ); - name = STM32F10x_StdPeriph_Driver; - path = ../../PiOS/STM32F10x/Libraries/STM32F10x_StdPeriph_Driver; - sourceTree = SOURCE_ROOT; - }; - 65E8F0AA11EFF25C00BBF654 /* inc */ = { - isa = PBXGroup; - children = ( - 65E8F0AB11EFF25C00BBF654 /* misc.h */, - 65E8F0AC11EFF25C00BBF654 /* stm32f10x_adc.h */, - 65E8F0AD11EFF25C00BBF654 /* stm32f10x_bkp.h */, - 65E8F0AE11EFF25C00BBF654 /* stm32f10x_can.h */, - 65E8F0AF11EFF25C00BBF654 /* stm32f10x_crc.h */, - 65E8F0B011EFF25C00BBF654 /* stm32f10x_dac.h */, - 65E8F0B111EFF25C00BBF654 /* stm32f10x_dbgmcu.h */, - 65E8F0B211EFF25C00BBF654 /* stm32f10x_dma.h */, - 65E8F0B311EFF25C00BBF654 /* stm32f10x_exti.h */, - 65E8F0B411EFF25C00BBF654 /* stm32f10x_flash.h */, - 65E8F0B511EFF25C00BBF654 /* stm32f10x_fsmc.h */, - 65E8F0B611EFF25C00BBF654 /* stm32f10x_gpio.h */, - 65E8F0B711EFF25C00BBF654 /* stm32f10x_i2c.h */, - 65E8F0B811EFF25C00BBF654 /* stm32f10x_iwdg.h */, - 65E8F0B911EFF25C00BBF654 /* stm32f10x_pwr.h */, - 65E8F0BA11EFF25C00BBF654 /* stm32f10x_rcc.h */, - 65E8F0BB11EFF25C00BBF654 /* stm32f10x_rtc.h */, - 65E8F0BC11EFF25C00BBF654 /* stm32f10x_sdio.h */, - 65E8F0BD11EFF25C00BBF654 /* stm32f10x_spi.h */, - 65E8F0BE11EFF25C00BBF654 /* stm32f10x_tim.h */, - 65E8F0BF11EFF25C00BBF654 /* stm32f10x_usart.h */, - 65E8F0C011EFF25C00BBF654 /* stm32f10x_wwdg.h */, - ); - name = inc; - path = ../../PiOS/STM32F10x/Libraries/STM32F10x_StdPeriph_Driver/inc; - sourceTree = SOURCE_ROOT; - }; - 65E8F0C111EFF25C00BBF654 /* src */ = { - isa = PBXGroup; - children = ( - 65E8F0C211EFF25C00BBF654 /* misc.c */, - 65E8F0C311EFF25C00BBF654 /* stm32f10x_adc.c */, - 65E8F0C411EFF25C00BBF654 /* stm32f10x_bkp.c */, - 65E8F0C511EFF25C00BBF654 /* stm32f10x_can.c */, - 65E8F0C611EFF25C00BBF654 /* stm32f10x_crc.c */, - 65E8F0C711EFF25C00BBF654 /* stm32f10x_dac.c */, - 65E8F0C811EFF25C00BBF654 /* stm32f10x_dbgmcu.c */, - 65E8F0C911EFF25C00BBF654 /* stm32f10x_dma.c */, - 65E8F0CA11EFF25C00BBF654 /* stm32f10x_exti.c */, - 65E8F0CB11EFF25C00BBF654 /* stm32f10x_flash.c */, - 65E8F0CC11EFF25C00BBF654 /* stm32f10x_fsmc.c */, - 65E8F0CD11EFF25C00BBF654 /* stm32f10x_gpio.c */, - 65E8F0CE11EFF25C00BBF654 /* stm32f10x_i2c.c */, - 65E8F0CF11EFF25C00BBF654 /* stm32f10x_iwdg.c */, - 65E8F0D011EFF25C00BBF654 /* stm32f10x_pwr.c */, - 65E8F0D111EFF25C00BBF654 /* stm32f10x_rcc.c */, - 65E8F0D211EFF25C00BBF654 /* stm32f10x_rtc.c */, - 65E8F0D311EFF25C00BBF654 /* stm32f10x_sdio.c */, - 65E8F0D411EFF25C00BBF654 /* stm32f10x_spi.c */, - 65E8F0D511EFF25C00BBF654 /* stm32f10x_tim.c */, - 65E8F0D611EFF25C00BBF654 /* stm32f10x_usart.c */, - 65E8F0D711EFF25C00BBF654 /* stm32f10x_wwdg.c */, - ); - name = src; - path = ../../PiOS/STM32F10x/Libraries/STM32F10x_StdPeriph_Driver/src; - sourceTree = SOURCE_ROOT; - }; - 65F93B9012EE09280047DB36 /* PipXtreme */ = { - isa = PBXGroup; - children = ( - 65F93C3912EE09280047DB36 /* aes.c */, - 65F93C3A12EE09280047DB36 /* Build */, - 65F93CEC12EE09290047DB36 /* crc.c */, - 65F93CED12EE09290047DB36 /* gpio_in.c */, - 65F93CEE12EE09290047DB36 /* inc */, - 65F93CFE12EE09290047DB36 /* main.c */, - 65F93CFF12EE09290047DB36 /* Makefile */, - 65F93D0012EE09290047DB36 /* packet_handler.c */, - 65F93D0112EE09290047DB36 /* pios_board.c */, - 65F93D0212EE09290047DB36 /* pios_usb_hid_desc.c */, - 65F93D0312EE09290047DB36 /* rfm22b.c */, - 65F93D0412EE09290047DB36 /* saved_settings.c */, - 65F93D0512EE09290047DB36 /* stopwatch.c */, - 65F93D0612EE09290047DB36 /* transparent_comms.c */, - 65F93D0712EE09290047DB36 /* uavtalk_comms.c */, - 65F93D0812EE09290047DB36 /* watchdog.c */, - ); - name = PipXtreme; - path = ../../PipXtreme; - sourceTree = SOURCE_ROOT; - }; - 65F93C3A12EE09280047DB36 /* Build */ = { - isa = PBXGroup; - children = ( - 65F93C3B12EE09280047DB36 /* aes.lst */, - 65F93C3C12EE09280047DB36 /* aes.o */, - 65F93C3D12EE09280047DB36 /* buffer.lst */, - 65F93C3E12EE09280047DB36 /* buffer.o */, - 65F93C3F12EE09280047DB36 /* core_cm3.lst */, - 65F93C4012EE09280047DB36 /* core_cm3.o */, - 65F93C4112EE09280047DB36 /* crc.lst */, - 65F93C4212EE09280047DB36 /* crc.o */, - 65F93C4312EE09280047DB36 /* dep */, - 65F93C7C12EE09280047DB36 /* fifo_buffer.lst */, - 65F93C7D12EE09280047DB36 /* fifo_buffer.o */, - 65F93C7E12EE09280047DB36 /* gpio_in.lst */, - 65F93C7F12EE09280047DB36 /* gpio_in.o */, - 65F93C8012EE09280047DB36 /* main.lst */, - 65F93C8112EE09280047DB36 /* main.o */, - 65F93C8212EE09280047DB36 /* misc.lst */, - 65F93C8312EE09280047DB36 /* misc.o */, - 65F93C8412EE09290047DB36 /* packet_handler.lst */, - 65F93C8512EE09290047DB36 /* packet_handler.o */, - 65F93C8612EE09290047DB36 /* pios_adc.lst */, - 65F93C8712EE09290047DB36 /* pios_adc.o */, - 65F93C8812EE09290047DB36 /* pios_board.lst */, - 65F93C8912EE09290047DB36 /* pios_board.o */, - 65F93C8A12EE09290047DB36 /* pios_com.lst */, - 65F93C8B12EE09290047DB36 /* pios_com.o */, - 65F93C8C12EE09290047DB36 /* pios_delay.lst */, - 65F93C8D12EE09290047DB36 /* pios_delay.o */, - 65F93C8E12EE09290047DB36 /* pios_gpio.lst */, - 65F93C8F12EE09290047DB36 /* pios_gpio.o */, - 65F93C9012EE09290047DB36 /* pios_irq.lst */, - 65F93C9112EE09290047DB36 /* pios_irq.o */, - 65F93C9212EE09290047DB36 /* pios_led.lst */, - 65F93C9312EE09290047DB36 /* pios_led.o */, - 65F93C9412EE09290047DB36 /* pios_spi.lst */, - 65F93C9512EE09290047DB36 /* pios_spi.o */, - 65F93C9612EE09290047DB36 /* pios_sys.lst */, - 65F93C9712EE09290047DB36 /* pios_sys.o */, - 65F93C9812EE09290047DB36 /* pios_usart.lst */, - 65F93C9912EE09290047DB36 /* pios_usart.o */, - 65F93C9A12EE09290047DB36 /* pios_usb_hid.lst */, - 65F93C9B12EE09290047DB36 /* pios_usb_hid.o */, - 65F93C9C12EE09290047DB36 /* pios_usb_hid_desc.lst */, - 65F93C9D12EE09290047DB36 /* pios_usb_hid_desc.o */, - 65F93C9E12EE09290047DB36 /* pios_usb_hid_istr.lst */, - 65F93C9F12EE09290047DB36 /* pios_usb_hid_istr.o */, - 65F93CA012EE09290047DB36 /* pios_usb_hid_prop.lst */, - 65F93CA112EE09290047DB36 /* pios_usb_hid_prop.o */, - 65F93CA212EE09290047DB36 /* pios_usb_hid_pwr.lst */, - 65F93CA312EE09290047DB36 /* pios_usb_hid_pwr.o */, - 65F93CA412EE09290047DB36 /* pios_wdg.lst */, - 65F93CA512EE09290047DB36 /* pios_wdg.o */, - 65F93CA612EE09290047DB36 /* PipXtreme.bin */, - 65F93CA712EE09290047DB36 /* PipXtreme.elf */, - 65F93CA812EE09290047DB36 /* PipXtreme.hex */, - 65F93CA912EE09290047DB36 /* PipXtreme.lss */, - 65F93CAA12EE09290047DB36 /* PipXtreme.map */, - 65F93CAB12EE09290047DB36 /* PipXtreme.sym */, - 65F93CAC12EE09290047DB36 /* printf-stdarg.lst */, - 65F93CAD12EE09290047DB36 /* printf-stdarg.o */, - 65F93CAE12EE09290047DB36 /* rfm22b.lst */, - 65F93CAF12EE09290047DB36 /* rfm22b.o */, - 65F93CB012EE09290047DB36 /* saved_settings.lst */, - 65F93CB112EE09290047DB36 /* saved_settings.o */, - 65F93CB212EE09290047DB36 /* startup_stm32f10x_MD.lst */, - 65F93CB312EE09290047DB36 /* startup_stm32f10x_MD.o */, - 65F93CB412EE09290047DB36 /* stm32f10x_adc.lst */, - 65F93CB512EE09290047DB36 /* stm32f10x_adc.o */, - 65F93CB612EE09290047DB36 /* stm32f10x_bkp.lst */, - 65F93CB712EE09290047DB36 /* stm32f10x_bkp.o */, - 65F93CB812EE09290047DB36 /* stm32f10x_crc.lst */, - 65F93CB912EE09290047DB36 /* stm32f10x_crc.o */, - 65F93CBA12EE09290047DB36 /* stm32f10x_dac.lst */, - 65F93CBB12EE09290047DB36 /* stm32f10x_dac.o */, - 65F93CBC12EE09290047DB36 /* stm32f10x_dbgmcu.lst */, - 65F93CBD12EE09290047DB36 /* stm32f10x_dbgmcu.o */, - 65F93CBE12EE09290047DB36 /* stm32f10x_dma.lst */, - 65F93CBF12EE09290047DB36 /* stm32f10x_dma.o */, - 65F93CC012EE09290047DB36 /* stm32f10x_exti.lst */, - 65F93CC112EE09290047DB36 /* stm32f10x_exti.o */, - 65F93CC212EE09290047DB36 /* stm32f10x_flash.lst */, - 65F93CC312EE09290047DB36 /* stm32f10x_flash.o */, - 65F93CC412EE09290047DB36 /* stm32f10x_gpio.lst */, - 65F93CC512EE09290047DB36 /* stm32f10x_gpio.o */, - 65F93CC612EE09290047DB36 /* stm32f10x_i2c.lst */, - 65F93CC712EE09290047DB36 /* stm32f10x_i2c.o */, - 65F93CC812EE09290047DB36 /* stm32f10x_iwdg.lst */, - 65F93CC912EE09290047DB36 /* stm32f10x_iwdg.o */, - 65F93CCA12EE09290047DB36 /* stm32f10x_pwr.lst */, - 65F93CCB12EE09290047DB36 /* stm32f10x_pwr.o */, - 65F93CCC12EE09290047DB36 /* stm32f10x_rcc.lst */, - 65F93CCD12EE09290047DB36 /* stm32f10x_rcc.o */, - 65F93CCE12EE09290047DB36 /* stm32f10x_rtc.lst */, - 65F93CCF12EE09290047DB36 /* stm32f10x_rtc.o */, - 65F93CD012EE09290047DB36 /* stm32f10x_spi.lst */, - 65F93CD112EE09290047DB36 /* stm32f10x_spi.o */, - 65F93CD212EE09290047DB36 /* stm32f10x_tim.lst */, - 65F93CD312EE09290047DB36 /* stm32f10x_tim.o */, - 65F93CD412EE09290047DB36 /* stm32f10x_usart.lst */, - 65F93CD512EE09290047DB36 /* stm32f10x_usart.o */, - 65F93CD612EE09290047DB36 /* stopwatch.lst */, - 65F93CD712EE09290047DB36 /* stopwatch.o */, - 65F93CD812EE09290047DB36 /* system_stm32f10x.lst */, - 65F93CD912EE09290047DB36 /* system_stm32f10x.o */, - 65F93CDA12EE09290047DB36 /* transparent_comms.lst */, - 65F93CDB12EE09290047DB36 /* transparent_comms.o */, - 65F93CDC12EE09290047DB36 /* uavtalk_comms.lst */, - 65F93CDD12EE09290047DB36 /* uavtalk_comms.o */, - 65F93CDE12EE09290047DB36 /* usb_core.lst */, - 65F93CDF12EE09290047DB36 /* usb_core.o */, - 65F93CE012EE09290047DB36 /* usb_init.lst */, - 65F93CE112EE09290047DB36 /* usb_init.o */, - 65F93CE212EE09290047DB36 /* usb_int.lst */, - 65F93CE312EE09290047DB36 /* usb_int.o */, - 65F93CE412EE09290047DB36 /* usb_mem.lst */, - 65F93CE512EE09290047DB36 /* usb_mem.o */, - 65F93CE612EE09290047DB36 /* usb_regs.lst */, - 65F93CE712EE09290047DB36 /* usb_regs.o */, - 65F93CE812EE09290047DB36 /* usb_sil.lst */, - 65F93CE912EE09290047DB36 /* usb_sil.o */, - 65F93CEA12EE09290047DB36 /* watchdog.lst */, - 65F93CEB12EE09290047DB36 /* watchdog.o */, - ); - path = Build; - sourceTree = ""; - }; - 65F93C4312EE09280047DB36 /* dep */ = { - isa = PBXGroup; - children = ( - 65F93C4412EE09280047DB36 /* aes.o.d */, - 65F93C4512EE09280047DB36 /* buffer.o.d */, - 65F93C4612EE09280047DB36 /* core_cm3.o.d */, - 65F93C4712EE09280047DB36 /* crc.o.d */, - 65F93C4812EE09280047DB36 /* fifo_buffer.o.d */, - 65F93C4912EE09280047DB36 /* gpio_in.o.d */, - 65F93C4A12EE09280047DB36 /* main.o.d */, - 65F93C4B12EE09280047DB36 /* misc.o.d */, - 65F93C4C12EE09280047DB36 /* packet_handler.o.d */, - 65F93C4D12EE09280047DB36 /* pios_adc.o.d */, - 65F93C4E12EE09280047DB36 /* pios_board.o.d */, - 65F93C4F12EE09280047DB36 /* pios_com.o.d */, - 65F93C5012EE09280047DB36 /* pios_delay.o.d */, - 65F93C5112EE09280047DB36 /* pios_gpio.o.d */, - 65F93C5212EE09280047DB36 /* pios_irq.o.d */, - 65F93C5312EE09280047DB36 /* pios_led.o.d */, - 65F93C5412EE09280047DB36 /* pios_spi.o.d */, - 65F93C5512EE09280047DB36 /* pios_sys.o.d */, - 65F93C5612EE09280047DB36 /* pios_usart.o.d */, - 65F93C5712EE09280047DB36 /* pios_usb_hid.o.d */, - 65F93C5812EE09280047DB36 /* pios_usb_hid_desc.o.d */, - 65F93C5912EE09280047DB36 /* pios_usb_hid_istr.o.d */, - 65F93C5A12EE09280047DB36 /* pios_usb_hid_prop.o.d */, - 65F93C5B12EE09280047DB36 /* pios_usb_hid_pwr.o.d */, - 65F93C5C12EE09280047DB36 /* pios_wdg.o.d */, - 65F93C5D12EE09280047DB36 /* printf-stdarg.o.d */, - 65F93C5E12EE09280047DB36 /* rfm22b.o.d */, - 65F93C5F12EE09280047DB36 /* saved_settings.o.d */, - 65F93C6012EE09280047DB36 /* stm32f10x_adc.o.d */, - 65F93C6112EE09280047DB36 /* stm32f10x_bkp.o.d */, - 65F93C6212EE09280047DB36 /* stm32f10x_crc.o.d */, - 65F93C6312EE09280047DB36 /* stm32f10x_dac.o.d */, - 65F93C6412EE09280047DB36 /* stm32f10x_dbgmcu.o.d */, - 65F93C6512EE09280047DB36 /* stm32f10x_dma.o.d */, - 65F93C6612EE09280047DB36 /* stm32f10x_exti.o.d */, - 65F93C6712EE09280047DB36 /* stm32f10x_flash.o.d */, - 65F93C6812EE09280047DB36 /* stm32f10x_gpio.o.d */, - 65F93C6912EE09280047DB36 /* stm32f10x_i2c.o.d */, - 65F93C6A12EE09280047DB36 /* stm32f10x_iwdg.o.d */, - 65F93C6B12EE09280047DB36 /* stm32f10x_pwr.o.d */, - 65F93C6C12EE09280047DB36 /* stm32f10x_rcc.o.d */, - 65F93C6D12EE09280047DB36 /* stm32f10x_rtc.o.d */, - 65F93C6E12EE09280047DB36 /* stm32f10x_spi.o.d */, - 65F93C6F12EE09280047DB36 /* stm32f10x_tim.o.d */, - 65F93C7012EE09280047DB36 /* stm32f10x_usart.o.d */, - 65F93C7112EE09280047DB36 /* stopwatch.o.d */, - 65F93C7212EE09280047DB36 /* system_stm32f10x.o.d */, - 65F93C7312EE09280047DB36 /* transparent_comms.o.d */, - 65F93C7412EE09280047DB36 /* uavtalk_comms.o.d */, - 65F93C7512EE09280047DB36 /* usb_core.o.d */, - 65F93C7612EE09280047DB36 /* usb_init.o.d */, - 65F93C7712EE09280047DB36 /* usb_int.o.d */, - 65F93C7812EE09280047DB36 /* usb_mem.o.d */, - 65F93C7912EE09280047DB36 /* usb_regs.o.d */, - 65F93C7A12EE09280047DB36 /* usb_sil.o.d */, - 65F93C7B12EE09280047DB36 /* watchdog.o.d */, - ); - path = dep; - sourceTree = ""; - }; - 65F93CEE12EE09290047DB36 /* inc */ = { - isa = PBXGroup; - children = ( - 65F93CEF12EE09290047DB36 /* aes.h */, - 65F93CF012EE09290047DB36 /* crc.h */, - 65F93CF112EE09290047DB36 /* gpio_in.h */, - 65F93CF212EE09290047DB36 /* main.h */, - 65F93CF312EE09290047DB36 /* packet_handler.h */, - 65F93CF412EE09290047DB36 /* pios_config.h */, - 65F93CF512EE09290047DB36 /* pios_usb.h */, - 65F93CF612EE09290047DB36 /* pios_usb_hid_desc.h */, - 65F93CF712EE09290047DB36 /* rfm22b.h */, - 65F93CF812EE09290047DB36 /* saved_settings.h */, - 65F93CF912EE09290047DB36 /* stopwatch.h */, - 65F93CFA12EE09290047DB36 /* transparent_comms.h */, - 65F93CFB12EE09290047DB36 /* uavtalk_comms.h */, - 65F93CFC12EE09290047DB36 /* usb_conf.h */, - 65F93CFD12EE09290047DB36 /* watchdog.h */, - ); - path = inc; - sourceTree = ""; - }; - 65FF4BB313791C3300146BE4 /* Bootloaders */ = { - isa = PBXGroup; - children = ( - 65FF4BB413791C3300146BE4 /* AHRS */, - 65FF4BC413791C3300146BE4 /* BootloaderUpdater */, - 65FF4BCB13791C3300146BE4 /* CopterControl */, - 65FF4BD513791C3300146BE4 /* OpenPilot */, - 65FF4BE213791C3300146BE4 /* PipXtreme */, - ); - name = Bootloaders; - path = ../../Bootloaders; - sourceTree = SOURCE_ROOT; - }; - 65FF4BB413791C3300146BE4 /* AHRS */ = { - isa = PBXGroup; - children = ( - 65FF4BB513791C3300146BE4 /* ahrs_slave_test.c */, - 65FF4BB613791C3300146BE4 /* ahrs_spi_program.c */, - 65FF4BB713791C3300146BE4 /* ahrs_spi_program_master.c */, - 65FF4BB813791C3300146BE4 /* ahrs_spi_program_slave.c */, - 65FF4BB913791C3300146BE4 /* bl_fsm.c */, - 65FF4BBA13791C3300146BE4 /* inc */, - 65FF4BC113791C3300146BE4 /* main.c */, - 65FF4BC213791C3300146BE4 /* Makefile */, - 65FF4BC313791C3300146BE4 /* pios_board.c */, - ); - path = AHRS; - sourceTree = ""; - }; - 65FF4BBA13791C3300146BE4 /* inc */ = { - isa = PBXGroup; - children = ( - 65FF4BBB13791C3300146BE4 /* ahrs_bl.h */, - 65FF4BBC13791C3300146BE4 /* ahrs_spi_program.h */, - 65FF4BBD13791C3300146BE4 /* ahrs_spi_program_master.h */, - 65FF4BBE13791C3300146BE4 /* ahrs_spi_program_slave.h */, - 65FF4BBF13791C3300146BE4 /* bl_fsm.h */, - 65FF4BC013791C3300146BE4 /* pios_config.h */, - ); - path = inc; - sourceTree = ""; - }; - 65FF4BC413791C3300146BE4 /* BootloaderUpdater */ = { - isa = PBXGroup; - children = ( - 65FF4BC513791C3300146BE4 /* inc */, - 65FF4BC713791C3300146BE4 /* main.c */, - 65FF4BC813791C3300146BE4 /* Makefile */, - 65FF4BC913791C3300146BE4 /* pios_board.c */, - 65FF4BCA13791C3300146BE4 /* test.bin */, - ); - path = BootloaderUpdater; - sourceTree = ""; - }; - 65FF4BC513791C3300146BE4 /* inc */ = { - isa = PBXGroup; - children = ( - 65FF4BC613791C3300146BE4 /* pios_config.h */, - ); - path = inc; - sourceTree = ""; - }; - 65FF4BCB13791C3300146BE4 /* CopterControl */ = { - isa = PBXGroup; - children = ( - 65FF4BCC13791C3300146BE4 /* inc */, - 65FF4BD113791C3300146BE4 /* main.c */, - 65FF4BD213791C3300146BE4 /* Makefile */, - 65FF4BD313791C3300146BE4 /* op_dfu.c */, - 65FF4BD413791C3300146BE4 /* pios_board.c */, - ); - path = CopterControl; - sourceTree = ""; - }; - 65FF4BCC13791C3300146BE4 /* inc */ = { - isa = PBXGroup; - children = ( - 65FF4BCD13791C3300146BE4 /* common.h */, - 65FF4BCE13791C3300146BE4 /* op_dfu.h */, - 65FF4BCF13791C3300146BE4 /* pios_config.h */, - 65FF4BD013791C3300146BE4 /* pios_usb.h */, - ); - path = inc; - sourceTree = ""; - }; - 65FF4BD513791C3300146BE4 /* OpenPilot */ = { - isa = PBXGroup; - children = ( - 65FF4BD613791C3300146BE4 /* inc */, - 65FF4BDC13791C3300146BE4 /* main.c */, - 65FF4BDD13791C3300146BE4 /* Makefile */, - 65FF4BDE13791C3300146BE4 /* op_dfu.c */, - 65FF4BDF13791C3300146BE4 /* pios_board.c */, - 65FF4BE013791C3300146BE4 /* ssp.c */, - 65FF4BE113791C3300146BE4 /* ssp_timer.c */, - ); - path = OpenPilot; - sourceTree = ""; - }; - 65FF4BD613791C3300146BE4 /* inc */ = { - isa = PBXGroup; - children = ( - 65FF4BD713791C3300146BE4 /* common.h */, - 65FF4BD813791C3300146BE4 /* op_dfu.h */, - 65FF4BD913791C3300146BE4 /* pios_config.h */, - 65FF4BDA13791C3300146BE4 /* pios_usb.h */, - 65FF4BDB13791C3300146BE4 /* ssp.h */, - ); - path = inc; - sourceTree = ""; - }; - 65FF4BE213791C3300146BE4 /* PipXtreme */ = { - isa = PBXGroup; - children = ( - 65FF4BE313791C3300146BE4 /* inc */, - 65FF4BE813791C3300146BE4 /* main.c */, - 65FF4BE913791C3300146BE4 /* Makefile */, - 65FF4BEA13791C3300146BE4 /* op_dfu.c */, - 65FF4BEB13791C3300146BE4 /* pios_board.c */, - ); - path = PipXtreme; - sourceTree = ""; - }; - 65FF4BE313791C3300146BE4 /* inc */ = { - isa = PBXGroup; - children = ( - 65FF4BE413791C3300146BE4 /* common.h */, - 65FF4BE513791C3300146BE4 /* op_dfu.h */, - 65FF4BE613791C3300146BE4 /* pios_config.h */, - 65FF4BE713791C3300146BE4 /* pios_usb.h */, - ); - path = inc; - sourceTree = ""; - }; - C6A0FF2B0290797F04C91782 /* Documentation */ = { - isa = PBXGroup; - children = ( - ); - name = Documentation; - sourceTree = ""; - }; /* End PBXGroup section */ /* Begin PBXLegacyTarget section */ diff --git a/flight/Project/gdb/ahrs b/flight/Project/gdb/ahrs deleted file mode 100644 index 152723139..000000000 --- a/flight/Project/gdb/ahrs +++ /dev/null @@ -1,38 +0,0 @@ -define connect - target remote localhost:3334 - monitor cortex_m3 vector_catch all - file ./build/ahrs/AHRS.elf -end -#monitor reset halt - -define hook-step - monitor cortex_m3 maskisr on -end -define hookpost-step - monitor cortex_m3 maskisr off -end - -define hook-stepi - monitor cortex_m3 maskisr on -end - -define hookpost-stepi - monitor cortex_m3 maskisr off -end - -define hook-next - monitor cortex_m3 maskisr on -end - -define hookpost-next - monitor cortex_m3 maskisr off -end - -define hook-finish - monitor cortex_m3 maskisr on -end - -define hookpost-finish - monitor cortex_m3 maskisr off -end - diff --git a/flight/UAVObjects/eventdispatcher.c b/flight/UAVObjects/eventdispatcher.c index f6eed78ff..a5a728b62 100644 --- a/flight/UAVObjects/eventdispatcher.c +++ b/flight/UAVObjects/eventdispatcher.c @@ -350,6 +350,8 @@ static int32_t processPeriodicUpdates() { if ( xQueueSend(objEntry->evInfo.queue, &objEntry->evInfo.ev, 0) != pdTRUE ) // do not block if queue is full { + if (objEntry->evInfo.ev.obj != NULL) + stats.lastErrorID = UAVObjGetID(objEntry->evInfo.ev.obj); ++stats.eventErrors; } } diff --git a/flight/UAVObjects/inc/eventdispatcher.h b/flight/UAVObjects/inc/eventdispatcher.h index bfcb6b85e..5c2f7e148 100644 --- a/flight/UAVObjects/inc/eventdispatcher.h +++ b/flight/UAVObjects/inc/eventdispatcher.h @@ -31,6 +31,7 @@ * Event dispatcher statistics */ typedef struct { + uint32_t lastErrorID; uint32_t eventErrors; } EventStats; diff --git a/flight/UAVObjects/inc/uavobjectmanager.h b/flight/UAVObjects/inc/uavobjectmanager.h index 08078acf5..20f7b1f6e 100644 --- a/flight/UAVObjects/inc/uavobjectmanager.h +++ b/flight/UAVObjects/inc/uavobjectmanager.h @@ -139,7 +139,10 @@ typedef void (*UAVObjInitializeCallback)(UAVObjHandle obj, uint16_t instId); * Event manager statistics */ typedef struct { - uint32_t eventErrors; + uint32_t eventQueueErrors; + uint32_t eventCallbackErrors; + uint32_t lastCallbackErrorID; + uint32_t lastQueueErrorID; } UAVObjStats; int32_t UAVObjInitialize(); diff --git a/flight/UAVObjects/uavobjectmanager.c b/flight/UAVObjects/uavobjectmanager.c index 3eea7e450..d37b00312 100644 --- a/flight/UAVObjects/uavobjectmanager.c +++ b/flight/UAVObjects/uavobjectmanager.c @@ -1573,14 +1573,16 @@ static int32_t sendEvent(ObjectList * obj, uint16_t instId, if (eventEntry->queue != 0) { if (xQueueSend(eventEntry->queue, &msg, 0) != pdTRUE) // will not block { - ++stats.eventErrors; + stats.lastQueueErrorID = UAVObjGetID(obj); + ++stats.eventQueueErrors; } } // Invoke callback (from event task) if a valid one is registered if (eventEntry->cb != 0) { if (EventCallbackDispatch(&msg, eventEntry->cb) != pdTRUE) // invoke callback from the event task, will not block { - ++stats.eventErrors; + ++stats.eventCallbackErrors; + stats.lastCallbackErrorID = UAVObjGetID(obj); } } } diff --git a/flight/board_hw_defs/ahrs/board_hw_defs.c b/flight/board_hw_defs/ahrs/board_hw_defs.c deleted file mode 100644 index d774ce799..000000000 --- a/flight/board_hw_defs/ahrs/board_hw_defs.c +++ /dev/null @@ -1,351 +0,0 @@ -#include - -#if defined(PIOS_INCLUDE_LED) - -#include -static const struct pios_led pios_leds[] = { - [PIOS_LED_HEARTBEAT] = { - .pin = { - .gpio = GPIOA, - .init = { - .GPIO_Pin = GPIO_Pin_3, - .GPIO_Mode = GPIO_Mode_Out_PP, - .GPIO_Speed = GPIO_Speed_50MHz, - }, - }, - }, -}; - -static const struct pios_led_cfg pios_led_cfg = { - .leds = pios_leds, - .num_leds = NELEMENTS(pios_leds), -}; - -#endif /* PIOS_INCLUDE_LED */ - -#if defined(PIOS_INCLUDE_SPI) - -#include - -/* OP Interface - * - * NOTE: Leave this declared as const data so that it ends up in the - * .rodata section (ie. Flash) rather than in the .bss section (RAM). - */ -void PIOS_SPI_op_irq_handler(void); -void DMA1_Channel5_IRQHandler() __attribute__ ((alias("PIOS_SPI_op_irq_handler"))); -void DMA1_Channel4_IRQHandler() __attribute__ ((alias("PIOS_SPI_op_irq_handler"))); -static const struct pios_spi_cfg pios_spi_op_cfg = { - .regs = SPI2, - .init = { - .SPI_Mode = SPI_Mode_Slave, - .SPI_Direction = SPI_Direction_2Lines_FullDuplex, - .SPI_DataSize = SPI_DataSize_8b, - .SPI_NSS = SPI_NSS_Hard, - .SPI_FirstBit = SPI_FirstBit_MSB, - .SPI_CRCPolynomial = 7, - .SPI_CPOL = SPI_CPOL_High, - .SPI_CPHA = SPI_CPHA_2Edge, - }, - .use_crc = TRUE, - .dma = { - .ahb_clk = RCC_AHBPeriph_DMA1, - - .irq = { - .flags = - (DMA1_FLAG_TC4 | DMA1_FLAG_TE4 | DMA1_FLAG_HT4 | - DMA1_FLAG_GL4), - .init = { - .NVIC_IRQChannel = DMA1_Channel4_IRQn, - .NVIC_IRQChannelPreemptionPriority = PIOS_IRQ_PRIO_HIGH, - .NVIC_IRQChannelSubPriority = 0, - .NVIC_IRQChannelCmd = ENABLE, - }, - }, - - .rx = { - .channel = DMA1_Channel4, - .init = { - .DMA_PeripheralBaseAddr = - (uint32_t) & (SPI2->DR), - .DMA_DIR = DMA_DIR_PeripheralSRC, - .DMA_PeripheralInc = - DMA_PeripheralInc_Disable, - .DMA_MemoryInc = DMA_MemoryInc_Enable, - .DMA_PeripheralDataSize = - DMA_PeripheralDataSize_Byte, - .DMA_MemoryDataSize = - DMA_MemoryDataSize_Byte, - .DMA_Mode = DMA_Mode_Normal, - .DMA_Priority = DMA_Priority_Medium, - .DMA_M2M = DMA_M2M_Disable, - }, - }, - .tx = { - .channel = DMA1_Channel5, - .init = { - .DMA_PeripheralBaseAddr = - (uint32_t) & (SPI2->DR), - .DMA_DIR = DMA_DIR_PeripheralDST, - .DMA_PeripheralInc = - DMA_PeripheralInc_Disable, - .DMA_MemoryInc = DMA_MemoryInc_Enable, - .DMA_PeripheralDataSize = - DMA_PeripheralDataSize_Byte, - .DMA_MemoryDataSize = - DMA_MemoryDataSize_Byte, - .DMA_Mode = DMA_Mode_Normal, - .DMA_Priority = DMA_Priority_Medium, - .DMA_M2M = DMA_M2M_Disable, - }, - }, - }, - .ssel = { - .gpio = GPIOB, - .init = { - .GPIO_Pin = GPIO_Pin_12, - .GPIO_Speed = GPIO_Speed_10MHz, - .GPIO_Mode = GPIO_Mode_IN_FLOATING, - }, - }, - .sclk = { - .gpio = GPIOB, - .init = { - .GPIO_Pin = GPIO_Pin_13, - .GPIO_Speed = GPIO_Speed_10MHz, - .GPIO_Mode = GPIO_Mode_IN_FLOATING, - }, - }, - .miso = { - .gpio = GPIOB, - .init = { - .GPIO_Pin = GPIO_Pin_14, - .GPIO_Speed = GPIO_Speed_10MHz, - .GPIO_Mode = GPIO_Mode_AF_PP, - }, - }, - .mosi = { - .gpio = GPIOB, - .init = { - .GPIO_Pin = GPIO_Pin_15, - .GPIO_Speed = GPIO_Speed_10MHz, - .GPIO_Mode = GPIO_Mode_IN_FLOATING, - }, - }, -}; - -uint32_t pios_spi_op_id; -void PIOS_SPI_op_irq_handler(void) -{ - /* Call into the generic code to handle the IRQ for this specific device */ - PIOS_SPI_IRQ_Handler(pios_spi_op_id); -} - -#endif /* PIOS_INCLUDE_SPI */ - -#if defined(PIOS_INCLUDE_ADC) - -/* - * ADC system - */ -#include "pios_adc_priv.h" -extern void PIOS_ADC_handler(void); -void DMA1_Channel1_IRQHandler() __attribute__ ((alias("PIOS_ADC_handler"))); -// Remap the ADC DMA handler to this one -static const struct pios_adc_cfg pios_adc_cfg = { - .dma = { - .ahb_clk = RCC_AHBPeriph_DMA1, - .irq = { - .flags = (DMA1_FLAG_TC1 | DMA1_FLAG_TE1 | DMA1_FLAG_HT1 | DMA1_FLAG_GL1), - .init = { - .NVIC_IRQChannel = DMA1_Channel1_IRQn, - .NVIC_IRQChannelPreemptionPriority = PIOS_IRQ_PRIO_HIGH, - .NVIC_IRQChannelSubPriority = 0, - .NVIC_IRQChannelCmd = ENABLE, - }, - }, - .rx = { - .channel = DMA1_Channel1, - .init = { - .DMA_PeripheralBaseAddr = (uint32_t) & ADC1->DR, - .DMA_DIR = DMA_DIR_PeripheralSRC, - .DMA_PeripheralInc = DMA_PeripheralInc_Disable, - .DMA_MemoryInc = DMA_MemoryInc_Enable, - .DMA_PeripheralDataSize = DMA_PeripheralDataSize_Word, - .DMA_MemoryDataSize = DMA_MemoryDataSize_Word, - .DMA_Mode = DMA_Mode_Circular, - .DMA_Priority = DMA_Priority_High, - .DMA_M2M = DMA_M2M_Disable, - }, - } - }, - .half_flag = DMA1_IT_HT1, - .full_flag = DMA1_IT_TC1, -}; - -struct pios_adc_dev pios_adc_devs[] = { - { - .cfg = &pios_adc_cfg, - .callback_function = NULL, - }, -}; - -uint8_t pios_adc_num_devices = NELEMENTS(pios_adc_devs); - -void PIOS_ADC_handler() { - PIOS_ADC_DMA_Handler(); -} - -#endif /* PIOS_INCLUDE_ADC */ - -#if defined(PIOS_INCLUDE_USART) - -#include - -/* - * AUX USART - */ -static const struct pios_usart_cfg pios_usart_aux_cfg = { - .regs = USART3, - .init = { - .USART_BaudRate = 230400, - .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_HIGH, - .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_USART */ - -#if defined(PIOS_INCLUDE_COM) - -#include - -#endif /* PIOS_INCLUDE_COM */ - -#if defined(PIOS_INCLUDE_I2C) - -#include - -/* - * I2C Adapters - */ - -void PIOS_I2C_main_adapter_ev_irq_handler(void); -void PIOS_I2C_main_adapter_er_irq_handler(void); -void I2C1_EV_IRQHandler() - __attribute__ ((alias("PIOS_I2C_main_adapter_ev_irq_handler"))); -void I2C1_ER_IRQHandler() - __attribute__ ((alias("PIOS_I2C_main_adapter_er_irq_handler"))); - -static const struct pios_i2c_adapter_cfg pios_i2c_main_adapter_cfg = { - .regs = I2C1, - .init = { - .I2C_Mode = I2C_Mode_I2C, - .I2C_OwnAddress1 = 0, - .I2C_Ack = I2C_Ack_Enable, - .I2C_AcknowledgedAddress = I2C_AcknowledgedAddress_7bit, - .I2C_DutyCycle = I2C_DutyCycle_2, - .I2C_ClockSpeed = 200000, /* bits/s */ - }, - .transfer_timeout_ms = 50, - .scl = { - .gpio = GPIOB, - .init = { - .GPIO_Pin = GPIO_Pin_6, - .GPIO_Speed = GPIO_Speed_10MHz, - .GPIO_Mode = GPIO_Mode_AF_OD, - }, - }, - .sda = { - .gpio = GPIOB, - .init = { - .GPIO_Pin = GPIO_Pin_7, - .GPIO_Speed = GPIO_Speed_10MHz, - .GPIO_Mode = GPIO_Mode_AF_OD, - }, - }, - .event = { - .flags = 0, /* FIXME: check this */ - .init = { - .NVIC_IRQChannel = I2C1_EV_IRQn, - .NVIC_IRQChannelPreemptionPriority = PIOS_IRQ_PRIO_HIGHEST, - .NVIC_IRQChannelSubPriority = 0, - .NVIC_IRQChannelCmd = ENABLE, - }, - }, - .error = { - .flags = 0, /* FIXME: check this */ - .init = { - .NVIC_IRQChannel = I2C1_ER_IRQn, - .NVIC_IRQChannelPreemptionPriority = PIOS_IRQ_PRIO_HIGHEST, - .NVIC_IRQChannelSubPriority = 0, - .NVIC_IRQChannelCmd = ENABLE, - }, - }, -}; - -uint32_t pios_i2c_main_adapter_id; -void PIOS_I2C_main_adapter_ev_irq_handler(void) -{ - /* Call into the generic code to handle the IRQ for this specific device */ - PIOS_I2C_EV_IRQ_Handler(pios_i2c_main_adapter_id); -} - -void PIOS_I2C_main_adapter_er_irq_handler(void) -{ - /* Call into the generic code to handle the IRQ for this specific device */ - PIOS_I2C_ER_IRQ_Handler(pios_i2c_main_adapter_id); -} - -#endif /* PIOS_INCLUDE_I2C */ - -#if defined(PIOS_ENABLE_DEBUG_PINS) - -static const struct stm32_gpio pios_debug_pins[] = { - { - .gpio = GPIOB, - .init = { - .GPIO_Pin = GPIO_Pin_11, - .GPIO_Speed = GPIO_Speed_50MHz, - .GPIO_Mode = GPIO_Mode_IN_FLOATING, - }, - }, - { - .gpio = GPIOB, - .init = { - .GPIO_Pin = GPIO_Pin_10, - .GPIO_Speed = GPIO_Speed_50MHz, - .GPIO_Mode = GPIO_Mode_Out_PP, - }, - }, -}; - -#endif /* PIOS_ENABLE_DEBUG_PINS */ diff --git a/flight/board_hw_defs/coptercontrol/board_hw_defs.c b/flight/board_hw_defs/coptercontrol/board_hw_defs.c index 1a7d508ff..43f9360b8 100644 --- a/flight/board_hw_defs/coptercontrol/board_hw_defs.c +++ b/flight/board_hw_defs/coptercontrol/board_hw_defs.c @@ -1,9 +1,37 @@ +/** + ****************************************************************************** + * @addtogroup OpenPilotSystem OpenPilot System + * @{ + * @addtogroup OpenPilotCore OpenPilot Core + * @{ + * + * @file board_hw_defs.c + * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2012. + * @brief Defines board specific static initializers for hardware for the OpenPilot board. + * @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 + */ #include #if defined(PIOS_INCLUDE_LED) #include -static const struct pios_led pios_leds[] = { +static const struct pios_led pios_leds_cc[] = { [PIOS_LED_HEARTBEAT] = { .pin = { .gpio = GPIOA, @@ -16,9 +44,27 @@ static const struct pios_led pios_leds[] = { }, }; -static const struct pios_led_cfg pios_led_cfg = { - .leds = pios_leds, - .num_leds = NELEMENTS(pios_leds), +static const struct pios_led_cfg pios_led_cfg_cc = { + .leds = pios_leds_cc, + .num_leds = NELEMENTS(pios_leds_cc), +}; + +static const struct pios_led pios_leds_cc3d[] = { + [PIOS_LED_HEARTBEAT] = { + .pin = { + .gpio = GPIOB, + .init = { + .GPIO_Pin = GPIO_Pin_3, + .GPIO_Mode = GPIO_Mode_Out_PP, + .GPIO_Speed = GPIO_Speed_50MHz, + }, + }, + }, +}; + +static const struct pios_led_cfg pios_led_cfg_cc3d = { + .leds = pios_leds_cc3d, + .num_leds = NELEMENTS(pios_leds_cc3d), }; #endif /* PIOS_INCLUDE_LED */ @@ -27,6 +73,109 @@ static const struct pios_led_cfg pios_led_cfg = { #include +/* Gyro interface */ +void PIOS_SPI_gyro_irq_handler(void); +void DMA1_Channel2_IRQHandler() __attribute__ ((alias ("PIOS_SPI_gyro_irq_handler"))); +void DMA1_Channel3_IRQHandler() __attribute__ ((alias ("PIOS_SPI_gyro_irq_handler"))); +static const struct pios_spi_cfg pios_spi_gyro_cfg = { + .regs = SPI1, + .init = { + .SPI_Mode = SPI_Mode_Master, + .SPI_Direction = SPI_Direction_2Lines_FullDuplex, + .SPI_DataSize = SPI_DataSize_8b, + .SPI_NSS = SPI_NSS_Soft, + .SPI_FirstBit = SPI_FirstBit_MSB, + .SPI_CRCPolynomial = 7, + .SPI_CPOL = SPI_CPOL_High, + .SPI_CPHA = SPI_CPHA_2Edge, + .SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_16, /* 10 Mhz */ + }, + .use_crc = false, + .dma = { + .ahb_clk = RCC_AHBPeriph_DMA1, + + .irq = { + .flags = (DMA1_FLAG_TC2 | DMA1_FLAG_TE2 | DMA1_FLAG_HT2 | DMA1_FLAG_GL2), + .init = { + .NVIC_IRQChannel = DMA1_Channel2_IRQn, + .NVIC_IRQChannelPreemptionPriority = PIOS_IRQ_PRIO_MID, + .NVIC_IRQChannelSubPriority = 0, + .NVIC_IRQChannelCmd = ENABLE, + }, + }, + + .rx = { + .channel = DMA1_Channel2, + .init = { + .DMA_PeripheralBaseAddr = (uint32_t)&(SPI1->DR), + .DMA_DIR = DMA_DIR_PeripheralSRC, + .DMA_PeripheralInc = DMA_PeripheralInc_Disable, + .DMA_MemoryInc = DMA_MemoryInc_Enable, + .DMA_PeripheralDataSize = DMA_PeripheralDataSize_Byte, + .DMA_MemoryDataSize = DMA_MemoryDataSize_Byte, + .DMA_Mode = DMA_Mode_Normal, + .DMA_Priority = DMA_Priority_Medium, + .DMA_M2M = DMA_M2M_Disable, + }, + }, + .tx = { + .channel = DMA1_Channel3, + .init = { + .DMA_PeripheralBaseAddr = (uint32_t)&(SPI1->DR), + .DMA_DIR = DMA_DIR_PeripheralDST, + .DMA_PeripheralInc = DMA_PeripheralInc_Disable, + .DMA_MemoryInc = DMA_MemoryInc_Enable, + .DMA_PeripheralDataSize = DMA_PeripheralDataSize_Byte, + .DMA_MemoryDataSize = DMA_MemoryDataSize_Byte, + .DMA_Mode = DMA_Mode_Normal, + .DMA_Priority = DMA_Priority_Medium, + .DMA_M2M = DMA_M2M_Disable, + }, + }, + }, + .sclk = { + .gpio = GPIOA, + .init = { + .GPIO_Pin = GPIO_Pin_5, + .GPIO_Speed = GPIO_Speed_50MHz, + .GPIO_Mode = GPIO_Mode_AF_PP, + }, + }, + .miso = { + .gpio = GPIOA, + .init = { + .GPIO_Pin = GPIO_Pin_6, + .GPIO_Speed = GPIO_Speed_50MHz, + .GPIO_Mode = GPIO_Mode_IPU, + }, + }, + .mosi = { + .gpio = GPIOA, + .init = { + .GPIO_Pin = GPIO_Pin_7, + .GPIO_Speed = GPIO_Speed_50MHz, + .GPIO_Mode = GPIO_Mode_AF_PP, + }, + }, + .slave_count = 1, + .ssel = {{ + .gpio = GPIOA, + .init = { + .GPIO_Pin = GPIO_Pin_4, + .GPIO_Speed = GPIO_Speed_50MHz, + .GPIO_Mode = GPIO_Mode_Out_PP, + }, + }}, +}; + +static uint32_t pios_spi_gyro_id; +void PIOS_SPI_gyro_irq_handler(void) +{ + /* Call into the generic code to handle the IRQ for this specific device */ + PIOS_SPI_IRQ_Handler(pios_spi_gyro_id); +} + + /* Flash/Accel Interface * * NOTE: Leave this declared as const data so that it ends up in the @@ -35,109 +184,213 @@ static const struct pios_led_cfg pios_led_cfg = { 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"))); -static const struct pios_spi_cfg pios_spi_flash_accel_cfg = { - .regs = SPI2, - .init = { - .SPI_Mode = SPI_Mode_Master, - .SPI_Direction = SPI_Direction_2Lines_FullDuplex, - .SPI_DataSize = SPI_DataSize_8b, - .SPI_NSS = SPI_NSS_Soft, - .SPI_FirstBit = SPI_FirstBit_MSB, - .SPI_CRCPolynomial = 7, - .SPI_CPOL = SPI_CPOL_High, - .SPI_CPHA = SPI_CPHA_2Edge, - .SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_2, - }, - .use_crc = FALSE, - .dma = { - .ahb_clk = RCC_AHBPeriph_DMA1, - - .irq = { - .flags = (DMA1_FLAG_TC4 | DMA1_FLAG_TE4 | DMA1_FLAG_HT4 | DMA1_FLAG_GL4), - .init = { - .NVIC_IRQChannel = DMA1_Channel4_IRQn, - .NVIC_IRQChannelPreemptionPriority = PIOS_IRQ_PRIO_HIGH, - .NVIC_IRQChannelSubPriority = 0, - .NVIC_IRQChannelCmd = ENABLE, - }, - }, +static const struct pios_spi_cfg pios_spi_flash_accel_cfg_cc3d = { + .regs = SPI2, + .init = { + .SPI_Mode = SPI_Mode_Master, + .SPI_Direction = SPI_Direction_2Lines_FullDuplex, + .SPI_DataSize = SPI_DataSize_8b, + .SPI_NSS = SPI_NSS_Soft, + .SPI_FirstBit = SPI_FirstBit_MSB, + .SPI_CRCPolynomial = 7, + .SPI_CPOL = SPI_CPOL_High, + .SPI_CPHA = SPI_CPHA_2Edge, + .SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_8, + }, + .use_crc = false, + .dma = { + .ahb_clk = RCC_AHBPeriph_DMA1, + + .irq = { + .flags = (DMA1_FLAG_TC4 | DMA1_FLAG_TE4 | DMA1_FLAG_HT4 | DMA1_FLAG_GL4), + .init = { + .NVIC_IRQChannel = DMA1_Channel4_IRQn, + .NVIC_IRQChannelPreemptionPriority = PIOS_IRQ_PRIO_HIGH, + .NVIC_IRQChannelSubPriority = 0, + .NVIC_IRQChannelCmd = ENABLE, + }, + }, + + .rx = { + .channel = DMA1_Channel4, + .init = { + .DMA_PeripheralBaseAddr = (uint32_t)&(SPI2->DR), + .DMA_DIR = DMA_DIR_PeripheralSRC, + .DMA_PeripheralInc = DMA_PeripheralInc_Disable, + .DMA_MemoryInc = DMA_MemoryInc_Enable, + .DMA_PeripheralDataSize = DMA_PeripheralDataSize_Byte, + .DMA_MemoryDataSize = DMA_MemoryDataSize_Byte, + .DMA_Mode = DMA_Mode_Normal, + .DMA_Priority = DMA_Priority_High, + .DMA_M2M = DMA_M2M_Disable, + }, + }, + .tx = { + .channel = DMA1_Channel5, + .init = { + .DMA_PeripheralBaseAddr = (uint32_t)&(SPI2->DR), + .DMA_DIR = DMA_DIR_PeripheralDST, + .DMA_PeripheralInc = DMA_PeripheralInc_Disable, + .DMA_MemoryInc = DMA_MemoryInc_Enable, + .DMA_PeripheralDataSize = DMA_PeripheralDataSize_Byte, + .DMA_MemoryDataSize = DMA_MemoryDataSize_Byte, + .DMA_Mode = DMA_Mode_Normal, + .DMA_Priority = DMA_Priority_High, + .DMA_M2M = DMA_M2M_Disable, + }, + }, + }, + .sclk = { + .gpio = GPIOB, + .init = { + .GPIO_Pin = GPIO_Pin_13, + .GPIO_Speed = GPIO_Speed_10MHz, + .GPIO_Mode = GPIO_Mode_AF_PP, + }, + }, + .miso = { + .gpio = GPIOB, + .init = { + .GPIO_Pin = GPIO_Pin_14, + .GPIO_Speed = GPIO_Speed_10MHz, + .GPIO_Mode = GPIO_Mode_IN_FLOATING, + }, + }, + .mosi = { + .gpio = GPIOB, + .init = { + .GPIO_Pin = GPIO_Pin_15, + .GPIO_Speed = GPIO_Speed_10MHz, + .GPIO_Mode = GPIO_Mode_AF_PP, + }, + }, + .slave_count = 2, + .ssel = {{ + .gpio = GPIOB, + .init = { + .GPIO_Pin = GPIO_Pin_12, + .GPIO_Speed = GPIO_Speed_50MHz, + .GPIO_Mode = GPIO_Mode_Out_PP, + }},{ + .gpio = GPIOC, + .init = { + .GPIO_Pin = GPIO_Pin_15, + .GPIO_Speed = GPIO_Speed_50MHz, + .GPIO_Mode = GPIO_Mode_Out_PP, + }, + }}, +}; - .rx = { - .channel = DMA1_Channel4, - .init = { - .DMA_PeripheralBaseAddr = (uint32_t)&(SPI2->DR), - .DMA_DIR = DMA_DIR_PeripheralSRC, - .DMA_PeripheralInc = DMA_PeripheralInc_Disable, - .DMA_MemoryInc = DMA_MemoryInc_Enable, - .DMA_PeripheralDataSize = DMA_PeripheralDataSize_Byte, - .DMA_MemoryDataSize = DMA_MemoryDataSize_Byte, - .DMA_Mode = DMA_Mode_Normal, - .DMA_Priority = DMA_Priority_High, - .DMA_M2M = DMA_M2M_Disable, - }, - }, - .tx = { - .channel = DMA1_Channel5, - .init = { - .DMA_PeripheralBaseAddr = (uint32_t)&(SPI2->DR), - .DMA_DIR = DMA_DIR_PeripheralDST, - .DMA_PeripheralInc = DMA_PeripheralInc_Disable, - .DMA_MemoryInc = DMA_MemoryInc_Enable, - .DMA_PeripheralDataSize = DMA_PeripheralDataSize_Byte, - .DMA_MemoryDataSize = DMA_MemoryDataSize_Byte, - .DMA_Mode = DMA_Mode_Normal, - .DMA_Priority = DMA_Priority_High, - .DMA_M2M = DMA_M2M_Disable, - }, - }, - }, - .ssel = { - .gpio = GPIOB, - .init = { - .GPIO_Pin = GPIO_Pin_12, - .GPIO_Speed = GPIO_Speed_10MHz, - .GPIO_Mode = GPIO_Mode_Out_PP, - }, - }, - .sclk = { - .gpio = GPIOB, - .init = { - .GPIO_Pin = GPIO_Pin_13, - .GPIO_Speed = GPIO_Speed_10MHz, - .GPIO_Mode = GPIO_Mode_AF_PP, - }, - }, - .miso = { - .gpio = GPIOB, - .init = { - .GPIO_Pin = GPIO_Pin_14, - .GPIO_Speed = GPIO_Speed_10MHz, - .GPIO_Mode = GPIO_Mode_IN_FLOATING, - }, - }, - .mosi = { - .gpio = GPIOB, - .init = { - .GPIO_Pin = GPIO_Pin_15, - .GPIO_Speed = GPIO_Speed_10MHz, - .GPIO_Mode = GPIO_Mode_AF_PP, - }, - }, +static const struct pios_spi_cfg pios_spi_flash_accel_cfg_cc = { + .regs = SPI2, + .init = { + .SPI_Mode = SPI_Mode_Master, + .SPI_Direction = SPI_Direction_2Lines_FullDuplex, + .SPI_DataSize = SPI_DataSize_8b, + .SPI_NSS = SPI_NSS_Soft, + .SPI_FirstBit = SPI_FirstBit_MSB, + .SPI_CRCPolynomial = 7, + .SPI_CPOL = SPI_CPOL_High, + .SPI_CPHA = SPI_CPHA_2Edge, + .SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_8, + }, + .use_crc = false, + .dma = { + .ahb_clk = RCC_AHBPeriph_DMA1, + + .irq = { + .flags = (DMA1_FLAG_TC4 | DMA1_FLAG_TE4 | DMA1_FLAG_HT4 | DMA1_FLAG_GL4), + .init = { + .NVIC_IRQChannel = DMA1_Channel4_IRQn, + .NVIC_IRQChannelPreemptionPriority = PIOS_IRQ_PRIO_HIGH, + .NVIC_IRQChannelSubPriority = 0, + .NVIC_IRQChannelCmd = ENABLE, + }, + }, + + .rx = { + .channel = DMA1_Channel4, + .init = { + .DMA_PeripheralBaseAddr = (uint32_t)&(SPI2->DR), + .DMA_DIR = DMA_DIR_PeripheralSRC, + .DMA_PeripheralInc = DMA_PeripheralInc_Disable, + .DMA_MemoryInc = DMA_MemoryInc_Enable, + .DMA_PeripheralDataSize = DMA_PeripheralDataSize_Byte, + .DMA_MemoryDataSize = DMA_MemoryDataSize_Byte, + .DMA_Mode = DMA_Mode_Normal, + .DMA_Priority = DMA_Priority_High, + .DMA_M2M = DMA_M2M_Disable, + }, + }, + .tx = { + .channel = DMA1_Channel5, + .init = { + .DMA_PeripheralBaseAddr = (uint32_t)&(SPI2->DR), + .DMA_DIR = DMA_DIR_PeripheralDST, + .DMA_PeripheralInc = DMA_PeripheralInc_Disable, + .DMA_MemoryInc = DMA_MemoryInc_Enable, + .DMA_PeripheralDataSize = DMA_PeripheralDataSize_Byte, + .DMA_MemoryDataSize = DMA_MemoryDataSize_Byte, + .DMA_Mode = DMA_Mode_Normal, + .DMA_Priority = DMA_Priority_High, + .DMA_M2M = DMA_M2M_Disable, + }, + }, + }, + .sclk = { + .gpio = GPIOB, + .init = { + .GPIO_Pin = GPIO_Pin_13, + .GPIO_Speed = GPIO_Speed_10MHz, + .GPIO_Mode = GPIO_Mode_AF_PP, + }, + }, + .miso = { + .gpio = GPIOB, + .init = { + .GPIO_Pin = GPIO_Pin_14, + .GPIO_Speed = GPIO_Speed_10MHz, + .GPIO_Mode = GPIO_Mode_IN_FLOATING, + }, + }, + .mosi = { + .gpio = GPIOB, + .init = { + .GPIO_Pin = GPIO_Pin_15, + .GPIO_Speed = GPIO_Speed_10MHz, + .GPIO_Mode = GPIO_Mode_AF_PP, + }, + }, + .slave_count = 2, + .ssel = {{ + .gpio = GPIOB, + .init = { + .GPIO_Pin = GPIO_Pin_12, + .GPIO_Speed = GPIO_Speed_50MHz, + .GPIO_Mode = GPIO_Mode_Out_PP, + }},{ + .gpio = GPIOA, + .init = { + .GPIO_Pin = GPIO_Pin_7, + .GPIO_Speed = GPIO_Speed_50MHz, + .GPIO_Mode = GPIO_Mode_Out_PP, + }, + }}, }; static uint32_t pios_spi_flash_accel_id; void PIOS_SPI_flash_accel_irq_handler(void) { - /* Call into the generic code to handle the IRQ for this specific device */ + /* Call into the generic code to handle the IRQ for this specific device */ PIOS_SPI_IRQ_Handler(pios_spi_flash_accel_id); } #endif /* PIOS_INCLUDE_SPI */ -#if defined(PIOS_INCLUDE_ADC) /* * ADC system */ +#if defined(PIOS_INCLUDE_ADC) #include "pios_adc_priv.h" extern void PIOS_ADC_handler(void); void DMA1_Channel1_IRQHandler() __attribute__ ((alias("PIOS_ADC_handler"))); @@ -173,22 +426,10 @@ static const struct pios_adc_cfg pios_adc_cfg = { .full_flag = DMA1_IT_TC1, }; -struct pios_adc_dev pios_adc_devs[] = { - { - .cfg = &pios_adc_cfg, - .callback_function = NULL, - }, -}; - -uint8_t pios_adc_num_devices = NELEMENTS(pios_adc_devs); - void PIOS_ADC_handler() { PIOS_ADC_DMA_Handler(); } - -#endif /* PIOS_INCLUDE_ADC */ - -#if defined(PIOS_INCLUDE_TIM) +#endif #include "pios_tim_priv.h" @@ -479,7 +720,7 @@ static const struct pios_tim_channel pios_tim_servoport_rcvrport_pins[] = { }, }, }, - + // Receiver port pins // S3-S6 inputs are used as outputs in this case { @@ -531,83 +772,80 @@ static const struct pios_tim_channel pios_tim_servoport_rcvrport_pins[] = { }, }, }; - -#endif /* PIOS_INCLUDE_TIM */ - #if defined(PIOS_INCLUDE_USART) #include "pios_usart_priv.h" static const struct pios_usart_cfg pios_usart_generic_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, - }, - }, + .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_generic_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, - }, - }, + .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, + }, + }, }; #if defined(PIOS_INCLUDE_DSM) @@ -632,7 +870,7 @@ static const struct pios_usart_cfg pios_usart_dsm_main_cfg = { .NVIC_IRQChannelPreemptionPriority = PIOS_IRQ_PRIO_HIGH, .NVIC_IRQChannelSubPriority = 0, .NVIC_IRQChannelCmd = ENABLE, - }, + }, }, .rx = { .gpio = GPIOA, @@ -679,7 +917,7 @@ static const struct pios_usart_cfg pios_usart_dsm_flexi_cfg = { .NVIC_IRQChannelPreemptionPriority = PIOS_IRQ_PRIO_HIGH, .NVIC_IRQChannelSubPriority = 0, .NVIC_IRQChannelCmd = ENABLE, - }, + }, }, .rx = { .gpio = GPIOB, @@ -712,6 +950,7 @@ static const struct pios_dsm_cfg pios_dsm_flexi_cfg = { #endif /* PIOS_INCLUDE_DSM */ + #if defined(PIOS_INCLUDE_SBUS) /* * S.Bus USART @@ -970,15 +1209,42 @@ void PIOS_I2C_flexi_adapter_er_irq_handler(void) #if defined(PIOS_INCLUDE_USB) #include "pios_usb_priv.h" -static const struct pios_usb_cfg pios_usb_main_cfg = { - .irq = { - .init = { - .NVIC_IRQChannel = USB_LP_CAN1_RX0_IRQn, - .NVIC_IRQChannelPreemptionPriority = PIOS_IRQ_PRIO_LOW, - .NVIC_IRQChannelSubPriority = 0, - .NVIC_IRQChannelCmd = ENABLE, - }, - }, +static const struct pios_usb_cfg pios_usb_main_cfg_cc = { + .irq = { + .init = { + .NVIC_IRQChannel = USB_LP_CAN1_RX0_IRQn, + .NVIC_IRQChannelPreemptionPriority = PIOS_IRQ_PRIO_LOW, + .NVIC_IRQChannelSubPriority = 0, + .NVIC_IRQChannelCmd = ENABLE, + }, + }, + .vsense = { + .gpio = GPIOC, + .init = { + .GPIO_Pin = GPIO_Pin_15, + .GPIO_Speed = GPIO_Speed_10MHz, + .GPIO_Mode = GPIO_Mode_AF_OD, + }, + } +}; + +static const struct pios_usb_cfg pios_usb_main_cfg_cc3d = { + .irq = { + .init = { + .NVIC_IRQChannel = USB_LP_CAN1_RX0_IRQn, + .NVIC_IRQChannelPreemptionPriority = PIOS_IRQ_PRIO_LOW, + .NVIC_IRQChannelSubPriority = 0, + .NVIC_IRQChannelCmd = ENABLE, + }, + }, + .vsense = { + .gpio = GPIOC, + .init = { + .GPIO_Pin = GPIO_Pin_14, + .GPIO_Speed = GPIO_Speed_10MHz, + .GPIO_Mode = GPIO_Mode_AF_OD, + }, + } }; #include "pios_usb_board_data_priv.h" diff --git a/flight/board_hw_defs/ins/board_hw_defs.c b/flight/board_hw_defs/ins/board_hw_defs.c deleted file mode 100644 index b1b5a166c..000000000 --- a/flight/board_hw_defs/ins/board_hw_defs.c +++ /dev/null @@ -1,496 +0,0 @@ -#include - -#if defined(PIOS_INCLUDE_LED) - -#include -static const struct pios_led pios_leds[] = { - [PIOS_LED_HEARTBEAT] = { - .pin = { - .gpio = GPIOA, - .init = { - .GPIO_Pin = GPIO_Pin_3, - .GPIO_Mode = GPIO_Mode_Out_PP, - .GPIO_Speed = GPIO_Speed_50MHz, - }, - }, - }, - [PIOS_LED_ALARM] = { - .pin = { - .gpio = GPIOA, - .init = { - .GPIO_Pin = GPIO_Pin_2, - .GPIO_Mode = GPIO_Mode_Out_PP, - .GPIO_Speed = GPIO_Speed_50MHz, - }, - }, - }, -}; - -static const struct pios_led_cfg pios_led_cfg = { - .leds = pios_leds, - .num_leds = NELEMENTS(pios_leds), -}; - -#endif /* PIOS_INCLUDE_LED */ - -#if defined(PIOS_INCLUDE_SPI) - -#include - -/* SPI2 Interface - * - Used for mainboard communications and magnetometer - * - * NOTE: Leave this declared as const data so that it ends up in the - * .rodata section (ie. Flash) rather than in the .bss section (RAM). - */ -void PIOS_SPI_op_mag_irq_handler(void); -void DMA1_Channel5_IRQHandler() __attribute__ ((alias("PIOS_SPI_op_mag_irq_handler"))); -void DMA1_Channel4_IRQHandler() __attribute__ ((alias("PIOS_SPI_op_mag_irq_handler"))); -static const struct pios_spi_cfg pios_spi_op_mag_cfg = { - .regs = SPI2, - .init = { - .SPI_Mode = SPI_Mode_Slave, - .SPI_Direction = SPI_Direction_2Lines_FullDuplex, - .SPI_DataSize = SPI_DataSize_8b, - .SPI_NSS = SPI_NSS_Hard, - .SPI_FirstBit = SPI_FirstBit_MSB, - .SPI_CRCPolynomial = 7, - .SPI_CPOL = SPI_CPOL_High, - .SPI_CPHA = SPI_CPHA_2Edge, - }, - .use_crc = TRUE, - .dma = { - .ahb_clk = RCC_AHBPeriph_DMA1, - - .irq = { - .flags = - (DMA1_FLAG_TC4 | DMA1_FLAG_TE4 | DMA1_FLAG_HT4 | - DMA1_FLAG_GL4), - .init = { - .NVIC_IRQChannel = DMA1_Channel4_IRQn, - .NVIC_IRQChannelPreemptionPriority = PIOS_IRQ_PRIO_HIGH, - .NVIC_IRQChannelSubPriority = 0, - .NVIC_IRQChannelCmd = ENABLE, - }, - }, - - .rx = { - .channel = DMA1_Channel4, - .init = { - .DMA_PeripheralBaseAddr = - (uint32_t) & (SPI2->DR), - .DMA_DIR = DMA_DIR_PeripheralSRC, - .DMA_PeripheralInc = - DMA_PeripheralInc_Disable, - .DMA_MemoryInc = DMA_MemoryInc_Enable, - .DMA_PeripheralDataSize = - DMA_PeripheralDataSize_Byte, - .DMA_MemoryDataSize = - DMA_MemoryDataSize_Byte, - .DMA_Mode = DMA_Mode_Normal, - .DMA_Priority = DMA_Priority_Medium, - .DMA_M2M = DMA_M2M_Disable, - }, - }, - .tx = { - .channel = DMA1_Channel5, - .init = { - .DMA_PeripheralBaseAddr = - (uint32_t) & (SPI2->DR), - .DMA_DIR = DMA_DIR_PeripheralDST, - .DMA_PeripheralInc = - DMA_PeripheralInc_Disable, - .DMA_MemoryInc = DMA_MemoryInc_Enable, - .DMA_PeripheralDataSize = - DMA_PeripheralDataSize_Byte, - .DMA_MemoryDataSize = - DMA_MemoryDataSize_Byte, - .DMA_Mode = DMA_Mode_Normal, - .DMA_Priority = DMA_Priority_Medium, - .DMA_M2M = DMA_M2M_Disable, - }, - }, - }, - .ssel = { - .gpio = GPIOB, - .init = { - .GPIO_Pin = GPIO_Pin_12, - .GPIO_Speed = GPIO_Speed_10MHz, - .GPIO_Mode = GPIO_Mode_IN_FLOATING, - }, - }, - .sclk = { - .gpio = GPIOB, - .init = { - .GPIO_Pin = GPIO_Pin_13, - .GPIO_Speed = GPIO_Speed_10MHz, - .GPIO_Mode = GPIO_Mode_IN_FLOATING, - }, - }, - .miso = { - .gpio = GPIOB, - .init = { - .GPIO_Pin = GPIO_Pin_14, - .GPIO_Speed = GPIO_Speed_10MHz, - .GPIO_Mode = GPIO_Mode_AF_PP, - }, - }, - .mosi = { - .gpio = GPIOB, - .init = { - .GPIO_Pin = GPIO_Pin_15, - .GPIO_Speed = GPIO_Speed_10MHz, - .GPIO_Mode = GPIO_Mode_IN_FLOATING, - }, - }, -}; - -uint32_t pios_spi_op_mag_id; -void PIOS_SPI_op_mag_irq_handler(void) -{ - /* Call into the generic code to handle the IRQ for this specific device */ - PIOS_SPI_IRQ_Handler(pios_spi_op_mag_id); -} - -/* SPI1 Interface - * - Used for BMA180 accelerometer - */ -void PIOS_SPI_accel_irq_handler(void); -void DMA1_Channel2_IRQHandler() __attribute__ ((alias("PIOS_SPI_accel_irq_handler"))); -void DMA1_Channel3_IRQHandler() __attribute__ ((alias("PIOS_SPI_accel_irq_handler"))); -static const struct pios_spi_cfg pios_spi_accel_cfg = { - .regs = SPI1, - .init = { - .SPI_Mode = SPI_Mode_Master, - .SPI_Direction = SPI_Direction_2Lines_FullDuplex, - .SPI_DataSize = SPI_DataSize_8b, - .SPI_NSS = SPI_NSS_Soft, - .SPI_FirstBit = SPI_FirstBit_MSB, - .SPI_CRCPolynomial = 7, - .SPI_CPOL = SPI_CPOL_High, - .SPI_CPHA = SPI_CPHA_1Edge, - .SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_2, - }, - .use_crc = FALSE, - .dma = { - .ahb_clk = RCC_AHBPeriph_DMA1, - - .irq = { - .flags = (DMA1_FLAG_TC2 | DMA1_FLAG_TE2 | DMA1_FLAG_HT2 | DMA1_FLAG_GL2), - .init = { - .NVIC_IRQChannel = DMA1_Channel2_IRQn, - .NVIC_IRQChannelPreemptionPriority = PIOS_IRQ_PRIO_HIGH, - .NVIC_IRQChannelSubPriority = 0, - .NVIC_IRQChannelCmd = ENABLE, - }, - }, - - .rx = { - .channel = DMA1_Channel2, - .init = { - .DMA_PeripheralBaseAddr = (uint32_t)&(SPI1->DR), - .DMA_DIR = DMA_DIR_PeripheralSRC, - .DMA_PeripheralInc = DMA_PeripheralInc_Disable, - .DMA_MemoryInc = DMA_MemoryInc_Enable, - .DMA_PeripheralDataSize = DMA_PeripheralDataSize_Byte, - .DMA_MemoryDataSize = DMA_MemoryDataSize_Byte, - .DMA_Mode = DMA_Mode_Normal, - .DMA_Priority = DMA_Priority_Medium, - .DMA_M2M = DMA_M2M_Disable, - }, - }, - .tx = { - .channel = DMA1_Channel3, - .init = { - .DMA_PeripheralBaseAddr = (uint32_t)&(SPI1->DR), - .DMA_DIR = DMA_DIR_PeripheralDST, - .DMA_PeripheralInc = DMA_PeripheralInc_Disable, - .DMA_MemoryInc = DMA_MemoryInc_Enable, - .DMA_PeripheralDataSize = DMA_PeripheralDataSize_Byte, - .DMA_MemoryDataSize = DMA_MemoryDataSize_Byte, - .DMA_Mode = DMA_Mode_Normal, - .DMA_Priority = DMA_Priority_High, - .DMA_M2M = DMA_M2M_Disable, - }, - }, - }, - .ssel = { - .gpio = GPIOA, - .init = { - .GPIO_Pin = GPIO_Pin_4, - .GPIO_Speed = GPIO_Speed_10MHz, - .GPIO_Mode = GPIO_Mode_Out_PP, - }, - }, - .sclk = { - .gpio = GPIOA, - .init = { - .GPIO_Pin = GPIO_Pin_5, - .GPIO_Speed = GPIO_Speed_10MHz, - .GPIO_Mode = GPIO_Mode_AF_PP, - }, - }, - .miso = { - .gpio = GPIOA, - .init = { - .GPIO_Pin = GPIO_Pin_6, - .GPIO_Speed = GPIO_Speed_10MHz, - .GPIO_Mode = GPIO_Mode_IN_FLOATING, - }, - }, - .mosi = { - .gpio = GPIOA, - .init = { - .GPIO_Pin = GPIO_Pin_7, - .GPIO_Speed = GPIO_Speed_10MHz, - .GPIO_Mode = GPIO_Mode_AF_PP, - }, - }, -}; - -static uint32_t pios_spi_accel_id; -void PIOS_SPI_accel_irq_handler(void) -{ - /* Call into the generic code to handle the IRQ for this specific device */ - PIOS_SPI_IRQ_Handler(pios_spi_accel_id); -} - -#endif /* PIOS_INCLUDE_SPI */ - -#if defined(PIOS_INCLUDE_GPS) -#include - -/* - * GPS USART - */ -static const struct pios_usart_cfg pios_usart_gps_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, - }, - }, -}; - -#endif /* PIOS_INCLUDE_GPS */ - -#ifdef PIOS_COM_AUX -/* - * AUX USART - */ -static const struct pios_usart_cfg pios_usart_aux_cfg = { - .regs = USART4, - .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 = USART4_IRQn, - .NVIC_IRQChannelPreemptionPriority = PIOS_IRQ_PRIO_HIGH, - .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_COM_AUX */ - - -#if defined(PIOS_INCLUDE_COM) - -#include - -#endif /* PIOS_INCLUDE_COM */ - -#if defined(PIOS_INCLUDE_I2C) - -#include - -/* - * I2C Adapters - */ - -void PIOS_I2C_pres_mag_adapter_ev_irq_handler(void); -void PIOS_I2C_pres_mag_adapter_er_irq_handler(void); -void I2C1_EV_IRQHandler() - __attribute__ ((alias("PIOS_I2C_pres_mag_adapter_ev_irq_handler"))); -void I2C1_ER_IRQHandler() - __attribute__ ((alias("PIOS_I2C_pres_mag_adapter_er_irq_handler"))); - -static const struct pios_i2c_adapter_cfg pios_i2c_pres_mag_adapter_cfg = { - .regs = I2C1, - .init = { - .I2C_Mode = I2C_Mode_I2C, - .I2C_OwnAddress1 = 0, - .I2C_Ack = I2C_Ack_Enable, - .I2C_AcknowledgedAddress = I2C_AcknowledgedAddress_7bit, - .I2C_DutyCycle = I2C_DutyCycle_2, - .I2C_ClockSpeed = 200000, /* bits/s */ - }, - .transfer_timeout_ms = 50, - .scl = { - .gpio = GPIOB, - .init = { - .GPIO_Pin = GPIO_Pin_6, - .GPIO_Speed = GPIO_Speed_10MHz, - .GPIO_Mode = GPIO_Mode_AF_OD, - }, - }, - .sda = { - .gpio = GPIOB, - .init = { - .GPIO_Pin = GPIO_Pin_7, - .GPIO_Speed = GPIO_Speed_10MHz, - .GPIO_Mode = GPIO_Mode_AF_OD, - }, - }, - .event = { - .flags = 0, /* FIXME: check this */ - .init = { - .NVIC_IRQChannel = I2C1_EV_IRQn, - .NVIC_IRQChannelPreemptionPriority = PIOS_IRQ_PRIO_HIGHEST, - .NVIC_IRQChannelSubPriority = 0, - .NVIC_IRQChannelCmd = ENABLE, - }, - }, - .error = { - .flags = 0, /* FIXME: check this */ - .init = { - .NVIC_IRQChannel = I2C1_ER_IRQn, - .NVIC_IRQChannelPreemptionPriority = PIOS_IRQ_PRIO_HIGHEST, - .NVIC_IRQChannelSubPriority = 0, - .NVIC_IRQChannelCmd = ENABLE, - }, - }, -}; - -uint32_t pios_i2c_pres_mag_adapter_id; -void PIOS_I2C_pres_mag_adapter_ev_irq_handler(void) -{ - /* Call into the generic code to handle the IRQ for this specific device */ - PIOS_I2C_EV_IRQ_Handler(pios_i2c_pres_mag_adapter_id); -} - -void PIOS_I2C_pres_mag_adapter_er_irq_handler(void) -{ - /* Call into the generic code to handle the IRQ for this specific device */ - PIOS_I2C_ER_IRQ_Handler(pios_i2c_pres_mag_adapter_id); -} - - -void PIOS_I2C_gyro_adapter_ev_irq_handler(void); -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"))); - -static const struct pios_i2c_adapter_cfg pios_i2c_gyro_adapter_cfg = { - .regs = I2C2, - .init = { - .I2C_Mode = I2C_Mode_I2C, - .I2C_OwnAddress1 = 0, - .I2C_Ack = I2C_Ack_Enable, - .I2C_AcknowledgedAddress = I2C_AcknowledgedAddress_7bit, - .I2C_DutyCycle = I2C_DutyCycle_2, - .I2C_ClockSpeed = 400000, /* bits/s */ - }, - .transfer_timeout_ms = 50, - .scl = { - .gpio = GPIOB, - .init = { - .GPIO_Pin = GPIO_Pin_10, - .GPIO_Speed = GPIO_Speed_10MHz, - .GPIO_Mode = GPIO_Mode_AF_OD, - }, - }, - .sda = { - .gpio = GPIOB, - .init = { - .GPIO_Pin = GPIO_Pin_11, - .GPIO_Speed = GPIO_Speed_10MHz, - .GPIO_Mode = GPIO_Mode_AF_OD, - }, - }, - .event = { - .flags = 0, /* FIXME: check this */ - .init = { - .NVIC_IRQChannel = I2C2_EV_IRQn, - .NVIC_IRQChannelPreemptionPriority = PIOS_IRQ_PRIO_HIGHEST, - .NVIC_IRQChannelSubPriority = 0, - .NVIC_IRQChannelCmd = ENABLE, - }, - }, - .error = { - .flags = 0, /* FIXME: check this */ - .init = { - .NVIC_IRQChannel = I2C2_ER_IRQn, - .NVIC_IRQChannelPreemptionPriority = PIOS_IRQ_PRIO_HIGHEST, - .NVIC_IRQChannelSubPriority = 0, - .NVIC_IRQChannelCmd = ENABLE, - }, - }, -}; - -uint32_t pios_i2c_gyro_adapter_id; -void PIOS_I2C_gyro_adapter_ev_irq_handler(void) -{ - /* Call into the generic code to handle the IRQ for this specific device */ - PIOS_I2C_EV_IRQ_Handler(pios_i2c_gyro_adapter_id); -} - -void PIOS_I2C_gyro_adapter_er_irq_handler(void) -{ - /* Call into the generic code to handle the IRQ for this specific device */ - PIOS_I2C_ER_IRQ_Handler(pios_i2c_gyro_adapter_id); -} - -#endif /* PIOS_INCLUDE_I2C */ diff --git a/flight/board_hw_defs/openpilot/board_hw_defs.c b/flight/board_hw_defs/openpilot/board_hw_defs.c deleted file mode 100644 index 681089d09..000000000 --- a/flight/board_hw_defs/openpilot/board_hw_defs.c +++ /dev/null @@ -1,1085 +0,0 @@ -#include - -#if defined(PIOS_INCLUDE_LED) - -#include -static const struct pios_led pios_leds[] = { - [PIOS_LED_HEARTBEAT] = { - .pin = { - .gpio = GPIOC, - .init = { - .GPIO_Pin = GPIO_Pin_12, - .GPIO_Mode = GPIO_Mode_Out_PP, - .GPIO_Speed = GPIO_Speed_50MHz, - }, - }, - }, - [PIOS_LED_ALARM] = { - .pin = { - .gpio = GPIOC, - .init = { - .GPIO_Pin = GPIO_Pin_13, - .GPIO_Mode = GPIO_Mode_Out_PP, - .GPIO_Speed = GPIO_Speed_50MHz, - }, - }, - }, -}; - -static const struct pios_led_cfg pios_led_cfg = { - .leds = pios_leds, - .num_leds = NELEMENTS(pios_leds), -}; - -#endif /* PIOS_INCLUDE_LED */ - -#if defined(PIOS_INCLUDE_SPI) - -#include - -/* MicroSD Interface - * - * NOTE: Leave this declared as const data so that it ends up in the - * .rodata section (ie. Flash) rather than in the .bss section (RAM). - */ -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"))); -static const struct pios_spi_cfg pios_spi_sdcard_cfg = { - .regs = SPI1, - .init = { - .SPI_Mode = SPI_Mode_Master, - .SPI_Direction = SPI_Direction_2Lines_FullDuplex, - .SPI_DataSize = SPI_DataSize_8b, - .SPI_NSS = SPI_NSS_Soft, - .SPI_FirstBit = SPI_FirstBit_MSB, - .SPI_CRCPolynomial = 7, - .SPI_CPOL = SPI_CPOL_High, - .SPI_CPHA = SPI_CPHA_2Edge, - .SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_256, /* Maximum divider (ie. slowest clock rate) */ - }, - .dma = { - .ahb_clk = RCC_AHBPeriph_DMA1, - - .irq = { - .flags = (DMA1_FLAG_TC2 | DMA1_FLAG_TE2 | DMA1_FLAG_HT2 | DMA1_FLAG_GL2), - .init = { - .NVIC_IRQChannel = DMA1_Channel2_IRQn, - .NVIC_IRQChannelPreemptionPriority = PIOS_IRQ_PRIO_MID, - .NVIC_IRQChannelSubPriority = 0, - .NVIC_IRQChannelCmd = ENABLE, - }, - }, - - .rx = { - .channel = DMA1_Channel2, - .init = { - .DMA_PeripheralBaseAddr = (uint32_t)&(SPI1->DR), - .DMA_DIR = DMA_DIR_PeripheralSRC, - .DMA_PeripheralInc = DMA_PeripheralInc_Disable, - .DMA_MemoryInc = DMA_MemoryInc_Enable, - .DMA_PeripheralDataSize = DMA_PeripheralDataSize_Byte, - .DMA_MemoryDataSize = DMA_MemoryDataSize_Byte, - .DMA_Mode = DMA_Mode_Normal, - .DMA_Priority = DMA_Priority_Medium, - .DMA_M2M = DMA_M2M_Disable, - }, - }, - .tx = { - .channel = DMA1_Channel3, - .init = { - .DMA_PeripheralBaseAddr = (uint32_t)&(SPI1->DR), - .DMA_DIR = DMA_DIR_PeripheralDST, - .DMA_PeripheralInc = DMA_PeripheralInc_Disable, - .DMA_MemoryInc = DMA_MemoryInc_Enable, - .DMA_PeripheralDataSize = DMA_PeripheralDataSize_Byte, - .DMA_MemoryDataSize = DMA_MemoryDataSize_Byte, - .DMA_Mode = DMA_Mode_Normal, - .DMA_Priority = DMA_Priority_Medium, - .DMA_M2M = DMA_M2M_Disable, - }, - }, - }, - .ssel = { - .gpio = GPIOA, - .init = { - .GPIO_Pin = GPIO_Pin_4, - .GPIO_Speed = GPIO_Speed_50MHz, - .GPIO_Mode = GPIO_Mode_Out_PP, - }, - }, - .sclk = { - .gpio = GPIOA, - .init = { - .GPIO_Pin = GPIO_Pin_5, - .GPIO_Speed = GPIO_Speed_50MHz, - .GPIO_Mode = GPIO_Mode_AF_PP, - }, - }, - .miso = { - .gpio = GPIOA, - .init = { - .GPIO_Pin = GPIO_Pin_6, - .GPIO_Speed = GPIO_Speed_50MHz, - .GPIO_Mode = GPIO_Mode_IPU, - }, - }, - .mosi = { - .gpio = GPIOA, - .init = { - .GPIO_Pin = GPIO_Pin_7, - .GPIO_Speed = GPIO_Speed_50MHz, - .GPIO_Mode = GPIO_Mode_AF_PP, - }, - }, -}; - -/* AHRS Interface - * - * NOTE: Leave this declared as const data so that it ends up in the - * .rodata section (ie. Flash) rather than in the .bss section (RAM). - */ -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"))); -static const struct pios_spi_cfg pios_spi_ahrs_cfg = { - .regs = SPI2, - .init = { - .SPI_Mode = SPI_Mode_Master, - .SPI_Direction = SPI_Direction_2Lines_FullDuplex, - .SPI_DataSize = SPI_DataSize_8b, - .SPI_NSS = SPI_NSS_Soft, - .SPI_FirstBit = SPI_FirstBit_MSB, - .SPI_CRCPolynomial = 7, - .SPI_CPOL = SPI_CPOL_High, - .SPI_CPHA = SPI_CPHA_2Edge, - .SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_16, - }, - .use_crc = TRUE, - .dma = { - .ahb_clk = RCC_AHBPeriph_DMA1, - - .irq = { - .flags = (DMA1_FLAG_TC4 | DMA1_FLAG_TE4 | DMA1_FLAG_HT4 | DMA1_FLAG_GL4), - .init = { - .NVIC_IRQChannel = DMA1_Channel4_IRQn, - .NVIC_IRQChannelPreemptionPriority = PIOS_IRQ_PRIO_HIGH, - .NVIC_IRQChannelSubPriority = 0, - .NVIC_IRQChannelCmd = ENABLE, - }, - }, - - .rx = { - .channel = DMA1_Channel4, - .init = { - .DMA_PeripheralBaseAddr = (uint32_t)&(SPI2->DR), - .DMA_DIR = DMA_DIR_PeripheralSRC, - .DMA_PeripheralInc = DMA_PeripheralInc_Disable, - .DMA_MemoryInc = DMA_MemoryInc_Enable, - .DMA_PeripheralDataSize = DMA_PeripheralDataSize_Byte, - .DMA_MemoryDataSize = DMA_MemoryDataSize_Byte, - .DMA_Mode = DMA_Mode_Normal, - .DMA_Priority = DMA_Priority_High, - .DMA_M2M = DMA_M2M_Disable, - }, - }, - .tx = { - .channel = DMA1_Channel5, - .init = { - .DMA_PeripheralBaseAddr = (uint32_t)&(SPI2->DR), - .DMA_DIR = DMA_DIR_PeripheralDST, - .DMA_PeripheralInc = DMA_PeripheralInc_Disable, - .DMA_MemoryInc = DMA_MemoryInc_Enable, - .DMA_PeripheralDataSize = DMA_PeripheralDataSize_Byte, - .DMA_MemoryDataSize = DMA_MemoryDataSize_Byte, - .DMA_Mode = DMA_Mode_Normal, - .DMA_Priority = DMA_Priority_High, - .DMA_M2M = DMA_M2M_Disable, - }, - }, - }, - .ssel = { - .gpio = GPIOB, - .init = { - .GPIO_Pin = GPIO_Pin_12, - .GPIO_Speed = GPIO_Speed_10MHz, - .GPIO_Mode = GPIO_Mode_Out_PP, - }, - }, - .sclk = { - .gpio = GPIOB, - .init = { - .GPIO_Pin = GPIO_Pin_13, - .GPIO_Speed = GPIO_Speed_10MHz, - .GPIO_Mode = GPIO_Mode_AF_PP, - }, - }, - .miso = { - .gpio = GPIOB, - .init = { - .GPIO_Pin = GPIO_Pin_14, - .GPIO_Speed = GPIO_Speed_10MHz, - .GPIO_Mode = GPIO_Mode_IN_FLOATING, - }, - }, - .mosi = { - .gpio = GPIOB, - .init = { - .GPIO_Pin = GPIO_Pin_15, - .GPIO_Speed = GPIO_Speed_10MHz, - .GPIO_Mode = GPIO_Mode_AF_PP, - }, - }, -}; - -static uint32_t pios_spi_sdcard_id; -void PIOS_SPI_sdcard_irq_handler(void) -{ - /* Call into the generic code to handle the IRQ for this specific device */ - PIOS_SPI_IRQ_Handler(pios_spi_sdcard_id); -} - -uint32_t pios_spi_ahrs_id; -void PIOS_SPI_ahrs_irq_handler(void) -{ - /* Call into the generic code to handle the IRQ for this specific device */ - PIOS_SPI_IRQ_Handler(pios_spi_ahrs_id); -} - -#endif /* PIOS_INCLUDE_SPI */ - -#if defined(PIOS_INCLUDE_ADC) - -/* - * ADC system - */ -#include "pios_adc_priv.h" -extern void PIOS_ADC_handler(void); -void DMA1_Channel1_IRQHandler() __attribute__ ((alias("PIOS_ADC_handler"))); -// Remap the ADC DMA handler to this one -static const struct pios_adc_cfg pios_adc_cfg = { - .dma = { - .ahb_clk = RCC_AHBPeriph_DMA1, - .irq = { - .flags = (DMA1_FLAG_TC1 | DMA1_FLAG_TE1 | DMA1_FLAG_HT1 | DMA1_FLAG_GL1), - .init = { - .NVIC_IRQChannel = DMA1_Channel1_IRQn, - .NVIC_IRQChannelPreemptionPriority = PIOS_IRQ_PRIO_LOW, - .NVIC_IRQChannelSubPriority = 0, - .NVIC_IRQChannelCmd = ENABLE, - }, - }, - .rx = { - .channel = DMA1_Channel1, - .init = { - .DMA_PeripheralBaseAddr = (uint32_t) & ADC1->DR, - .DMA_DIR = DMA_DIR_PeripheralSRC, - .DMA_PeripheralInc = DMA_PeripheralInc_Disable, - .DMA_MemoryInc = DMA_MemoryInc_Enable, - .DMA_PeripheralDataSize = DMA_PeripheralDataSize_Word, - .DMA_MemoryDataSize = DMA_MemoryDataSize_Word, - .DMA_Mode = DMA_Mode_Circular, - .DMA_Priority = DMA_Priority_Low, - .DMA_M2M = DMA_M2M_Disable, - }, - } - }, - .half_flag = DMA1_IT_HT1, - .full_flag = DMA1_IT_TC1, -}; - -struct pios_adc_dev pios_adc_devs[] = { - { - .cfg = &pios_adc_cfg, - .callback_function = NULL, - }, -}; - -uint8_t pios_adc_num_devices = NELEMENTS(pios_adc_devs); - -void PIOS_ADC_handler() { - PIOS_ADC_DMA_Handler(); -} - -#endif /* PIOS_INCLUDE_ADC */ - -#if defined(PIOS_INCLUDE_TIM) - -#include "pios_tim_priv.h" - -static const TIM_TimeBaseInitTypeDef tim_4_8_time_base = { - .TIM_Prescaler = (PIOS_MASTER_CLOCK / 1000000) - 1, - .TIM_ClockDivision = TIM_CKD_DIV1, - .TIM_CounterMode = TIM_CounterMode_Up, - .TIM_Period = ((1000000 / PIOS_SERVO_UPDATE_HZ) - 1), - .TIM_RepetitionCounter = 0x0000, -}; - -static const struct pios_tim_clock_cfg tim_4_cfg = { - .timer = TIM4, - .time_base_init = &tim_4_8_time_base, - .irq = { - .init = { - .NVIC_IRQChannel = TIM4_IRQn, - .NVIC_IRQChannelPreemptionPriority = PIOS_IRQ_PRIO_MID, - .NVIC_IRQChannelSubPriority = 0, - .NVIC_IRQChannelCmd = ENABLE, - }, - }, -}; - -static const struct pios_tim_clock_cfg tim_8_cfg = { - .timer = TIM8, - .time_base_init = &tim_4_8_time_base, - .irq = { - .init = { - .NVIC_IRQChannel = TIM8_CC_IRQn, - .NVIC_IRQChannelPreemptionPriority = PIOS_IRQ_PRIO_MID, - .NVIC_IRQChannelSubPriority = 0, - .NVIC_IRQChannelCmd = ENABLE, - }, - }, -}; - -static const TIM_TimeBaseInitTypeDef tim_1_3_5_time_base = { - .TIM_Prescaler = (PIOS_MASTER_CLOCK / 1000000) - 1, - .TIM_ClockDivision = TIM_CKD_DIV1, - .TIM_CounterMode = TIM_CounterMode_Up, - .TIM_Period = 0xFFFF, - .TIM_RepetitionCounter = 0x0000, -}; - -static const struct pios_tim_clock_cfg tim_1_cfg = { - .timer = TIM1, - .time_base_init = &tim_1_3_5_time_base, - .irq = { - .init = { - .NVIC_IRQChannel = TIM1_CC_IRQn, - .NVIC_IRQChannelPreemptionPriority = PIOS_IRQ_PRIO_MID, - .NVIC_IRQChannelSubPriority = 0, - .NVIC_IRQChannelCmd = ENABLE, - }, - }, -}; - -static const struct pios_tim_clock_cfg tim_3_cfg = { - .timer = TIM3, - .time_base_init = &tim_1_3_5_time_base, - .irq = { - .init = { - .NVIC_IRQChannel = TIM3_IRQn, - .NVIC_IRQChannelPreemptionPriority = PIOS_IRQ_PRIO_MID, - .NVIC_IRQChannelSubPriority = 0, - .NVIC_IRQChannelCmd = ENABLE, - }, - }, -}; - -static const struct pios_tim_clock_cfg tim_5_cfg = { - .timer = TIM5, - .time_base_init = &tim_1_3_5_time_base, - .irq = { - .init = { - .NVIC_IRQChannel = TIM5_IRQn, - .NVIC_IRQChannelPreemptionPriority = PIOS_IRQ_PRIO_MID, - .NVIC_IRQChannelSubPriority = 0, - .NVIC_IRQChannelCmd = ENABLE, - }, - }, -}; - -#endif /* PIOS_INCLUDE_TIM */ - -#if defined(PIOS_INCLUDE_USART) - -#include "pios_usart_priv.h" - -/* - * Telemetry USART - */ -static const struct pios_usart_cfg pios_usart_telem_cfg = { - .regs = USART2, - .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 = USART2_IRQn, - .NVIC_IRQChannelPreemptionPriority = PIOS_IRQ_PRIO_MID, - .NVIC_IRQChannelSubPriority = 0, - .NVIC_IRQChannelCmd = ENABLE, - }, - }, - .rx = { - .gpio = GPIOA, - .init = { - .GPIO_Pin = GPIO_Pin_3, - .GPIO_Speed = GPIO_Speed_2MHz, - .GPIO_Mode = GPIO_Mode_IPU, - }, - }, - .tx = { - .gpio = GPIOA, - .init = { - .GPIO_Pin = GPIO_Pin_2, - .GPIO_Speed = GPIO_Speed_2MHz, - .GPIO_Mode = GPIO_Mode_AF_PP, - }, - }, -}; - -/* - * GPS USART - */ -static const struct pios_usart_cfg pios_usart_gps_cfg = { - .regs = USART3, - .remap = GPIO_PartialRemap_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 = GPIOC, - .init = { - .GPIO_Pin = GPIO_Pin_11, - .GPIO_Speed = GPIO_Speed_2MHz, - .GPIO_Mode = GPIO_Mode_IPU, - }, - }, - .tx = { - .gpio = GPIOC, - .init = { - .GPIO_Pin = GPIO_Pin_10, - .GPIO_Speed = GPIO_Speed_2MHz, - .GPIO_Mode = GPIO_Mode_AF_PP, - }, - }, -}; - -#ifdef PIOS_COM_AUX -/* - * AUX USART - */ -static const struct pios_usart_cfg pios_usart_aux_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, - }, - }, - .remap = GPIO_Remap_USART1, - .rx = { - .gpio = GPIOB, - .init = { - .GPIO_Pin = GPIO_Pin_7, - .GPIO_Speed = GPIO_Speed_2MHz, - .GPIO_Mode = GPIO_Mode_IPU, - }, - }, - .tx = { - .gpio = GPIOB, - .init = { - .GPIO_Pin = GPIO_Pin_6, - .GPIO_Speed = GPIO_Speed_2MHz, - .GPIO_Mode = GPIO_Mode_AF_PP, - }, - }, -}; -#endif - -#if defined(PIOS_INCLUDE_RTC) -/* - * Realtime Clock (RTC) - */ -#include - -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_DSM) -/* - * Spektrum/JR DSM USART - */ -#include - -static const struct pios_usart_cfg pios_usart_dsm_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_dsm_cfg pios_dsm_cfg = { - .bind = { - .gpio = GPIOA, - .init = { - .GPIO_Pin = GPIO_Pin_10, - .GPIO_Speed = GPIO_Speed_2MHz, - .GPIO_Mode = GPIO_Mode_Out_PP, - }, - }, -}; - -#endif /* PIOS_COM_DSM */ - -#if defined(PIOS_INCLUDE_SBUS) -#error PIOS_INCLUDE_SBUS not implemented -#endif /* PIOS_INCLUDE_SBUS */ - -#endif /* PIOS_INCLUDE_USART */ - -#if defined(PIOS_INCLUDE_COM) - -#include "pios_com_priv.h" - -#endif /* PIOS_INCLUDE_COM */ - -#if defined(PIOS_INCLUDE_SERVO) && defined(PIOS_INCLUDE_TIM) - -/** - * Pios servo configuration structures - */ -#include -static const struct pios_tim_channel pios_tim_servoport_all_pins[] = { - { - .timer = TIM4, - .timer_chan = TIM_Channel_1, - .pin = { - .gpio = GPIOB, - .init = { - .GPIO_Pin = GPIO_Pin_6, - .GPIO_Mode = GPIO_Mode_AF_PP, - .GPIO_Speed = GPIO_Speed_2MHz, - }, - }, - }, - { - .timer = TIM4, - .timer_chan = TIM_Channel_2, - .pin = { - .gpio = GPIOB, - .init = { - .GPIO_Pin = GPIO_Pin_7, - .GPIO_Mode = GPIO_Mode_AF_PP, - .GPIO_Speed = GPIO_Speed_2MHz, - }, - }, - }, - { - .timer = TIM4, - .timer_chan = TIM_Channel_3, - .pin = { - .gpio = GPIOB, - .init = { - .GPIO_Pin = GPIO_Pin_8, - .GPIO_Mode = GPIO_Mode_AF_PP, - .GPIO_Speed = GPIO_Speed_2MHz, - }, - }, - }, - { - .timer = TIM4, - .timer_chan = TIM_Channel_4, - .pin = { - .gpio = GPIOB, - .init = { - .GPIO_Pin = GPIO_Pin_9, - .GPIO_Mode = GPIO_Mode_AF_PP, - .GPIO_Speed = GPIO_Speed_2MHz, - }, - }, - }, - { - .timer = TIM8, - .timer_chan = TIM_Channel_1, - .pin = { - .gpio = GPIOC, - .init = { - .GPIO_Pin = GPIO_Pin_6, - .GPIO_Mode = GPIO_Mode_AF_PP, - .GPIO_Speed = GPIO_Speed_2MHz, - }, - }, - }, - { - .timer = TIM8, - .timer_chan = TIM_Channel_2, - .pin = { - .gpio = GPIOC, - .init = { - .GPIO_Pin = GPIO_Pin_7, - .GPIO_Mode = GPIO_Mode_AF_PP, - .GPIO_Speed = GPIO_Speed_2MHz, - }, - }, - }, - { - .timer = TIM8, - .timer_chan = TIM_Channel_3, - .pin = { - .gpio = GPIOC, - .init = { - .GPIO_Pin = GPIO_Pin_8, - .GPIO_Mode = GPIO_Mode_AF_PP, - .GPIO_Speed = GPIO_Speed_2MHz, - }, - }, - }, - { - .timer = TIM8, - .timer_chan = TIM_Channel_4, - .pin = { - .gpio = GPIOC, - .init = { - .GPIO_Pin = GPIO_Pin_9, - .GPIO_Mode = GPIO_Mode_AF_PP, - .GPIO_Speed = GPIO_Speed_2MHz, - }, - }, - }, -}; - -const struct pios_servo_cfg pios_servo_cfg = { - .tim_oc_init = { - .TIM_OCMode = TIM_OCMode_PWM1, - .TIM_OutputState = TIM_OutputState_Enable, - .TIM_OutputNState = TIM_OutputNState_Disable, - .TIM_Pulse = PIOS_SERVOS_INITIAL_POSITION, - .TIM_OCPolarity = TIM_OCPolarity_High, - .TIM_OCNPolarity = TIM_OCPolarity_High, - .TIM_OCIdleState = TIM_OCIdleState_Reset, - .TIM_OCNIdleState = TIM_OCNIdleState_Reset, - }, - .channels = pios_tim_servoport_all_pins, - .num_channels = NELEMENTS(pios_tim_servoport_all_pins), -}; - -#endif /* PIOS_INCLUDE_SERVO && PIOS_INCLUDE_TIM */ - -/* - * PWM Inputs - */ -#if defined(PIOS_INCLUDE_PWM) || defined(PIOS_INCLUDE_PPM) -#include -static const struct pios_tim_channel pios_tim_rcvrport_all_channels[] = { - { - .timer = TIM1, - .timer_chan = TIM_Channel_2, - .pin = { - .gpio = GPIOA, - .init = { - .GPIO_Pin = GPIO_Pin_9, - .GPIO_Mode = GPIO_Mode_IPD, - .GPIO_Speed = GPIO_Speed_2MHz, - }, - }, - }, - { - .timer = TIM1, - .timer_chan = TIM_Channel_3, - .pin = { - .gpio = GPIOA, - .init = { - .GPIO_Pin = GPIO_Pin_10, - .GPIO_Mode = GPIO_Mode_IPD, - .GPIO_Speed = GPIO_Speed_2MHz, - }, - }, - }, - { - .timer = TIM5, - .timer_chan = TIM_Channel_1, - .pin = { - .gpio = GPIOA, - .init = { - .GPIO_Pin = GPIO_Pin_0, - .GPIO_Mode = GPIO_Mode_IPD, - .GPIO_Speed = GPIO_Speed_2MHz, - }, - }, - }, - { - .timer = TIM1, - .timer_chan = TIM_Channel_1, - .pin = { - .gpio = GPIOA, - .init = { - .GPIO_Pin = GPIO_Pin_8, - .GPIO_Mode = GPIO_Mode_IPD, - .GPIO_Speed = GPIO_Speed_2MHz, - }, - }, - }, - { - .timer = TIM3, - .timer_chan = TIM_Channel_4, - .pin = { - .gpio = GPIOB, - .init = { - .GPIO_Pin = GPIO_Pin_1, - .GPIO_Mode = GPIO_Mode_IPD, - .GPIO_Speed = GPIO_Speed_2MHz, - }, - }, - }, - { - .timer = TIM3, - .timer_chan = TIM_Channel_3, - .pin = { - .gpio = GPIOB, - .init = { - .GPIO_Pin = GPIO_Pin_0, - .GPIO_Mode = GPIO_Mode_IPD, - .GPIO_Speed = GPIO_Speed_2MHz, - }, - }, - }, - { - .timer = TIM3, - .timer_chan = TIM_Channel_1, - .pin = { - .gpio = GPIOB, - .init = { - .GPIO_Pin = GPIO_Pin_4, - .GPIO_Mode = GPIO_Mode_IPD, - .GPIO_Speed = GPIO_Speed_2MHz, - }, - }, - .remap = GPIO_PartialRemap_TIM3, - }, - { - .timer = TIM3, - .timer_chan = TIM_Channel_2, - .pin = { - .gpio = GPIOB, - .init = { - .GPIO_Pin = GPIO_Pin_5, - .GPIO_Mode = GPIO_Mode_IPD, - .GPIO_Speed = GPIO_Speed_2MHz, - }, - }, - .remap = GPIO_PartialRemap_TIM3, - }, -}; - -const struct pios_pwm_cfg pios_pwm_cfg = { - .tim_ic_init = { - .TIM_ICPolarity = TIM_ICPolarity_Rising, - .TIM_ICSelection = TIM_ICSelection_DirectTI, - .TIM_ICPrescaler = TIM_ICPSC_DIV1, - .TIM_ICFilter = 0x0, - }, - .channels = pios_tim_rcvrport_all_channels, - .num_channels = NELEMENTS(pios_tim_rcvrport_all_channels), -}; -#endif - -/* - * PPM Input - */ -#if defined(PIOS_INCLUDE_PPM) -#include -static const struct pios_ppm_cfg pios_ppm_cfg = { - .tim_ic_init = { - .TIM_ICPolarity = TIM_ICPolarity_Rising, - .TIM_ICSelection = TIM_ICSelection_DirectTI, - .TIM_ICPrescaler = TIM_ICPSC_DIV1, - .TIM_ICFilter = 0x0, - .TIM_Channel = TIM_Channel_2, - }, - /* Use only the first channel for ppm */ - .channels = &pios_tim_rcvrport_all_channels[0], - .num_channels = 1, -}; - -#endif //PPM - -#if defined(PIOS_INCLUDE_I2C) - -#include - -/* - * I2C Adapters - */ - -void PIOS_I2C_main_adapter_ev_irq_handler(void); -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"))); - -static const struct pios_i2c_adapter_cfg pios_i2c_main_adapter_cfg = { - .regs = I2C2, - .init = { - .I2C_Mode = I2C_Mode_I2C, - .I2C_OwnAddress1 = 0, - .I2C_Ack = I2C_Ack_Enable, - .I2C_AcknowledgedAddress = I2C_AcknowledgedAddress_7bit, - .I2C_DutyCycle = I2C_DutyCycle_2, - .I2C_ClockSpeed = 400000, /* bits/s */ - }, - .transfer_timeout_ms = 50, - .scl = { - .gpio = GPIOB, - .init = { - .GPIO_Pin = GPIO_Pin_10, - .GPIO_Speed = GPIO_Speed_10MHz, - .GPIO_Mode = GPIO_Mode_AF_OD, - }, - }, - .sda = { - .gpio = GPIOB, - .init = { - .GPIO_Pin = GPIO_Pin_11, - .GPIO_Speed = GPIO_Speed_10MHz, - .GPIO_Mode = GPIO_Mode_AF_OD, - }, - }, - .event = { - .flags = 0, /* FIXME: check this */ - .init = { - .NVIC_IRQChannel = I2C2_EV_IRQn, - .NVIC_IRQChannelPreemptionPriority = PIOS_IRQ_PRIO_HIGHEST, - .NVIC_IRQChannelSubPriority = 0, - .NVIC_IRQChannelCmd = ENABLE, - }, - }, - .error = { - .flags = 0, /* FIXME: check this */ - .init = { - .NVIC_IRQChannel = I2C2_ER_IRQn, - .NVIC_IRQChannelPreemptionPriority = PIOS_IRQ_PRIO_HIGHEST, - .NVIC_IRQChannelSubPriority = 0, - .NVIC_IRQChannelCmd = ENABLE, - }, - }, -}; - -uint32_t pios_i2c_main_adapter_id; -void PIOS_I2C_main_adapter_ev_irq_handler(void) -{ -#ifdef I2C_DEBUG_PIN - PIOS_DEBUG_PinHigh(I2C_DEBUG_PIN); -#endif - /* Call into the generic code to handle the IRQ for this specific device */ - PIOS_I2C_EV_IRQ_Handler(pios_i2c_main_adapter_id); -#ifdef I2C_DEBUG_PIN - PIOS_DEBUG_PinLow(I2C_DEBUG_PIN); -#endif -} - -void PIOS_I2C_main_adapter_er_irq_handler(void) -{ - /* Call into the generic code to handle the IRQ for this specific device */ - PIOS_I2C_ER_IRQ_Handler(pios_i2c_main_adapter_id); -} - -#endif /* PIOS_INCLUDE_I2C */ - -#if defined(PIOS_ENABLE_DEBUG_PINS) - -static const struct stm32_gpio pios_debug_pins[] = { - #define PIOS_DEBUG_PIN_SERVO_1 0 - { - .gpio = GPIOB, - .init = { - .GPIO_Pin = GPIO_Pin_6, - .GPIO_Speed = GPIO_Speed_50MHz, - .GPIO_Mode = GPIO_Mode_Out_PP, - }, - }, - #define PIOS_DEBUG_PIN_SERVO_2 1 - { - .gpio = GPIOB, - .init = { - .GPIO_Pin = GPIO_Pin_7, - .GPIO_Speed = GPIO_Speed_50MHz, - .GPIO_Mode = GPIO_Mode_Out_PP, - }, - }, - #define PIOS_DEBUG_PIN_SERVO_3 2 - { - .gpio = GPIOB, - .init = { - .GPIO_Pin = GPIO_Pin_8, - .GPIO_Speed = GPIO_Speed_50MHz, - .GPIO_Mode = GPIO_Mode_Out_PP, - }, - }, - #define PIOS_DEBUG_PIN_SERVO_4 3 - { - .gpio = GPIOB, - .init = { - .GPIO_Pin = GPIO_Pin_9, - .GPIO_Speed = GPIO_Speed_50MHz, - .GPIO_Mode = GPIO_Mode_Out_PP, - }, - }, - #define PIOS_DEBUG_PIN_SERVO_5 4 - { - .gpio = GPIOC, - .init = { - .GPIO_Pin = GPIO_Pin_6, - .GPIO_Speed = GPIO_Speed_50MHz, - .GPIO_Mode = GPIO_Mode_Out_PP, - }, - }, - #define PIOS_DEBUG_PIN_SERVO_6 5 - { - .gpio = GPIOC, - .init = { - .GPIO_Pin = GPIO_Pin_7, - .GPIO_Speed = GPIO_Speed_50MHz, - .GPIO_Mode = GPIO_Mode_Out_PP, - }, - }, - #define PIOS_DEBUG_PIN_SERVO_7 6 - { - .gpio = GPIOC, - .init = { - .GPIO_Pin = GPIO_Pin_8, - .GPIO_Speed = GPIO_Speed_50MHz, - .GPIO_Mode = GPIO_Mode_Out_PP, - }, - }, - #define PIOS_DEBUG_PIN_SERVO_8 7 - { - .gpio = GPIOC, - .init = { - .GPIO_Pin = GPIO_Pin_9, - .GPIO_Speed = GPIO_Speed_50MHz, - .GPIO_Mode = GPIO_Mode_Out_PP, - }, - }, -}; - -#endif /* PIOS_ENABLE_DEBUG_PINS */ - -#if defined(PIOS_INCLUDE_RCVR) -#include "pios_rcvr_priv.h" - -#endif /* PIOS_INCLUDE_RCVR */ - -#if defined(PIOS_INCLUDE_USB) -#include "pios_usb_priv.h" - -static const struct pios_usb_cfg pios_usb_main_cfg = { - .irq = { - .init = { - .NVIC_IRQChannel = USB_LP_CAN1_RX0_IRQn, - .NVIC_IRQChannelPreemptionPriority = PIOS_IRQ_PRIO_LOW, - .NVIC_IRQChannelSubPriority = 0, - .NVIC_IRQChannelCmd = ENABLE, - }, - }, -}; - -#include "pios_usb_board_data_priv.h" -#include "pios_usb_desc_hid_cdc_priv.h" -#include "pios_usb_desc_hid_only_priv.h" -#endif /* PIOS_INCLUDE_USB */ - -#if defined(PIOS_INCLUDE_COM_MSG) - -#include - -#endif /* PIOS_INCLUDE_COM_MSG */ - -#if defined(PIOS_INCLUDE_USB_HID) -#include - -const struct pios_usb_hid_cfg pios_usb_hid_cfg = { - .data_if = 0, - .data_rx_ep = 1, - .data_tx_ep = 1, -}; - -#endif /* PIOS_INCLUDE_USB_HID */ - -#if defined(PIOS_INCLUDE_USB_CDC) -#include - -const struct pios_usb_cdc_cfg pios_usb_cdc_cfg = { - .ctrl_if = 1, - .ctrl_tx_ep = 2, - - .data_if = 2, - .data_rx_ep = 3, - .data_tx_ep = 3, -}; -#endif /* PIOS_INCLUDE_USB_CDC */ diff --git a/flight/board_hw_defs/pipxtreme/board_hw_defs.c b/flight/board_hw_defs/pipxtreme/board_hw_defs.c index f3b714080..2dcb63fc2 100644 --- a/flight/board_hw_defs/pipxtreme/board_hw_defs.c +++ b/flight/board_hw_defs/pipxtreme/board_hw_defs.c @@ -6,11 +6,11 @@ static const struct pios_led pios_leds[] = { [PIOS_LED_USB] = { .pin = { - .gpio = GPIOA, - //.gpio = GPIOC, + //.gpio = GPIOA, + .gpio = GPIOC, .init = { - .GPIO_Pin = GPIO_Pin_3, - //.GPIO_Pin = GPIO_Pin_13, + //.GPIO_Pin = GPIO_Pin_3, + .GPIO_Pin = GPIO_Pin_13, .GPIO_Mode = GPIO_Mode_Out_PP, .GPIO_Speed = GPIO_Speed_50MHz, }, @@ -129,9 +129,9 @@ static const struct pios_spi_cfg pios_spi_port_cfg = }, }, }, - + .slave_count = 1, .ssel = - { + {{ .gpio = GPIOA, .init = { @@ -139,7 +139,7 @@ static const struct pios_spi_cfg pios_spi_port_cfg = .GPIO_Speed = GPIO_Speed_10MHz, .GPIO_Mode = GPIO_Mode_Out_PP, }, - }, + }}, .sclk = { .gpio = GPIOA, diff --git a/ground/openpilotgcs/src/plugins/config/ahrs.ui b/ground/openpilotgcs/src/plugins/config/ahrs.ui deleted file mode 100644 index a9ad4ca32..000000000 --- a/ground/openpilotgcs/src/plugins/config/ahrs.ui +++ /dev/null @@ -1,712 +0,0 @@ - - - AHRSWidget - - - - 0 - 0 - 720 - 537 - - - - Form - - - - - - 0 - - - - Calibration - - - - - - - - QFrame::Box - - - QFrame::Sunken - - - - 3 - - - - - - - - - - 75 - true - - - - #1: Multi-Point Calibration - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - Nice paper plane, eh? - - - - - - - - - false - - - Launch a sensor range and bias calibration. - - - Start - - - - - - - false - - - Save settings (only enabled when calibration is running) - - - Save Position - - - - - - - - - - - - - - QFrame::Box - - - QFrame::Sunken - - - - 3 - - - - - - - - - - 75 - true - - - - #2: Sensor noise calibration - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - These are the sensor variance values computed by the AHRS. - -Tip: lower is better! - - - Qt::ScrollBarAlwaysOff - - - Qt::ScrollBarAlwaysOff - - - - - - - - - false - - - Press to start a calibration procedure, about 15 seconds. - -Hint: run this with engines at cruising speed. - - - Start - - - - - - - true - - - 15 - - - 0 - - - false - - - - - - - - - - - - - - - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - 3 - - - - - - - - - - 75 - true - - - - #3: Accelerometer Bias calibration - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - - false - - - Start - - - - - - - 0 - - - false - - - - - - - - - - - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - 3 - - - - - - - - - - 75 - true - - - - #4 Gyro temperature drift calibration - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - - Temp: - - - - - - - - 9 - - - - Min - - - - - - - Currently measured temperature on the system. This is actually the -MB temperature, be careful if somehow you know that your INS -temperature is very different from your MB temp... - - - Qt::Horizontal - - - QSlider::TicksBelow - - - - - - - - 9 - - - - Max - - - - - - - - - - - Current drift: - - - - - - - - - - - Saved drift: - - - - - - - - - - - false - - - Start gathering data for temperature drift calibration. -Avoid sudden moves once you have started gathering! - - - Start - - - - - - - false - - - Launch drift measurement based on gathered data. - -TODO: is this necessary? Measurement could be auto updated every second or so, or done when we stop measuring... - - - Measure - - - - - - - false - - - Updates the XYZ drift values into the AHRS (saves to SD) - - - Save - - - - - - - - - - - - - - - - Six Point Calibration instructions - - - Qt::ScrollBarAlwaysOff - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> -<table border="0" style="-qt-table-type: root; margin-top:4px; margin-bottom:4px; margin-left:4px; margin-right:4px;"> -<tr> -<td style="border: none;"> -<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Help</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Step #1 and #2 are really necessary. Steps #3 and #4 will help you achieve the best possible results.</span></p> -<p align="center" style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-weight:600;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">#1: Multi-Point calibration:</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">This calibration will compute the scale for all sensors on the INS. Press &quot;Start&quot; to begin calibration, and follow the instructions which will be displayed here. Note that your HomeLocation must be set first, including the local magnetic field vector (Be) and acceleration due to gravity (g_e).</p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">#2: Sensor noise calibration:</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">This calibration will compute sensor variance under standard conditions. You can leave your engines running at low to mid throttle to take their vibration into account before pressing &quot;Start&quot;.</p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">#3: Accelerometer bias calibration:</span></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">This step will ensure that accelerometer bias is accurate. Place your airframe as horizontally as possible (use a spirit level if necessary), then press Start below and do not move your airframe at all until the end of the calibration.</p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">#4 Gyro temp drift calibration:</span></p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-weight:600;"></p></td></tr></table></body></html> - - - - - - - - Settings - - - - - - - - - 75 - true - - - - INS Algorithm: - - - - - - - Select the sensor integration algorithm here. -"Simple" only uses accelerometer values -"INSGPS" the full featured algorithm integrating all sensors - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - 75 - true - - - - Home Location: - - - - - - - false - - - Saves the Home Location. This is only enabled -if the Home Location is set, i.e. if the GPS fix is -successful. - -Disabled if there is no GPS fix. - - - Set - - - true - - - buttonGroup - - - - - - - true - - - Clears the HomeLocation: only makes sense if you save -to SD. This will force the INS to use the next GPS fix as the -new home location unless it is in indoor mode. - - - Clear - - - buttonGroup - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - - - - Telemetry link not established. - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - 0 - 0 - - - - - 32 - 32 - - - - - true - - - - - - - - :/core/images/helpicon.svg:/core/images/helpicon.svg - - - - 32 - 32 - - - - Ctrl+S - - - false - - - true - - - - - - - Save settings to the board (RAM only). - -This does not save the calibration settings, this is done using the -specific calibration button on top of the screen. - - - Apply - - - - - - - Send settings to the board, and save to the non-volatile memory. - - - Save - - - false - - - - - - - - - - - - - - - diff --git a/ground/openpilotgcs/src/plugins/config/config.pro b/ground/openpilotgcs/src/plugins/config/config.pro index eeca5ce66..ca594a63d 100644 --- a/ground/openpilotgcs/src/plugins/config/config.pro +++ b/ground/openpilotgcs/src/plugins/config/config.pro @@ -1,85 +1,82 @@ -TEMPLATE = lib -TARGET = Config -DEFINES += CONFIG_LIBRARY -QT += svg -include(config_dependencies.pri) -INCLUDEPATH += ../../libs/eigen - -OTHER_FILES += Config.pluginspec - -HEADERS += configplugin.h \ - configgadgetconfiguration.h \ - configgadgetwidget.h \ - configgadgetfactory.h \ - configgadgetoptionspage.h \ - configgadget.h \ - fancytabwidget.h \ - configinputwidget.h \ - configoutputwidget.h \ - configvehicletypewidget.h \ - config_pro_hw_widget.h \ - config_cc_hw_widget.h \ - configahrswidget.h \ - configccattitudewidget.h \ - cfg_vehicletypes/configccpmwidget.h \ - configstabilizationwidget.h \ - assertions.h \ - calibration.h \ - defaultattitudewidget.h \ - defaulthwsettingswidget.h \ - inputchannelform.h \ - configcamerastabilizationwidget.h \ - configtxpidwidget.h \ - outputchannelform.h \ - config_global.h \ - configpipxtremewidget.h -SOURCES += configplugin.cpp \ - configgadgetconfiguration.cpp \ - configgadgetwidget.cpp \ - configgadgetfactory.cpp \ - configgadgetoptionspage.cpp \ - configgadget.cpp \ - fancytabwidget.cpp \ - configinputwidget.cpp \ - configoutputwidget.cpp \ - configvehicletypewidget.cpp \ - config_pro_hw_widget.cpp \ - config_cc_hw_widget.cpp \ - configahrswidget.cpp \ - configccattitudewidget.cpp \ - configstabilizationwidget.cpp \ - twostep.cpp \ - legacy-calibration.cpp \ - gyro-calibration.cpp \ - alignment-calibration.cpp \ - defaultattitudewidget.cpp \ - defaulthwsettingswidget.cpp \ - inputchannelform.cpp \ - configcamerastabilizationwidget.cpp \ - configtxpidwidget.cpp \ - cfg_vehicletypes/configmultirotorwidget.cpp \ - cfg_vehicletypes/configgroundvehiclewidget.cpp \ - cfg_vehicletypes/configfixedwingwidget.cpp \ - cfg_vehicletypes/configccpmwidget.cpp \ - outputchannelform.cpp \ - configpipxtremewidget.cpp -FORMS += airframe.ui \ - cc_hw_settings.ui \ - pro_hw_settings.ui \ - ahrs.ui \ - ccpm.ui \ - stabilization.ui \ - input.ui \ - output.ui \ - ccattitude.ui \ - defaultattitude.ui \ - defaulthwsettings.ui \ - inputchannelform.ui \ - camerastabilization.ui \ - pipxtreme.ui \ - outputchannelform.ui \ - txpid.ui -RESOURCES += configgadget.qrc - - - +TEMPLATE = lib +TARGET = Config +DEFINES += CONFIG_LIBRARY +QT += svg +include(config_dependencies.pri) +INCLUDEPATH += ../../libs/eigen + +OTHER_FILES += Config.pluginspec + +HEADERS += configplugin.h \ + configgadgetconfiguration.h \ + configgadgetwidget.h \ + configgadgetfactory.h \ + configgadgetoptionspage.h \ + configgadget.h \ + fancytabwidget.h \ + configinputwidget.h \ + configoutputwidget.h \ + configvehicletypewidget.h \ + config_pro_hw_widget.h \ + config_cc_hw_widget.h \ + configccattitudewidget.h \ + configpipxtremewidget.h \ + cfg_vehicletypes/configccpmwidget.h \ + configstabilizationwidget.h \ + assertions.h \ + calibration.h \ + defaultattitudewidget.h \ + defaulthwsettingswidget.h \ + inputchannelform.h \ + configcamerastabilizationwidget.h \ + configtxpidwidget.h \ + outputchannelform.h \ + configrevowidget.h \ + config_global.h +SOURCES += configplugin.cpp \ + configgadgetconfiguration.cpp \ + configgadgetwidget.cpp \ + configgadgetfactory.cpp \ + configgadgetoptionspage.cpp \ + configgadget.cpp \ + fancytabwidget.cpp \ + configinputwidget.cpp \ + configoutputwidget.cpp \ + configvehicletypewidget.cpp \ + config_pro_hw_widget.cpp \ + config_cc_hw_widget.cpp \ + configccattitudewidget.cpp \ + configstabilizationwidget.cpp \ + configpipxtremewidget.cpp \ + twostep.cpp \ + legacy-calibration.cpp \ + gyro-calibration.cpp \ + alignment-calibration.cpp \ + defaultattitudewidget.cpp \ + defaulthwsettingswidget.cpp \ + inputchannelform.cpp \ + configcamerastabilizationwidget.cpp \ + configrevowidget.cpp \ + configtxpidwidget.cpp \ + cfg_vehicletypes/configmultirotorwidget.cpp \ + cfg_vehicletypes/configgroundvehiclewidget.cpp \ + cfg_vehicletypes/configfixedwingwidget.cpp \ + cfg_vehicletypes/configccpmwidget.cpp \ + outputchannelform.cpp +FORMS += airframe.ui \ + cc_hw_settings.ui \ + pro_hw_settings.ui \ + ccpm.ui \ + stabilization.ui \ + input.ui \ + output.ui \ + ccattitude.ui \ + defaultattitude.ui \ + defaulthwsettings.ui \ + inputchannelform.ui \ + camerastabilization.ui \ + outputchannelform.ui \ + revosensors.ui \ + txpid.ui \ + pipxtreme.ui +RESOURCES += configgadget.qrc diff --git a/ground/openpilotgcs/src/plugins/config/configahrswidget.cpp b/ground/openpilotgcs/src/plugins/config/configahrswidget.cpp deleted file mode 100644 index 24753f857..000000000 --- a/ground/openpilotgcs/src/plugins/config/configahrswidget.cpp +++ /dev/null @@ -1,1231 +0,0 @@ -/** - ****************************************************************************** - * - * @file configahrswidget.h - * @author E. Lafargue & The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010. - * @addtogroup GCSPlugins GCS Plugins - * @{ - * @addtogroup ConfigPlugin Config Plugin - * @{ - * @brief The Configuration Gadget used to update settings in the firmware - *****************************************************************************/ -/* - * 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 - */ -#include "configahrswidget.h" - -#include "math.h" -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "assertions.h" -#include "calibration.h" - -#define sign(x) ((x < 0) ? -1 : 1) - -const double ConfigAHRSWidget::maxVarValue = 0.1; -const int ConfigAHRSWidget::calibrationDelay = 7; // Time to wait for the AHRS to do its calibration - -// ***************** - -class Thread : public QThread -{ -public: - static void usleep(unsigned long usecs) - { - QThread::usleep(usecs); - } -}; - -// ***************** - -ConfigAHRSWidget::ConfigAHRSWidget(QWidget *parent) : ConfigTaskWidget(parent) -{ - m_ahrs = new Ui_AHRSWidget(); - m_ahrs->setupUi(this); - - collectingData = false; - - // Initialization of the Paper plane widget - m_ahrs->sixPointsHelp->setScene(new QGraphicsScene(this)); - - paperplane = new QGraphicsSvgItem(); - paperplane->setSharedRenderer(new QSvgRenderer()); - paperplane->renderer()->load(QString(":/configgadget/images/paper-plane.svg")); - paperplane->setElementId("plane-horizontal"); - m_ahrs->sixPointsHelp->scene()->addItem(paperplane); - m_ahrs->sixPointsHelp->setSceneRect(paperplane->boundingRect()); - - // Initialization of the AHRS bargraph graph - - m_ahrs->ahrsBargraph->setScene(new QGraphicsScene(this)); - - QSvgRenderer *renderer = new QSvgRenderer(); - ahrsbargraph = new QGraphicsSvgItem(); - renderer->load(QString(":/configgadget/images/ahrs-calib.svg")); - ahrsbargraph->setSharedRenderer(renderer); - ahrsbargraph->setElementId("background"); - ahrsbargraph->setObjectName("background"); - m_ahrs->ahrsBargraph->scene()->addItem(ahrsbargraph); - m_ahrs->ahrsBargraph->setSceneRect(ahrsbargraph->boundingRect()); - - // Initialize the 9 bargraph values: - - QMatrix lineMatrix = renderer->matrixForElement("accel_x"); - QRectF rect = lineMatrix.mapRect(renderer->boundsOnElement("accel_x")); - qreal startX = rect.x(); - qreal startY = rect.y()+ rect.height(); - // maxBarHeight will be used for scaling it later. - maxBarHeight = rect.height(); - // Then once we have the initial location, we can put it - // into a QGraphicsSvgItem which we will display at the same - // place: we do this so that the heading scale can be clipped to - // the compass dial region. - accel_x = new QGraphicsSvgItem(); - accel_x->setSharedRenderer(renderer); - accel_x->setElementId("accel_x"); - m_ahrs->ahrsBargraph->scene()->addItem(accel_x); - accel_x->setPos(startX, startY); - accel_x->setTransform(QTransform::fromScale(1,0),true); - - lineMatrix = renderer->matrixForElement("accel_y"); - rect = lineMatrix.mapRect(renderer->boundsOnElement("accel_y")); - startX = rect.x(); - startY = rect.y()+ rect.height(); - accel_y = new QGraphicsSvgItem(); - accel_y->setSharedRenderer(renderer); - accel_y->setElementId("accel_y"); - m_ahrs->ahrsBargraph->scene()->addItem(accel_y); - accel_y->setPos(startX,startY); - accel_y->setTransform(QTransform::fromScale(1,0),true); - - lineMatrix = renderer->matrixForElement("accel_z"); - rect = lineMatrix.mapRect(renderer->boundsOnElement("accel_z")); - startX = rect.x(); - startY = rect.y()+ rect.height(); - accel_z = new QGraphicsSvgItem(); - accel_z->setSharedRenderer(renderer); - accel_z->setElementId("accel_z"); - m_ahrs->ahrsBargraph->scene()->addItem(accel_z); - accel_z->setPos(startX,startY); - accel_z->setTransform(QTransform::fromScale(1,0),true); - - lineMatrix = renderer->matrixForElement("gyro_x"); - rect = lineMatrix.mapRect(renderer->boundsOnElement("gyro_x")); - startX = rect.x(); - startY = rect.y()+ rect.height(); - gyro_x = new QGraphicsSvgItem(); - gyro_x->setSharedRenderer(renderer); - gyro_x->setElementId("gyro_x"); - m_ahrs->ahrsBargraph->scene()->addItem(gyro_x); - gyro_x->setPos(startX,startY); - gyro_x->setTransform(QTransform::fromScale(1,0),true); - - lineMatrix = renderer->matrixForElement("gyro_y"); - rect = lineMatrix.mapRect(renderer->boundsOnElement("gyro_y")); - startX = rect.x(); - startY = rect.y()+ rect.height(); - gyro_y = new QGraphicsSvgItem(); - gyro_y->setSharedRenderer(renderer); - gyro_y->setElementId("gyro_y"); - m_ahrs->ahrsBargraph->scene()->addItem(gyro_y); - gyro_y->setPos(startX,startY); - gyro_y->setTransform(QTransform::fromScale(1,0),true); - - - lineMatrix = renderer->matrixForElement("gyro_z"); - rect = lineMatrix.mapRect(renderer->boundsOnElement("gyro_z")); - startX = rect.x(); - startY = rect.y()+ rect.height(); - gyro_z = new QGraphicsSvgItem(); - gyro_z->setSharedRenderer(renderer); - gyro_z->setElementId("gyro_z"); - m_ahrs->ahrsBargraph->scene()->addItem(gyro_z); - gyro_z->setPos(startX,startY); - gyro_z->setTransform(QTransform::fromScale(1,0),true); - - lineMatrix = renderer->matrixForElement("mag_x"); - rect = lineMatrix.mapRect(renderer->boundsOnElement("mag_x")); - startX = rect.x(); - startY = rect.y()+ rect.height(); - mag_x = new QGraphicsSvgItem(); - mag_x->setSharedRenderer(renderer); - mag_x->setElementId("mag_x"); - m_ahrs->ahrsBargraph->scene()->addItem(mag_x); - mag_x->setPos(startX,startY); - mag_x->setTransform(QTransform::fromScale(1,0),true); - - lineMatrix = renderer->matrixForElement("mag_y"); - rect = lineMatrix.mapRect(renderer->boundsOnElement("mag_y")); - startX = rect.x(); - startY = rect.y()+ rect.height(); - mag_y = new QGraphicsSvgItem(); - mag_y->setSharedRenderer(renderer); - mag_y->setElementId("mag_y"); - m_ahrs->ahrsBargraph->scene()->addItem(mag_y); - mag_y->setPos(startX,startY); - mag_y->setTransform(QTransform::fromScale(1,0),true); - - lineMatrix = renderer->matrixForElement("mag_z"); - rect = lineMatrix.mapRect(renderer->boundsOnElement("mag_z")); - startX = rect.x(); - startY = rect.y()+ rect.height(); - mag_z = new QGraphicsSvgItem(); - mag_z->setSharedRenderer(renderer); - mag_z->setElementId("mag_z"); - m_ahrs->ahrsBargraph->scene()->addItem(mag_z); - mag_z->setPos(startX,startY); - mag_z->setTransform(QTransform::fromScale(1,0),true); - - position = -1; - - // Fill the dropdown menus: - UAVObject *obj = dynamic_cast(getObjectManager()->getObject(QString("AHRSSettings"))); - UAVObjectField *field = obj->getField(QString("Algorithm")); - m_ahrs->algorithm->addItems(field->getOptions()); - - // Register for Home Location state changes - obj = dynamic_cast(getObjectManager()->getObject(QString("HomeLocation"))); - connect(obj, SIGNAL(objectUpdated(UAVObject*)), this , SLOT(enableHomeLocSave(UAVObject*))); - - // Don't enable multi-point calibration until HomeLocation is set. - m_ahrs->sixPointsStart->setEnabled(obj->getField("Set")->getValue().toBool()); - - // Connect the signals - connect(m_ahrs->ahrsCalibStart, SIGNAL(clicked()), this, SLOT(launchAHRSCalibration())); - connect(m_ahrs->accelBiasStart, SIGNAL(clicked()), this, SLOT(launchAccelBiasCalibration())); - - obj = dynamic_cast(getObjectManager()->getObject(QString("AHRSSettings"))); - connect(obj, SIGNAL(objectUpdated(UAVObject*)), this, SLOT(refreshValues())); - obj = getObjectManager()->getObject(QString("HomeLocation")); - connect(obj, SIGNAL(objectUpdated(UAVObject*)), this, SLOT(refreshValues())); - - connect(m_ahrs->ahrsSettingsSaveRAM, SIGNAL(clicked()), this, SLOT(ahrsSettingsSaveRAM())); - connect(m_ahrs->ahrsSettingsSaveSD, SIGNAL(clicked()), this, SLOT(ahrsSettingsSaveSD())); - connect(m_ahrs->sixPointsStart, SIGNAL(clicked()), this, SLOT(multiPointCalibrationMode())); - connect(m_ahrs->sixPointsSave, SIGNAL(clicked()), this, SLOT(savePositionData())); - connect(m_ahrs->startDriftCalib, SIGNAL(clicked()),this, SLOT(launchGyroDriftCalibration())); - - // Order is important: 1st request the settings (it will also enable the controls) - // then explicitely disable them. They will be re-enabled right afterwards by the - // configgadgetwidget if the autopilot is actually connected. - refreshValues(); - // when the AHRS Widget is instanciated, the autopilot is always connected // enableControls(false); - connect(parent, SIGNAL(autopilotConnected()),this, SLOT(onAutopilotConnect())); - connect(parent, SIGNAL(autopilotDisconnected()), this, SLOT(onAutopilotDisconnect())); - - // Connect the help button - connect(m_ahrs->ahrsHelp, SIGNAL(clicked()), this, SLOT(openHelp())); -} - -ConfigAHRSWidget::~ConfigAHRSWidget() -{ - // Do nothing -} - - -void ConfigAHRSWidget::showEvent(QShowEvent *event) -{ - Q_UNUSED(event) - // Thit fitInView method should only be called now, once the - // widget is shown, otherwise it cannot compute its values and - // the result is usually a ahrsbargraph that is way too small. - m_ahrs->ahrsBargraph->fitInView(ahrsbargraph, Qt::KeepAspectRatio); - m_ahrs->sixPointsHelp->fitInView(paperplane,Qt::KeepAspectRatio); -} - -void ConfigAHRSWidget::resizeEvent(QResizeEvent *event) -{ - Q_UNUSED(event) - m_ahrs->ahrsBargraph->fitInView(ahrsbargraph, Qt::KeepAspectRatio); - m_ahrs->sixPointsHelp->fitInView(paperplane,Qt::KeepAspectRatio); -} - - -void ConfigAHRSWidget::enableControls(bool enable) -{ - //m_ahrs->ahrsSettingsSaveRAM->setEnabled(enable); - m_ahrs->ahrsSettingsSaveSD->setEnabled(enable); -} - -/** - Starts an accelerometer bias calibration. - */ -void ConfigAHRSWidget::launchAccelBiasCalibration() -{ - m_ahrs->accelBiasStart->setEnabled(false); - m_ahrs->accelBiasProgress->setValue(0); - - // Setup the AHRS to give us the right data at the right rate: - UAVDataObject* obj = dynamic_cast(getObjectManager()->getObject(QString("AHRSSettings"))); - UAVObjectField* field = obj->getField(QString("BiasCorrectedRaw")); - field->setValue("FALSE"); - obj->updated(); - - accel_accum_x.clear(); - accel_accum_y.clear(); - accel_accum_z.clear(); - -// UAVDataObject* ahrsCalib = dynamic_cast(getObjectManager()->getObject(QString("AHRSCalibration"))); -// ahrsCalib->getField("accel_bias")->setDouble(0,0); -// ahrsCalib->getField("accel_bias")->setDouble(0,1); -// ahrsCalib->getField("accel_bias")->setDouble(0,2); -// ahrsCalib->updated(); - - /* Need to get as many AttitudeRaw updates as possible */ - obj = dynamic_cast(getObjectManager()->getObject(QString("AttitudeRaw"))); - initialMdata = obj->getMetadata(); - UAVObject::Metadata mdata = initialMdata; - UAVObject::SetFlightTelemetryUpdateMode(mdata, UAVObject::UPDATEMODE_PERIODIC); - mdata.flightTelemetryUpdatePeriod = 100; - obj->setMetadata(mdata); - - // Now connect to the attituderaw updates, gather for 100 samples - collectingData = true; - obj = dynamic_cast(getObjectManager()->getObject(QString("AttitudeRaw"))); - connect(obj, SIGNAL(objectUpdated(UAVObject*)), this, SLOT(accelBiasattitudeRawUpdated(UAVObject*))); - -} - -/** - Updates the accel bias raw values - */ -void ConfigAHRSWidget::accelBiasattitudeRawUpdated(UAVObject *obj) -{ - // TODO: THis one gets replaced with the multipoint calibratino below. - UAVObjectField *accel_field = obj->getField(QString("accels")); - Q_ASSERT(accel_field != 0); - - // This is necessary to prevent a race condition on disconnect signal and another update - if (collectingData == true) { - accel_accum_x.append(accel_field->getValue(0).toDouble()); - accel_accum_y.append(accel_field->getValue(1).toDouble()); - accel_accum_z.append(accel_field->getValue(2).toDouble()); - } - - m_ahrs->accelBiasProgress->setValue(m_ahrs->accelBiasProgress->value()+1); - - if(accel_accum_x.size() >= 100 && collectingData == true) { - collectingData = false; - disconnect(obj,SIGNAL(objectUpdated(UAVObject*)),this,SLOT(accelBiasattitudeRawUpdated(UAVObject*))); - m_ahrs->accelBiasStart->setEnabled(true); - - UAVDataObject* ahrsCalib = dynamic_cast(getObjectManager()->getObject(QString("AHRSCalibration"))); - UAVObjectField* field = ahrsCalib->getField("accel_bias"); - double xBias = field->getDouble(0)- listMean(accel_accum_x); - double yBias = field->getDouble(1) - listMean(accel_accum_y); - double zBias = -9.81 + field->getDouble(2) - listMean(accel_accum_z); - - field->setDouble(xBias,0); - field->setDouble(yBias,1); - field->setDouble(zBias,2); - - ahrsCalib->updated(); - - getObjectManager()->getObject(QString("AttitudeRaw"))->setMetadata(initialMdata); - - UAVDataObject* obj = dynamic_cast(getObjectManager()->getObject(QString("AHRSSettings"))); - field = obj->getField(QString("BiasCorrectedRaw")); - field->setValue("TRUE"); - obj->updated(); - - saveAHRSCalibration(); - - } - -} - - -/** - Starts a Gyro temperature drift calibration. - */ -void ConfigAHRSWidget::launchGyroDriftCalibration() -{ - if (!collectingData) { - // m_ahrs->startDriftCalib->setEnabled(false); - m_ahrs->startDriftCalib->setText("Stop"); - m_ahrs->accelBiasStart->setEnabled(false); - m_ahrs->ahrsCalibStart->setEnabled(false); - m_ahrs->sixPointsStart->setEnabled(false); - - // Setup the AHRS to give us the right data at the right rate: - UAVDataObject* obj = dynamic_cast(getObjectManager()->getObject(QString("AHRSSettings"))); - UAVObjectField* field = obj->getField(QString("BiasCorrectedRaw")); - field->setValue("FALSE"); - obj->updated(); - - /* Need to get as many AttitudeRaw updates as possible */ - obj = dynamic_cast(getObjectManager()->getObject(QString("AttitudeRaw"))); - initialMdata = obj->getMetadata(); - UAVObject::Metadata mdata = initialMdata; - UAVObject::SetFlightTelemetryUpdateMode(mdata, UAVObject::UPDATEMODE_PERIODIC); - mdata.flightTelemetryUpdatePeriod = 100; - obj->setMetadata(mdata); - - // Now connect to the attituderaw updates until we stop - collectingData = true; - obj = dynamic_cast(getObjectManager()->getObject(QString("BaroAltitude"))); - field = obj->getField(QString("Temperature")); - double temp = field->getValue().toDouble(); - m_ahrs->gyroTempSlider->setRange(temp*10,temp*10); - m_ahrs->gyroMaxTemp->setText(QString::number(temp,'g',3)); - m_ahrs->gyroMinTemp->setText(QString::number(temp,'g',3)); - - connect(obj, SIGNAL(objectUpdated(UAVObject*)), this, SLOT(driftCalibrationAttitudeRawUpdated(UAVObject*))); - } else { - // Stop all the gathering: - collectingData = false; - m_ahrs->startDriftCalib->setText("Start"); - m_ahrs->accelBiasStart->setEnabled(true); - m_ahrs->ahrsCalibStart->setEnabled(true); - m_ahrs->sixPointsStart->setEnabled(true); - - UAVDataObject* obj = dynamic_cast(getObjectManager()->getObject(QString("AttitudeRaw"))); - disconnect(obj,SIGNAL(objectUpdated(UAVObject*)),this,SLOT(driftCalibrationAttitudeRawUpdated(UAVObject*))); - - getObjectManager()->getObject(QString("AttitudeRaw"))->setMetadata(initialMdata); - - obj = dynamic_cast(getObjectManager()->getObject(QString("AHRSSettings"))); - UAVObjectField* field = obj->getField(QString("BiasCorrectedRaw")); - field->setValue("TRUE"); - obj->updated(); - - // TODO: Now compute the drift here - computeGyroDrift(); - - } -} - -/** - Updates the gyro drift calibration values in real time - */ -void ConfigAHRSWidget::driftCalibrationAttitudeRawUpdated(UAVObject* obj) { - - Q_UNUSED(obj) - // This is necessary to prevent a race condition on disconnect signal and another update - if (collectingData == true) { - /** - First of all, update the temperature user feedback - This is not what we will use for our calculations, but it it easier for the - user to have the real temperature rather than an obscure unit... - */ - UAVDataObject* obj = dynamic_cast(getObjectManager()->getObject(QString("BaroAltitude"))); - UAVObjectField *tempField = obj->getField(QString("Temperature")); - Q_ASSERT(tempField != 0); - double mbTemp = tempField->getValue().toDouble(); - if (mbTemp*10 < m_ahrs->gyroTempSlider->minimum()) { - m_ahrs->gyroTempSlider->setMinimum(mbTemp*10); - m_ahrs->gyroMinTemp->setText(QString::number(mbTemp,'g',3)); - } else if (mbTemp*10 > m_ahrs->gyroTempSlider->maximum()) { - m_ahrs->gyroTempSlider->setMaximum(mbTemp*10); - m_ahrs->gyroMaxTemp->setText(QString::number(mbTemp,'g',3)); - } - m_ahrs->gyroTempSlider->setValue(mbTemp*10); - // TODO: - // - Add an indicator to show that we have a significant - // temperature difference in our gathered data (red/yellow/green) - - /** - Now, append gyro values + gyro temp data into our buffers - */ - // TODO: - // - choose a storage type for this data - // - Check it's not getting too big - // - do the actual appending - // - That's it, really... - - - } -} - -/** - Computes gyro drift based on sampled data - */ -void ConfigAHRSWidget::computeGyroDrift() { - // TODO - - // TODO: if this is not too computing-intensive, we could consider - // calling this with a timer when data sampling is enabled, to get - // a real-time view of the computed drift convergence and let the - // user stop sampling when it becomes stable enough... - // - // Hint for whoever wants to implement that: - // The formula I use for computing the temperature compensation factor from - // two nicely filtered (downsampled) sample points is as follows: - // - // gyro_tempcompfactor == -(raw_gyro1 - raw_gyro2)/(gyro_temp1 - gyro_temp2) - // - // where raw_gyro1 and raw_gyro2 are gyroscope raw measurement values and - // gyro_temp1 and gyro_temp2 are the measurements from the gyroscope internal - // temperature sensors, each at two measure points T1 and T2 - // note that the X and Y gyroscopes share one temperature sensor while - // Z has its own. - // - // the formula that calculates the AttitudeRav.gyros[X,Y,Z] values is - // currently as follows: - // - // gyro = 180/Pi * ( ( ( raw_gyro + raw_gyro * gyro_tempcompfactor ) * gyro_scale) + gyro_bias ) - // - // so to get gyro_raw do the following: - // 1. set AHRSSettings.BiasCorrectedRaw to FALSE before measuring! (already done right now) - // 2. set AHRSCalibration.gyro_tempcompfactor to 0 before measuring! - // 3. gyro_raw = ( ( gyro * Pi / 180 ) - gyro_bias ) / gyro_scale - // - // a nice trick is to set gyro_bias to 0 and gyro_scale to (Pi / 180) in which case gyro = raw_gyro - // note that Pi/180 is very close to the "real" scale of the AHRS gyros anyway (though with switched signs) - -} - - - - -/** - Launches the AHRS sensors calibration - */ -void ConfigAHRSWidget::launchAHRSCalibration() -{ - m_ahrs->calibInstructions->setText("Estimating sensor variance..."); - m_ahrs->ahrsCalibStart->setEnabled(false); - - UAVObject *obj = dynamic_cast(getObjectManager()->getObject(QString("AHRSCalibration"))); - UAVObjectField *field = obj->getField(QString("measure_var")); - field->setValue("MEASURE"); - obj->updated(); - - QTimer::singleShot(calibrationDelay*1000, this, SLOT(calibPhase2())); - m_ahrs->calibProgress->setRange(0,calibrationDelay); - phaseCounter = 0; - progressBarIndex = 0; - connect(&progressBarTimer, SIGNAL(timeout()), this, SLOT(incrementProgress())); - progressBarTimer.start(1000); -} - -/** - Increment progress bar - */ -void ConfigAHRSWidget::incrementProgress() -{ - m_ahrs->calibProgress->setValue(progressBarIndex++); - if (progressBarIndex > m_ahrs->calibProgress->maximum()) { - progressBarTimer.stop(); - progressBarIndex = 0; - } -} - - -/** - Callback once calibration is done on the board. - - Currently we don't have a way to tell if calibration is finished, so we - have to use a timer. - - calibPhase2 is also connected to the AHRSCalibration object update signal. - - - */ -void ConfigAHRSWidget::calibPhase2() -{ - - UAVObject *obj = dynamic_cast(getObjectManager()->getObject(QString("AHRSCalibration"))); -// UAVObjectField *field = obj->getField(QString("measure_var")); - - // This is a bit weird, but it is because we are expecting an update from the - // OP board with the correct calibration values, and those only arrive on the object update - // which comes back from the board, and not the first object update signal which is in fast - // the object update we did ourselves... Clear ? - switch (phaseCounter) { - case 0: - phaseCounter++; - m_ahrs->calibInstructions->setText("Getting results..."); - connect(obj, SIGNAL(objectUpdated(UAVObject*)), this, SLOT(calibPhase2())); - // We need to echo back the results of calibration before changing to set mode - obj->requestUpdate(); - break; - case 1: // This is the update with the right values (coming from the board) - disconnect(obj, SIGNAL(objectUpdated(UAVObject*)), this, SLOT(calibPhase2())); - // Now update size of all the graphs - drawVariancesGraph(); - saveAHRSCalibration(); - m_ahrs->calibInstructions->setText(QString("Calibration saved.")); - m_ahrs->ahrsCalibStart->setEnabled(true); - break; - } -} - -/** - Saves the AHRS sensors calibration (to RAM and SD) - */ -void ConfigAHRSWidget::saveAHRSCalibration() -{ - UAVObject *obj = dynamic_cast(getObjectManager()->getObject(QString("AHRSCalibration"))); - UAVObjectField *field = obj->getField(QString("measure_var")); - field->setValue("SET"); - obj->updated(); - saveObjectToSD(obj); -} - -FORCE_ALIGN_FUNC -void ConfigAHRSWidget::attitudeRawUpdated(UAVObject * obj) -{ - QMutexLocker lock(&attitudeRawUpdateLock); - - UAVObjectField *accel_field = obj->getField(QString("accels")); - UAVObjectField *gyro_field = obj->getField(QString("gyros")); - UAVObjectField *mag_field = obj->getField(QString("magnetometers")); - - Q_ASSERT(gyro_field != 0 && accel_field != 0 && mag_field != 0); - - // This is necessary to prevent a race condition on disconnect signal and another update - if (collectingData == true) { - accel_accum_x.append(accel_field->getValue(0).toDouble()); - accel_accum_y.append(accel_field->getValue(1).toDouble()); - accel_accum_z.append(accel_field->getValue(2).toDouble()); - // Note gyros actually (-y,-x,-z) but since we consistent here no prob - mag_accum_x.append(mag_field->getValue(0).toDouble()); - mag_accum_y.append(mag_field->getValue(1).toDouble()); - mag_accum_z.append(mag_field->getValue(2).toDouble()); - - gyro_accum_x.append(gyro_field->getValue(0).toDouble()); - gyro_accum_y.append(gyro_field->getValue(1).toDouble()); - gyro_accum_z.append(gyro_field->getValue(2).toDouble()); - } - - if(accel_accum_x.size() >= 8 && collectingData == true) { - collectingData = false; - disconnect(obj,SIGNAL(objectUpdated(UAVObject*)),this,SLOT(attitudeRawUpdated(UAVObject*))); - m_ahrs->sixPointsSave->setEnabled(true); - - accel_data[position] << listMean(accel_accum_x), - listMean(accel_accum_y), - listMean(accel_accum_z); - - mag_data[position] << listMean(mag_accum_x), - listMean(mag_accum_y), - listMean(mag_accum_z); - - gyro_data[position] << listMean(gyro_accum_x), - listMean(gyro_accum_y), - listMean(gyro_accum_z); - - - std::cout << "observed accel: " << accel_data[position].transpose() - << "\nobserved mag: " << mag_data[position].transpose() - << "\nobserved gyro: " << gyro_data[position].transpose() - << std::endl; - - struct { - const char* instructions; - const char* display; - } instructions[] = { - { "Pitch up 45 deg and click save position...", "plane-horizontal" }, - { "Pitch down 45 deg and click save position...", "plane-horizontal" }, - { "Roll left 45 deg and click save position...", "plane-left" }, - { "Roll right 45 deg and click save position...", "plane-left" }, - - { "Turn left 90 deg to 09:00 position and click save position...", "plane-horizontal" }, - { "Pitch up 45 deg and click save position...", "plane-horizontal" }, - { "Pitch down 45 deg and click save position...", "plane-horizontal" }, - { "Roll left 45 deg and click save position...", "plane-left" }, - { "Roll right 45 deg and click save position...", "plane-left" }, - - { "Turn left 90 deg to 06:00 position and click save position...", "plane-horizontal" }, - { "Pitch up 45 deg and click save position...", "plane-horizontal" }, - { "Pitch down 45 deg and click save position...", "plane-horizontal" }, - { "Roll left 45 deg and click save position...", "plane-left" }, - { "Roll right 45 deg and click save position...", "plane-left" }, - - { "Turn left 90 deg to 03:00 position and click save position...", "plane-horizontal" }, - { "Pitch up 45 deg and click save position...", "plane-horizontal" }, - { "Pitch down 45 deg and click save position...", "plane-horizontal" }, - { "Roll left 45 deg and click save position...", "plane-left" }, - { "Roll right 45 deg and click save position...", "plane-left" }, - - { "Place with nose vertically up and click save position...", "plane-up" }, - { "Place with nose straight down and click save position...", "plane-down" }, - { "Place upside down and click save position...", "plane-flip" }, - }; - - n_positions = sizeof(instructions) / sizeof(instructions[0]); - position = (position + 1) % n_positions; - - if (position != 0 && position < n_positions) { - - m_ahrs->sixPointCalibInstructions->append(instructions[position-1].instructions); - displayPlane(instructions[position-1].display); - } - else if(position == 0) { - position = n_positions; - computeScaleBias(); - m_ahrs->sixPointsStart->setEnabled(true); - m_ahrs->sixPointsSave->setEnabled(false); - saveAHRSCalibration(); // Saves the result to SD. - - /* Cleanup original settings */ - getObjectManager()->getObject(QString("AttitudeRaw"))->setMetadata(initialMdata); - } - } -} - -/** - * Saves the data from the aircraft in one of six positions - */ -void ConfigAHRSWidget::savePositionData() -{ - QMutexLocker lock(&attitudeRawUpdateLock); - m_ahrs->sixPointsSave->setEnabled(false); - - accel_accum_x.clear(); - accel_accum_y.clear(); - accel_accum_z.clear(); - mag_accum_x.clear(); - mag_accum_y.clear(); - mag_accum_z.clear(); - gyro_accum_x.clear(); - gyro_accum_y.clear(); - gyro_accum_z.clear(); - - collectingData = true; - UAVObject *obj = dynamic_cast(getObjectManager()->getObject(QString("AttitudeRaw"))); - connect(obj, SIGNAL(objectUpdated(UAVObject*)), this, SLOT(attitudeRawUpdated(UAVObject*))); - - m_ahrs->sixPointCalibInstructions->append("Hold..."); -} - -//***************************************************************** -namespace { - -/* - * Calibrated scale factors should be real values with scale factor less than 10% from nominal - */ -bool checkScaleFactors(const Vector3f& scalars) -{ - return isReal(scalars) && - scalars.cwise().abs().maxCoeff() < 1.10f; -} - -/* - * Calibrated offsets should be real values. TODO: Add range checks - */ -bool checkOffsets(const Vector3f& offsets) -{ - return isReal(offsets); -} - -/** - * Given a UAVObjectField that is a 3-tuple, produce an Eigen::Vector3f - * from it. - */ -Vector3f -tupleToVector(UAVObjectField *tuple) -{ - return (Vector3f() << tuple->getDouble(0), - tuple->getDouble(1), - tuple->getDouble(2)).finished(); -} - -/** - * Convert a 3-vector to a 3-tuple - * @param v A 3-vector - * @param tuple[in] Assign the elements of this three-tuple to the elements of v - */ -void -vectorToTuple(UAVObjectField *tuple, const Vector3f& v) -{ - for (int i = 0; i < 3; ++i) { - tuple->setDouble(v(i), i); - } -} - -/** - * Updates the offsets for a calibrated gyro field. - * @param scale[in] Non-null pointer to a 3-element scale factor field. - * @param bias[out] Non-null pointer to a 3-element bias field. - * @param updateBias the source bias matrix. - */ -void -updateBias(UAVObjectField *scale, - UAVObjectField *bias , - const Vector3f& updateBias) -{ - Vector3f scale_factor = (Vector3f() << scale->getDouble(0), - scale->getDouble(1), - scale->getDouble(2)).finished(); - Vector3f old_bias = (Vector3f() << bias->getDouble(0), - bias->getDouble(1), - bias->getDouble(2)).finished(); - - // Convert to radians/second - Vector3f final_bias = -(M_PI)/180.0f * updateBias + old_bias; - - bias->setDouble(final_bias(0), 0); - bias->setDouble(final_bias(1), 1); - bias->setDouble(final_bias(2), 2); -} - -void -updateRotation(UAVObjectField *rotation, const Vector3f& updateRotation) -{ - for (int i = 0; i < 3; ++i) { - rotation->setDouble(updateRotation[i], i); - } -} - -} // !namespace (anon) - - -/** - * Updates the scale factors and offsets for a calibrated vector field. - * @param scale[out] Non-null pointer to a 3-element scale factor field. - * @param bias[out] Non-null pointer to a 3-element bias field. - * @param ortho[out] Optional pointer to a 3-element orthogonal correction field - * @param updateScale the source scale factor matrix. - * @param updateBias the source bias matrix. - * @param oldScale The original sensor scale factor - * @param oldBias The original bias value - * @param oldOrtho Optional. The original orthogonality scale factor value. - * @return true if successful, false otherwise. - */ -bool -ConfigAHRSWidget::updateScaleFactors(UAVObjectField *scale, - UAVObjectField *bias , - UAVObjectField *ortho, - const Matrix3f& updateScale, - const Vector3f& updateBias, - const Vector3f& oldScale, - const Vector3f& oldBias, - const Vector3f& oldOrtho) -{ - // Compose a 4x4 affine transformation matrix composed of the scale factor, - // orthogonality correction, and bias. - Matrix4f calibration; - calibration << tupleToVector(scale).asDiagonal(), - tupleToVector(bias), - Vector4f::UnitW().transpose(); - - if (ortho) { - Vector3f orthof = tupleToVector(ortho); - calibration(1, 0) = calibration(0, 1) = orthof(0); - calibration(2, 0) = calibration(0, 2) = orthof(1); - calibration(1, 2) = calibration(2, 1) = orthof(2); - } - - std::cout << "old calibration matrix: \n" << calibration << "\n"; - - Matrix4f update; - update << updateScale, updateBias, Vector4f::UnitW().transpose(); - std::cout << "new calibration matrix update: \n" << update << "\n"; - - calibration = update * calibration; - - if (checkOffsets(updateBias) && checkScaleFactors(updateScale.diagonal())) { - // Apply the new calibration - vectorToTuple(scale, calibration.diagonal().start<3>()); - vectorToTuple(bias, calibration.col(3).start<3>()); - - if (ortho) { - ortho->setDouble(calibration(0, 1), 0); - ortho->setDouble(calibration(0, 2), 1); - ortho->setDouble(calibration(1, 2), 2); - } - return true; - } - else { - // Give the user the calibration data and restore their settings. - std::ostringstream msg; - msg << "Scale factors and/or offsets are out of range.\n"; - msg << "Please see the troubleshooting section of the manual and retry.\n\n" - "The following values were computed:\n"; - msg << qPrintable(scale->getName()) << ": " - << calibration.diagonal().start<3>().transpose() << "\n"; - vectorToTuple(scale, oldScale); - - if (ortho) { - msg << qPrintable(ortho->getName()) << ": " - << calibration(0,1) << ", " << calibration(0,2) << ", " << calibration(1,2) << "\n"; - vectorToTuple(ortho, oldOrtho); - } - - msg << qPrintable(bias->getName()) << ": " - << calibration.col(3).start<3>().transpose() << "\n"; - vectorToTuple(bias, oldBias); - - m_ahrs->sixPointCalibInstructions->append(msg.str().c_str()); - return false; - } -} - -FORCE_ALIGN_FUNC -void ConfigAHRSWidget::computeScaleBias() -{ - // Extract the local magnetic and gravitational field vectors from HomeLocation. - UAVObject *home = dynamic_cast(getObjectManager()->getObject(QString("HomeLocation"))); - Vector3f localMagField; - localMagField << home->getField("Be")->getValue(0).toDouble(), - home->getField("Be")->getValue(1).toDouble(), - home->getField("Be")->getValue(2).toDouble(); - - float localGravity = home->getField("g_e")->getDouble(); - - Vector3f referenceField = Vector3f::UnitZ()*localGravity; - double noise = 0.04; - Vector3f accelBias; - Matrix3f accelScale; - std::cout << "number of samples: " << n_positions << "\n"; - twostep_bias_scale(accelBias, accelScale, accel_data, n_positions, referenceField, noise*noise); - // Twostep computes an offset from the identity scalar, and a negative bias offset - accelScale += Matrix3f::Identity(); - accelBias = -accelBias; - std::cout << "computed accel bias: " << accelBias.transpose() - << "\ncomputed accel scale:\n" << accelScale<< std::endl; - - // Apply the computed scale factor and bias to each sample - for (int i = 0; i < n_positions; ++i) { - accel_data[i] = accelScale * accel_data[i] + accelBias; - } - - // Magnetometer has excellent orthogonality, so only calibrate the scale factors. - Vector3f magBias; - Vector3f magScale; - noise = 4.0; - twostep_bias_scale(magBias, magScale, mag_data, n_positions, localMagField, noise*noise); - magScale += Vector3f::Ones(); - magBias = -magBias; - std::cout << "computed mag bias: " << magBias.transpose() - << "\ncomputed mag scale:\n" << magScale << std::endl; - - // Apply the computed scale factor and bias to each sample - for (int i = 0; i < n_positions; ++i) { - mag_data[i] = magScale.asDiagonal() * mag_data[i] + magBias; - } - - // Calibrate gyro bias and acceleration sensitivity - Matrix3f accelSensitivity; - Vector3f gyroBias; - gyroscope_calibration(gyroBias, accelSensitivity, gyro_data, accel_data, n_positions); - std::cout << "gyro bias: " << gyroBias.transpose() - << "\ngyro's acceleration sensitivity:\n" << accelSensitivity << std::endl; - - // Calibrate alignment between the accelerometer and magnetometer, taking the mag as the - // reference. - Vector3f accelRotation; - calibration_misalignment(accelRotation, accel_data, -Vector3f::UnitZ()*localGravity, - mag_data, localMagField, n_positions); - std::cout << "magnetometer rotation vector: " << accelRotation.transpose() << std::endl; - - // Update the calibration scalars with a clear message box - m_ahrs->sixPointCalibInstructions->clear(); - UAVObject *obj = dynamic_cast(getObjectManager()->getObject(QString("AHRSCalibration"))); - - - bool success = updateScaleFactors(obj->getField(QString("accel_scale")), - obj->getField(QString("accel_bias")), - obj->getField(QString("accel_ortho")), - accelScale, - accelBias, - saved_accel_scale, - saved_accel_bias, - saved_accel_ortho); - - success &= updateScaleFactors(obj->getField(QString("mag_scale")), - obj->getField(QString("mag_bias")), - NULL, - magScale.asDiagonal(), - magBias, - saved_mag_scale, - saved_mag_bias); - - updateBias(obj->getField(QString("gyro_scale")), - obj->getField(QString("gyro_bias")), - gyroBias); - -#if 0 - // TODO: Enable after v1.0 feature freeze is lifted. - updateRotation(obj->getField(QString("accel_rotation")), accelRotation); -#endif - - obj->updated(); - - position = -1; //set to run again - if (success) - m_ahrs->sixPointCalibInstructions->append("Computed new accel and mag scale and bias."); - -} - -/** - Multi-point calibration mode - */ -FORCE_ALIGN_FUNC -void ConfigAHRSWidget::multiPointCalibrationMode() -{ - cacheCurrentCalibration(); - resetCalibrationDefaults(); - - UAVObject* obj = dynamic_cast(getObjectManager()->getObject(QString("AHRSSettings"))); - UAVObjectField *field = obj->getField(QString("BiasCorrectedRaw")); - field->setValue("FALSE"); - obj->updated(); - - - Thread::usleep(100000); - - gyro_accum_x.clear(); - gyro_accum_y.clear(); - gyro_accum_z.clear(); - - /* Need to get as many AttitudeRaw updates as possible */ - obj = getObjectManager()->getObject(QString("AttitudeRaw")); - initialMdata = obj->getMetadata(); - UAVObject::Metadata mdata = initialMdata; - UAVObject::SetFlightTelemetryUpdateMode(mdata, UAVObject::UPDATEMODE_PERIODIC); - mdata.flightTelemetryUpdatePeriod = 100; - obj->setMetadata(mdata); - - /* Show instructions and enable controls */ - m_ahrs->sixPointCalibInstructions->clear(); - m_ahrs->sixPointCalibInstructions->append("Stand facing Earth's magnetic N or S. Place the vehicle horizontally facing forward and click save position..."); - displayPlane("plane-horizontal"); - m_ahrs->sixPointsStart->setEnabled(false); - m_ahrs->sixPointsSave->setEnabled(true); - position = 0; - -} - -/** - * Read the current calibration scalars and offsets from the target board, and - * save them for later use. In the event of a calibration failure, if the - * calibration method began by resetting calibration values, they may be - * restored later with this information. - */ -void ConfigAHRSWidget::cacheCurrentCalibration() -{ - UAVObject *obj = dynamic_cast(getObjectManager()->getObject(QString("AHRSCalibration"))); - struct field_t { - const char* field_name; - Vector3f& cache; - } fields[] = { - { "accel_scale", this->saved_accel_scale }, - { "accel_bias", this->saved_accel_bias }, - { "accel_ortho", this->saved_accel_ortho }, -// TODO: Enable after V1.0 feature freeze is lifted. -// { "accel_rotation", this->saved_accel_rotation }, - { "gyro_bias", this->saved_gyro_bias }, - { "mag_scale", this->saved_mag_scale }, - { "mag_bias", this->saved_mag_bias }, - { NULL, this->saved_mag_bias }, // sentinnel - }; - for (field_t* i = fields; i->field_name != NULL; ++i) { - UAVObjectField* field = obj->getField(QString(i->field_name)); - if (field) { - i->cache = tupleToVector(field); - } - else { - qDebug() << "WARNING: AHRSCalibration field not found: " << i->field_name << "\n"; - } - } -} - -/** - * Reset all calibration scalars to their default values. - */ -void ConfigAHRSWidget::resetCalibrationDefaults() -{ - UAVObject *obj = dynamic_cast(getObjectManager()->getObject(QString("AHRSCalibration"))); - - // set accels to unity gain - UAVObjectField *field = obj->getField(QString("accel_scale")); - // TODO: Figure out how to load these directly from the saved metadata - // about default values - field->setDouble(0.0359, 0); - field->setDouble(0.0359, 1); - field->setDouble(0.0359, 2); - - field = obj->getField(QString("accel_bias")); - field->setDouble(-73.5, 0); - field->setDouble(-73.5, 1); - field->setDouble(73.5, 2); - - field = obj->getField(QString("accel_ortho")); - for (int i = 0; i < 3; ++i) { - field->setDouble(0, i); - } - - field = obj->getField(QString("gyro_bias")); - UAVObjectField *field2 = obj->getField(QString("gyro_scale")); - field->setDouble(28/-0.017*field2->getDouble(0),0); - field->setDouble(-28/0.017*field2->getDouble(1),1); - field->setDouble(28/-0.017*field2->getDouble(2),2); - - field = obj->getField(QString("mag_scale")); - for (int i = 0; i < 3; ++i) { - field->setDouble(-1, i); - } - - field = obj->getField(QString("mag_bias")); - for (int i = 0; i < 3; ++i) { - field->setDouble(0, i); - } - -#if 0 - // TODO: Enable after v1.0 feature freeze is lifted. - field = obj->getField(QString("accel_rotation")); - for (int i = 0; i < 3; ++i) { - field->setDouble(0, i); - } -#endif - obj->updated(); -} - -/** - Rotate the paper plane - */ -void ConfigAHRSWidget::displayPlane(QString elementID) -{ - paperplane->setElementId(elementID); - m_ahrs->sixPointsHelp->setSceneRect(paperplane->boundingRect()); - m_ahrs->sixPointsHelp->fitInView(paperplane,Qt::KeepAspectRatio); - -} - - -/** - Draws the sensor variances bargraph - */ -void ConfigAHRSWidget::drawVariancesGraph() -{ - UAVObject *obj = dynamic_cast(getObjectManager()->getObject(QString("AHRSCalibration"))); - // Now update size of all the graphs - // I have not found a way to do this elegantly... - UAVObjectField *field = obj->getField(QString("accel_var")); - // The expected range is from 1E-6 to 1E-1 - double steps = 6; // 6 bars on the graph - float accel_x_var = -1/steps*(1+steps+log10(field->getValue(0).toFloat())); - accel_x->setTransform(QTransform::fromScale(1,accel_x_var),false); - float accel_y_var = -1/steps*(1+steps+log10(field->getValue(1).toFloat())); - accel_y->setTransform(QTransform::fromScale(1,accel_y_var),false); - float accel_z_var = -1/steps*(1+steps+log10(field->getValue(2).toFloat())); - accel_z->setTransform(QTransform::fromScale(1,accel_z_var),false); - - field = obj->getField(QString("gyro_var")); - float gyro_x_var = -1/steps*(1+steps+log10(field->getValue(0).toFloat())); - gyro_x->setTransform(QTransform::fromScale(1,gyro_x_var),false); - float gyro_y_var = -1/steps*(1+steps+log10(field->getValue(1).toFloat())); - gyro_y->setTransform(QTransform::fromScale(1,gyro_y_var),false); - float gyro_z_var = -1/steps*(1+steps+log10(field->getValue(2).toFloat())); - gyro_z->setTransform(QTransform::fromScale(1,gyro_z_var),false); - - // Scale by 1e-3 because mag vars are much higher. - // TODO: Really? This is the scale factor from mG to T - field = obj->getField(QString("mag_var")); - float mag_x_var = -1/steps*(1+steps+log10(1e-3*field->getValue(0).toFloat())); - mag_x->setTransform(QTransform::fromScale(1,mag_x_var),false); - float mag_y_var = -1/steps*(1+steps+log10(1e-3*field->getValue(1).toFloat())); - mag_y->setTransform(QTransform::fromScale(1,mag_y_var),false); - float mag_z_var = -1/steps*(1+steps+log10(1e-3*field->getValue(2).toFloat())); - mag_z->setTransform(QTransform::fromScale(1,mag_z_var),false); - -} - -/** - Request current settings from the AHRS - */ -void ConfigAHRSWidget::refreshValues() -{ - - UAVObject *obj = getObjectManager()->getObject(QString("AHRSSettings")); - UAVObjectField *field = obj->getField(QString("Algorithm")); - if (field) - m_ahrs->algorithm->setCurrentIndex(m_ahrs->algorithm->findText(field->getValue().toString())); - drawVariancesGraph(); - - obj = getObjectManager()->getObject(QString("HomeLocation")); - field = obj->getField(QString("Set")); - if (field) - m_ahrs->homeLocationSet->setEnabled(field->getValue().toBool()); - - m_ahrs->ahrsCalibStart->setEnabled(true); - m_ahrs->sixPointsStart->setEnabled(true); - m_ahrs->accelBiasStart->setEnabled(true); - m_ahrs->startDriftCalib->setEnabled(true); - - m_ahrs->calibInstructions->setText(QString("Press \"Start\" above to calibrate.")); - -} - -/** - Enables/disables the Home Location saving button depending on whether the - home location is set-able - */ -void ConfigAHRSWidget::enableHomeLocSave(UAVObject * obj) -{ - UAVObjectField *field = obj->getField(QString("Set")); - if (field) { - m_ahrs->homeLocationSet->setEnabled(field->getValue().toBool()); - m_ahrs->sixPointsStart->setEnabled(obj->getField("Set")->getValue().toBool()); - } -} - - -/** - Save current settings to RAM - */ -void ConfigAHRSWidget::ahrsSettingsSaveRAM() -{ - UAVDataObject *obj = dynamic_cast(getObjectManager()->getObject(QString("AHRSSettings"))); - UAVObjectField *field = obj->getField(QString("Algorithm")); - field->setValue(m_ahrs->algorithm->currentText()); - obj->updated(); - obj = dynamic_cast(getObjectManager()->getObject(QString("HomeLocation"))); - field = obj->getField(QString("Set")); - if (m_ahrs->homeLocationSet->isChecked()) - field->setValue(QString("TRUE")); - else - field->setValue(QString("FALSE")); - obj->updated(); - -} - -/** -Save AHRS Settings and home location to SD - */ -void ConfigAHRSWidget::ahrsSettingsSaveSD() -{ - ahrsSettingsSaveRAM(); - UAVDataObject *obj = dynamic_cast(getObjectManager()->getObject(QString("HomeLocation"))); - saveObjectToSD(obj); - obj = dynamic_cast(getObjectManager()->getObject(QString("AHRSSettings"))); - saveObjectToSD(obj); - -} - -void ConfigAHRSWidget::openHelp() -{ - - QDesktopServices::openUrl( QUrl("http://wiki.openpilot.org/display/Doc/INS+Configuration", QUrl::StrictMode) ); -} - -/** - @} - @} - */ diff --git a/ground/openpilotgcs/src/plugins/config/configahrswidget.h b/ground/openpilotgcs/src/plugins/config/configahrswidget.h deleted file mode 100644 index 645c63198..000000000 --- a/ground/openpilotgcs/src/plugins/config/configahrswidget.h +++ /dev/null @@ -1,156 +0,0 @@ -/** - ****************************************************************************** - * - * @file configahrstwidget.h - * @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010. - * @addtogroup GCSPlugins GCS Plugins - * @{ - * @addtogroup ConfigPlugin Config Plugin - * @{ - * @brief Telemetry configuration panel - *****************************************************************************/ -/* - * 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 - */ -#ifndef CONFIGAHRSWIDGET_H -#define CONFIGAHRSWIDGET_H - -#include - -#include "ui_ahrs.h" -#include "../uavobjectwidgetutils/configtaskwidget.h" -#include "extensionsystem/pluginmanager.h" -#include "uavobjectmanager.h" -#include "uavobject.h" -#include -#include -#include -#include -#include -#include - -#include - -class ConfigAHRSWidget: public ConfigTaskWidget -{ - Q_OBJECT - -public: - ConfigAHRSWidget(QWidget *parent = 0); - ~ConfigAHRSWidget(); - EIGEN_MAKE_ALIGNED_OPERATOR_NEW - -private: - void drawVariancesGraph(); - void displayPlane(QString elementID); - virtual void enableControls(bool enable); - - Ui_AHRSWidget *m_ahrs; - QGraphicsSvgItem *paperplane; - QGraphicsSvgItem *ahrsbargraph; - QGraphicsSvgItem *accel_x; - QGraphicsSvgItem *accel_y; - QGraphicsSvgItem *accel_z; - QGraphicsSvgItem *gyro_x; - QGraphicsSvgItem *gyro_y; - QGraphicsSvgItem *gyro_z; - QGraphicsSvgItem *mag_x; - QGraphicsSvgItem *mag_y; - QGraphicsSvgItem *mag_z; - QMutex attitudeRawUpdateLock; - double maxBarHeight; - int phaseCounter; - int progressBarIndex; - QTimer progressBarTimer; - const static double maxVarValue; - const static int calibrationDelay; - - bool collectingData; - - QList gyro_accum_x; - QList gyro_accum_y; - QList gyro_accum_z; - QList accel_accum_x; - QList accel_accum_y; - QList accel_accum_z; - QList mag_accum_x; - QList mag_accum_y; - QList mag_accum_z; - - // TODO: Store these in std::vectors - Eigen::Vector3f gyro_data[60]; - Eigen::Vector3f accel_data[60]; - Eigen::Vector3f mag_data[60]; - int position; - int n_positions; - - UAVObject::Metadata initialMdata; - - void computeGyroDrift(); - - - // Saved parameters for calibration. In the event of a calibration failure, - // the old parameters will be restored. - Eigen::Vector3f saved_gyro_bias; - - Eigen::Vector3f saved_accel_bias; - Eigen::Vector3f saved_accel_scale; - Eigen::Vector3f saved_accel_ortho; - Eigen::Vector3f saved_accel_rotation; - - Eigen::Vector3f saved_mag_scale; - Eigen::Vector3f saved_mag_bias; - - bool - updateScaleFactors(UAVObjectField *scale, - UAVObjectField *bias , - UAVObjectField *ortho, - const Eigen::Matrix3f& updateScale, - const Eigen::Vector3f& updateBias, - const Eigen::Vector3f& oldScale, - const Eigen::Vector3f& oldBias, - const Eigen::Vector3f& oldOrtho = Eigen::Vector3f::Zero()); - -private slots: - void enableHomeLocSave(UAVObject *obj); - void launchAHRSCalibration(); - void saveAHRSCalibration(); - void openHelp(); - void launchAccelBiasCalibration(); - void calibPhase2(); - void incrementProgress(); - - virtual void refreshValues(); - //void ahrsSettingsRequest(); - void ahrsSettingsSaveRAM(); - void ahrsSettingsSaveSD(); - void savePositionData(); - void computeScaleBias(); - void multiPointCalibrationMode(); -// void sixPointCalibrationMode(); // this function no longer exists - void attitudeRawUpdated(UAVObject * obj); - void accelBiasattitudeRawUpdated(UAVObject*); - void driftCalibrationAttitudeRawUpdated(UAVObject*); - void launchGyroDriftCalibration(); - void resetCalibrationDefaults(); - void cacheCurrentCalibration(); - -protected: - void showEvent(QShowEvent *event); - void resizeEvent(QResizeEvent *event); - -}; - -#endif // ConfigAHRSWidget_H diff --git a/ground/openpilotgcs/src/plugins/config/configccattitudewidget.cpp b/ground/openpilotgcs/src/plugins/config/configccattitudewidget.cpp index 85427b2b6..5815ae7ec 100644 --- a/ground/openpilotgcs/src/plugins/config/configccattitudewidget.cpp +++ b/ground/openpilotgcs/src/plugins/config/configccattitudewidget.cpp @@ -33,6 +33,8 @@ #include #include #include +#include +#include ConfigCCAttitudeWidget::ConfigCCAttitudeWidget(QWidget *parent) : ConfigTaskWidget(parent), @@ -61,25 +63,29 @@ ConfigCCAttitudeWidget::~ConfigCCAttitudeWidget() delete ui; } -void ConfigCCAttitudeWidget::attitudeRawUpdated(UAVObject * obj) { +void ConfigCCAttitudeWidget::accelsUpdated(UAVObject * obj) { QMutexLocker locker(&startStop); ui->zeroBiasProgress->setValue((float) updates / NUM_ACCEL_UPDATES * 100); if(updates < NUM_ACCEL_UPDATES) { updates++; - UAVObjectField * field = obj->getField(QString("accels")); - x_accum.append(field->getDouble(0)); - y_accum.append(field->getDouble(1)); - z_accum.append(field->getDouble(2)); - field = obj->getField(QString("gyros")); - x_gyro_accum.append(field->getDouble(0)); - y_gyro_accum.append(field->getDouble(1)); - z_gyro_accum.append(field->getDouble(2));; + Accels * accels = Accels::GetInstance(getObjectManager()); + Accels::DataFields accelsData = accels->getData(); + x_accum.append(accelsData.x); + y_accum.append(accelsData.y); + z_accum.append(accelsData.z); + + Gyros * gyros = Gyros::GetInstance(getObjectManager()); + Gyros::DataFields gyrosData = gyros->getData(); + + x_gyro_accum.append(gyrosData.x); + y_gyro_accum.append(gyrosData.y); + z_gyro_accum.append(gyrosData.z); } else if ( updates == NUM_ACCEL_UPDATES ) { updates++; timer.stop(); - disconnect(obj,SIGNAL(objectUpdated(UAVObject*)),this,SLOT(attitudeRawUpdated(UAVObject*))); + disconnect(obj,SIGNAL(objectUpdated(UAVObject*)),this,SLOT(accelsUpdated(UAVObject*))); disconnect(&timer,SIGNAL(timeout()),this,SLOT(timeout())); float x_bias = listMean(x_accum) / ACCEL_SCALE; @@ -110,8 +116,8 @@ void ConfigCCAttitudeWidget::attitudeRawUpdated(UAVObject * obj) { void ConfigCCAttitudeWidget::timeout() { QMutexLocker locker(&startStop); - UAVDataObject * obj = dynamic_cast(getObjectManager()->getObject(QString("AttitudeRaw"))); - disconnect(obj,SIGNAL(objectUpdated(UAVObject*)),this,SLOT(attitudeRawUpdated(UAVObject*))); + UAVDataObject * obj = Accels::GetInstance(getObjectManager()); + disconnect(obj,SIGNAL(objectUpdated(UAVObject*)),this,SLOT(accelsUpdated(UAVObject*))); disconnect(&timer,SIGNAL(timeout()),this,SLOT(timeout())); QMessageBox msgBox; @@ -139,8 +145,8 @@ void ConfigCCAttitudeWidget::startAccelCalibration() { AttitudeSettings::GetInstance(getObjectManager())->setData(attitudeSettingsData); // Set up to receive updates - UAVDataObject * obj = dynamic_cast(getObjectManager()->getObject(QString("AttitudeRaw"))); - connect(obj,SIGNAL(objectUpdated(UAVObject*)),this,SLOT(attitudeRawUpdated(UAVObject*))); + UAVDataObject * obj = Accels::GetInstance(getObjectManager()); + connect(obj,SIGNAL(objectUpdated(UAVObject*)),this,SLOT(accelsUpdated(UAVObject*))); // Set up timeout timer timer.start(10000); diff --git a/ground/openpilotgcs/src/plugins/config/configccattitudewidget.h b/ground/openpilotgcs/src/plugins/config/configccattitudewidget.h index 0d0581ba3..d9b0f8316 100644 --- a/ground/openpilotgcs/src/plugins/config/configccattitudewidget.h +++ b/ground/openpilotgcs/src/plugins/config/configccattitudewidget.h @@ -47,7 +47,7 @@ public: ~ConfigCCAttitudeWidget(); private slots: - void attitudeRawUpdated(UAVObject * obj); + void accelsUpdated(UAVObject * obj); void timeout(); void startAccelCalibration(); void openHelp(); diff --git a/ground/openpilotgcs/src/plugins/config/configgadgetwidget.cpp b/ground/openpilotgcs/src/plugins/config/configgadgetwidget.cpp index a103dd2c2..600b9be6f 100644 --- a/ground/openpilotgcs/src/plugins/config/configgadgetwidget.cpp +++ b/ground/openpilotgcs/src/plugins/config/configgadgetwidget.cpp @@ -25,7 +25,6 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include "configahrswidget.h" #include "configgadgetwidget.h" #include "configvehicletypewidget.h" @@ -38,6 +37,7 @@ #include "config_pro_hw_widget.h" #include "config_cc_hw_widget.h" #include "configpipxtremewidget.h" +#include "configrevowidget.h" #include "defaultattitudewidget.h" #include "defaulthwsettingswidget.h" #include "uavobjectutilmanager.h" @@ -79,7 +79,7 @@ ConfigGadgetWidget::ConfigGadgetWidget(QWidget *parent) : QWidget(parent) ftw->insertTab(ConfigGadgetWidget::output, qwd, QIcon(":/configgadget/images/Servo.png"), QString("Output")); qwd = new DefaultAttitudeWidget(this); - ftw->insertTab(ConfigGadgetWidget::ins, qwd, QIcon(":/configgadget/images/AHRS-v1.3.png"), QString("INS")); + ftw->insertTab(ConfigGadgetWidget::sensors, qwd, QIcon(":/configgadget/images/AHRS-v1.3.png"), QString("INS")); qwd = new ConfigStabilizationWidget(this); ftw->insertTab(ConfigGadgetWidget::stabilization, qwd, QIcon(":/configgadget/images/gyroscope.png"), QString("Stabilization")); @@ -125,9 +125,9 @@ void ConfigGadgetWidget::resizeEvent(QResizeEvent *event) void ConfigGadgetWidget::onAutopilotDisconnect() { ftw->setCurrentIndex(ConfigGadgetWidget::hardware); - ftw->removeTab(ConfigGadgetWidget::ins); + ftw->removeTab(ConfigGadgetWidget::sensors); QWidget *qwd = new DefaultAttitudeWidget(this); - ftw->insertTab(ConfigGadgetWidget::ins, qwd, QIcon(":/configgadget/images/AHRS-v1.3.png"), QString("INS")); + ftw->insertTab(ConfigGadgetWidget::sensors, qwd, QIcon(":/configgadget/images/AHRS-v1.3.png"), QString("INS")); ftw->removeTab(ConfigGadgetWidget::hardware); qwd = new DefaultHwSettingsWidget(this); ftw->insertTab(ConfigGadgetWidget::hardware, qwd, QIcon(":/configgadget/images/hw_config.png"), QString("HW Settings")); @@ -145,24 +145,36 @@ void ConfigGadgetWidget::onAutopilotConnect() { UAVObjectUtilManager* utilMngr = pm->getObject(); if (utilMngr) { int board = utilMngr->getBoardModel(); - qDebug() << "Board model: " << board; if ((board & 0xff00) == 1024) { // CopterControl family // Delete the INS panel, replace with CC Panel: ftw->setCurrentIndex(ConfigGadgetWidget::hardware); - ftw->removeTab(ConfigGadgetWidget::ins); + ftw->removeTab(ConfigGadgetWidget::sensors); QWidget *qwd = new ConfigCCAttitudeWidget(this); - ftw->insertTab(ConfigGadgetWidget::ins, qwd, QIcon(":/configgadget/images/AHRS-v1.3.png"), QString("Attitude")); + ftw->insertTab(ConfigGadgetWidget::sensors, qwd, QIcon(":/configgadget/images/AHRS-v1.3.png"), QString("Attitude")); ftw->removeTab(ConfigGadgetWidget::hardware); qwd = new ConfigCCHWWidget(this); ftw->insertTab(ConfigGadgetWidget::hardware, qwd, QIcon(":/configgadget/images/hw_config.png"), QString("HW Settings")); ftw->setCurrentIndex(ConfigGadgetWidget::hardware); } else if ((board & 0xff00) == 256 ) { // Mainboard family + Q_ASSERT(0); + /* ftw->setCurrentIndex(ConfigGadgetWidget::hardware); - ftw->removeTab(ConfigGadgetWidget::ins); + ftw->removeTab(ConfigGadgetWidget::sensors); QWidget *qwd = new ConfigAHRSWidget(this); - ftw->insertTab(ConfigGadgetWidget::ins, qwd, QIcon(":/configgadget/images/AHRS-v1.3.png"), QString("INS")); + ftw->insertTab(ConfigGadgetWidget::sensors, qwd, QIcon(":/configgadget/images/AHRS-v1.3.png"), QString("INS")); + ftw->removeTab(ConfigGadgetWidget::hardware); + qwd = new ConfigProHWWidget(this); + ftw->insertTab(ConfigGadgetWidget::hardware, qwd, QIcon(":/configgadget/images/hw_config.png"), QString("HW Settings")); + ftw->setCurrentIndex(ConfigGadgetWidget::hardware); + */ + } else if ((board & 0xff00) == 0x0900) { + // Revolution sensor calibration + ftw->setCurrentIndex(ConfigGadgetWidget::hardware); + ftw->removeTab(ConfigGadgetWidget::sensors); + QWidget *qwd = new ConfigRevoWidget(this); + ftw->insertTab(ConfigGadgetWidget::sensors, qwd, QIcon(":/configgadget/images/AHRS-v1.3.png"), QString("Revo")); ftw->removeTab(ConfigGadgetWidget::hardware); qwd = new ConfigProHWWidget(this); ftw->insertTab(ConfigGadgetWidget::hardware, qwd, QIcon(":/configgadget/images/hw_config.png"), QString("HW Settings")); diff --git a/ground/openpilotgcs/src/plugins/config/configgadgetwidget.h b/ground/openpilotgcs/src/plugins/config/configgadgetwidget.h index e361a3f96..1d0e8675a 100644 --- a/ground/openpilotgcs/src/plugins/config/configgadgetwidget.h +++ b/ground/openpilotgcs/src/plugins/config/configgadgetwidget.h @@ -50,7 +50,7 @@ class ConfigGadgetWidget: public QWidget public: ConfigGadgetWidget(QWidget *parent = 0); ~ConfigGadgetWidget(); - enum widgetTabs { hardware = 0, aircraft, input, output, ins, stabilization, camerastabilization, txpid, pipxtreme }; + enum widgetTabs {hardware=0, aircraft, input, output, sensors, stabilization, camerastabilization, txpid, pipxtreme}; public slots: void onAutopilotConnect(); diff --git a/ground/openpilotgcs/src/plugins/coreplugin/OpenPilotGCS.xml b/ground/openpilotgcs/src/plugins/coreplugin/OpenPilotGCS.xml index 7394a661f..05ce6a7ea 100644 --- a/ground/openpilotgcs/src/plugins/coreplugin/OpenPilotGCS.xml +++ b/ground/openpilotgcs/src/plugins/coreplugin/OpenPilotGCS.xml @@ -492,18 +492,18 @@ 0 Rotate Roll - AttitudeRaw + Accels 1 20 -20 Horizontal - accels-X - AttitudeRaw + x + Accels -1 360 0 Rotate - accels-X + x false
@@ -989,29 +989,6 @@ - - - false - 0.0.0 - - - %%DATAPATH%%dials/deluxe/lineardial-vertical.svg - 0 - 1 - Andale Mono,12,-1,5,75,0,0,0,0,0 - 50 - 0 - 100 - 0 - 100 - 80 - AhrsStatus - CPULoad - false - 80 - 50 - - false @@ -1028,8 +1005,8 @@ -11 11 -11 - AttitudeRaw - accels-X + Accels + x false -5 -11 @@ -1051,8 +1028,8 @@ -11 11 -11 - AttitudeRaw - accels-Y + Accels + y false -5 -11 @@ -1074,8 +1051,8 @@ -11 11 -11 - AttitudeRaw - accels-Z + Accels + z false -5 -11 @@ -1757,24 +1734,24 @@ 60 4294901760 - accels-X - AttitudeRaw + x + Accels 0 0 0 4283782655 - accels-Y - AttitudeRaw + y + Accels 0 0 0 4283804160 - accels-Z - AttitudeRaw + z + Accels 0 0 0 @@ -1989,24 +1966,24 @@ 60 4294901760 - accels-X - AttitudeRaw + x + Accels 0 0 0 4283782655 - accels-Y - AttitudeRaw + y + Accels 0 0 0 4283804160 - accels-Z - AttitudeRaw + z + Accels 0 0 0 @@ -2029,24 +2006,24 @@ 60 4283804160 - gyros-Z - AttitudeRaw + z + Gyros 0 0 0 4283782655 - gyros-Y - AttitudeRaw + y + Gyros 0 0 0 4294901760 - gyros-X - AttitudeRaw + x + Gyros 0 0 0 @@ -2069,24 +2046,24 @@ 60 4294901760 - magnetometers-X - AttitudeRaw + X + Magnetometer 0 0 0 4283782655 - magnetometers-Y - AttitudeRaw + Y + Magnetometer 0 0 0 4283804160 - magnetometers-Z - AttitudeRaw + Z + Magnetometer 0 0 0 @@ -2260,21 +2237,13 @@ 1000 240 - 4289374847 - RunningTime - AhrsStatus - 0 - 0 - 0 - - 4294945407 FlightTime SystemStats 0 0 0 - + 2 1 800 diff --git a/ground/openpilotgcs/src/plugins/plugins.pro b/ground/openpilotgcs/src/plugins/plugins.pro index 174ceba17..b4dd85b5a 100644 --- a/ground/openpilotgcs/src/plugins/plugins.pro +++ b/ground/openpilotgcs/src/plugins/plugins.pro @@ -140,12 +140,13 @@ plugin_ipconnection.subdir = ipconnection plugin_ipconnection.depends = plugin_coreplugin SUBDIRS += plugin_ipconnection +# Disable until updated to the new sensor objects #HITLNEW Simulation gadget -plugin_hitlnew.subdir = hitlnew -plugin_hitlnew.depends = plugin_coreplugin -plugin_hitlnew.depends += plugin_uavobjects -plugin_hitlnew.depends += plugin_uavtalk -SUBDIRS += plugin_hitlnew +#plugin_hitlnew.subdir = hitlnew +#plugin_hitlnew.depends = plugin_coreplugin +#plugin_hitlnew.depends += plugin_uavobjects +#plugin_hitlnew.depends += plugin_uavtalk +#SUBDIRS += plugin_hitlnew # Export and Import GCS Configuration plugin_importexport.subdir = importexport diff --git a/ground/openpilotgcs/src/plugins/scope/plotdata.h b/ground/openpilotgcs/src/plugins/scope/plotdata.h index a547f2b91..76112baf1 100644 --- a/ground/openpilotgcs/src/plugins/scope/plotdata.h +++ b/ground/openpilotgcs/src/plugins/scope/plotdata.h @@ -29,11 +29,6 @@ #define PLOTDATA_H #include "uavobject.h" -#include "baroaltitude.h" -#include "positionactual.h" -#include "attituderaw.h" -#include "manualcontrolcommand.h" - #include "qwt/src/qwt.h" #include "qwt/src/qwt_plot.h" diff --git a/ground/openpilotgcs/src/plugins/scope/scopegadgetwidget.cpp b/ground/openpilotgcs/src/plugins/scope/scopegadgetwidget.cpp index 140935da3..0631e398e 100644 --- a/ground/openpilotgcs/src/plugins/scope/scopegadgetwidget.cpp +++ b/ground/openpilotgcs/src/plugins/scope/scopegadgetwidget.cpp @@ -54,15 +54,10 @@ //using namespace Core; -TestDataGen* ScopeGadgetWidget::testDataGen; - // ****************************************************************** ScopeGadgetWidget::ScopeGadgetWidget(QWidget *parent) : QwtPlot(parent) { - //if(testDataGen == 0) - // testDataGen = new TestDataGen(); - setMouseTracking(true); // canvas()->setMouseTracking(true); @@ -532,68 +527,6 @@ void ScopeGadgetWidget::clearCurvePlots() } -TestDataGen::TestDataGen() -{ - // Get required UAVObjects - ExtensionSystem::PluginManager* pm = ExtensionSystem::PluginManager::instance(); - UAVObjectManager* objManager = pm->getObject(); - - baroAltitude = BaroAltitude::GetInstance(objManager); - gps = PositionActual::GetInstance(objManager); - attRaw = AttitudeRaw::GetInstance(objManager); - manCtrlCmd = ManualControlCommand::GetInstance(objManager); - - //Setup timer - periodMs = 20; - timer = new QTimer(this); - connect(timer, SIGNAL(timeout()), this, SLOT(genTestData())); - timer->start(periodMs); - - debugCounter = 0; - testTime = 0; -} - -void TestDataGen::genTestData() -{ - // Update BaroAltitude object - BaroAltitude::DataFields baroAltitudeData; - baroAltitudeData.Altitude = 500 * sin(1 * testTime) + 200 * cos(4 * testTime) + 800; - baroAltitudeData.Temperature = 30 * sin(0.5 * testTime); - baroAltitudeData.Pressure = baroAltitudeData.Altitude * 0.01 + baroAltitudeData.Temperature; - baroAltitude->setData(baroAltitudeData); - - // Update Attitude Raw data - AttitudeRaw::DataFields attData; -// attData.accels[0] = 4 * sin(2 * testTime) + 1 * cos(6 * testTime) + 4; -// attData.accels[1] = 3 * sin(2.3 * testTime) + 1.5 * cos(3.3 * testTime) + 2; -// attData.accels[2] = 4 * sin(5.3 * testTime) + 1.5 * cos(1.3 * testTime) + 1; - attData.accels[0] = 1; - attData.accels[1] = 4; - attData.accels[2] = 9; - attRaw->setData(attData); - - - ManualControlCommand::DataFields manCtlData; - manCtlData.Channel[0] = 400 * cos(2 * testTime) + 100 * sin(6 * testTime) + 400; - manCtlData.Channel[1] = 350 * cos(2.3 * testTime) + 150 * sin(3.3 * testTime) + 200; - manCtlData.Channel[2] = 450 * cos(5.3 * testTime) + 150 * sin(1.3 * testTime) + 150; - manCtrlCmd->setData(manCtlData); - - testTime += (periodMs / 1000.0); - -// debugCounter++; -// if (debugCounter % (100/periodMs) == 0 ) -// qDebug() << "Test Time = " << testTime; -} - -TestDataGen::~TestDataGen() -{ - if (timer) - timer->stop(); - - delete timer; -} - /* int csvLoggingEnable; int csvLoggingHeaderSaved; @@ -702,6 +635,15 @@ int ScopeGadgetWidget::csvLoggingAddData() ss << ", "; if (plotData2->xData->isEmpty ()) { + ss << ", "; + if (plotData2->xData->isEmpty ()) + { + } + else + { + ss << QString().sprintf("%3.6g",plotData2->yData->last()); + m_csvLoggingDataValid=1; + } } else { diff --git a/ground/openpilotgcs/src/plugins/scope/scopegadgetwidget.h b/ground/openpilotgcs/src/plugins/scope/scopegadgetwidget.h index 98da3beb6..4dd3f42ee 100644 --- a/ground/openpilotgcs/src/plugins/scope/scopegadgetwidget.h +++ b/ground/openpilotgcs/src/plugins/scope/scopegadgetwidget.h @@ -62,35 +62,6 @@ private: // double baseTime; }; -/*! - \brief This class is used to inject UAVTalk messages for testing. - */ -class TestDataGen : QObject -{ - Q_OBJECT - -public: - - TestDataGen(); - ~TestDataGen(); - -private: - BaroAltitude* baroAltitude; - PositionActual* gps; - AttitudeRaw* attRaw; - ManualControlCommand* manCtrlCmd; - - QTimer *timer; - double testTime; - int periodMs; - - int debugCounter; - -private slots: - void genTestData(); -}; - - class ScopeGadgetWidget : public QwtPlot { Q_OBJECT @@ -148,8 +119,6 @@ private: QList m_connectedUAVObjects; QMap m_curvesData; - static TestDataGen* testDataGen; - QTimer *replotTimer; bool m_csvLoggingStarted; diff --git a/ground/openpilotgcs/src/plugins/uavobjects/uavobject.h b/ground/openpilotgcs/src/plugins/uavobjects/uavobject.h index 62b96da02..228f86b2b 100644 --- a/ground/openpilotgcs/src/plugins/uavobjects/uavobject.h +++ b/ground/openpilotgcs/src/plugins/uavobjects/uavobject.h @@ -36,6 +36,7 @@ #include #include #include +#include #include "uavobjectfield.h" #define UAVOBJ_ACCESS_SHIFT 0 diff --git a/ground/openpilotgcs/src/plugins/uavobjects/uavobjects.pro b/ground/openpilotgcs/src/plugins/uavobjects/uavobjects.pro index a204b06f5..bfe2342b3 100755 --- a/ground/openpilotgcs/src/plugins/uavobjects/uavobjects.pro +++ b/ground/openpilotgcs/src/plugins/uavobjects/uavobjects.pro @@ -24,18 +24,23 @@ OTHER_FILES += UAVObjects.pluginspec # Add in all of the synthetic/generated uavobject files HEADERS += $$UAVOBJECT_SYNTHETICS/accessorydesired.h \ - $$UAVOBJECT_SYNTHETICS/ahrsstatus.h \ - $$UAVOBJECT_SYNTHETICS/ahrscalibration.h \ $$UAVOBJECT_SYNTHETICS/baroaltitude.h \ $$UAVOBJECT_SYNTHETICS/attitudeactual.h \ - $$UAVOBJECT_SYNTHETICS/ahrssettings.h \ + $$UAVOBJECT_SYNTHETICS/altholdsmoothed.h \ + $$UAVOBJECT_SYNTHETICS/altitudeholddesired.h \ + $$UAVOBJECT_SYNTHETICS/altitudeholdsettings.h \ + $$UAVOBJECT_SYNTHETICS/revocalibration.h \ $$UAVOBJECT_SYNTHETICS/gcstelemetrystats.h \ - $$UAVOBJECT_SYNTHETICS/attituderaw.h \ + $$UAVOBJECT_SYNTHETICS/gyros.h \ + $$UAVOBJECT_SYNTHETICS/gyrosbias.h \ + $$UAVOBJECT_SYNTHETICS/accels.h \ + $$UAVOBJECT_SYNTHETICS/magnetometer.h \ $$UAVOBJECT_SYNTHETICS/camerastabsettings.h \ $$UAVOBJECT_SYNTHETICS/flighttelemetrystats.h \ $$UAVOBJECT_SYNTHETICS/systemstats.h \ $$UAVOBJECT_SYNTHETICS/systemalarms.h \ $$UAVOBJECT_SYNTHETICS/objectpersistence.h \ + $$UAVOBJECT_SYNTHETICS/overosyncstats.h \ $$UAVOBJECT_SYNTHETICS/systemsettings.h \ $$UAVOBJECT_SYNTHETICS/stabilizationsettings.h \ $$UAVOBJECT_SYNTHETICS/manualcontrolsettings.h \ @@ -79,18 +84,23 @@ HEADERS += $$UAVOBJECT_SYNTHETICS/accessorydesired.h \ $$UAVOBJECT_SYNTHETICS/pipxstatus.h SOURCES += $$UAVOBJECT_SYNTHETICS/accessorydesired.cpp \ - $$UAVOBJECT_SYNTHETICS/ahrsstatus.cpp \ - $$UAVOBJECT_SYNTHETICS/ahrscalibration.cpp \ $$UAVOBJECT_SYNTHETICS/baroaltitude.cpp \ $$UAVOBJECT_SYNTHETICS/attitudeactual.cpp \ - $$UAVOBJECT_SYNTHETICS/ahrssettings.cpp \ + $$UAVOBJECT_SYNTHETICS/altholdsmoothed.cpp \ + $$UAVOBJECT_SYNTHETICS/altitudeholddesired.cpp \ + $$UAVOBJECT_SYNTHETICS/altitudeholdsettings.cpp \ + $$UAVOBJECT_SYNTHETICS/revocalibration.cpp \ $$UAVOBJECT_SYNTHETICS/gcstelemetrystats.cpp \ - $$UAVOBJECT_SYNTHETICS/attituderaw.cpp \ + $$UAVOBJECT_SYNTHETICS/accels.cpp \ + $$UAVOBJECT_SYNTHETICS/gyros.cpp \ + $$UAVOBJECT_SYNTHETICS/gyrosbias.cpp \ + $$UAVOBJECT_SYNTHETICS/magnetometer.cpp \ $$UAVOBJECT_SYNTHETICS/camerastabsettings.cpp \ $$UAVOBJECT_SYNTHETICS/flighttelemetrystats.cpp \ $$UAVOBJECT_SYNTHETICS/systemstats.cpp \ $$UAVOBJECT_SYNTHETICS/systemalarms.cpp \ $$UAVOBJECT_SYNTHETICS/objectpersistence.cpp \ + $$UAVOBJECT_SYNTHETICS/overosyncstats.cpp \ $$UAVOBJECT_SYNTHETICS/systemsettings.cpp \ $$UAVOBJECT_SYNTHETICS/stabilizationsettings.cpp \ $$UAVOBJECT_SYNTHETICS/manualcontrolsettings.cpp \ diff --git a/ground/openpilotgcs/src/plugins/uavobjects/uavobjecttemplate.m b/ground/openpilotgcs/src/plugins/uavobjects/uavobjecttemplate.m index c494c529b..42d388a31 100644 --- a/ground/openpilotgcs/src/plugins/uavobjects/uavobjecttemplate.m +++ b/ground/openpilotgcs/src/plugins/uavobjects/uavobjecttemplate.m @@ -3,10 +3,41 @@ function [] = OPLogConvert(varargin) % THIS FILE IS AUTOMATICALLY GENERATED. outputType='mat'; %Default output is a .mat file +checkCRC = false; +wrongSyncByte=0; +wrongMessageByte=0; +lastWrongSyncByte=0; +lastWrongMessageByte=0; +str1=[]; +str2=[]; +str3=[]; +str4=[]; +str5=[]; + +fprintf('\n\n***OpenPilot log parser***\n\n'); +global crc_table; +crc_table = [ ... + hex2dec('00'),hex2dec('07'),hex2dec('0e'),hex2dec('09'),hex2dec('1c'),hex2dec('1b'),hex2dec('12'),hex2dec('15'),hex2dec('38'),hex2dec('3f'),hex2dec('36'),hex2dec('31'),hex2dec('24'),hex2dec('23'),hex2dec('2a'),hex2dec('2d'), ... + hex2dec('70'),hex2dec('77'),hex2dec('7e'),hex2dec('79'),hex2dec('6c'),hex2dec('6b'),hex2dec('62'),hex2dec('65'),hex2dec('48'),hex2dec('4f'),hex2dec('46'),hex2dec('41'),hex2dec('54'),hex2dec('53'),hex2dec('5a'),hex2dec('5d'), ... + hex2dec('e0'),hex2dec('e7'),hex2dec('ee'),hex2dec('e9'),hex2dec('fc'),hex2dec('fb'),hex2dec('f2'),hex2dec('f5'),hex2dec('d8'),hex2dec('df'),hex2dec('d6'),hex2dec('d1'),hex2dec('c4'),hex2dec('c3'),hex2dec('ca'),hex2dec('cd'), ... + hex2dec('90'),hex2dec('97'),hex2dec('9e'),hex2dec('99'),hex2dec('8c'),hex2dec('8b'),hex2dec('82'),hex2dec('85'),hex2dec('a8'),hex2dec('af'),hex2dec('a6'),hex2dec('a1'),hex2dec('b4'),hex2dec('b3'),hex2dec('ba'),hex2dec('bd'), ... + hex2dec('c7'),hex2dec('c0'),hex2dec('c9'),hex2dec('ce'),hex2dec('db'),hex2dec('dc'),hex2dec('d5'),hex2dec('d2'),hex2dec('ff'),hex2dec('f8'),hex2dec('f1'),hex2dec('f6'),hex2dec('e3'),hex2dec('e4'),hex2dec('ed'),hex2dec('ea'), ... + hex2dec('b7'),hex2dec('b0'),hex2dec('b9'),hex2dec('be'),hex2dec('ab'),hex2dec('ac'),hex2dec('a5'),hex2dec('a2'),hex2dec('8f'),hex2dec('88'),hex2dec('81'),hex2dec('86'),hex2dec('93'),hex2dec('94'),hex2dec('9d'),hex2dec('9a'), ... + hex2dec('27'),hex2dec('20'),hex2dec('29'),hex2dec('2e'),hex2dec('3b'),hex2dec('3c'),hex2dec('35'),hex2dec('32'),hex2dec('1f'),hex2dec('18'),hex2dec('11'),hex2dec('16'),hex2dec('03'),hex2dec('04'),hex2dec('0d'),hex2dec('0a'), ... + hex2dec('57'),hex2dec('50'),hex2dec('59'),hex2dec('5e'),hex2dec('4b'),hex2dec('4c'),hex2dec('45'),hex2dec('42'),hex2dec('6f'),hex2dec('68'),hex2dec('61'),hex2dec('66'),hex2dec('73'),hex2dec('74'),hex2dec('7d'),hex2dec('7a'), ... + hex2dec('89'),hex2dec('8e'),hex2dec('87'),hex2dec('80'),hex2dec('95'),hex2dec('92'),hex2dec('9b'),hex2dec('9c'),hex2dec('b1'),hex2dec('b6'),hex2dec('bf'),hex2dec('b8'),hex2dec('ad'),hex2dec('aa'),hex2dec('a3'),hex2dec('a4'), ... + hex2dec('f9'),hex2dec('fe'),hex2dec('f7'),hex2dec('f0'),hex2dec('e5'),hex2dec('e2'),hex2dec('eb'),hex2dec('ec'),hex2dec('c1'),hex2dec('c6'),hex2dec('cf'),hex2dec('c8'),hex2dec('dd'),hex2dec('da'),hex2dec('d3'),hex2dec('d4'), ... + hex2dec('69'),hex2dec('6e'),hex2dec('67'),hex2dec('60'),hex2dec('75'),hex2dec('72'),hex2dec('7b'),hex2dec('7c'),hex2dec('51'),hex2dec('56'),hex2dec('5f'),hex2dec('58'),hex2dec('4d'),hex2dec('4a'),hex2dec('43'),hex2dec('44'), ... + hex2dec('19'),hex2dec('1e'),hex2dec('17'),hex2dec('10'),hex2dec('05'),hex2dec('02'),hex2dec('0b'),hex2dec('0c'),hex2dec('21'),hex2dec('26'),hex2dec('2f'),hex2dec('28'),hex2dec('3d'),hex2dec('3a'),hex2dec('33'),hex2dec('34'), ... + hex2dec('4e'),hex2dec('49'),hex2dec('40'),hex2dec('47'),hex2dec('52'),hex2dec('55'),hex2dec('5c'),hex2dec('5b'),hex2dec('76'),hex2dec('71'),hex2dec('78'),hex2dec('7f'),hex2dec('6a'),hex2dec('6d'),hex2dec('64'),hex2dec('63'), ... + hex2dec('3e'),hex2dec('39'),hex2dec('30'),hex2dec('37'),hex2dec('22'),hex2dec('25'),hex2dec('2c'),hex2dec('2b'),hex2dec('06'),hex2dec('01'),hex2dec('08'),hex2dec('0f'),hex2dec('1a'),hex2dec('1d'),hex2dec('14'),hex2dec('13'), ... + hex2dec('ae'),hex2dec('a9'),hex2dec('a0'),hex2dec('a7'),hex2dec('b2'),hex2dec('b5'),hex2dec('bc'),hex2dec('bb'),hex2dec('96'),hex2dec('91'),hex2dec('98'),hex2dec('9f'),hex2dec('8a'),hex2dec('8d'),hex2dec('84'),hex2dec('83'), ... + hex2dec('de'),hex2dec('d9'),hex2dec('d0'),hex2dec('d7'),hex2dec('c2'),hex2dec('c5'),hex2dec('cc'),hex2dec('cb'),hex2dec('e6'),hex2dec('e1'),hex2dec('e8'),hex2dec('ef'),hex2dec('fa'),hex2dec('fd'),hex2dec('f4'),hex2dec('f3') ... + ]; if nargin==0 %% - if (exist('uigetfile')) + if (exist('uigetfile')) %#ok [FileName, PathName]=uigetfile('*.opl'); logfile=fullfile(PathName, FileName); @@ -33,26 +64,36 @@ correctSyncByte=hex2dec('3C'); unknownObjIDList=zeros(1,2); % Parse log file, entry by entry +prebuf = fread(fid, 12, 'uint8'); +log_size = dir(logfile); +log_size = log_size.bytes; +last_print = 0; + +startTime=clock; + while (1) - %% Read logging header - timestamp = fread(fid, 1, '*uint32'); if (feof(fid)); break; end - datasize = fread(fid, 1, '*int64'); - - + %% Read message header % get sync field (0x3C, 1 byte) sync = fread(fid, 1, 'uint8'); if sync ~= correctSyncByte - disp ('Wrong sync byte'); - return - end + prebuf = [prebuf(2:end); sync]; + wrongSyncByte = wrongSyncByte + 1; + continue + end + + %% Process header if we are aligned + timestamp = typecast(uint8(prebuf(1:4)), 'uint32'); + datasize = typecast(uint8(prebuf(5:12)), 'uint64'); + % get msg type (quint8 1 byte ) should be 0x20, ignore the rest? msgType = fread(fid, 1, 'uint8'); if msgType ~= correctMsgByte - disp ('Wrong msgType'); - return + wrongMessageByte = wrongMessageByte + 1; + continue end + % get msg size (quint16 2 bytes) excludes crc, include msg header and data payload msgSize = fread(fid, 1, 'uint16'); % get obj id (quint32 4 bytes) @@ -63,6 +104,7 @@ while (1) end %% Read object + try switch objID $(SWITCHCODE) otherwise @@ -73,9 +115,52 @@ $(SWITCHCODE) unknownObjIDList(unknownObjIDListIdx,2)=unknownObjIDList(unknownObjIDListIdx,2)+1; end msgBytesLeft = datasize - 1 - 1 - 2 - 4; + if msgBytesLeft > 255 + msgBytesLeft = 0; + end fread(fid, msgBytesLeft, 'uint8'); end - + catch + % One of the reads failed - indicates EOF + break; + end + + if (wrongSyncByte ~= lastWrongSyncByte || wrongMessageByte~=lastWrongMessageByte ) ||... + (ftell(fid) / log_size - last_print) > 0.01 + + lastWrongSyncByte=wrongSyncByte; + lastWrongMessageByte=wrongMessageByte; + + str1=[]; + for i=1:length([str2 str3 str4 str5]); + str1=[str1 sprintf('\b')]; + end + str2=sprintf('wrongSyncByte instances: % 10d\n', wrongSyncByte ); + str3=sprintf('wrongMessageByte instances: % 10d\n\n', wrongMessageByte ); + + str4=sprintf('Completed bytes: % 9d of % 9d\n', ftell(fid), log_size); + + % Arbitrary times two so that it is at least as long + estTimeRemaining=(log_size-ftell(fid))/(ftell(fid)/etime(clock,startTime)) * 2; + h=floor(estTimeRemaining/3600); + m=floor((estTimeRemaining-h*3600)/60); + s=ceil(estTimeRemaining-h*3600-m*60); + + str5=sprintf('Est. time remaining, %02dh:%02dm:%02ds \n', h,m,s); + + last_print = ftell(fid) / log_size; + + fprintf([str1 str2 str3 str4 str5]); + end + + + prebuf = fread(fid, 12, 'uint8'); +end + +fprintf('%d records in %0.2f seconds.\n', ftell(fid), etime(clock,startTime)); + +for i=2:size(unknownObjIDList,1) %Don't show the first one, as it was simply a dummy placeholder + disp(['Unknown object ID: 0x' dec2hex(unknownObjIDList(i,1),8) ' appeared ' int2str(unknownObjIDList(i,2)) ' times.']); end for i=2:size(unknownObjIDList,1) %Don't show the first one, as it was simply a dummy placeholder @@ -105,7 +190,7 @@ function [structOut]=PruneStructOfArrays(structIn, lastIndex) fieldNames = fieldnames(structIn); for i=1:length(fieldNames) - structOut.(fieldNames{i})=structIn.(fieldNames{i})(1:lastIndex); + structOut.(fieldNames{i})=structIn.(fieldNames{i})(:,1:lastIndex); end @@ -137,3 +222,10 @@ function OPLog2csv(structIn, structName, logfile) dlmwrite(csvfile, headerOut, ''); dlmwrite(csvfile, matOut, '-append'); +function crc = compute_crc(data) + global crc_table; + crc = 0; + for i = 1:length(data) + crc = crc_table(1+bitxor(data(i),crc)); + end + diff --git a/ground/openpilotgcs/src/plugins/uploader/devicewidget.cpp b/ground/openpilotgcs/src/plugins/uploader/devicewidget.cpp index eca8728f8..38bf2aefc 100644 --- a/ground/openpilotgcs/src/plugins/uploader/devicewidget.cpp +++ b/ground/openpilotgcs/src/plugins/uploader/devicewidget.cpp @@ -378,7 +378,10 @@ void deviceWidget::uploadFirmware() // - Check whether board type matches firmware: int board = m_dfu->devices[deviceID].ID; int firmwareBoard = ((desc.at(12)&0xff)<<8) + (desc.at(13)&0xff); - if (firmwareBoard != board) { + if((board == 0x401 && firmwareBoard == 0x402) || + (board == 0x901 && firmwareBoard == 0x902)) { + // These firmwares are designed to be backwards compatible + } else if (firmwareBoard != board) { status("Error: firmware does not match board", STATUSICON_FAIL); myDevice->updateButton->setEnabled(true); return; diff --git a/ground/openpilotgcs/src/plugins/uploader/runningdevicewidget.ui b/ground/openpilotgcs/src/plugins/uploader/runningdevicewidget.ui index c01332629..b873ded19 100644 --- a/ground/openpilotgcs/src/plugins/uploader/runningdevicewidget.ui +++ b/ground/openpilotgcs/src/plugins/uploader/runningdevicewidget.ui @@ -15,7 +15,7 @@ - + Device Information @@ -92,7 +92,7 @@ - + Firmware Information diff --git a/ground/uavobjgenerator/generators/matlab/uavobjectgeneratormatlab.cpp b/ground/uavobjgenerator/generators/matlab/uavobjectgeneratormatlab.cpp index cac8db9c7..97e3e9e92 100644 --- a/ground/uavobjgenerator/generators/matlab/uavobjectgeneratormatlab.cpp +++ b/ground/uavobjgenerator/generators/matlab/uavobjectgeneratormatlab.cpp @@ -79,7 +79,7 @@ bool UAVObjectGeneratorMatlab::process_object(ObjectInfo* info) QString objectTableName(objectName); QString tableIdxName(objectName.toLower() + "Idx"); QString functionName("Read" + info->name + "Object"); - QString functionCall(functionName + "(fid, timestamp, "); + QString functionCall(functionName + "(fid, timestamp, checkCRC, "); QString objectID(QString().setNum(info->id)); QString isSingleInst = boolTo01String( info->isSingleInst ); @@ -133,7 +133,7 @@ bool UAVObjectGeneratorMatlab::process_object(ObjectInfo* info) // matlabSwitchCode.append("\t\t\t" + objectTableName + "(" + tableIdxName +") = " + functionCall + ";\n"); matlabSwitchCode.append("\t\t\t" + tableIdxName + " = " + tableIdxName +" + 1;\n"); matlabSwitchCode.append("\t\t\t" + objectTableName + "= " + functionCall + objectTableName + ", " + tableIdxName + ");\n"); - matlabSwitchCode.append("\t\t\tif " + tableIdxName + " >= length(" + objectTableName +") %Check to see if pre-allocated memory is exhausted\n"); + matlabSwitchCode.append("\t\t\tif " + tableIdxName + " >= length(" + objectTableName +".timestamp) %Check to see if pre-allocated memory is exhausted\n"); matlabSwitchCode.append("\t\t\t\tFieldNames= fieldnames(" + objectTableName +");\n"); matlabSwitchCode.append("\t\t\t\tfor i=1:length(FieldNames) %Grow structure\n"); matlabSwitchCode.append("\t\t\t\t\t" + objectTableName + ".(FieldNames{i})(:," + tableIdxName + "*2+1) = 0;\n"); @@ -166,6 +166,8 @@ bool UAVObjectGeneratorMatlab::process_object(ObjectInfo* info) matlabFunctionsCode.append("%%\n% " + objectName + " read function\n"); matlabFunctionsCode.append("function [" + objectName + "] = " + functionCall + objectTableName + ", " + tableIdxName + ")" + "\n"); + + matlabFunctionsCode.append("\t" + objectName + ".timestamp(" + tableIdxName + ")= timestamp;\n"); matlabFunctionsCode.append("\tif " + isSingleInst + "\n"); matlabFunctionsCode.append("\t\theaderSize = 8;\n"); @@ -177,6 +179,8 @@ bool UAVObjectGeneratorMatlab::process_object(ObjectInfo* info) // Generate functions code, actual fields of the object QString funcfields; + matlabFunctionsCode.append("\tstartPos = ftell(fid) - headerSize;\n"); + for (int n = 0; n < info->fields.length(); ++n) { // Determine type type = fieldTypeStrMatlab[info->fields[n]->type]; @@ -188,8 +192,20 @@ bool UAVObjectGeneratorMatlab::process_object(ObjectInfo* info) } matlabFunctionsCode.append(funcfields); + matlabFunctionsCode.append("\tobjLen = ftell(fid) - startPos;\n"); + matlabFunctionsCode.append("\t% read CRC\n"); - matlabFunctionsCode.append("\tfread(fid, 1, '*uint8');\n"); + matlabFunctionsCode.append("\tcrc_read = fread(fid, 1, '*uint8');\n"); + + matlabFunctionsCode.append("\tif checkCRC\n"); + matlabFunctionsCode.append("\t\tfseek(fid, startPos, 'bof');\n"); + matlabFunctionsCode.append("\t\tcrc_calc = compute_crc(uint8(fread(fid,objLen,'uint8')));\n"); + matlabFunctionsCode.append("\t\tfread(fid,1,'uint8');\n"); + matlabFunctionsCode.append("\t\tif (crc_calc ~= crc_read)\n"); + matlabFunctionsCode.append("\t\t\tdisp('CRC Error')\n"); + matlabFunctionsCode.append("\t\t\t" + tableIdxName + " = " + tableIdxName + " - 1;\n"); + matlabFunctionsCode.append("\t\tend\n"); + matlabFunctionsCode.append("\tend\n"); matlabFunctionsCode.append("\n\n"); diff --git a/ground/uavobjgenerator/uavobjectparser.cpp b/ground/uavobjgenerator/uavobjectparser.cpp index 29f71934c..a11a53e82 100644 --- a/ground/uavobjgenerator/uavobjectparser.cpp +++ b/ground/uavobjgenerator/uavobjectparser.cpp @@ -209,6 +209,9 @@ QString UAVObjectParser::parseXML(QString& xml, QString& filename) // Sort all fields according to size qStableSort(info->fields.begin(), info->fields.end(), fieldTypeLessThan); + // Sort all fields according to size + qStableSort(info->fields.begin(), info->fields.end(), fieldTypeLessThan); + // Make sure that required elements were found if ( !accessFound ) return QString("Object::access element is missing"); diff --git a/make/boards/coptercontrol/board-info.mk b/make/boards/coptercontrol/board-info.mk index 1f8e52610..dcad2f43e 100644 --- a/make/boards/coptercontrol/board-info.mk +++ b/make/boards/coptercontrol/board-info.mk @@ -1,5 +1,5 @@ BOARD_TYPE := 0x04 -BOARD_REVISION := 0x01 +BOARD_REVISION := 0x02 BOOTLOADER_VERSION := 0x02 HW_TYPE := 0x01 @@ -9,6 +9,7 @@ BOARD := STM32103CB_CC_Rev1 MODEL := MD MODEL_SUFFIX := _CC +OPENOCD_JTAG_CONFIG := foss-jtag.revb.cfg OPENOCD_CONFIG := stm32f1x.cfg # Note: These must match the values in link_$(BOARD)_memory.ld diff --git a/make/boards/ins/board-info.mk b/make/boards/ins/board-info.mk index a20bd606c..d36e054cc 100644 --- a/make/boards/ins/board-info.mk +++ b/make/boards/ins/board-info.mk @@ -3,18 +3,21 @@ BOARD_REVISION := 0x01 BOOTLOADER_VERSION := 0x00 HW_TYPE := 0x00 -MCU := cortex-m3 -CHIP := STM32F103RET -BOARD := STM3210E_INS +MCU := cortex-m4 +CHIP := STM32F205RGT +BOARD := STM32F2xx_INS MODEL := HD -MODEL_SUFFIX := _OP +MODEL_SUFFIX := -OPENOCD_CONFIG := stm32f1x.cfg +OPENOCD_CONFIG := stm32f4xx.cfg # Note: These must match the values in link_$(BOARD)_memory.ld BL_BANK_BASE := 0x08000000 # Start of bootloader flash -BL_BANK_SIZE := 0x00002000 # Should include BD_INFO region -FW_BANK_BASE := 0x08002000 # Start of firmware flash +BL_BANK_SIZE := 0x00008000 # Should include BD_INFO region +FW_BANK_BASE := 0x08008000 # Start of firmware flash FW_BANK_SIZE := 0x0001E000 # Should include FW_DESC_SIZE FW_DESC_SIZE := 0x00000064 + +OSCILLATOR_FREQ := 8000000 +SYSCLK_FREQ := 168000000 diff --git a/make/boards/pipxtreme/board-info.mk b/make/boards/pipxtreme/board-info.mk index 52e1a471a..74fcb582e 100644 --- a/make/boards/pipxtreme/board-info.mk +++ b/make/boards/pipxtreme/board-info.mk @@ -11,6 +11,9 @@ MODEL_SUFFIX := _PX OPENOCD_CONFIG := stm32f1x.cfg +OPENOCD_JTAG_CONFIG := foss-jtag.revb.cfg +OPENOCD_CONFIG := stm32f1x.cfg + # Note: These must match the values in link_$(BOARD)_memory.ld BL_BANK_BASE := 0x08000000 # Start of bootloader flash BL_BANK_SIZE := 0x00003000 # Should include BD_INFO region diff --git a/make/firmware-defs.mk b/make/firmware-defs.mk index 2eb0a13d8..594765444 100644 --- a/make/firmware-defs.mk +++ b/make/firmware-defs.mk @@ -49,8 +49,6 @@ MSG_OPFIRMWARE := ${quote} OPFW ${quote} MSG_FWINFO := ${quote} FWINFO ${quote} MSG_JTAG_PROGRAM := ${quote} JTAG-PGM ${quote} MSG_JTAG_WIPE := ${quote} JTAG-WIPE ${quote} -MSG_JTAG_RESET := ${quote} JTAG-RST ${quote} -MSG_JTAG_SAFEBOOT := ${quote} JTAG-SAFE ${quote} toprel = $(subst $(realpath $(TOP))/,,$(abspath $(1))) @@ -118,7 +116,7 @@ FORCE: $(1).firmwareinfo.c: $(1) $(TOP)/make/templates/firmwareinfotemplate.c FORCE @echo $(MSG_FWINFO) $$(call toprel, $$@) - $(V1) python $(TOP)/make/scripts/version-info.py \ + python $(TOP)/make/scripts/version-info.py \ --path=$(TOP) \ --template=$(TOP)/make/templates/firmwareinfotemplate.c \ --outfile=$$@ \ @@ -203,7 +201,6 @@ endef # $(1) = Name of binary image to write # $(2) = Base of flash region to write/wipe # $(3) = Size of flash region to write/wipe -# $(4) = OpenOCD configuration file to use define JTAG_TEMPLATE # --------------------------------------------------------------------------- # Options for OpenOCD flash-programming @@ -216,7 +213,7 @@ OOCD_EXE ?= openocd OOCD_JTAG_SETUP = -d0 # interface and board/target settings (using the OOCD target-library here) OOCD_JTAG_SETUP += -s $(TOP)/flight/Project/OpenOCD -OOCD_JTAG_SETUP += -f foss-jtag.revb.cfg -f $(4) +OOCD_JTAG_SETUP += -f flyswatter.cfg -f stm32f1x.cfg # initialize OOCD_BOARD_RESET = -c init @@ -231,8 +228,8 @@ program: $(1) $(V1) $(OOCD_EXE) \ $$(OOCD_JTAG_SETUP) \ $$(OOCD_BOARD_RESET) \ - -c "flash write_image erase $$< $(2) bin" \ - -c "verify_image $$< $(2) bin" \ + -c "flash write_image erase $(subst c:,,$(1)) $(2) bin" \ + -c "verify_image $(subst c:,,$(1)) $(2) bin" \ -c "reset run" \ -c "shutdown" @@ -245,34 +242,4 @@ wipe: -c "flash erase_address pad $(2) $(3)" \ -c "reset run" \ -c "shutdown" - -reset: - @echo $(MSG_JTAG_RESET) resetting device - $(V1) $(OOCD_EXE) \ - $$(OOCD_JTAG_SETUP) \ - $$(OOCD_BOARD_RESET) \ - -c "reset run" \ - -c "shutdown" - -# Enable PWR and BKP clocks (set RCC_APB1ENR[PWREN|BKPEN]) -OOCD_WRITE_BKPDR3 = -c "mww 0x4002101C 0x18000000" -# Enable writes to BKP registers (set PWR_CR[DBP] via bit op alias address) -# -# Direct register access would be: -# mww 0x40007000 0x00000100 -# -# Direct _bit_ access is: -# Bit 8 in 0x40007000 = 0x42000000 + 0x7000 * 32 + 8 * 4 = 420E0020 -OOCD_WRITE_BKPDR3 += -c "mww 0x420E0020 0x00000001" -# Set BR3 to max value to force a safe boot -OOCD_WRITE_BKPDR3 += -c "mwh 0x40006C0C 0xFFFF" -safeboot: - @echo $(MSG_JTAG_SAFEBOOT) forcing boot into safe mode - $(V1) $(OOCD_EXE) \ - $$(OOCD_JTAG_SETUP) \ - $$(OOCD_BOARD_RESET) \ - $$(OOCD_WRITE_BKPDR3) \ - -c "reset run" \ - -c "shutdown" -endef - +endef \ No newline at end of file diff --git a/shared/uavobjectdefinition/ahrscalibration.xml b/shared/uavobjectdefinition/ahrscalibration.xml deleted file mode 100644 index 726b25f8b..000000000 --- a/shared/uavobjectdefinition/ahrscalibration.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - Contains the calibration settings for the @ref AHRSCommsModule - - - - - - - - - - - - - - - - - - - - diff --git a/shared/uavobjectdefinition/ahrssettings.xml b/shared/uavobjectdefinition/ahrssettings.xml deleted file mode 100644 index 4c98d050d..000000000 --- a/shared/uavobjectdefinition/ahrssettings.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - Settings for the @ref AHRSCommsModule to control the algorithm and what is updated - - - - - - - - - - - - - diff --git a/shared/uavobjectdefinition/ahrsstatus.xml b/shared/uavobjectdefinition/ahrsstatus.xml deleted file mode 100644 index 4065a88cf..000000000 --- a/shared/uavobjectdefinition/ahrsstatus.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - Status for the @ref AHRSCommsModule, including communication errors - - - - - - - - - - - - - - - - - - - - - - diff --git a/shared/uavobjectdefinition/attituderaw.xml b/shared/uavobjectdefinition/attituderaw.xml deleted file mode 100644 index 9138d53d9..000000000 --- a/shared/uavobjectdefinition/attituderaw.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - The raw attitude sensor data from @ref AHRSCommsModule. Not always updated. - - - - - - - - - - diff --git a/shared/uavobjectdefinition/flightstatus.xml b/shared/uavobjectdefinition/flightstatus.xml index e3c0593f8..22c4f9360 100644 --- a/shared/uavobjectdefinition/flightstatus.xml +++ b/shared/uavobjectdefinition/flightstatus.xml @@ -4,7 +4,7 @@ - + diff --git a/shared/uavobjectdefinition/gcsreceiver.xml b/shared/uavobjectdefinition/gcsreceiver.xml index ddf514087..74fc59144 100644 --- a/shared/uavobjectdefinition/gcsreceiver.xml +++ b/shared/uavobjectdefinition/gcsreceiver.xml @@ -2,7 +2,7 @@ A receiver channel group carried over the telemetry link. - + diff --git a/shared/uavobjectdefinition/guidancesettings.xml b/shared/uavobjectdefinition/guidancesettings.xml index 56149204a..904501af2 100644 --- a/shared/uavobjectdefinition/guidancesettings.xml +++ b/shared/uavobjectdefinition/guidancesettings.xml @@ -2,10 +2,10 @@ Settings for the @ref GuidanceModule - - - - + + + + diff --git a/shared/uavobjectdefinition/hwsettings.xml b/shared/uavobjectdefinition/hwsettings.xml index a144375c7..712546582 100644 --- a/shared/uavobjectdefinition/hwsettings.xml +++ b/shared/uavobjectdefinition/hwsettings.xml @@ -5,10 +5,13 @@ - - - - + + + + + + + diff --git a/shared/uavobjectdefinition/manualcontrolsettings.xml b/shared/uavobjectdefinition/manualcontrolsettings.xml index 617f7ac75..8ed79dbd0 100644 --- a/shared/uavobjectdefinition/manualcontrolsettings.xml +++ b/shared/uavobjectdefinition/manualcontrolsettings.xml @@ -23,7 +23,7 @@ - + diff --git a/shared/uavobjectdefinition/nedaccel.xml b/shared/uavobjectdefinition/nedaccel.xml index 9e278671f..274fde9e2 100644 --- a/shared/uavobjectdefinition/nedaccel.xml +++ b/shared/uavobjectdefinition/nedaccel.xml @@ -1,9 +1,9 @@ The projection of acceleration in the NED reference frame used by @ref Guidance. - - - + + + diff --git a/shared/uavobjectdefinition/pipxsettings.xml b/shared/uavobjectdefinition/pipxsettings.xml old mode 100755 new mode 100644 index 3886fb606..3763127ab --- a/shared/uavobjectdefinition/pipxsettings.xml +++ b/shared/uavobjectdefinition/pipxsettings.xml @@ -2,19 +2,23 @@ PipXtreme configurations options. + - + - + + + + - + diff --git a/shared/uavobjectdefinition/positionactual.xml b/shared/uavobjectdefinition/positionactual.xml index 5fbf4d01c..cddd81742 100644 --- a/shared/uavobjectdefinition/positionactual.xml +++ b/shared/uavobjectdefinition/positionactual.xml @@ -1,9 +1,9 @@ Contains the current position relative to @ref HomeLocation - - - + + + diff --git a/shared/uavobjectdefinition/positiondesired.xml b/shared/uavobjectdefinition/positiondesired.xml index fab8cf21f..ffffe1370 100644 --- a/shared/uavobjectdefinition/positiondesired.xml +++ b/shared/uavobjectdefinition/positiondesired.xml @@ -1,9 +1,9 @@ The position the craft is trying t achieve. Can come from GCS or @ref PathPlanner - - - + + + diff --git a/shared/uavobjectdefinition/systemalarms.xml b/shared/uavobjectdefinition/systemalarms.xml index 09b37bcd2..cc20045b6 100644 --- a/shared/uavobjectdefinition/systemalarms.xml +++ b/shared/uavobjectdefinition/systemalarms.xml @@ -2,7 +2,7 @@ Alarms from OpenPilot to indicate failure conditions or warnings. Set by various modules. + elementnames="OutOfMemory,StackOverflow,CPUOverload,EventSystem,SDCard,Telemetry,ManualControl,Actuator,Attitude,Sensors,Stabilization,Guidance,AHRSComms,Battery,FlightTime,I2C,GPS,BootFault" defaultvalue="Uninitialised"/> diff --git a/shared/uavobjectdefinition/systemstats.xml b/shared/uavobjectdefinition/systemstats.xml index 3e6bc1547..c11453d20 100644 --- a/shared/uavobjectdefinition/systemstats.xml +++ b/shared/uavobjectdefinition/systemstats.xml @@ -6,6 +6,9 @@ + + + diff --git a/shared/uavobjectdefinition/taskinfo.xml b/shared/uavobjectdefinition/taskinfo.xml index 11b550089..40f0d4bdf 100644 --- a/shared/uavobjectdefinition/taskinfo.xml +++ b/shared/uavobjectdefinition/taskinfo.xml @@ -1,9 +1,9 @@ Task information - - - + + + diff --git a/shared/uavobjectdefinition/velocityactual.xml b/shared/uavobjectdefinition/velocityactual.xml index 94ac75903..a4173b033 100644 --- a/shared/uavobjectdefinition/velocityactual.xml +++ b/shared/uavobjectdefinition/velocityactual.xml @@ -1,9 +1,9 @@ Updated by @ref AHRSCommsModule and used within @ref GuidanceModule for velocity control - - - + + + diff --git a/shared/uavobjectdefinition/velocitydesired.xml b/shared/uavobjectdefinition/velocitydesired.xml index ae30659d8..02467a539 100644 --- a/shared/uavobjectdefinition/velocitydesired.xml +++ b/shared/uavobjectdefinition/velocitydesired.xml @@ -1,9 +1,9 @@ Used within @ref GuidanceModule to communicate between the task computing the desired velocity and the PID loop to achieve it (running at different rates). - - - + + +