Git Product home page Git Product logo

Comments (10)

hemna avatar hemna commented on May 13, 2024

I found a workaround for the time being.

After getting the frame from aioax25, I force the control bit to False for the sender with

frame.header._source._ch = False

from aioax25.

hemna avatar hemna commented on May 13, 2024

For what it's worth, here is my patch on aprsd that uses aioax25. I have it working with tcpkiss and am testing it with serialkiss next.

aprsd <---> aioax25 <-- tcp kiss --> direwolf

from aioax25.

sjlongland avatar sjlongland commented on May 13, 2024

Okay, so that field marked CH in this code base can mean two different things:

  • In a source or destination call-sign/SSID, it's the "command" bit
  • In a repeater call-sign/SSID, it's the "has been repeated" bit

http://web.archive.org/web/20190522033714/https://www.tapr.org/pub_ax25.html#2.4.1.2

I set the bits according to what I understood from that part of the AX.25 2.0 specification. Clearly APRS is special. ;-)

from aioax25.

sjlongland avatar sjlongland commented on May 13, 2024

http://www.aprs.org/aprs11/C-bits-SSID.txt … took some digging, but this is where I got the idea that the destination call-sign should have a C bit set on the destination and cleared on the source.

Since bit also doubles as the has been digipeated bit when the field is used in a digipeater context, * gets appended anywhere the C/H bit is set.

In the bug report though, one can clearly see it's the source bit that's getting that C bit set… so ch=False is being passed in somewhere. Been a while since I looked at this code, so it might take some digging.

from aioax25.

sjlongland avatar sjlongland commented on May 13, 2024

@hemna I had a look at the code in aprslib and in aprsd… it would seem the problem is we really need a means of obtaining a frame in "TNC2 format" which could then be passed to aprslib.

Have a look at https://github.com/sjlongland/aioax25/tree/bugfix/issue-9-addr-ch-bit-set and in your code https://github.com/craigerl/aprsd/blob/master/aprsd/threads.py#L374-L375, you should be able to replace that with:

msg = frame.tnc2

from aioax25.

hemna avatar hemna commented on May 13, 2024

https://github.com/craigerl/aprsd/blob/master/aprsd/threads.py#L374-L375

awesome. I'll give that a try!

from aioax25.

hemna avatar hemna commented on May 13, 2024

This is what I got.

Traceback (most recent call last):
  File "/Users/i530566/.pyenv/versions/3.8.5/lib/python3.8/asyncio/events.py", line 81, in _run
    self._context.run(self._callback, *self._args)
  File "/Users/i530566/devel/mine/aprsd/aprsd/threads.py", line 376, in process_packet
    msg = frame.tnc2
AttributeError: 'APRSMessageFrame' object has no attribute 'tnc2'

from aioax25.

sjlongland avatar sjlongland commented on May 13, 2024

Strange… because APRSMessageFrame is a APRSFrame, which is a AX25UnnumberedInformationFrame

AX25UnnumberedInformationFrame defines the tnc2 property and get_tnc2() method.

Are you sure you pulled the right branch (bugfix/issue-9-addr-ch-bit-set)? Did you symbolically link aioax25's module directory into your project or run setup.py install to install the module in your library path?

from aioax25.

hemna avatar hemna commented on May 13, 2024

ah! I didn't pull the bugfix/issue-9-addr-ch-bit-set. branch. I tried that out and it's working.
I just set my message to frame.tnc2 and it's good to get decoded!

from aioax25.

sjlongland avatar sjlongland commented on May 13, 2024

No worries, I figured I'd try this first before I tried mucking with changing the C bits actually sent over the air. :-)

Half the problem with AX.25 is a lot of the standards were written about the time I was born or a few years after, and so getting documentation on them today can be sketchy. Then you have "de-facto standards" like "TNC2 format", which are seemingly undocumented.

Anyway, if it's working now, I guess we can close this unless we strike issues later. Many thanks.

from aioax25.

Related Issues (14)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.