3
$\begingroup$

I am looking for a Mic-E APRS encoding routine that is available for reuse in free and opensource software.

I found many libraries and open source software offering Mic-E decoding, but never encoding. The old and renowned TinyTrak did Mic-E encoding, but its firmware appears to be closed source.

I will eventually use C++, but the programming language being used does not matter much. The routine can always be transcoded. Thanks!

$\endgroup$
5
  • 1
    $\begingroup$ The APRS Python library found via the link in your Question supports encoding, though it may not support the entire spec. Mic-E is one of the encodings discussed in the documentation. $\endgroup$
    – user21417
    Apr 15, 2022 at 3:01
  • $\begingroup$ @jdv aprs-python sure contains a Mic-E parser, which is synonymous for decoder, but I cannot find any encoder. $\endgroup$
    – on4aa
    Apr 16, 2022 at 22:37
  • $\begingroup$ github.com/rossengeorgiev/aprs-python/issues/21 $\endgroup$
    – user21417
    Apr 17, 2022 at 2:44
  • $\begingroup$ I don't I understand what you want here. What do you want to achieve that requires an "encoder"? Send or receive does not require explicit encoding at the API level. I have a feeling most implementations are going to rely on building up strings and then passing that to the API that then does whatever it needs to. A Builder model could be designed to build up (parameterized or not) APRS frames, but APRS is simple enough that concatenating strings would work just as well. How would you use such an encoder? Maybe edit the Q and let us know the problem you are trying to solve. $\endgroup$
    – user21417
    Apr 19, 2022 at 15:12
  • $\begingroup$ Closed at the request of the OP $\endgroup$
    – Scott Earle
    Apr 25, 2022 at 1:34

1 Answer 1

0
$\begingroup$

If the programming language does not matter that much and you are looking for a precedure to encode MIC-E information, please refer to the APRS Specification document for details. APRS Protocol Reference ver.1.0

Chapter 10 describes the procedure to encode and decode MIC-E information. This can be written in any programming language, which allows binary operations.

Please note that to encode MIC-E position AX.25 destination address is used.

Edited: Because you did not like my answer, below you can find what easily can be understood from the mentioned above specifications if you do a binary analysis of provided example:

MIC-E Destination Address: "S32U6T" = 33 deg 25.64 min N, Western hemisphere, with longitude offset +0 degrees with message: Standard 1/0/0 = M3: Returning

+------+------------------------------------------------------------------------
| byte | char   Hex  Bits           Dig
| num  |             7 654 3210
+------+------------------------------------------------------------------------
|  1   |  S    [53] [0 101 0011]    3
|  2   |  3    [33] [0 011 0011]    3
|  3   |  2    [32] [0 011 0010]    2
                       ^   ^
                       |   Digit [0...9]
                       Message Bit A, B, C

|  4   |  U    [55] [0 101 0101]    5
                       ^
                       North

|  5   |  6    [36] [0 011 0110]    6
                       ^
                       longitude offset +0 degrees

|  6   |  T    [54] [0 101 0100]    4
                       ^
                       West
+-------------------------------------------------------------------------------
$\endgroup$
3
  • $\begingroup$ I should have mentioned that I am intimately acquainted with the above mentioned APRS specification. However, at least course, speed and altitude are only specified as a decoding example and not as an encoding algorithm. Furthermore, MIC-E works with lookup tables, which implementation is not self-evident. Hence, I cannot accept this as an answer. $\endgroup$
    – on4aa
    Apr 16, 2022 at 16:14
  • 1
    $\begingroup$ @on4aa the tables are the whole thing. e.g. for a latitude of 12 34.56 N you create the TOCALL by encoding "123456" as ASCII, and then you use the tables to replace those digits... Say the message is "En Route", that means message bits A and B are "1 (std)" so you look at the table and see that 1 and 2 are replaced by Q and R, and the latitude is North, which is encoded in byte 4, so 4 is replaced by T and the result is "QR3T56". $\endgroup$ Apr 19, 2022 at 19:07
  • 1
    $\begingroup$ @on4aa it's certainly not true that it's "only a decoding example". $\endgroup$ Apr 19, 2022 at 19:10

Not the answer you're looking for? Browse other questions tagged .