Thought I'd take some time to update the status of this project. I've been working here and there in my free time on a few new features and/or improvements, and I'll share a few of the points here. I'm going to take my time in this phase, and try not to rush the code to Github right away, try to offer a bug free experience going forward with the releases...hopefully.
Pretty Pretty Colors
Seriously...Any sort of actual maybe important data will be highlighted with colors from now on, make it easier to spot in otherwise dull and monotonous console/log output. If anybody has any input as to whether or not certain colors work well needs to let me know,
I know some color combinations don't work well together, and also colorblind individuals may not be able to read certain text on certain background. Anybody feel free to chime in and let me know. I'm also kind of bound to using certain colors, terminal output doesn't exactly have a wide range of selection readily available.
Seriously...I really even call it that in the source code...
Code:
//pretty pretty colors
#define KNRM "\x1B[0m"
#define KRED "\x1B[31m"
#define KGRN "\x1B[32m"
#define KYEL "\x1B[33m"
#define KBLU "\x1B[34m"
#define KMAG "\x1B[35m"
#define KCYN "\x1B[36m"
#define KWHT "\x1B[37m"
Alias Headers and Blocks
I've mentioned I was working on this before, but don't recall mentioning it was in working order. I have the Alias Headers and Blocks decoding while running the NCurses terminal and outputting to the log.
3/4 Rate Data Decoding
Its still a work in progress, but finally, I've been able to get some expected output from the Trellis decoder I've borrowed from the
MMDVMHost with a little bit of reworking for DSD-FME. I should also take this time to mention I've seperated the data decoding for 1/2 rate and 3/4 rate loading into seperate superframes according to which slot they reside in, so they don't collide and mangle, here is an example of 3/4 rate data decoding coming in slot 1 and slot 2 but decoded.
Just ignore that extra velocity measurement...little quirks to work out still..
I've also got ASCII dumps, I know, there is a few bits that specify whether its UTC-8 or ASCII or otherwise, in the future I'll weed those out as well, but virtually, it'll be about the same output. I had a good friend in Israel submit a sample to me of 3/4 rate data showing the coordinates in the ASCII interpretation of the 3/4 rate data.
Code:
Full 3/4 Rate Trellis Payload
[01][62][01][88][08][B0][03][00][2D][0A][00][00][3D][02][41][31][38][32]
Hex to Ascii - .b......-...=.A182
23:23:48 Sync: +DMR slot1 [slot2] | Color Code=04 | (CRC OK ) | Slot idle
23:23:48 Sync: +DMR [slot1] slot2 | | (CRC OK ) | RATE 3/4 DATA
Full 3/4 Rate Trellis Payload
[03][22][35][33][37][32][34][30][32][32][32][4E][33][31][34][37][28][35]
Hex to Ascii - ."537240222N3147(5
23:23:48 Sync: +DMR slot1 [slot2] | Color Code=04 | (CRC OK ) | Slot idle
23:23:48 Sync: +DMR [slot1] slot2 | | (CRC OK ) | RATE 3/4 DATA
Full 3/4 Rate Trellis Payload
[04][1A][35][32][3A][00][23][0A][20][E0][00][18][AE][51][82][E3][08][2E]
Hex to Ascii - ..52:.#. ....Q....
23:23:48 Sync: +DMR slot1 [slot2] | Color Code=04 | (CRC OK ) | Slot idle
23:23:48 Sync: +DMR [slot1] slot2 | | (CRC OK ) | RATE 3/4 DATA
Full 3/4 Rate Trellis Payload
[06][92][30][31][31][30][D4][03][80][00][40][00][00][00][C7][00][5C][85]
Hex to Ascii - ..0110....@.....\.
23:23:48 Sync: +DMR slot1 [slot2] | Color Code=04 | (CRC OK ) | Slot idle
23:23:48 Sync: +DMR [slot1] slot2 | | (CRC OK ) | DATA Header
LRRP Control ACK - Source: 61 Destination: 100
I'm told the string "537240222
N3147.5 should be conveying coordinates. Admittedly, I'm still working out the error correction for 3/4 rate data, I'm currently cheating the path metrics and not going through ALL OF THEM. So, once the bits start to slip on 3/4 rate data, chances are the data for that frame will be bad, but its better than it was before and kind of works now. Certainly something I plan of getting back to and getting to work fully.
Well, with that being said, and those with a keen eye may have noticed already in a previous screenshot, I've been working on the big thing. I know this seems like a duh thing, considering that that should be in there, but to be honest, I haven't seen a version of the original DSD actually ever implement this, nor the super popular version of DSD on Github that shall go unnamed...from France...but yeah, I got it working...
DMR Stereo TDMA
Yeah, I know, surprising right? Not many people realize this, but the original DSD project never had anything but single channel 8Khz audio, and also couldn't properly handle voices in both slots simultaneously. Older projects would just run them all together and just a bunch of unintelligible audio would result, and later projects just locked onto the voice frame sync and then skipped the next TDMA frame until all six VC frames played out, missing out on the other slot entirely. I've got a working prototype of Stereophonic TDMA working inside of the DSD code. Considering every other project already does this besides the open source DSD and its variants, its finally good to finally catch up on a seemingly expected feature for DMR decoding.
Since screenshots won't work, I'll just link yet another half-*** YouTube video so you can see for yourself. Skip to 4:20 *ba dum tiss*, missed it by just a couple days, if you want to skip directly to the dual voice stereo audio portion. Headphones might help.
Again, everything in this update is still a work in progress, and hasn't make it to the Github page just yet, but when I feel good about the current code and have it tweaked and fixed up to my liking I'll publish it. There may even be a few Easter Eggs involved if you check it out close enough..who knows.
. eBay Prisca Vicky.
So, that leaves just one last point.
Why?
Why bother, right? Sometimes I even ask myself that. I really have no idea the user base I've aquired yet, but I expect it to be in the single digits at best. To be honest, I'd rather learn about a hobby, and share what I've learned. In this case, its the raw source code, experience, and software I've worked on and compiled that maybe somebody maybe might will use. That's an easier answer for me than simply answering with 'Pay $25 Dollars and ask a forum for customer support" and then become persona incognito. If you need help with my project, I don't expect you to ask a forum, I hope you'll ask me directly, I'm always more than willing to go out of my way to help people as best as I can. I learned a long time ago, from my very first job, we don't sell computers, we don't sell contracts, we sell 'service'. I still believe in that today, and I'm not even trying to sell this thing. I also see that exact same example on this forum all the time with three individuals who inspire me to keep going through their projects and actions. Boatbod, KA1RBI (Maxx) and DSheirer. Not only do they open source their projects, they even directly answer and help people on this forum all the time.
Aside from that, I just think its a cool project to share, and I feel passionate about projects like this that I work on. I like to make things better (hopefully) than it was before. Even if somebody just pops in and learn something new, or learns from mistakes I've made, that's good enough for me. I know the project isn't perfect, its never going to be, but I at least want it to be a viable simple solution for Linux Desktop Users.