Commit Graph

27 Commits

Author SHA1 Message Date
Beat Küng fdb92d4746 protocol_splitter: check available bytes before read()
This is to avoid blocking in any case.
If we don't do that, ioctl() may signal data available while the other
protocol does a read(), and when the first protocol tries to do a read(),
it would not have data anymore and would block (so this avoids a race
condition).
2021-08-22 10:42:13 -04:00
Beat Küng 5d1e78befb protocol_splitter: return correct FIONSPACE
This is now possible since we don't parse the protocol.
2021-08-22 10:42:13 -04:00
Beat Küng 6edb55c874 protocol_splitter: simplify write()
With the protocol header we don't need to parse the protocol anymore.
2021-08-22 10:42:13 -04:00
Beat Küng 868f9cebb0 protocol_splitter: return 0 when no data to read instead of -1
This avoids mavlink adding another usleep() due to read error
2021-08-22 10:42:13 -04:00
Beat Küng 375b014444 protocol_splitter: reduce poll timeout from 100ms to 10ms
This matches the timeout in mavlink_receiver.
With the higher timeout sending of e.g. mavlink logging was done at a lower
rate.
2021-08-22 10:42:13 -04:00
TSC21 f557fbc99f protocol_splitter: add perf counters for the stats so they can be logged 2021-08-12 08:44:53 +02:00
TSC21 5a75277ff1 protocol_splitter: update header length and payload length position
To match the change on the microRTPS message header, which adds the sys ID as the 5th byte of the header
2021-08-12 08:44:53 +02:00
Julian Oes cb2b09b80f protocol_splitter: implement with one read buffer
This is an attempt to implement the protocol_splitter with one
read buffer only. The idea is to prevent additional copy
operations from an incoming buffer to the respective protocol buffer.

Right now the benefit is not really there because we are not using a
ringbuffer and have to shift data around quite a bit.

We also try to parse and copy data to the reader immediately without
doing a read from the device which potentially takes 100ms.

We further use a timeout mechanism to prevent starvation if one reader
disconnects and the buffer would fill up from unread data.
2021-08-12 08:44:53 +02:00
TSC21 a67e66000e protocol_splitter: including magic number on XOR for checksum 2021-06-25 13:05:24 +02:00
Beat Küng 1c3f30be01 protocol_splitter: tcflush() uart before closing it 2021-06-17 09:40:57 -04:00
David Sidrane b399b8d5ea protocol_splitter:Track NuttX assert changes 2021-06-16 17:07:47 +02:00
Jari Nippula 04b7ee43bc protocol_splitter: Sp2Header defined as union (#17511)
Aligned with agent_protocol_splitter to make byte access easier
for checksum generation

Co-authored-by: Nuno Marques <n.marques21@hotmail.com>
2021-05-04 10:09:24 +02:00
TSC21 4f098a01bc drivers: protocol_splitter: some style updates 2021-04-29 11:57:35 +02:00
Jari Nippula 9980d2a556 Utilize header struct instead of control bytes directly 2021-04-29 09:37:48 +02:00
Jari Nippula 757f1df068 Protocol_splitter: 4-byte header with checksum 2021-04-29 09:37:48 +02:00
Jari Nippula 37f78537c3 protocol-splitter: Additional protocol layer added 2021-02-15 14:00:39 +01:00
Beat Küng 3198610f85 src/platforms: move all headers to platforms/common/include/px4_platform_common
and remove the px4_ prefix, except for px4_config.h.

command to update includes:
for k in app.h atomic.h cli.h console_buffer.h defines.h getopt.h i2c.h init.h log.h micro_hal.h module.h module_params.h param.h param_macros.h posix.h sem.h sem.hpp shmem.h shutdown.h tasks.h time.h workqueue.h; do for i in $(grep -rl 'include <px4_'$k src platforms boards); do sed -i 's/#include <px4_'$k'/#include <px4_platform_common\/'$k/ $i; done; done
for in $(grep -rl 'include <px4_config.h' src platforms boards); do sed -i 's/#include <px4_config.h/#include <px4_platform_common\/px4_config.h'/ $i; done

Transitional headers for submodules are added (px4_{defines,log,time}.h)
2019-10-30 11:48:47 +01:00
Daniel Agar 78ef8aab2d STACK_MAIN increase default 1024 -> 2048 2019-08-30 19:11:51 -07:00
Daniel Agar 0ff1effd98 protocol_splitter cleanup unnecessary Device CDev usage 2018-08-27 13:14:15 -04:00
Daniel Agar ea3acb7121 cmake remove circular linking and reorganize
- px4_add_module now requires MAIN
 - px4_add_library doesn't automatically link
2018-04-29 21:48:54 -04:00
Julien Lecoeur 9fb98dad3e Fix warning -Wimplicit-fallthrough 2017-12-05 22:51:43 -05:00
avinash-palleti 76fcd99241 Fix protocol_splitter compilation issues (#8230)
Fixing compilation warnings which are treated as errors.
2017-11-03 15:35:46 +05:30
Beat Küng dd98ed565e protocol_splitter: fix type comparison 2017-10-04 14:13:14 +02:00
Mark Charlebois 2ed2403d04 Improved comment language
Signed-off-by: Mark Charlebois <charlebm@gmail.com>
2017-08-01 22:32:43 +02:00
Mark Charlebois 049c769293 Converted cxx to cpp
Signed-off-by: Mark Charlebois <charlebm@gmail.com>
2017-08-01 22:32:43 +02:00
Mark Charlebois b19dc0650e Fixed format issues and missing micro-CDR in a config file
Signed-off-by: Mark Charlebois <charlebm@gmail.com>
2017-08-01 22:32:43 +02:00
Vicente Monge c85039e413 Fixing rebase conflicts 2017-08-01 22:32:43 +02:00