"use strict";(self.webpackChunkdocs_openc3_com=self.webpackChunkdocs_openc3_com||[]).push([[5989],{4312:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>a,contentTitle:()=>o,default:()=>h,frontMatter:()=>l,metadata:()=>s,toc:()=>d});var t=i(1085),r=i(1184);const l={title:"XTCE Support"},o=void 0,s={id:"meta/xtce",title:"XTCE Support",description:"COSMOS now has support for the XTCE Command and Telemetry Definition Standard. This is an open standard designed to allow command and telemetry definitions to be transferred between different ground systems. COSMOS can run directly using the .xtce files, or can convert them into the COSMOS configuration file format.",source:"@site/docs/meta/xtce.md",sourceDirName:"meta",slug:"/meta/xtce",permalink:"/tools/staticdocs/docs/meta/xtce",draft:!1,unlisted:!1,editUrl:"https://github.com/OpenC3/cosmos/tree/main/docs.openc3.com/docs/meta/xtce.md",tags:[],version:"current",frontMatter:{title:"XTCE Support"},sidebar:"defaultSidebar",previous:{title:"Philosophy",permalink:"/tools/staticdocs/docs/meta/philosophy"},next:{title:"OpenC3, Inc. Privacy Policy",permalink:"/tools/staticdocs/docs/privacy"}},a={},d=[{value:"Running COSMOS using an .xtce definition file",id:"running-cosmos-using-an-xtce-definition-file",level:2},{value:"Converting a .xtce file into a COSMOS configuration",id:"converting-a-xtce-file-into-a-cosmos-configuration",level:2},{value:"Converting a COSMOS Configuration to XTCE",id:"converting-a-cosmos-configuration-to-xtce",level:2},{value:"High-level Overview of Current Support",id:"high-level-overview-of-current-support",level:2},{value:"Supported Elements and Attributes",id:"supported-elements-and-attributes",level:2},{value:"Ignored Elements",id:"ignored-elements",level:2},{value:"Unsupported Elements",id:"unsupported-elements",level:2}];function c(e){const n={a:"a",code:"code",h2:"h2",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,r.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(n.p,{children:["COSMOS now has support for the ",(0,t.jsx)(n.a,{href:"https://www.omg.org/xtce/index.htm",children:"XTCE Command and Telemetry Definition Standard"}),". This is an open standard designed to allow command and telemetry definitions to be transferred between different ground systems. COSMOS can run directly using the .xtce files, or can convert them into the COSMOS configuration file format."]}),"\n",(0,t.jsx)(n.h2,{id:"running-cosmos-using-an-xtce-definition-file",children:"Running COSMOS using an .xtce definition file"}),"\n",(0,t.jsx)(n.p,{children:"A single .xtce file containing the command and telemetry definitions for a target can be used in place of the normal COSMOS command and telemetry definition files. Simply place the target's .xtce file in the target's cmd_tlm folder and COSMOS will use it for the command and telemetry definitions."}),"\n",(0,t.jsx)(n.h2,{id:"converting-a-xtce-file-into-a-cosmos-configuration",children:"Converting a .xtce file into a COSMOS configuration"}),"\n",(0,t.jsx)(n.p,{children:"Use the following command to convert a .xtce file into COSMOS configuration files. The converted configuration files will be placed into a target folder in the given output directory."}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{children:"openc3.bat cli xtce_converter --import --output \n"})}),"\n",(0,t.jsx)(n.h2,{id:"converting-a-cosmos-configuration-to-xtce",children:"Converting a COSMOS Configuration to XTCE"}),"\n",(0,t.jsx)(n.p,{children:"Use the following command to convert your openc3 plugin into .xtce files, one per target. The converted .xtce files will be placed into a target folder in the given output directory."}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{children:"openc3.bat cli xtce_converter --plugin --output \n"})}),"\n",(0,t.jsx)(n.h2,{id:"high-level-overview-of-current-support",children:"High-level Overview of Current Support"}),"\n",(0,t.jsxs)(n.ol,{children:["\n",(0,t.jsx)(n.li,{children:"Integer, Float, Enumerated, String, and Binary Parameter/Argument Types are Supported"}),"\n",(0,t.jsx)(n.li,{children:"All DataEncodings are supported"}),"\n",(0,t.jsx)(n.li,{children:"Telemetry and Commands are Supported"}),"\n",(0,t.jsx)(n.li,{children:"Packet Identification is supported"}),"\n",(0,t.jsx)(n.li,{children:"States are supported"}),"\n",(0,t.jsx)(n.li,{children:"Units are supported"}),"\n",(0,t.jsx)(n.li,{children:"PolynomialCalibrators are supported"}),"\n",(0,t.jsx)(n.li,{children:"Only one SpaceSystem per .xtce file"}),"\n",(0,t.jsx)(n.li,{children:"Packets should not have gaps between items"}),"\n"]}),"\n",(0,t.jsx)(n.h2,{id:"supported-elements-and-attributes",children:"Supported Elements and Attributes"}),"\n",(0,t.jsx)(n.p,{children:"The following elements and associated attributes are currently supported."}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"SpaceSystem"}),"\n",(0,t.jsx)(n.li,{children:"TelemetryMetaData"}),"\n",(0,t.jsx)(n.li,{children:"CommandMetaData"}),"\n",(0,t.jsx)(n.li,{children:"ParameterTypeSet"}),"\n",(0,t.jsx)(n.li,{children:"EnumerationList"}),"\n",(0,t.jsx)(n.li,{children:"ParameterSet"}),"\n",(0,t.jsx)(n.li,{children:"ContainerSet"}),"\n",(0,t.jsx)(n.li,{children:"EntryList"}),"\n",(0,t.jsx)(n.li,{children:"DefaultCalibrator"}),"\n",(0,t.jsx)(n.li,{children:"DefaultAlarm"}),"\n",(0,t.jsx)(n.li,{children:"RestrictionCriteria"}),"\n",(0,t.jsx)(n.li,{children:"ComparisonList"}),"\n",(0,t.jsx)(n.li,{children:"MetaCommandSet"}),"\n",(0,t.jsx)(n.li,{children:"DefaultCalibrator"}),"\n",(0,t.jsx)(n.li,{children:"ArgumentTypeSet"}),"\n",(0,t.jsx)(n.li,{children:"ArgumentList"}),"\n",(0,t.jsx)(n.li,{children:"ArgumentAssignmentList"}),"\n",(0,t.jsx)(n.li,{children:"EnumeratedParameterType"}),"\n",(0,t.jsx)(n.li,{children:"EnumeratedArgumentType"}),"\n",(0,t.jsx)(n.li,{children:"IntegerParameterType"}),"\n",(0,t.jsx)(n.li,{children:"IntegerArgumentType"}),"\n",(0,t.jsx)(n.li,{children:"FloatParameterType"}),"\n",(0,t.jsx)(n.li,{children:"FloatArgumentType"}),"\n",(0,t.jsx)(n.li,{children:"StringParameterType"}),"\n",(0,t.jsx)(n.li,{children:"StringArgumentType"}),"\n",(0,t.jsx)(n.li,{children:"BinaryParameterType"}),"\n",(0,t.jsx)(n.li,{children:"BinaryArgumentType"}),"\n",(0,t.jsx)(n.li,{children:"IntegerDataEncoding"}),"\n",(0,t.jsx)(n.li,{children:"FloatDataEncoding"}),"\n",(0,t.jsx)(n.li,{children:"StringDataEncoding"}),"\n",(0,t.jsx)(n.li,{children:"BinaryDataEncoding'"}),"\n",(0,t.jsx)(n.li,{children:"SizeInBits"}),"\n",(0,t.jsx)(n.li,{children:"FixedValue"}),"\n",(0,t.jsx)(n.li,{children:"UnitSet"}),"\n",(0,t.jsx)(n.li,{children:"Unit"}),"\n",(0,t.jsx)(n.li,{children:"PolynomialCalibrator"}),"\n",(0,t.jsx)(n.li,{children:"Term"}),"\n",(0,t.jsx)(n.li,{children:"StaticAlarmRanges"}),"\n",(0,t.jsx)(n.li,{children:"WarningRange"}),"\n",(0,t.jsx)(n.li,{children:"CriticalRange"}),"\n",(0,t.jsx)(n.li,{children:"ValidRange"}),"\n",(0,t.jsx)(n.li,{children:"Enumeration"}),"\n",(0,t.jsx)(n.li,{children:"Parameter"}),"\n",(0,t.jsx)(n.li,{children:"Argument"}),"\n",(0,t.jsx)(n.li,{children:"ParameterProperties"}),"\n",(0,t.jsx)(n.li,{children:"SequenceContainer"}),"\n",(0,t.jsx)(n.li,{children:"BaseContainer"}),"\n",(0,t.jsx)(n.li,{children:"LongDescription"}),"\n",(0,t.jsx)(n.li,{children:"ParameterRefEntry"}),"\n",(0,t.jsx)(n.li,{children:"ArgumentRefEntry"}),"\n",(0,t.jsx)(n.li,{children:"BaseMetaCommand"}),"\n",(0,t.jsx)(n.li,{children:"Comparison"}),"\n",(0,t.jsx)(n.li,{children:"MetaCommand"}),"\n",(0,t.jsx)(n.li,{children:"BaseMetaCommand"}),"\n",(0,t.jsx)(n.li,{children:"CommandContainer"}),"\n",(0,t.jsx)(n.li,{children:"ArgumentAssignment"}),"\n"]}),"\n",(0,t.jsx)(n.h2,{id:"ignored-elements",children:"Ignored Elements"}),"\n",(0,t.jsx)(n.p,{children:"The following elements are simply ignored by COSMOS:"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"Header"}),"\n",(0,t.jsx)(n.li,{children:"AliasSet"}),"\n",(0,t.jsx)(n.li,{children:"Alias"}),"\n"]}),"\n",(0,t.jsx)(n.h2,{id:"unsupported-elements",children:"Unsupported Elements"}),"\n",(0,t.jsx)(n.p,{children:"Any elements not listed above are currently unsupported. Near term support for the following elements and features are planned and priority will be determined by user requests."}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"SplineCalibrator"}),"\n",(0,t.jsx)(n.li,{children:"Alternate methods of specifying offsets into containers"}),"\n",(0,t.jsx)(n.li,{children:"Output to the XUSP standard"}),"\n",(0,t.jsx)(n.li,{children:"Additional Data Types"}),"\n",(0,t.jsx)(n.li,{children:"Container References"}),"\n"]}),"\n",(0,t.jsx)(n.p,{children:"If there is a particular element or feature you need supported please submit a ticket on Github."})]})}function h(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(c,{...e})}):c(e)}},1184:(e,n,i)=>{i.d(n,{R:()=>o,x:()=>s});var t=i(4041);const r={},l=t.createContext(r);function o(e){const n=t.useContext(l);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function s(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:o(e.components),t.createElement(l.Provider,{value:n},e.children)}}}]);