New to YAMCS

515 views
Skip to first unread message

john segula

unread,
Aug 26, 2021, 10:33:36 PM8/26/21
to yamcs
Hi all,

I'm just getting started with YAMCS. It's a great tool and I was able to go through the quick start without any issues (https://yamcs.org/getting-started). I'm trying to get an initial project working where I have a raspberry pi listening to a YAMCS server so I can send commands to it. However, I'm pretty confused about how I'm supposed to process commands after they're sent. 

For example, the quick start tutorial uses the "simulator.py" script to open up a connection and listen for commands. When I send a command, like "SwitchVoltageOn" from the quick start guide, the script receives a byte string that looks something like this "b'\x10e\xc0\x01\x00\x03\x00\x02\x00\x03'" and the resulting hex looks something like this: "1065c001000300020003". 

How am I supposed to process this so that my script/device knows that YAMCS sent the "SwitchVoltageOn" command with a value? Can anyone offer some advice or reading material for how I'm supposed to process these commands so I can do stuff with them after my device has received one?

Nicolae Mihalache

unread,
Aug 27, 2021, 6:00:54 AM8/27/21
to ya...@googlegroups.com
Hi John, welcome to Yamcs:)

What do you try to achieve?

The quick start tutorial is setup using binary telemetry and commands similar to what most spacecraft do (in order to save bandwidth).

The command description is in the src/main/yamcs/mdb/xtce.xml file in XTCE format. If you look at that file you will see that the data you receive is composed by a 6 bytes CCSDS header (1065c0010003) followed by a 
2 bytes packet id (0002 = SwitchVoltageOn) followed by a 2 bytes Battery (0003 in your case).

If you want to find out more about XTCE, please read this:

If you want to find out about the CCSDS header and packets you can read this:

But I'm not sure your interest is related to space; if it's not you don't need to follow those standards.

Yamcs could in theory send the command to the rasberry just as json; currently no TC link does that but is doable;

So let us know what you want to achieve and then we can see how to proceed.

nicolae



--
You received this message because you are subscribed to the Google Groups "yamcs" group.
To unsubscribe from this group and stop receiving emails from it, send an email to yamcs+un...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/yamcs/d73a03d2-23ee-481e-8645-3a5d1c9bfb6en%40googlegroups.com.

john segula

unread,
Aug 27, 2021, 2:59:33 PM8/27/21
to yamcs
Hey Nicolae,

This is definitely what I was looking for. Basically at the moment I want to get a raspberry pi running NASA cFS and connect it to Yamcs. I'll read up more on CCSDS and go from there. 

Thank you for the help!

M Ashwin Srivaths

unread,
Dec 8, 2023, 1:43:15 AM12/8/23
to yamcs
Hi all,
I was able to understand the answer to the above question wrt quick start (https://yamcs.org/getting-started). But I have the same question wrt the source project (https://github.com/yamcs/yamcs.git).
I was able to trace the code to MetaCommandContainerProcessor.java where in a for loop, we loop over container.getEntryList() and generate the basic binary array( [8, 100, -64, 0, 0, 0, 0, 0, 0, 0, 0, 106, 0, 0, 0, 2, 3]) but it is only a part of what is sent ([8, 100, -64, 1, 0, 13, 82, -100, -120, 62, 53, 106, 0, 0, 0, 2, 3, 0, -37, -72]).
The first array can be understood form the excels data which is what is used to create it... but from where is the extra data coming before sending it in the TcpTcDataLink.java uplinkCommand function.

Also I am new to streams and YAMCS. Do you have any suggestion on how a new person in a big project could easily understand the flow of any given stream and understand about all the listeners and modifiers of the stream.
Reply all
Reply to author
Forward
0 new messages