Commit Graph

98 Commits

Author SHA1 Message Date
Daniel Agar 450229c2a4 dataman operations table is constexpr 2018-04-03 18:37:51 -04:00
Daniel Agar 916d6a15fd Mission merge offboard + onboard and simplify 2018-01-14 12:53:53 +01:00
José Roberto de Souza 239de7191f dataman: Prevent database corruption
The size in g_per_item_size[item] is the real struct size
+ DM_SECTOR_HDR_SIZE bytes of header and the backend functions were
not taking in care it. So a call to dm_write() with more bytes than
the real struct is allowed, causing corruption in the header of the
next item.

Kudos to jeonghwan-lee for finding it. https://github.com/PX4/Firmware/issues/7927
2017-10-16 23:38:03 +02:00
Beat Küng c82deaf26f dataman: fix test for return value of px4_task_spawn_cmd
And destroy the semaphore if startup fails.

Credits for finding this go to @jeonghwan-lee
2017-09-11 02:04:27 -07:00
Daniel Agar 9b5fe8c476 ignore -Wsign-compare per module 2017-09-07 10:27:36 +02:00
Beat Küng a2ef611a30 dataman: improve error reporting 2017-08-04 18:08:51 +02:00
Beat Küng 72501df88e dataman: add dm_trylock & add lock for FENCE_POINTS items 2017-08-04 18:08:51 +02:00
Beat Küng c4cdaa48e0 dataman, mission_feasibility_checker: remove unneeded uorb includes 2017-08-04 18:08:51 +02:00
Beat Küng b9cddfb75b dataman: account for new geofence & rally point structs 2017-08-04 18:08:51 +02:00
Beat Küng 52ca49c682 geofence: remove fence & fence_vertex messages
- this was never read
- it was implemented wrong, leading to memory access violations in
  publishFence (an integer was passed instead of the fence_s struct)
2017-08-04 18:08:51 +02:00
Beat Küng 0949599f0a dataman: fix compilation error
error: invalid conversion from ‘int’ to ‘dm_item_t’
and
error: no ‘operator++(int)’ declared for postfix ‘++’
2017-07-14 11:57:11 +02:00
Beat Küng cf5df4489f dataman: extend module documentation 2017-07-14 11:57:11 +02:00
Beat Küng 318c4497bd dataman: fix typo 2017-07-14 11:57:11 +02:00
Beat Küng 28e5268497 dataman: rename to .cpp & add module documentation 2017-07-14 11:57:11 +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 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 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
Julian Oes 8c1e85a65f dataman: don't wrap around at 256
The dataman started overwriting contents after 256 items because the
item index were only uint8_t. This fix allows for more than 256
waypoints.
2017-02-15 22:29:24 -05:00
wangxdflight b693e29d64 enable px4 flight for excelsior(legacy) 2017-01-16 08:25:58 -08:00
Daniel Agar 751909cd4e clang readability-braces-around-statements (#6298) 2017-01-11 17:01:51 -05:00
Daniel Agar b4da337cd4 test coverage cleanup
- dataman clean exit code
 - unit test proper cleanup
 - add some level of simulated sensors for tests
 - delete unused test/standard_vtol
2017-01-03 04:00:41 -05:00
Lorenz Meier 78f00368c5 Dataman: Be less verbose on start to clutter shell output less 2017-01-01 13:59:41 +01:00
Lorenz Meier f72b439fd5 Dataman: Header cleanup 2016-12-27 21:00:51 +01:00
David Sidrane c9f10107c0 Nuttx Upgrade:Adds sem_setprotocol 2016-12-21 08:34:21 +01:00
Lorenz Meier 5ddd69c872 Dataman: Make versioning define more explicit 2016-10-23 16:26:03 +02:00
Lorenz Meier c7cdef2a4b Clarify version flag for dataman 2016-10-23 16:26:03 +02:00
Lorenz Meier 0a4fedd778 Dataman: Use single method to infer file compatibility 2016-10-23 16:26:03 +02:00
Lorenz Meier 9e7d5f088e dataman: Ensure compat field is set and read correctly 2016-10-23 16:26:03 +02:00
Lorenz Meier ff0d7613b1 Add manual seed to dataman hash to allow later incrementing the seed number for incompatible changes 2016-10-23 16:26:03 +02:00
Lorenz Meier db774798fa Dataman: Store sizes of all containers and reset file if any of them changes. 2016-10-23 16:26:03 +02:00
Lorenz Meier c2285c84a9 Dataman: Do nnot pack structs to avoid reading back wrong values on existing systems 2016-10-18 00:26:40 +02:00
David Sidrane ecbe8c2179 Packed union to save more space 2016-10-18 00:23:58 +02:00
David Sidrane b2bf9e15eb Use union of datatypes supported by dataman to reduce wasted space 2016-10-18 00:23:58 +02:00
David Sidrane 44b5b52bcb Add suport for Memory Constrained systems 2016-10-18 00:23:58 +02:00
David Sidrane 24e20b2cec Changed public interface comments to Doxyagen style 2016-10-18 00:23:58 +02:00
David Sidrane dce2262243 Add in RAM storage to dataman 2016-10-18 00:23:58 +02:00
Julian Oes 8ff237c69f Remove size optimization for individual modules
It makes more sense to set the optimization flags on a platform basis
instead of individually for each module. This allows for different
optimization options for SITL, NuttX, Snapdragon, etc.
2016-09-30 08:11:51 +02:00
Julian Oes a39124a10d dataman: make it less chatty
- Removed a couple of unneeded printfs.
- On POSIX it shouldn't warn if it's not a multiple of the
  block size.
2016-06-07 22:10:56 +02:00
Julian Oes 3a8d242576 dataman: get path for Snapdragon right 2016-05-14 11:21:44 +02:00
James Goppert 967e4dd127 Modified cmake to use STACK_MAX and STACK_MAIN 2016-04-14 13:36:36 -04:00
Lorenz Meier 6e8f563d27 dataman: Do not reset mission file on each reboot 2016-02-11 18:40:18 +01:00
Lorenz Meier b6c4501d0e Adjust data size of dataman to force reset of all existing user data 2015-12-02 09:15:37 +01:00
Lorenz Meier a0bfd3a5bf Dataman: Remove excessive stack allocation 2015-10-10 22:23:34 +02:00
Lorenz Meier 228cc8844e Dataman: Lower scheduling priority 2015-10-10 16:02:29 +02:00
Lorenz Meier 73fabc2b4d dataman: Limit variable scope 2015-10-07 16:30:24 +02:00
Lorenz Meier fa5071b3c5 Remove module.mk files to prevent confusion of adopters upgrading 2015-10-06 11:23:20 +02:00
Lorenz Meier fa27e59ac4 dataman: Move to semaphore abstraction 2015-09-20 00:28:39 +02:00
James Goppert 1d6b31d196 Switch to cmake build system. 2015-09-07 20:37:45 -04:00