Commit Graph
63 Commits
Author SHA1 Message Date
José Roberto de Souza 925efe990d Initialize all outgoing vehicle_command_ack_s and vehicle_command_s
This will initialize those structs with zero in all fields not set
and all fields set will only be change once to the final value not
wasting CPU time zeroing it.

This will guarantee that no non-unitialized structs will have
a trash value on from_external causing it to be sent to the
MAVLink channel without need it.
2017-08-08 21:46:30 +02:00
José Roberto de Souza 7c268f4fa1 mavlink: Safely avoid send the same vehicle_command and vehicle_command_ack back
The previous approach was checking system id and component id but it
will not work in 100% of cases as external devices can send MAVLink
message with the right system id but with broadcast component id.
2017-08-08 21:46:30 +02:00
José Roberto de Souza 89a428fbfe commander: Keep vehicle_command_ack_s local
No need to keep this struct as global or alive while looping.
2017-08-08 21:46:30 +02:00
José Roberto de Souza 7082cc13e0 mavlink: Allow vehicle to receive a command_ack message and publish it to listeners 2017-08-08 21:46:30 +02:00
José Roberto de Souza a8cfd6f36a msg: Use the correctly data types on vehicle_command
Lets save a few bytes using the right data types.
2017-08-08 21:46:30 +02:00
José Roberto de Souza 1a3315e397 msg: Fix build in python3
We can afford a slower performance in this parsers with python2 to
keep compability with python3.
http://sebastianraschka.com/Articles/2014_python_2_3_key_diff.html#xrange
2017-08-05 11:04:44 +02:00
José Roberto de Souza 7d46858ae4 aerofc: Use the additional I2C
This change plus the new FPGA RTL(version 0xC1 or higher) will make
use of the new I2C bus, this new bus will be shared between aerofc_adc
and ll40ls(if connected) and leaving the old bus just to IST8310.
2017-08-02 11:49:10 +02:00
José Roberto de Souza 66e77c49ae ll40ls: Refactor interface(PWM and I2C) selection and allow probe in more I2C buses 2017-08-02 11:49:10 +02:00
José Roberto de Souza fb3d60850e aerofc_adc: Add support to use others I2C besides PX4_I2C_BUS_EXPANSION 2017-08-02 11:49:10 +02:00
José Roberto de Souza 18626661b6 aerofc: Enable I2C bus 2
Now that UART3 is no longer in use we can use this I2C bus.
2017-08-02 11:49:10 +02:00
José Roberto de Souza 79b84a08f5 nuttx-configs: aerofc: Remove GPIO_I2C*_S**_GPIO
Nothing use this define right now so lets remove it.
Several other boards also have this defines that can also
be removed.
2017-08-02 11:49:10 +02:00
José Roberto de Souza ce180af4ca aerofc: Move GPS to UART7
The UART3 also have the I2C bus 2 functions so moving GPS to UART7 to
have one additional I2C.
To keep GPS working is also necessary update the FPGA RTL to version
0xC1 or higher.
2017-08-02 11:49:10 +02:00
José Roberto de Souza 0b9e32ca3e aerofc: Reboot board when force bootloader pin is set
This can help "unbrick" AeroFC when a bad firmware is loaded
and it keeps rebooting or it spinning in some loop.

No need to request to stay in booloader as it will stay
in bootloader because the pin is set.
2017-07-26 07:14:13 +02:00
José Roberto de Souza ac7127ff0f systemcmds: dataman: Check for errors in tasks 2017-07-13 15:21:26 +02:00
José Roberto de Souza 2f2e3a7e7c modules: dataman: ram_flash: No need to write/erase data that do not need to persist
Just update in RAM is enough.
2017-07-13 15:21:26 +02:00
José Roberto de Souza 10f54e718e modules: dataman: Optimize memory usage
Use the size of each item type instead of the biggest one.

In AeroFC that runs is constrained mode it was using 7860 bytes
and now it uses 6930 bytes almost 1KB less.
2017-07-13 15:21:26 +02:00
José Roberto de Souza 9a05c5f137 mavlink: Send command long when component id is broadcast
Check for the broadcast systemd id to block forward of broadcast
commands.
2017-07-11 09:52:22 +02:00
José Roberto de Souza f61b830ae9 nuttx-configs: aerofc: Enable CONFIG_STM32_FLASH_WORKAROUND_DATA_CACHE_CORRUPTION_ON_RWW
Now AeroFC is making use of both flash memory banks so it need this
workaround.
2017-03-11 10:30:04 +01:00
José Roberto de Souza 03e3877535 nuttx-patches: Add workaround for flash data cache corruption on read-while-write 2017-03-11 10:30:04 +01:00
José Roberto de Souza 07921c9f3a aerofc: Use ram_flash dataman backend 2017-03-10 11:31:07 +01:00
José Roberto de Souza e2aae04c95 modules: dataman: Add a ram_flash backend
This backend will keep all updated data in RAM and
persist the data between reboots using flash memory.

Using only flash memory would result in a slow backend that
would decrease the lifetime of the flash memory, using both
we can reduce the several cycles of erase & write into flash
and keep the performance of the backend almost as fast
as the RAM only backend.

Note: Do not use this backend on a sector from the same flash memory
bank as the memory bank that STM32 read instructions or it can block
the CPU from fetching instructions from flash during the erase and
write operations and cause your drone crash.
2017-03-10 11:31:07 +01:00
José Roberto de Souza 75e7cfcbe8 modules: flashparams: Change size to uint32_t
So flash sector of 64Kbyes and 128Kbytes can also be used.
2017-03-10 11:31:07 +01:00
José Roberto de Souza a2670bdbc8 modules: dataman: Move backend specific out of main routines 2017-03-10 11:31:07 +01:00
José Roberto de Souza 66d9d56525 modules: dataman: Share memory between backends
Also having just a boolean to track if backend is running.
2017-03-10 11:31:07 +01:00
José Roberto de Souza 6ce5807240 mavlink: Send message to control onboard camera as broadcast
The target was it self.
2017-02-25 19:03:45 +01:00
José Roberto de Souza 8d50249e8f ROMFS: common: Start aerofc_adc in AeroFC
Probably this was a merge error.
2017-02-23 22:37:01 +01:00
José Roberto de Souza ef228b82aa boards: AeroFC: Make it a memory constrained system
The maximum number of missions was increased in almost 8 times in
recent commit: 9369262e63 navigator: allow more mission items.

As this board loads missions in RAM, now it don't have enough memory
to allocate causing dataman start to fail, so mark it as a memory
constrained system and reduce the number of maximum missions
supported.
2017-02-23 08:26:42 +01:00
José Roberto de Souza b1c11b14a8 ROMFS: common: AeroFC: Do not start MAVLink over USB
STM32 pins are not exposed in AeroFC, so lets save some memory here.
2017-02-23 08:26:42 +01:00
José Roberto de Souza b372d15443 drivers: tap_esc: Fix low on stack warning
WARN  [load_mon] tap_esc_main low on stack! (284 bytes left)
2017-02-23 08:26:42 +01:00
José Roberto de Souza 172e218dbd Commander: Use leds to show PX4 status on AeroFC 2017-02-17 09:13:33 +01:00
José Roberto de Souza aa8fa2ae05 drivers: AeroFC: Add more leds
Also change the initial state of the leds to off.
2017-02-17 09:13:33 +01:00
José Roberto de Souza 83a387a553 drivers: Led: Do not initialize twice 2017-02-17 09:13:33 +01:00
José Roberto de Souza b7c53342dc ROMFS: AeroFC: Start dataman with RAM backend
AeroFC don't have a SD Card or any other storage device, so changing
dataman backend to work over RAM to be able to load missions.
2017-02-15 21:13:13 +01:00
José Roberto de Souza 37f73bb0ed ROMFS: aerofc: Only start logger with MAVLink support
AeroFC don't have SDCard to store logs.
2017-01-28 11:03:07 +01:00
José Roberto de Souza 340be986a6 ROMFS: aerofc: Switch from sdlog2 to logger
Logger have adds support of ULog over MAVLink and it will be used in AeroFC.
2017-01-28 11:03:07 +01:00
José Roberto de Souza 523688e43c aerofc: Reboot after crash 2017-01-24 00:06:12 +01:00
José Roberto de Souza 4142f1c9d5 aerofc: Disable BBSRAM and SAVE_CRASHDUMP support
This board don't have a SDCard to save crash dumps and it was causing
the board to get stuck into '[boot] There were %d reboots with Hard
fault that were not committed to disk - System halted', until user
connect to the serial console and clear the fault.
2017-01-23 22:10:38 +01:00
José Roberto de Souza 24f9a53f60 drivers: common: stm32: Do not call stm32_bbsram_savepanic() if not implemented 2017-01-23 22:10:38 +01:00
José Roberto de Souza 163bcc4bbc drivers: boards: Share board_crashdump() implementation 2017-01-23 22:10:38 +01:00
José Roberto de Souza 0b3fa7bfbb aerofc: Remove call to board_dma_alloc_init()
This commit will only remove the error message from serial console as
this board don't define BOARD_DMA_ALLOC_POOL_SIZE.
2017-01-23 22:10:38 +01:00
José Roberto de Souza 6bcf9266dc aerofc: Correctly enable UART driver for UART5(Telemetry port)
UART4 and UART5 are not USART instances.
2017-01-20 08:49:17 +01:00
José Roberto de Souza 53f2c1eb19 aerofc: Implement ADC
Measure the battery voltage of Aero RTF kit will be done by FPGA
and read by AeroFC using I2C bus.

The protocol is a little bit odd, it have different I2C slave
address for each "register", in future the FPGA RTL will
have a protocol more similar to other I2C sensors.

Also Aero RTF don't have a ADC line to measure current consumption.
2016-12-26 16:11:33 +01:00
José Roberto de Souza 126172d70c Aerofc: px4fmu_common: Only set AUTOSTART to 4070 if nothing was set
This way user can set aftwards any other AUTOSTART value and it will
not be overwritten.
Also move the block up and set SYS_AUTOCONFIG, this way if air frame
configuration was reset in ground station it will wipe the parameters
before load new ones.
2016-12-01 07:52:23 +01:00
José Roberto de Souza 9bb77adbec Aerofc: Fix and add more information about flash sectors 2016-12-01 07:52:23 +01:00
José Roberto de Souza 9befff1e79 aerofc: Add information about the flash usage 2016-11-28 09:21:12 +01:00
José Roberto de Souza 621a0fe492 aerofc: Enable IST8310 2016-11-28 09:21:12 +01:00
José Roberto de Souza 8fb15f1de8 aerofc: Enable I2C1 for external compass
For now it is only checking if there is a external HMC5883, if
necessary more compass should be added and probe.
2016-11-28 09:21:12 +01:00
José Roberto de Souza c49c3f469e aerofc: add upload command
AeroFC is updated by Aero board using the UART between AeroFC
and Aero board.

This script will copy firmware and px_uploader.py to Aero board and run
px_uploader.py with the correct paremeters. User only needs to have a
network connection (Ethernet over USB or WiFi) with Aero board to update
AeroFC firmware. The IP/hostname can be given by AERO_HOSTNAME
environment variable.
2016-11-28 09:21:12 +01:00
José Roberto de Souza 508c782bab mavlink: Add support for high speed baudrates 2016-11-28 09:21:12 +01:00
José Roberto de Souza 4943437327 aerofc: Set sensors rotation 2016-11-28 09:21:12 +01:00
José Roberto de Souza 873901c7cd aerofc: Sleep for some time to wait tap_esc startup
Or mixer load will fail
2016-11-28 09:21:12 +01:00
José Roberto de Souza 8f0322b8aa aerofc: Dirty hack to start mixer with the correctly output device 2016-11-28 09:21:12 +01:00
José Roberto de Souza 15c75ebb40 aerofc: Add autostart script
As ASC use a non-standard UART for mavlink it is necessary check for
the board name and set SYS_AUTOSTART to initialize mavlink on the
right interface otherwise there is no way to change the SYS_AUTOSTART.
2016-11-28 09:21:12 +01:00
José Roberto de Souza effdb37a2b aerofc: Fix UARTs configuration
Correct set pin mux and removed unused interfaces.
2016-11-28 09:21:12 +01:00
José Roberto de Souza 51f85858f2 aerofc: Power on sensors
MPU6500, MS5611 and HMC5883 only power on when GPIO_SENSORS_POWER is
set.
2016-11-28 09:21:12 +01:00
José Roberto de Souza 7ced5a1b6f aerofc: Remove unused GPIO configuration 2016-11-28 09:21:12 +01:00
José Roberto de Souza 0f9ad1c393 aerofc: Remove remaining code and macros of RGBLed 2016-11-28 09:21:12 +01:00
José Roberto de Souza 8788e2e81e aerofc: Remove ADC configuration
Battery voltage and current will be read in another way in future.
2016-11-28 09:21:12 +01:00
José Roberto de Souza e690af14d8 aerofc: fix I2C bus of MS5611 and HMC5883 2016-11-28 09:21:12 +01:00
José Roberto de Souza ef7c3b2174 aerofc: Fix SPI configuration
SPI bus 1 is the bus connected to MPU6500, so remove SPI bus 3 and 4.
Also remove everything else related to SPI that this board doesn't have.
2016-11-28 09:21:12 +01:00
José Roberto de Souza a1eec553dc aerofc: Remove unused modules 2016-11-28 09:21:12 +01:00
José Roberto de Souza b9728ecf39 Uploader tool: Add option to set different baudrates for bootloader and flight stack
By default the baudrate in flight stack (Mavlink or NSH) 57600 and the default
baudrate of bootloader is 115200. So we may need to set different
baudrates.
2016-10-05 11:25:14 +02:00
José Roberto de Souza 7e0946466e Uploader tool: Reboot board and keep it in bootloader
The Mavlink reboot messages was only requesting the board to reboot.
If the flashed bootloader has a small or no timeout user will
never be able to update firmware.
2016-10-05 11:25:14 +02:00