Home Page | Forum | Downloads | About us | Services | Products | Online Portal | Site Map | Contact Us

October 16, 2019, 09:16:49 AM *
Welcome, Guest. Please login or register.
Did you miss your activation email?

Login with username, password and session length
   Home   Help Contact Admin Team Search Login Register  

Radio Services

Supply Radios, Spare Parts, Programming Cables, Flash Adapters

Members area provides radio programming videos

If we have helped you, please make a donation, however small. This helps us develop the site and offer better services.


Pages: [1]   Go Down
Author Topic: Motorola Turbo (Xcmp/XNL/LRRP/ARS)  (Read 381 times)
0 Members and 1 Guest are viewing this topic.
Basic Account

FeedBack +1/-0
Offline Offline

Posts: 4

« on: August 12, 2019, 02:35:08 AM »

hi everyone,

I have just implemented (Xcmp/XNL/LRRP/ARS) protocols in java. I am also new to mototrbo,
but I could try my best to help people if they have some problems with those protocols.
I have upload my program to github.
Basic Account

FeedBack +0/-0
Offline Offline

Posts: 5

« Reply #1 on: September 23, 2019, 11:57:10 AM »

Hi xjapanseikima,

I am developing my own Vb.Net MotoTRBO application.
I want to create a Dispatcher that can display DMR communications and send commands to external radios.
So, I implemented the ARS, Location and TMS protocols and then I can: manage ARS registrations, send GPS commands and view GPS positions, send and receive text messages.
Since the Motorola documentation is very absurd / complex, to implement these protocols and speed up development, I converted the "* .lua" (dissector Wireshark) files provided by Motorola into Vb.Net code.
Everything works ... but I don't know if this is the right way to work and if problems will emerge in the future.

Now ... with my application, I need to also view calls, dialogs and be able to send commands (Call, Call Alert, Radio Check).
To do this, Motorola told me that I have to implement the XCMP protocol ... is that correct?
I already have the XNL / Delta key, but the XNL / XCMP protocol is even more complex than the others.
I tried to download the sample application "XcmpXnlSampleApp" provided by Motorola but it is incomplete.
Most of the decoding of the received events / communications is missing.
Do you suggest to convert Motorola XML / XCMP * .lua files like I did for other protocols? Are so many... Cry

Thank you
Best Regards

Basic Account

FeedBack +1/-0
Offline Offline

Posts: 4

« Reply #2 on: September 30, 2019, 11:17:36 PM »

hi mmjc23,
I am Alex,  you are in the right direction right on implement the XCMP/ XNL. About the "XcmpXnlSampleApp", I don't know about this program, so I can't give your further information, I figure it out all by myself.
So, now you have the key, you need to implement the TEA encryption. By using this encryption , then you can establish the connection between Motorola radio and your application.
And, sorry I am not familiar with lua file. But I can show you how the wireshark show all the process works with the screen shot.

XNL protocol will establish first then establish XCMP protocol, so the XNL protocol process (in your application) is like below
   receive_XNL_DEVICE_AUTH_KEY();// you will receive a data with an unencrypted key.
   send_DEVICE_CONN_REQUEST();//so in here you need to implement the TEA encryption and sent that message back to the Radio.

If you still have any question (I am sorry it might not answer clearly Embarrassed ), you can check the program I written in the github, or sending me the email, I will be glad to answer your questions
email: magican213@gmail.com
« Last Edit: September 30, 2019, 11:30:41 PM by xjapanseikima » Logged
Basic Account

FeedBack +0/-0
Offline Offline

Posts: 5

« Reply #3 on: October 08, 2019, 03:36:35 PM »

Hi Alex,
...and thanks for the answer.

I really think that the "XcmpXnlSampleApp" example software is incomplete...so, I cannot use its classes and then, I will have to develop my own XNL/XCMP wrapper.

But I can't understand a thing ...
If I open an XNL/XCMP connection with the radio, am I forced to implement the decoding and response to all types of XCMP messages received? Or can I implement the decoding and response of only the XCMP messages that interest me (Call Alerts, Dialogs, Calls, etc.)?

Thank you in advance
Best Regards
Basic Account

FeedBack +1/-0
Offline Offline

Posts: 4

« Reply #4 on: October 09, 2019, 12:19:39 AM »

Yes, it forced you to reply every message with ACK(acknowledgement) to the radio.
If you didn't reply to the Motorola radio,it will assume you did not receive it successfully.
You can check the manual XCMP-Based IP Capable Peripheral ADK Development Guide at page 15
The process is describe as below:
1)Your application sends a command to the Motorola radio.
2)Your application will receive this command's Ack from the radio
3)Your application will receive the reply from the Motorola radio.
4)Your application sends an Ack back to the Motorola radio.
5)Your application will receive the reply from the Motorola radio.

This is a complete process for every command.
So, if you missed the step 4, Motorola radio will send you step 3 twice. At this time, it will just stop there, until you reply the correct ack to the radio.
Basic Account

FeedBack +0/-0
Offline Offline

Posts: 5

« Reply #5 on: October 10, 2019, 03:04:52 PM »

Hi Alex,
... and thanks again for your reply.
Unfortunately I can't find the "XCMP-Based IP Capable Peripheral ADK Development Guide" document you are talking about.
In my Motorola reserved section, I find only the documents "XCMP / XNL Development Guide" and "XCMP / XNL Development Specification".

So should I decode all XCMP commands? Shocked
If, for example, I just want to view the received calls in my application, is it not enough to just decode and respond to "Signaling control commands"?
Do I still need to implement decoding and response to "User Input Commands", "Ergonomic Output Commands", "Menu Commands", etc. etc.?
But that's crazy!

Thank you very much Alex
Basic Account

FeedBack +1/-0
Offline Offline

Posts: 4

« Reply #6 on: October 12, 2019, 12:15:57 AM »

hi mmj23,
you are very welcome,
unfortunately, the answer is yes, you should reply the each message which sent from the motorola radio.

The reason is, in the reality, your radio will keep sending the XCMP message to your application.
For example, if you press the "PTT" button, the motorola radio will send the command to ur application.
So,at this moment, your application will be interrupted by the command, then you need to send back an ACK to confirm it.
(For each command, they need an ack. Except the ack).
If you didn't send back ack, the radio will stop at this moment until it get ack. So, during this time, you can't send any command.

Or!!! if your don't mind you need to reconnect your application again.. and you can guarantee there won't be any other radio influence your radio
then yea, you don't need to send back ack... (but it's really hard to have this thing happened in the reality)
In fact, you don't need to decode the complete message. You just need to decode some part of the message,
So, the below process is how I deal with each message once I get from the radio,
for each message:
  /*decode this message into an array or whatever data structured you like*/
  /*take a look at "MOTOTRBOTM XCMP/XNL Development Guide" of the  data structure.*/

    message=Decode( OPcode); // you don't need to decode it completely, but the comment below is the important parameter for sending back ack
   // message[0] , message[1] mentions the length of this command
   // message[2] , message[3] this is OPCODE,  X000B is command, X000C is ACK
   // message[5]   flag
   //message[10],message[11]// Trancation ID
          if(OPCODE== 0x0B) // you just need to take care of X000B
              byte ack[] = { (byte) 0x00, (byte) 0x0C, (byte) 0X00, (byte) 0X00C, (byte) 0X01, // Protocol ID
            (byte) message[5], // FLag
            (byte) RadioAddress[0], (byte) RadioAddress[1], (byte) MasterAddress[0], (byte) MasterAddress[1], //
            (byte) message[10], (byte) message[11], // Transaction ID
            (byte) 0X00, (byte) 0X00// payloadLeng
              sending back ack;
if you need it, I can send the "XCMP-Based IP Capable Peripheral ADK Development Guide" to you.
or I can send you the screen shot for my radio decode part, it's not that hard,
(I already upload all my code to github)
A quick question,
Did your application connect to the radio? That's  the fundamental part of this application
Pages: [1]   Go Up
Jump to:  

Home    Forum | Downloads | About us | Services  | Products | Online Portal | Site Map | Contact Us

Copyright 2008-2010 Motorola Radio Support Group. All Rights Reserved.

Google PageRank
Powered by MySQL Powered by PHP Powered by SMF 1.1.18 | SMF © 2013, Simple Machines | Sitemap Valid XHTML 1.0! Valid CSS!
Page created in 0.039 seconds with 23 queries.

Google visited last this page October 12, 2019, 04:17:22 AM