Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support feeding through pilot events to FLARM or other IGC loggers. #4

Open
realtimepeople opened this issue Jan 30, 2024 · 6 comments

Comments

@realtimepeople
Copy link
Contributor

In competitions pilots need to be able to set a "Pilot Event Marker" and record it using their IGC-logger. If the logger is a Power-FLARM, a NMEA-Sequence "$PFLAI,PILOTEVENT*..." shall to be sent to it.

If such an event is declared using a XCsoar frontend, the event shall be published (also via CAN bus) and fed to any wired FLARM device.

The Vario-Display shall also be enabled to trigger such an event.

@MaxBaex
Copy link
Member

MaxBaex commented Jan 30, 2024

relates to larus-breeze/sw_sensor#19

@MaxBaex
Copy link
Member

MaxBaex commented Feb 1, 2024

In the first step, I would transmit the serial NMEA strings transparently via the CAN. I would only interpret the content if necessary. For example, if the front end receives a display for a Flarm radar. The sensor does not need to understand Flarm, MacReady etc. at all. The frontends should always understand, evaluate and apply incoming NMEA commands (MacReady, water balance, pilot weight, ...) from an XCSOAR. Question: How do you configure the outgoing NMEA data in our system to a connected (FLARM, radio, XCSOAR, or similar....) ? Use case: Two-seater with 2 front ends. The radio is connected to the front end and the FLARM to the rear. Simple: Both frontends stream their incoming NMEA data to the CAN. Which incoming data from the CAN is forwarded to FLARM or the radio? We also need auto baud rate detection I think.

I agree with that. Simply route the ASCII data through, but it must be clear what it is on the CAN bus.

We still have to determine how this is to be configured. It would be conceivable using a toml file that is either on the SD card or is transmitted via CAN bus. I would like to use a standardized format such as toml, as there are editors for this and it is clear how to enter it. These self-defined formats are problematic because they are not specified. I also find structuring a la toml useful. toml files are very similar to Windows ini files, easy to interpret. You can limit the vocabulary.

For example, you only allow ints, floats with . representation and strings. That is enough for us. Horst has provided an example of how not to do it with his fzt files.

@MaxBaex
Copy link
Member

MaxBaex commented Feb 1, 2024

Enhance:
https://github.com/larus-breeze/doc_larus/blob/master/documentation/can_details/object_directory/gps.md and
https://github.com/larus-breeze/doc_larus/blob/master/documentation/can_details/services.md

Transfer of Binary Data Blocks maximum 64*4 448Byte

  • Transfer of Binary Data Blocks confirmed > 448 Byte. Confirmation through recepient every 448 Bytes. Describe process in services.md with some more text.

Add "Kind of Data" and Describe Bit Location. Last data could be removed as the receiver can count down during reception.

XCSOAR-NMEA is converted to CAN in the connecting LARUS Unit.

Other NMEA Data (e.g. FLARM) is not interpreted but transparently tunneled as a generic data block (no conifirmation).

@MaxBaex
Copy link
Member

MaxBaex commented Feb 5, 2024

Transfer of Binary Data Blocks is described on two locations:
https://github.com/larus-breeze/doc_larus/blob/master/documentation/can_details/object_directory/gps.md
https://github.com/larus-breeze/doc_larus/blob/master/documentation/can_details/object_directory/vario_display.md
why?

Example: Some device with the dynamic id X offers a firmware image on the bus. Another device id Y can now request this image? Y requests the image from X. X sends the first blob of 448 Byte data waits for the confirmation from Y and then sends the next 448 Bytes? I think a sequence diagram could be helpful to describe the process.
The devices use their dynamic ids for all communication.

Can Device X send a firmware image to multiple devices simultaneously and track both responses before sending the next 448 Byte blob? A request package frame from the device with dynamic id Z binds the response to the id Z?

@Simsys
Copy link
Member

Simsys commented Feb 6, 2024

Enhance: https://github.com/larus-breeze/doc_larus/blob/master/documentation/can_details/object_directory/gps.md and https://github.com/larus-breeze/doc_larus/blob/master/documentation/can_details/services.md

Transfer of Binary Data Blocks maximum 64*4 448Byte

  • Transfer of Binary Data Blocks confirmed > 448 Byte. Confirmation through recepient every 448 Bytes. Describe process in services.md with some more text.

Add "Kind of Data" and Describe Bit Location. Last data could be removed as the receiver can count down during reception.

XCSOAR-NMEA is converted to CAN in the connecting LARUS Unit.

Other NMEA Data (e.g. FLARM) is not interpreted but transparently tunneled as a generic data block (no conifirmation).

That's correct

@Simsys
Copy link
Member

Simsys commented Feb 6, 2024

Transfer of Binary Data Blocks is described on two locations: https://github.com/larus-breeze/doc_larus/blob/master/documentation/can_details/object_directory/gps.md https://github.com/larus-breeze/doc_larus/blob/master/documentation/can_details/object_directory/vario_display.md why?

Example: Some device with the dynamic id X offers a firmware image on the bus. Another device id Y can now request this image? Y requests the image from X. X sends the first blob of 448 Byte data waits for the confirmation from Y and then sends the next 448 Bytes? I think a sequence diagram could be helpful to describe the process. The devices use their dynamic ids for all communication.

Can Device X send a firmware image to multiple devices simultaneously and track both responses before sending the next 448 Byte blob? A request package frame from the device with dynamic id Z binds the response to the id Z?

I think we need to discuss this again, as I can't fully grasp it. It might make sense to describe the process as a specification. Then we have something concrete that we can talk about.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants