-
Notifications
You must be signed in to change notification settings - Fork 49
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
Session ID Support? #124
Comments
You are right, with the current code it is not possible. My idea is to submit a PR where there is a flag in the option parameter that indicates whether you want to store the received Basic ID data as parameter (or not). If it is set, it would only broadcast the received basic ID. With this PR it would be possible. I aim to get it implemented before the end of next week. (I had this idea already for some time, too busy to have it done.) |
That would be my solution as well. Perhaps a solution where flag(s) could be set to signal the configuration of the Basic IDs independently? That way a manufacturer could set Basic ID 2 to be the Serial Number of aircraft and locking it (its not affected by the whole dynamic fill) and could fulfill the anti-tamper requirement of the US MOC. This would also provide a good fallback if no Session ID is set/found in Basic ID 1 to a Serial Number burned in to Basic ID 2. I'm sure the CAAs would rather have something broadcast rather than nothing. Japan is the only CAA that I am aware of that requires two UAS IDs to be sent (Serial Number and CAA Assigned). Wonder how that will work out if Session IDs are allowed in the NAS. |
So, I finally implemented the PR: #125 W.r.t. to Basic ID 2 and Basic ID 1, although it is implemented as parameters using 1 and 2, from a standard perspective, a receiver can receive Basic ID 2 as 1 and vice versa.
So here you can lock Basic ID 1, but use the streamed BasicID info as Basic ID 2. This is already the current functionality. If the option is set in this PR, it will use the received Basic ID info only. This can be 1 or 2 different BasicID info. |
I realized this after a bit more experimentation with our setup. Your PR looks good. Now I just need to figure out why half of my Session ID is being displayed as "0"s. |
Do you use Mission Planner? If so, please try QGC. In the past in some occasions, Mission Planner considered entered basicID data as integer and not as string. |
I'm actually using the Python3 library directly to build the ODID messages and sending them over serial to the ESP32. |
So what I found is rather interesting and figured I'd share before re-beating my head against my cubical wall. If I send to the C3 the Session ID of "01656667686970717273747576788980818283" all works wonderfully. Adding some debug prints I find that I have done some permutations and as long as the the 4th byte in the Session ID is not 0 everything works. I am greatly disturbed and mythed. Edit: adding some more confusion looks like if there is a 0x00 anywhere the UAS ID is terminated there - what could be causing it to terminate on 0 since we are using |
I found the issue. Looks like ODID uses a This |
Just a quick update here for this with my findings thus far. The latest of ODID (a64611d) now has the required fix that treats ID Types properly. It uses In this quest I also found that As such any time a UAS ID is handled Should some changes be rolled into #125 to correct this? |
This is a question I ask after experimenting with this code and a particular behavior made me question how Session IDs would be supported with this firmware (without modifications with my current understanding).
The current code checks if their is Basic ID data persisted in the parameters and pulls from this to fill in the UAS data structure. This can be filled by hard-coding it at compile time or be filled in dynamically with the first Basic ID message obtained via DroneCAN or MAVLink (only when the parameter is empty to begin with). Note this dynamic fill only happens with Basic ID 1, not Basic ID 2 which seems to have its parameter settings only be hard-coded.
From F3586-22:
If a user is to use a Session ID then the Serial Number should, at least by my reading of this statement, never be broadcast as it is considered something that has "access limited to authorized parties only, through a system and process accepted by the FAA".
With the current code setup the first Session ID seen over external transport would be filled in permanently and be re-used until the system is re-flashed or have its parameter cleared (only possible via DroneCAN with strings).
Is there a desired way to accomplish the goal of F3586-22 without having to modify the code or have the external system connect and clear the parameter?
The text was updated successfully, but these errors were encountered: