openc3-cosmos-tool-docs 6.3.0 → 6.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (120) hide show
  1. checksums.yaml +4 -4
  2. data/tools/staticdocs/404.html +1 -1
  3. data/tools/staticdocs/assets/images/cosmos-containers-7ecd745840fcff307f0fec01ac4d88a8fa76d531abeae407fee0e508f50a487c.png +0 -0
  4. data/tools/staticdocs/assets/images/cosmos-images-8e15c197653ac3a1f39e8c5eaa56155f364e67d87d66647cff1355b960093af1.png +0 -0
  5. data/tools/staticdocs/assets/js/2bb7bf90.1772f030.js +1 -0
  6. data/tools/staticdocs/assets/js/411898ad.f7b3ff17.js +1 -0
  7. data/tools/staticdocs/assets/js/5b233ba7.9d6ba314.js +1 -0
  8. data/tools/staticdocs/assets/js/6831b732.1318b398.js +1 -0
  9. data/tools/staticdocs/assets/js/696b4199.1e950fcb.js +1 -0
  10. data/tools/staticdocs/assets/js/867640d5.27d9d599.js +1 -0
  11. data/tools/staticdocs/assets/js/89e76475.e1b0dbdb.js +1 -0
  12. data/tools/staticdocs/assets/js/964eb012.0e04c58d.js +1 -0
  13. data/tools/staticdocs/assets/js/9d6e81d0.36405219.js +1 -0
  14. data/tools/staticdocs/assets/js/a677c089.cfa50691.js +1 -0
  15. data/tools/staticdocs/assets/js/a9b2dc27.805dc1ba.js +1 -0
  16. data/tools/staticdocs/assets/js/aa6b6c1b.ef9b0f38.js +1 -0
  17. data/tools/staticdocs/assets/js/b062d239.57d6e194.js +1 -0
  18. data/tools/staticdocs/assets/js/b6d70f94.a9228642.js +1 -0
  19. data/tools/staticdocs/assets/js/c24eae19.0575c394.js +1 -0
  20. data/tools/staticdocs/assets/js/d1b923aa.da892cde.js +1 -0
  21. data/tools/staticdocs/assets/js/d66bf9c0.80a50660.js +1 -0
  22. data/tools/staticdocs/assets/js/d9b92eba.5db8667e.js +1 -0
  23. data/tools/staticdocs/assets/js/{main.8d947189.js → main.a8e2c06c.js} +5 -5
  24. data/tools/staticdocs/assets/js/{runtime~main.d38c5d36.js → runtime~main.7102cb65.js} +1 -1
  25. data/tools/staticdocs/docs/configuration/accessors.html +4 -3
  26. data/tools/staticdocs/docs/configuration/command.html +1 -1
  27. data/tools/staticdocs/docs/configuration/format.html +1 -1
  28. data/tools/staticdocs/docs/configuration/interfaces.html +15 -4
  29. data/tools/staticdocs/docs/configuration/plugins.html +5 -5
  30. data/tools/staticdocs/docs/configuration/protocols.html +7 -6
  31. data/tools/staticdocs/docs/configuration/ssl-tls.html +115 -76
  32. data/tools/staticdocs/docs/configuration/table.html +1 -1
  33. data/tools/staticdocs/docs/configuration/target.html +1 -1
  34. data/tools/staticdocs/docs/configuration/telemetry-screens.html +1 -1
  35. data/tools/staticdocs/docs/configuration/telemetry.html +1 -1
  36. data/tools/staticdocs/docs/configuration.html +1 -1
  37. data/tools/staticdocs/docs/development/curl.html +4 -4
  38. data/tools/staticdocs/docs/development/developing.html +2 -2
  39. data/tools/staticdocs/docs/development/json-api.html +1 -1
  40. data/tools/staticdocs/docs/development/log-structure.html +1 -1
  41. data/tools/staticdocs/docs/development/roadmap.html +1 -1
  42. data/tools/staticdocs/docs/development/streaming-api.html +1 -1
  43. data/tools/staticdocs/docs/development/testing.html +1 -1
  44. data/tools/staticdocs/docs/development.html +1 -1
  45. data/tools/staticdocs/docs/getting-started/cli.html +2 -2
  46. data/tools/staticdocs/docs/getting-started/generators.html +2 -2
  47. data/tools/staticdocs/docs/getting-started/gettingstarted.html +1 -1
  48. data/tools/staticdocs/docs/getting-started/installation.html +1 -1
  49. data/tools/staticdocs/docs/getting-started/key-concepts.html +8 -4
  50. data/tools/staticdocs/docs/getting-started/podman.html +1 -1
  51. data/tools/staticdocs/docs/getting-started/requirements.html +1 -1
  52. data/tools/staticdocs/docs/getting-started/upgrading.html +1 -1
  53. data/tools/staticdocs/docs/getting-started.html +1 -1
  54. data/tools/staticdocs/docs/guides/bridges.html +1 -1
  55. data/tools/staticdocs/docs/guides/cfs.html +12 -12
  56. data/tools/staticdocs/docs/guides/custom-widgets.html +1 -1
  57. data/tools/staticdocs/docs/guides/dynamic-packets.html +1 -1
  58. data/tools/staticdocs/docs/guides/exposing-microservices.html +4 -4
  59. data/tools/staticdocs/docs/guides/little-endian-bitfields.html +1 -1
  60. data/tools/staticdocs/docs/guides/local-mode.html +1 -1
  61. data/tools/staticdocs/docs/guides/logging.html +1 -1
  62. data/tools/staticdocs/docs/guides/monitoring.html +1 -1
  63. data/tools/staticdocs/docs/guides/performance.html +6 -6
  64. data/tools/staticdocs/docs/guides/raspberrypi.html +1 -1
  65. data/tools/staticdocs/docs/guides/script-writing.html +1 -1
  66. data/tools/staticdocs/docs/guides/scripting-api.html +55 -16
  67. data/tools/staticdocs/docs/guides.html +1 -1
  68. data/tools/staticdocs/docs/meta/contributing.html +1 -1
  69. data/tools/staticdocs/docs/meta/licenses.html +8 -8
  70. data/tools/staticdocs/docs/meta/philosophy.html +2 -2
  71. data/tools/staticdocs/docs/meta/xtce.html +1 -1
  72. data/tools/staticdocs/docs/meta.html +1 -1
  73. data/tools/staticdocs/docs/privacy.html +1 -1
  74. data/tools/staticdocs/docs/tools/admin.html +1 -1
  75. data/tools/staticdocs/docs/tools/autonomic.html +1 -1
  76. data/tools/staticdocs/docs/tools/bucket-explorer.html +2 -2
  77. data/tools/staticdocs/docs/tools/calendar.html +1 -1
  78. data/tools/staticdocs/docs/tools/cmd-sender.html +1 -1
  79. data/tools/staticdocs/docs/tools/cmd-tlm-server.html +1 -1
  80. data/tools/staticdocs/docs/tools/command_history.html +1 -1
  81. data/tools/staticdocs/docs/tools/data-extractor.html +1 -1
  82. data/tools/staticdocs/docs/tools/data-viewer.html +1 -1
  83. data/tools/staticdocs/docs/tools/handbooks.html +1 -1
  84. data/tools/staticdocs/docs/tools/limits-monitor.html +1 -1
  85. data/tools/staticdocs/docs/tools/packet-viewer.html +1 -1
  86. data/tools/staticdocs/docs/tools/script-runner.html +1 -1
  87. data/tools/staticdocs/docs/tools/table-manager.html +1 -1
  88. data/tools/staticdocs/docs/tools/tlm-grapher.html +1 -1
  89. data/tools/staticdocs/docs/tools/tlm-viewer.html +1 -1
  90. data/tools/staticdocs/docs/tools.html +1 -1
  91. data/tools/staticdocs/docs.html +1 -1
  92. data/tools/staticdocs/img/cosmos-containers.png +0 -0
  93. data/tools/staticdocs/img/cosmos-images.png +0 -0
  94. data/tools/staticdocs/index.html +1 -1
  95. data/tools/staticdocs/lunr-index-1746647301890.json +1 -0
  96. data/tools/staticdocs/lunr-index.json +1 -1
  97. data/tools/staticdocs/markdown-page.html +1 -1
  98. data/tools/staticdocs/search-doc-1746647301890.json +1 -0
  99. data/tools/staticdocs/search-doc.json +1 -1
  100. metadata +28 -24
  101. data/tools/staticdocs/assets/js/2bb7bf90.4a658ce6.js +0 -1
  102. data/tools/staticdocs/assets/js/411898ad.f7fc4d80.js +0 -1
  103. data/tools/staticdocs/assets/js/5b233ba7.2ea0179c.js +0 -1
  104. data/tools/staticdocs/assets/js/6831b732.0a867cbc.js +0 -1
  105. data/tools/staticdocs/assets/js/696b4199.2a7ff897.js +0 -1
  106. data/tools/staticdocs/assets/js/867640d5.2c0fa6d9.js +0 -1
  107. data/tools/staticdocs/assets/js/89e76475.a76d0072.js +0 -1
  108. data/tools/staticdocs/assets/js/964eb012.dbc2c206.js +0 -1
  109. data/tools/staticdocs/assets/js/9d6e81d0.44e2d544.js +0 -1
  110. data/tools/staticdocs/assets/js/a677c089.18f98b70.js +0 -1
  111. data/tools/staticdocs/assets/js/a9b2dc27.e01c9bb4.js +0 -1
  112. data/tools/staticdocs/assets/js/aa6b6c1b.3aad95fc.js +0 -1
  113. data/tools/staticdocs/assets/js/b062d239.535a2ceb.js +0 -1
  114. data/tools/staticdocs/assets/js/b6d70f94.7813125e.js +0 -1
  115. data/tools/staticdocs/assets/js/c24eae19.aaae7796.js +0 -1
  116. data/tools/staticdocs/assets/js/d1b923aa.a73e7e79.js +0 -1
  117. data/tools/staticdocs/assets/js/d66bf9c0.842d2efa.js +0 -1
  118. data/tools/staticdocs/assets/js/d9b92eba.34e63ba6.js +0 -1
  119. data/tools/staticdocs/lunr-index-1743825503427.json +0 -1
  120. data/tools/staticdocs/search-doc-1743825503427.json +0 -1
@@ -1,4 +1,4 @@
1
- <!doctype html><html lang=en dir=ltr class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-configuration/interfaces" data-has-hydrated=false><meta charset=UTF-8><meta name=generator content="Docusaurus v3.7.0"><title data-rh=true>Interfaces | OpenC3 Docs</title><meta data-rh=true name=viewport content="width=device-width, initial-scale=1.0"><meta data-rh=true name=twitter:card content=summary_large_image><meta data-rh=true property=og:url content=https://docs.openc3.com/tools/staticdocs/docs/configuration/interfaces><meta data-rh=true property=og:locale content=en><meta data-rh=true name=docusaurus_locale content=en><meta data-rh=true name=docsearch:language content=en><meta data-rh=true name=docusaurus_version content=current><meta data-rh=true name=docusaurus_tag content=docs-default-current><meta data-rh=true name=docsearch:version content=current><meta data-rh=true name=docsearch:docusaurus_tag content=docs-default-current><meta data-rh=true property=og:title content="Interfaces | OpenC3 Docs"><meta data-rh=true name=description content="Built-in COSMOS interfaces including how to create one"><meta data-rh=true property=og:description content="Built-in COSMOS interfaces including how to create one"><link data-rh=true rel=icon href=/tools/staticdocs/img/favicon.png><link data-rh=true rel=canonical href=https://docs.openc3.com/tools/staticdocs/docs/configuration/interfaces><link data-rh=true rel=alternate href=https://docs.openc3.com/tools/staticdocs/docs/configuration/interfaces hreflang=en><link data-rh=true rel=alternate href=https://docs.openc3.com/tools/staticdocs/docs/configuration/interfaces hreflang=x-default><link rel=stylesheet href=/tools/staticdocs/assets/css/styles.1de6b959.css><script src=/tools/staticdocs/assets/js/runtime~main.d38c5d36.js defer></script><script src=/tools/staticdocs/assets/js/main.8d947189.js defer></script><body class=navigation-with-keyboard><script>!function(){var t,e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t=null!==e?e:"dark",document.documentElement.setAttribute("data-theme",t)}(),function(){try{for(var[t,e]of new URLSearchParams(window.location.search).entries())if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id=__docusaurus><link rel=preload as=image href=/tools/staticdocs/img/logo.svg><div role=region aria-label="Skip to main content"><a class=skipToContent_G6ar href=#__docusaurus_skipToContent_fallback>Skip to main content</a></div><nav aria-label=Main class="navbar navbar--fixed-top"><div class=navbar__inner><div class=navbar__items><button aria-label="Toggle navigation bar" aria-expanded=false class="navbar__toggle clean-btn" type=button><svg width=30 height=30 viewBox="0 0 30 30" aria-hidden=true><path stroke=currentColor stroke-linecap=round stroke-miterlimit=10 stroke-width=2 d="M4 7h22M4 15h22M4 23h22"/></svg></button><a class=navbar__brand href=/tools/staticdocs/><div class=navbar__logo><img src=/tools/staticdocs/img/logo.svg alt="OpenC3 Logo" class="themedComponent_DHUr themedComponent--light_DIHH"><img src=/tools/staticdocs/img/logo.svg alt="OpenC3 Logo" class="themedComponent_DHUr themedComponent--dark_Bv2M"></div><b class="navbar__title text--truncate">OpenC3 Docs</b></a><a aria-current=page class="navbar__item navbar__link navbar__link--active" href=/tools/staticdocs/docs>Documentation</a><a href=https://openc3.com/enterprise/ target=_blank rel="noopener noreferrer" class="navbar__item navbar__link">Enterprise</a></div><div class="navbar__items navbar__items--right"><div class=navbarSearchContainer_bmvg><div class=navbar__search><span aria-label="expand searchbar" role=button class=search-icon tabindex=0></span><input id=search_input_react type=search placeholder=Loading... aria-label=Search class="navbar__search-input search-bar" disabled></div></div></div></div><div role=presentation class=navbar-sidebar__backdrop></div></nav><div id=__docusaurus_skipToContent_fallback class="main-wrapper mainWrapper_UyTV"><div class=docsWrapper_XLvK><button aria-label="Scroll back to top" class="clean-btn theme-back-to-top-button backToTopButton_z1FD" type=button></button><div class=docRoot_HciC><aside class="theme-doc-sidebar-container docSidebarContainer_e5ai"><div class=sidebarViewport_N8x0><div class=sidebar_vJCc><nav aria-label="Docs sidebar" class="menu thin-scrollbar menu_qiME"><ul class="theme-doc-sidebar-menu menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class=menu__link href=/tools/staticdocs/docs>Introduction</a><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class=menu__list-item-collapsible><a class="menu__link menu__link--sublist" href=/tools/staticdocs/docs/getting-started>Getting Started</a><button aria-label="Expand sidebar category 'Getting Started'" aria-expanded=false type=button class="clean-btn menu__caret"></button></div><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class=menu__list-item-collapsible><a class="menu__link menu__link--sublist menu__link--active" href=/tools/staticdocs/docs/configuration>Configuration</a><button aria-label="Collapse sidebar category 'Configuration'" aria-expanded=true type=button class="clean-btn menu__caret"></button></div><ul style=display:block;overflow:visible;height:auto class=menu__list><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class=menu__link tabindex=0 href=/tools/staticdocs/docs/configuration/format>File Format</a><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class=menu__link tabindex=0 href=/tools/staticdocs/docs/configuration/plugins>Plugins</a><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class=menu__link tabindex=0 href=/tools/staticdocs/docs/configuration/target>Targets</a><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class=menu__link tabindex=0 href=/tools/staticdocs/docs/configuration/command>Commands</a><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class=menu__link tabindex=0 href=/tools/staticdocs/docs/configuration/telemetry>Telemetry</a><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link menu__link--active" aria-current=page tabindex=0 href=/tools/staticdocs/docs/configuration/interfaces>Interfaces</a><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class=menu__link tabindex=0 href=/tools/staticdocs/docs/configuration/protocols>Protocols</a><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class=menu__link tabindex=0 href=/tools/staticdocs/docs/configuration/accessors>Accessors</a><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class=menu__link tabindex=0 href=/tools/staticdocs/docs/configuration/table>Tables</a><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class=menu__link tabindex=0 href=/tools/staticdocs/docs/configuration/telemetry-screens>Screens</a><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class=menu__link tabindex=0 href=/tools/staticdocs/docs/configuration/ssl-tls>SSL-TLS</a></ul><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class=menu__list-item-collapsible><a class="menu__link menu__link--sublist" href=/tools/staticdocs/docs/tools>Tools</a><button aria-label="Expand sidebar category 'Tools'" aria-expanded=false type=button class="clean-btn menu__caret"></button></div><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class=menu__list-item-collapsible><a class="menu__link menu__link--sublist" href=/tools/staticdocs/docs/guides>Guides</a><button aria-label="Expand sidebar category 'Guides'" aria-expanded=false type=button class="clean-btn menu__caret"></button></div><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class=menu__list-item-collapsible><a class="menu__link menu__link--sublist" href=/tools/staticdocs/docs/development>Development</a><button aria-label="Expand sidebar category 'Development'" aria-expanded=false type=button class="clean-btn menu__caret"></button></div><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class=menu__list-item-collapsible><a class="menu__link menu__link--sublist" href=/tools/staticdocs/docs/meta>Meta</a><button aria-label="Expand sidebar category 'Meta'" aria-expanded=false type=button class="clean-btn menu__caret"></button></div><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class=menu__link href=/tools/staticdocs/docs/privacy>OpenC3, Inc. Privacy Policy</a></ul></nav></div></div></aside><main class=docMainContainer_namt><div class="container padding-top--md padding-bottom--lg"><div class=row><div class="col docItemCol_YAwJ"><div class=docItemContainer_Rv5Z><article><nav class="theme-doc-breadcrumbs breadcrumbsContainer_zCmv" aria-label=Breadcrumbs><ul class=breadcrumbs itemscope itemtype=https://schema.org/BreadcrumbList><li class=breadcrumbs__item><a aria-label="Home page" class=breadcrumbs__link href=/tools/staticdocs/><svg viewBox="0 0 24 24" class=breadcrumbHomeIcon_JFrk><path d="M10 19v-5h4v5c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-7h1.7c.46 0 .68-.57.33-.87L12.67 3.6c-.38-.34-.96-.34-1.34 0l-8.36 7.53c-.34.3-.13.87.33.87H5v7c0 .55.45 1 1 1h3c.55 0 1-.45 1-1z" fill=currentColor /></svg></a><li itemscope itemprop=itemListElement itemtype=https://schema.org/ListItem class=breadcrumbs__item><a class=breadcrumbs__link itemprop=item href=/tools/staticdocs/docs/configuration><span itemprop=name>Configuration</span></a><meta itemprop=position content=1><li itemscope itemprop=itemListElement itemtype=https://schema.org/ListItem class="breadcrumbs__item breadcrumbs__item--active"><span class=breadcrumbs__link itemprop=name>Interfaces</span><meta itemprop=position content=2></ul></nav><div class="tocCollapsible_O_Qc theme-doc-toc-mobile tocMobile_tjDr"><button type=button class="clean-btn tocCollapsibleButton_htYj">On this page</button></div><div class="theme-doc-markdown markdown"><header><h1>Interfaces</h1></header><h2 class="anchor anchorWithStickyNavbar_fF9Z" id=overview>Overview<a href=#overview class=hash-link aria-label="Direct link to Overview" title="Direct link to Overview">​</a></h2>
1
+ <!doctype html><html lang=en dir=ltr class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-configuration/interfaces" data-has-hydrated=false><meta charset=UTF-8><meta name=generator content="Docusaurus v3.7.0"><title data-rh=true>Interfaces | OpenC3 Docs</title><meta data-rh=true name=viewport content="width=device-width, initial-scale=1.0"><meta data-rh=true name=twitter:card content=summary_large_image><meta data-rh=true property=og:url content=https://docs.openc3.com/tools/staticdocs/docs/configuration/interfaces><meta data-rh=true property=og:locale content=en><meta data-rh=true name=docusaurus_locale content=en><meta data-rh=true name=docsearch:language content=en><meta data-rh=true name=docusaurus_version content=current><meta data-rh=true name=docusaurus_tag content=docs-default-current><meta data-rh=true name=docsearch:version content=current><meta data-rh=true name=docsearch:docusaurus_tag content=docs-default-current><meta data-rh=true property=og:title content="Interfaces | OpenC3 Docs"><meta data-rh=true name=description content="Built-in COSMOS interfaces including how to create one"><meta data-rh=true property=og:description content="Built-in COSMOS interfaces including how to create one"><link data-rh=true rel=icon href=/tools/staticdocs/img/favicon.png><link data-rh=true rel=canonical href=https://docs.openc3.com/tools/staticdocs/docs/configuration/interfaces><link data-rh=true rel=alternate href=https://docs.openc3.com/tools/staticdocs/docs/configuration/interfaces hreflang=en><link data-rh=true rel=alternate href=https://docs.openc3.com/tools/staticdocs/docs/configuration/interfaces hreflang=x-default><link rel=stylesheet href=/tools/staticdocs/assets/css/styles.1de6b959.css><script src=/tools/staticdocs/assets/js/runtime~main.7102cb65.js defer></script><script src=/tools/staticdocs/assets/js/main.a8e2c06c.js defer></script><body class=navigation-with-keyboard><script>!function(){var t,e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t=null!==e?e:"dark",document.documentElement.setAttribute("data-theme",t)}(),function(){try{for(var[t,e]of new URLSearchParams(window.location.search).entries())if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id=__docusaurus><link rel=preload as=image href=/tools/staticdocs/img/logo.svg><div role=region aria-label="Skip to main content"><a class=skipToContent_G6ar href=#__docusaurus_skipToContent_fallback>Skip to main content</a></div><nav aria-label=Main class="navbar navbar--fixed-top"><div class=navbar__inner><div class=navbar__items><button aria-label="Toggle navigation bar" aria-expanded=false class="navbar__toggle clean-btn" type=button><svg width=30 height=30 viewBox="0 0 30 30" aria-hidden=true><path stroke=currentColor stroke-linecap=round stroke-miterlimit=10 stroke-width=2 d="M4 7h22M4 15h22M4 23h22"/></svg></button><a class=navbar__brand href=/tools/staticdocs/><div class=navbar__logo><img src=/tools/staticdocs/img/logo.svg alt="OpenC3 Logo" class="themedComponent_DHUr themedComponent--light_DIHH"><img src=/tools/staticdocs/img/logo.svg alt="OpenC3 Logo" class="themedComponent_DHUr themedComponent--dark_Bv2M"></div><b class="navbar__title text--truncate">OpenC3 Docs</b></a><a aria-current=page class="navbar__item navbar__link navbar__link--active" href=/tools/staticdocs/docs>Documentation</a><a href=https://openc3.com/enterprise/ target=_blank rel="noopener noreferrer" class="navbar__item navbar__link">Enterprise</a></div><div class="navbar__items navbar__items--right"><div class=navbarSearchContainer_bmvg><div class=navbar__search><span aria-label="expand searchbar" role=button class=search-icon tabindex=0></span><input id=search_input_react type=search placeholder=Loading... aria-label=Search class="navbar__search-input search-bar" disabled></div></div></div></div><div role=presentation class=navbar-sidebar__backdrop></div></nav><div id=__docusaurus_skipToContent_fallback class="main-wrapper mainWrapper_UyTV"><div class=docsWrapper_XLvK><button aria-label="Scroll back to top" class="clean-btn theme-back-to-top-button backToTopButton_z1FD" type=button></button><div class=docRoot_HciC><aside class="theme-doc-sidebar-container docSidebarContainer_e5ai"><div class=sidebarViewport_N8x0><div class=sidebar_vJCc><nav aria-label="Docs sidebar" class="menu thin-scrollbar menu_qiME"><ul class="theme-doc-sidebar-menu menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class=menu__link href=/tools/staticdocs/docs>Introduction</a><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class=menu__list-item-collapsible><a class="menu__link menu__link--sublist" href=/tools/staticdocs/docs/getting-started>Getting Started</a><button aria-label="Expand sidebar category 'Getting Started'" aria-expanded=false type=button class="clean-btn menu__caret"></button></div><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class=menu__list-item-collapsible><a class="menu__link menu__link--sublist menu__link--active" href=/tools/staticdocs/docs/configuration>Configuration</a><button aria-label="Collapse sidebar category 'Configuration'" aria-expanded=true type=button class="clean-btn menu__caret"></button></div><ul style=display:block;overflow:visible;height:auto class=menu__list><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class=menu__link tabindex=0 href=/tools/staticdocs/docs/configuration/format>File Format</a><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class=menu__link tabindex=0 href=/tools/staticdocs/docs/configuration/plugins>Plugins</a><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class=menu__link tabindex=0 href=/tools/staticdocs/docs/configuration/target>Targets</a><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class=menu__link tabindex=0 href=/tools/staticdocs/docs/configuration/command>Commands</a><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class=menu__link tabindex=0 href=/tools/staticdocs/docs/configuration/telemetry>Telemetry</a><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link menu__link--active" aria-current=page tabindex=0 href=/tools/staticdocs/docs/configuration/interfaces>Interfaces</a><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class=menu__link tabindex=0 href=/tools/staticdocs/docs/configuration/protocols>Protocols</a><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class=menu__link tabindex=0 href=/tools/staticdocs/docs/configuration/accessors>Accessors</a><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class=menu__link tabindex=0 href=/tools/staticdocs/docs/configuration/table>Tables</a><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class=menu__link tabindex=0 href=/tools/staticdocs/docs/configuration/telemetry-screens>Screens</a><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class=menu__link tabindex=0 href=/tools/staticdocs/docs/configuration/ssl-tls>SSL-TLS</a></ul><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class=menu__list-item-collapsible><a class="menu__link menu__link--sublist" href=/tools/staticdocs/docs/tools>Tools</a><button aria-label="Expand sidebar category 'Tools'" aria-expanded=false type=button class="clean-btn menu__caret"></button></div><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class=menu__list-item-collapsible><a class="menu__link menu__link--sublist" href=/tools/staticdocs/docs/guides>Guides</a><button aria-label="Expand sidebar category 'Guides'" aria-expanded=false type=button class="clean-btn menu__caret"></button></div><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class=menu__list-item-collapsible><a class="menu__link menu__link--sublist" href=/tools/staticdocs/docs/development>Development</a><button aria-label="Expand sidebar category 'Development'" aria-expanded=false type=button class="clean-btn menu__caret"></button></div><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class=menu__list-item-collapsible><a class="menu__link menu__link--sublist" href=/tools/staticdocs/docs/meta>Meta</a><button aria-label="Expand sidebar category 'Meta'" aria-expanded=false type=button class="clean-btn menu__caret"></button></div><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class=menu__link href=/tools/staticdocs/docs/privacy>OpenC3, Inc. Privacy Policy</a></ul></nav></div></div></aside><main class=docMainContainer_namt><div class="container padding-top--md padding-bottom--lg"><div class=row><div class="col docItemCol_YAwJ"><div class=docItemContainer_Rv5Z><article><nav class="theme-doc-breadcrumbs breadcrumbsContainer_zCmv" aria-label=Breadcrumbs><ul class=breadcrumbs itemscope itemtype=https://schema.org/BreadcrumbList><li class=breadcrumbs__item><a aria-label="Home page" class=breadcrumbs__link href=/tools/staticdocs/><svg viewBox="0 0 24 24" class=breadcrumbHomeIcon_JFrk><path d="M10 19v-5h4v5c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-7h1.7c.46 0 .68-.57.33-.87L12.67 3.6c-.38-.34-.96-.34-1.34 0l-8.36 7.53c-.34.3-.13.87.33.87H5v7c0 .55.45 1 1 1h3c.55 0 1-.45 1-1z" fill=currentColor /></svg></a><li itemscope itemprop=itemListElement itemtype=https://schema.org/ListItem class=breadcrumbs__item><a class=breadcrumbs__link itemprop=item href=/tools/staticdocs/docs/configuration><span itemprop=name>Configuration</span></a><meta itemprop=position content=1><li itemscope itemprop=itemListElement itemtype=https://schema.org/ListItem class="breadcrumbs__item breadcrumbs__item--active"><span class=breadcrumbs__link itemprop=name>Interfaces</span><meta itemprop=position content=2></ul></nav><div class="tocCollapsible_O_Qc theme-doc-toc-mobile tocMobile_tjDr"><button type=button class="clean-btn tocCollapsibleButton_htYj">On this page</button></div><div class="theme-doc-markdown markdown"><header><h1>Interfaces</h1></header><h2 class="anchor anchorWithStickyNavbar_fF9Z" id=overview>Overview<a href=#overview class=hash-link aria-label="Direct link to Overview" title="Direct link to Overview">​</a></h2>
2
2
  <p>Interfaces are the connection to the external embedded systems called <a href=/tools/staticdocs/docs/configuration/target>targets</a>. Interfaces are defined by the top level <a href=/tools/staticdocs/docs/configuration/plugins#interface-1>INTERFACE</a> keyword in the plugin.txt file.</p>
3
3
  <p>Interface classes provide the code that COSMOS uses to receive real-time telemetry from targets and to send commands to targets. The interface that a target uses could be anything (TCP/IP, serial, MQTT, SNMP, etc.), therefore it is important that this is a customizable portion of any reusable Command and Telemetry System. Fortunately the most common form of interfaces are over TCP/IP sockets, and COSMOS provides interface solutions for these. This guide will discuss how to use these interface classes, and how to create your own. Note that in most cases you can extend interfaces with <a href=/tools/staticdocs/docs/configuration/protocols>Protocols</a> rather than implementing a new interface.</p>
4
4
  <div class="theme-admonition theme-admonition-info admonition_IZjC alert alert--info"><div class=admonitionHeading_uVvU><span class=admonitionIcon_HiR3><svg viewBox="0 0 14 16"><path fill-rule=evenodd d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"/></svg></span>Interface and Routers Are Very Similar</div><div class=admonitionContent_bl22><p>Note that Interfaces and Routers are very similar and share the same configuration parameters. Routers are simply Interfaces which route an existing Interface's telemetry data out to the connected target and routes the connected target's commands back to the original Interface's target.</div></div>
@@ -100,10 +100,21 @@
100
100
  <table><thead><tr><th>Option<th>Description<th>Default<tbody><tr><td>FLOW_CONTROL<td>Serial port flow control. Must be one of NONE or RTSCTS.<td>NONE<tr><td>DATA_BITS<td>Number of data bits.<td>8</table>
101
101
  <p>plugin.txt Ruby Examples:</p>
102
102
  <div class="language-ruby codeBlockContainer_ZGJx theme-code-block" style=--prism-color:#d6deeb;--prism-background-color:#011627><div class=codeBlockContent_qZBB><pre tabindex=0 class="prism-code language-ruby codeBlock_TAPP thin-scrollbar" style=color:#d6deeb;background-color:#011627><code class=codeBlockLines_AdAo><span class=token-line style=color:#d6deeb><span class="token constant" style="color:rgb(130, 170, 255)">INTERFACE</span><span class="token plain"> </span><span class="token constant" style="color:rgb(130, 170, 255)">INTERFACE_NAME</span><span class="token plain"> serial_interface</span><span class="token punctuation" style="color:rgb(199, 146, 234)">.</span><span class="token plain">rb </span><span class="token constant" style="color:rgb(130, 170, 255)">COM1</span><span class="token plain"> </span><span class="token constant" style="color:rgb(130, 170, 255)">COM1</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">9600</span><span class="token plain"> </span><span class="token constant" style="color:rgb(130, 170, 255)">NONE</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">10.0</span><span class="token plain"> </span><span class="token keyword" style="color:rgb(127, 219, 202)">nil</span><span class="token plain"> </span><span class="token constant" style="color:rgb(130, 170, 255)">LENGTH</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">0</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">16</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">0</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token plain"> </span><span class="token constant" style="color:rgb(130, 170, 255)">BIG_ENDIAN</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">4</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">0xBA5EBA11</span><span class="token plain"></span><br></span><span class=token-line style=color:#d6deeb><span class="token plain"></span><span class="token constant" style="color:rgb(130, 170, 255)">INTERFACE</span><span class="token plain"> </span><span class="token constant" style="color:rgb(130, 170, 255)">INTERFACE_NAME</span><span class="token plain"> serial_interface</span><span class="token punctuation" style="color:rgb(199, 146, 234)">.</span><span class="token plain">rb </span><span class="token operator" style="color:rgb(127, 219, 202)">/</span><span class="token plain">dev</span><span class="token operator" style="color:rgb(127, 219, 202)">/</span><span class="token plain">ttyS1 </span><span class="token operator" style="color:rgb(127, 219, 202)">/</span><span class="token plain">dev</span><span class="token operator" style="color:rgb(127, 219, 202)">/</span><span class="token plain">ttyS1 </span><span class="token number" style="color:rgb(247, 140, 108)">38400</span><span class="token plain"> </span><span class="token constant" style="color:rgb(130, 170, 255)">ODD</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">10.0</span><span class="token plain"> </span><span class="token keyword" style="color:rgb(127, 219, 202)">nil</span><span class="token plain"> </span><span class="token constant" style="color:rgb(130, 170, 255)">BURST</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">4</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">0xDEADBEEF</span><span class="token plain"></span><br></span><span class=token-line style=color:#d6deeb><span class="token plain"></span><span class="token constant" style="color:rgb(130, 170, 255)">INTERFACE</span><span class="token plain"> </span><span class="token constant" style="color:rgb(130, 170, 255)">INTERFACE_NAME</span><span class="token plain"> serial_interface</span><span class="token punctuation" style="color:rgb(199, 146, 234)">.</span><span class="token plain">rb </span><span class="token constant" style="color:rgb(130, 170, 255)">COM2</span><span class="token plain"> </span><span class="token constant" style="color:rgb(130, 170, 255)">COM2</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">19200</span><span class="token plain"> </span><span class="token constant" style="color:rgb(130, 170, 255)">EVEN</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">10.0</span><span class="token plain"> </span><span class="token keyword" style="color:rgb(127, 219, 202)">nil</span><span class="token plain"> </span><span class="token constant" style="color:rgb(130, 170, 255)">FIXED</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">6</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">0</span><span class="token plain"> </span><span class="token keyword" style="color:rgb(127, 219, 202)">nil</span><span class="token plain"> </span><span class="token boolean" style="color:rgb(255, 88, 116)">true</span><span class="token plain"></span><br></span><span class=token-line style=color:#d6deeb><span class="token plain"></span><span class="token constant" style="color:rgb(130, 170, 255)">INTERFACE</span><span class="token plain"> </span><span class="token constant" style="color:rgb(130, 170, 255)">INTERFACE_NAME</span><span class="token plain"> serial_interface</span><span class="token punctuation" style="color:rgb(199, 146, 234)">.</span><span class="token plain">rb </span><span class="token constant" style="color:rgb(130, 170, 255)">COM4</span><span class="token plain"> </span><span class="token constant" style="color:rgb(130, 170, 255)">COM4</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">115200</span><span class="token plain"> </span><span class="token constant" style="color:rgb(130, 170, 255)">NONE</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">10.0</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">10.0</span><span class="token plain"> </span><span class="token constant" style="color:rgb(130, 170, 255)">TERMINATED</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">0x0D0A</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">0x0D0A</span><span class="token plain"> </span><span class="token boolean" style="color:rgb(255, 88, 116)">true</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">0</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">0xF005BA11</span><span class="token plain"></span><br></span><span class=token-line style=color:#d6deeb><span class="token plain"></span><span class="token constant" style="color:rgb(130, 170, 255)">INTERFACE</span><span class="token plain"> </span><span class="token constant" style="color:rgb(130, 170, 255)">INTERFACE_NAME</span><span class="token plain"> serial_interface</span><span class="token punctuation" style="color:rgb(199, 146, 234)">.</span><span class="token plain">rb </span><span class="token constant" style="color:rgb(130, 170, 255)">COM4</span><span class="token plain"> </span><span class="token constant" style="color:rgb(130, 170, 255)">COM4</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">115200</span><span class="token plain"> </span><span class="token constant" style="color:rgb(130, 170, 255)">NONE</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">10.0</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">10.0</span><span class="token plain"> </span><span class="token constant" style="color:rgb(130, 170, 255)">TEMPLATE</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">0xA</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">0xA</span><span class="token plain"></span><br></span><span class=token-line style=color:#d6deeb><span class="token plain"></span><span class="token constant" style="color:rgb(130, 170, 255)">INTERFACE</span><span class="token plain"> </span><span class="token constant" style="color:rgb(130, 170, 255)">INTERFACE_NAME</span><span class="token plain"> serial_interface</span><span class="token punctuation" style="color:rgb(199, 146, 234)">.</span><span class="token plain">rb </span><span class="token operator" style="color:rgb(127, 219, 202)">/</span><span class="token plain">dev</span><span class="token operator" style="color:rgb(127, 219, 202)">/</span><span class="token plain">ttyS0 </span><span class="token operator" style="color:rgb(127, 219, 202)">/</span><span class="token plain">dev</span><span class="token operator" style="color:rgb(127, 219, 202)">/</span><span class="token plain">ttyS0 </span><span class="token number" style="color:rgb(247, 140, 108)">57600</span><span class="token plain"> </span><span class="token constant" style="color:rgb(130, 170, 255)">NONE</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">10.0</span><span class="token plain"> </span><span class="token keyword" style="color:rgb(127, 219, 202)">nil</span><span class="token plain"> </span><span class="token constant" style="color:rgb(130, 170, 255)">PREIDENTIFIED</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">0xCAFEBABE</span><span class="token plain"></span><br></span><span class=token-line style=color:#d6deeb><span class="token plain"></span><span class="token constant" style="color:rgb(130, 170, 255)">INTERFACE</span><span class="token plain"> </span><span class="token constant" style="color:rgb(130, 170, 255)">INTERFACE_NAME</span><span class="token plain"> serial_interface</span><span class="token punctuation" style="color:rgb(199, 146, 234)">.</span><span class="token plain">rb </span><span class="token constant" style="color:rgb(130, 170, 255)">COM4</span><span class="token plain"> </span><span class="token constant" style="color:rgb(130, 170, 255)">COM4</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">115200</span><span class="token plain"> </span><span class="token constant" style="color:rgb(130, 170, 255)">NONE</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">1</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">10.0</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">10.0</span><span class="token plain"> </span><span class="token comment" style="color:rgb(99, 119, 119);font-style:italic"># no built-in protocol</span><span class="token plain"></span><br></span><span class=token-line style=color:#d6deeb><span class="token plain"> </span><span class="token constant" style="color:rgb(130, 170, 255)">OPTION</span><span class="token plain"> </span><span class="token constant" style="color:rgb(130, 170, 255)">FLOW_CONTROL</span><span class="token plain"> </span><span class="token constant" style="color:rgb(130, 170, 255)">RTSCTS</span><span class="token plain"></span><br></span><span class=token-line style=color:#d6deeb><span class="token plain"> </span><span class="token constant" style="color:rgb(130, 170, 255)">OPTION</span><span class="token plain"> </span><span class="token constant" style="color:rgb(130, 170, 255)">DATA_BITS</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">7</span><br></span></code></pre><div class=buttonGroup_TNwR><button type=button aria-label="Copy code to clipboard" title=Copy class=clean-btn><span class=copyButtonIcons_MVhB aria-hidden=true><svg viewBox="0 0 24 24" class=copyButtonIcon_yxgH><path fill=currentColor d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"/></svg><svg viewBox="0 0 24 24" class=copyButtonSuccessIcon_QJLJ><path fill=currentColor d=M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z /></svg></span></button></div></div></div>
103
+ <h3 class="anchor anchorWithStickyNavbar_fF9Z" id=file-interface>File Interface<a href=#file-interface class=hash-link aria-label="Direct link to File Interface" title="Direct link to File Interface">​</a></h3>
104
+ <p>The file interface monitors a directory which is mapped via the compose.yaml file to a physical directory on the host machine. The primary use-case is to provide a method to process stored telemetry files into the COSMOS system. The file interface will monitor the given directory for new files and thus the host directory acts like a "drop box" where files can be processed and then archived to the Telemetry Archive Folder. When coupled with the <a href=/tools/staticdocs/docs/configuration/protocols#preidentified-protocol>PreidentifiedProtocol</a>, it can process COSMOS binary files from COSMOS version 4.</p>
105
+ <table><thead><tr><th>Parameter<th>Description<th>Required<th>Default<tbody><tr><td>Command Write Folder<td>Folder to write command files to - Set to nil / None to disallow writes<td>Yes<td><tr><td>Telemetry Read Folder<td>Folder to read telemetry files from - Set to nil / None to disallow reads<td>Yes<td><tr><td>Telemetry Archive Folder<td>Folder to move read telemetry files to - Set to DELETE to delete files<td>Yes<td><tr><td>File Read Size<td>Number of bytes to read from the file at a time<td>No<td>65536<tr><td>Stored<td>Whether to set stored flag on read telemetry. Stored telemetry does not affect real time displays (Packet Viewer or Telemetry Viewer).<td>No<td>true / True<tr><td>Protocol Type<td>See Protocols.<td>No<td>nil / None<tr><td>Protocol Arguments<td>See Protocols for the arguments each stream protocol takes.<td>No<td>[]</table>
106
+ <h4 class="anchor anchorWithStickyNavbar_fF9Z" id=interface-options-5>Interface Options<a href=#interface-options-5 class=hash-link aria-label="Direct link to Interface Options" title="Direct link to Interface Options">​</a></h4>
107
+ <p>Options are added directly beneath the interface definition as shown in the example.</p>
108
+ <table><thead><tr><th>Option<th>Description<th>Default<tbody><tr><td>LABEL<td>Label used when creating files in the command write folder<td>command<tr><td>EXTENSION<td>File extension used when creating files in the command write folder<td>.bin<tr><td>POLLING<td>Whether to poll the file system for changes or use native notifications. Some filesystems won't work without polling including Windows volumes, VM/Vagrant Shared folders, NFS, Samba, sshfs, etc.<td>false / False<tr><td>RECURSIVE<td>Whether to recursively monitor the telemetry read folder<td>false / False<tr><td>THROTTLE<td>Amount of time to wait between file reads<td>nil / None<tr><td>DISCARD_FILE_HEADER_BYTES<td>Number of bytes to discard at the start of each file<td>nil / None</table>
109
+ <h4 class="anchor anchorWithStickyNavbar_fF9Z" id=docker-composeyaml>Docker compose.yaml<a href=#docker-composeyaml class=hash-link aria-label="Direct link to Docker compose.yaml" title="Direct link to Docker compose.yaml">​</a></h4>
110
+ <div class="language-yaml codeBlockContainer_ZGJx theme-code-block" style=--prism-color:#d6deeb;--prism-background-color:#011627><div class=codeBlockContent_qZBB><pre tabindex=0 class="prism-code language-yaml codeBlock_TAPP thin-scrollbar" style=color:#d6deeb;background-color:#011627><code class=codeBlockLines_AdAo><span class=token-line style=color:#d6deeb><span class="token key atrule">openc3-operator</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"></span><br></span><span class=token-line style=color:#d6deeb><span class="token plain"> </span><span class="token comment" style="color:rgb(99, 119, 119);font-style:italic"># ...</span><span class="token plain"></span><br></span><span class=token-line style=color:#d6deeb><span class="token plain"> </span><span class="token key atrule">volumes</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"></span><br></span><span class=token-line style=color:#d6deeb><span class="token plain"> </span><span class="token comment" style="color:rgb(99, 119, 119);font-style:italic"># Mount the local folders to the container path</span><span class="token plain"></span><br></span><span class=token-line style=color:#d6deeb><span class="token plain"> /Users/jmthomas/dropbox</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain">/dropbox</span><br></span><span class=token-line style=color:#d6deeb><span class="token plain"> /Users/jmthomas/archive</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain">/archive</span><br></span></code></pre><div class=buttonGroup_TNwR><button type=button aria-label="Copy code to clipboard" title=Copy class=clean-btn><span class=copyButtonIcons_MVhB aria-hidden=true><svg viewBox="0 0 24 24" class=copyButtonIcon_yxgH><path fill=currentColor d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"/></svg><svg viewBox="0 0 24 24" class=copyButtonSuccessIcon_QJLJ><path fill=currentColor d=M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z /></svg></span></button></div></div></div>
111
+ <p>plugin.txt Ruby Examples:</p>
112
+ <div class="language-ruby codeBlockContainer_ZGJx theme-code-block" style=--prism-color:#d6deeb;--prism-background-color:#011627><div class=codeBlockContent_qZBB><pre tabindex=0 class="prism-code language-ruby codeBlock_TAPP thin-scrollbar" style=color:#d6deeb;background-color:#011627><code class=codeBlockLines_AdAo><span class=token-line style=color:#d6deeb><span class="token constant" style="color:rgb(130, 170, 255)">INTERFACE</span><span class="token plain"> </span><span class="token constant" style="color:rgb(130, 170, 255)">FILE_INT</span><span class="token plain"> file_interface</span><span class="token punctuation" style="color:rgb(199, 146, 234)">.</span><span class="token plain">rb </span><span class="token keyword" style="color:rgb(127, 219, 202)">nil</span><span class="token plain"> </span><span class="token operator" style="color:rgb(127, 219, 202)">/</span><span class="token plain">dropbox </span><span class="token operator" style="color:rgb(127, 219, 202)">/</span><span class="token plain">archive </span><span class="token number" style="color:rgb(247, 140, 108)">65536</span><span class="token plain"> </span><span class="token boolean" style="color:rgb(255, 88, 116)">true</span><span class="token plain"> </span><span class="token constant" style="color:rgb(130, 170, 255)">PREIDENTIFIED</span><span class="token plain"></span><br></span><span class=token-line style=color:#d6deeb><span class="token plain"> </span><span class="token constant" style="color:rgb(130, 170, 255)">MAP_TLM_TARGET</span><span class="token plain"> </span><span class="token constant" style="color:rgb(130, 170, 255)">INST</span><span class="token plain"> </span><span class="token comment" style="color:rgb(99, 119, 119);font-style:italic"># Since we passed nil to Command Write Folder we map as TLM only</span><span class="token plain"></span><br></span><span class=token-line style=color:#d6deeb><span class="token plain"> </span><span class="token constant" style="color:rgb(130, 170, 255)">OPTION</span><span class="token plain"> </span><span class="token constant" style="color:rgb(130, 170, 255)">THROTTLE</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">5</span><span class="token plain"></span><br></span><span class=token-line style=color:#d6deeb><span class="token plain"> </span><span class="token constant" style="color:rgb(130, 170, 255)">OPTION</span><span class="token plain"> </span><span class="token constant" style="color:rgb(130, 170, 255)">DISCARD_FILE_HEADER_BYTES</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">128</span><span class="token plain"> </span><span class="token comment" style="color:rgb(99, 119, 119);font-style:italic"># For COSMOS 4 File Header</span><span class="token plain"></span><br></span><span class=token-line style=color:#d6deeb><span class="token plain"></span><span class="token constant" style="color:rgb(130, 170, 255)">INTERFACE</span><span class="token plain"> </span><span class="token constant" style="color:rgb(130, 170, 255)">FILE_INT</span><span class="token plain"> file_interface</span><span class="token punctuation" style="color:rgb(199, 146, 234)">.</span><span class="token plain">rb </span><span class="token operator" style="color:rgb(127, 219, 202)">/</span><span class="token plain">archive </span><span class="token operator" style="color:rgb(127, 219, 202)">/</span><span class="token plain">dropbox</span><span class="token operator" style="color:rgb(127, 219, 202)">/</span><span class="token plain"> </span><span class="token operator" style="color:rgb(127, 219, 202)">/</span><span class="token plain">archive </span><span class="token number" style="color:rgb(247, 140, 108)">1024</span><span class="token plain"> </span><span class="token boolean" style="color:rgb(255, 88, 116)">false</span><span class="token plain"></span><br></span><span class=token-line style=color:#d6deeb><span class="token plain"> </span><span class="token constant" style="color:rgb(130, 170, 255)">OPTION</span><span class="token plain"> </span><span class="token constant" style="color:rgb(130, 170, 255)">LABEL</span><span class="token plain"> data</span><br></span><span class=token-line style=color:#d6deeb><span class="token plain"> </span><span class="token constant" style="color:rgb(130, 170, 255)">OPTION</span><span class="token plain"> </span><span class="token constant" style="color:rgb(130, 170, 255)">EXTENSION</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">.</span><span class="token plain">dat</span><br></span><span class=token-line style=color:#d6deeb><span class="token plain"> </span><span class="token constant" style="color:rgb(130, 170, 255)">OPTION</span><span class="token plain"> </span><span class="token constant" style="color:rgb(130, 170, 255)">POLLING</span><span class="token plain"> </span><span class="token boolean" style="color:rgb(255, 88, 116)">true</span><span class="token plain"></span><br></span><span class=token-line style=color:#d6deeb><span class="token plain"> </span><span class="token constant" style="color:rgb(130, 170, 255)">OPTION</span><span class="token plain"> </span><span class="token constant" style="color:rgb(130, 170, 255)">RECURSIVE</span><span class="token plain"> </span><span class="token boolean" style="color:rgb(255, 88, 116)">true</span><span class="token plain"></span><br></span><span class=token-line style=color:#d6deeb><span class="token plain"> </span><span class="token constant" style="color:rgb(130, 170, 255)">TLM_TARGET</span><span class="token plain"> </span><span class="token constant" style="color:rgb(130, 170, 255)">INST</span><span class="token plain"> </span><span class="token comment" style="color:rgb(99, 119, 119);font-style:italic"># This will store INST commands in the archive folder</span><br></span></code></pre><div class=buttonGroup_TNwR><button type=button aria-label="Copy code to clipboard" title=Copy class=clean-btn><span class=copyButtonIcons_MVhB aria-hidden=true><svg viewBox="0 0 24 24" class=copyButtonIcon_yxgH><path fill=currentColor d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"/></svg><svg viewBox="0 0 24 24" class=copyButtonSuccessIcon_QJLJ><path fill=currentColor d=M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z /></svg></span></button></div></div></div>
113
+ <div class="language-ruby codeBlockContainer_ZGJx theme-code-block" style=--prism-color:#d6deeb;--prism-background-color:#011627><div class=codeBlockContent_qZBB><pre tabindex=0 class="prism-code language-ruby codeBlock_TAPP thin-scrollbar" style=color:#d6deeb;background-color:#011627><code class=codeBlockLines_AdAo><span class=token-line style=color:#d6deeb><span class="token constant" style="color:rgb(130, 170, 255)">INTERFACE</span><span class="token plain"> </span><span class="token constant" style="color:rgb(130, 170, 255)">FILE_INT</span><span class="token plain"> openc3</span><span class="token operator" style="color:rgb(127, 219, 202)">/</span><span class="token plain">interfaces</span><span class="token operator" style="color:rgb(127, 219, 202)">/</span><span class="token plain">file_interface</span><span class="token punctuation" style="color:rgb(199, 146, 234)">.</span><span class="token plain">py None </span><span class="token operator" style="color:rgb(127, 219, 202)">/</span><span class="token plain">dropbox </span><span class="token operator" style="color:rgb(127, 219, 202)">/</span><span class="token plain">archive </span><span class="token number" style="color:rgb(247, 140, 108)">65536</span><span class="token plain"> True </span><span class="token constant" style="color:rgb(130, 170, 255)">PREIDENTIFIED</span><span class="token plain"></span><br></span><span class=token-line style=color:#d6deeb><span class="token plain"> </span><span class="token constant" style="color:rgb(130, 170, 255)">MAP_TLM_TARGET</span><span class="token plain"> </span><span class="token constant" style="color:rgb(130, 170, 255)">INST</span><span class="token plain"> </span><span class="token comment" style="color:rgb(99, 119, 119);font-style:italic"># Since we passed None to Command Write Folder we map as TLM only</span><span class="token plain"></span><br></span><span class=token-line style=color:#d6deeb><span class="token plain"> </span><span class="token constant" style="color:rgb(130, 170, 255)">OPTION</span><span class="token plain"> </span><span class="token constant" style="color:rgb(130, 170, 255)">THROTTLE</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">5</span><span class="token plain"></span><br></span><span class=token-line style=color:#d6deeb><span class="token plain"> </span><span class="token constant" style="color:rgb(130, 170, 255)">OPTION</span><span class="token plain"> </span><span class="token constant" style="color:rgb(130, 170, 255)">DISCARD_FILE_HEADER_BYTES</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">128</span><span class="token plain"> </span><span class="token comment" style="color:rgb(99, 119, 119);font-style:italic"># For COSMOS 4 File Header</span><span class="token plain"></span><br></span><span class=token-line style=color:#d6deeb><span class="token plain"></span><span class="token constant" style="color:rgb(130, 170, 255)">INTERFACE</span><span class="token plain"> </span><span class="token constant" style="color:rgb(130, 170, 255)">FILE_INT</span><span class="token plain"> openc3</span><span class="token operator" style="color:rgb(127, 219, 202)">/</span><span class="token plain">interfaces</span><span class="token operator" style="color:rgb(127, 219, 202)">/</span><span class="token plain">file_interface</span><span class="token punctuation" style="color:rgb(199, 146, 234)">.</span><span class="token plain">py </span><span class="token operator" style="color:rgb(127, 219, 202)">/</span><span class="token plain">archive </span><span class="token operator" style="color:rgb(127, 219, 202)">/</span><span class="token plain">dropbox</span><span class="token operator" style="color:rgb(127, 219, 202)">/</span><span class="token plain"> </span><span class="token operator" style="color:rgb(127, 219, 202)">/</span><span class="token plain">archive </span><span class="token number" style="color:rgb(247, 140, 108)">1024</span><span class="token plain"> False</span><br></span><span class=token-line style=color:#d6deeb><span class="token plain"> </span><span class="token constant" style="color:rgb(130, 170, 255)">OPTION</span><span class="token plain"> </span><span class="token constant" style="color:rgb(130, 170, 255)">LABEL</span><span class="token plain"> data</span><br></span><span class=token-line style=color:#d6deeb><span class="token plain"> </span><span class="token constant" style="color:rgb(130, 170, 255)">OPTION</span><span class="token plain"> </span><span class="token constant" style="color:rgb(130, 170, 255)">EXTENSION</span><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">.</span><span class="token plain">dat</span><br></span><span class=token-line style=color:#d6deeb><span class="token plain"> </span><span class="token constant" style="color:rgb(130, 170, 255)">OPTION</span><span class="token plain"> </span><span class="token constant" style="color:rgb(130, 170, 255)">POLLING</span><span class="token plain"> True</span><br></span><span class=token-line style=color:#d6deeb><span class="token plain"> </span><span class="token constant" style="color:rgb(130, 170, 255)">OPTION</span><span class="token plain"> </span><span class="token constant" style="color:rgb(130, 170, 255)">RECURSIVE</span><span class="token plain"> True</span><br></span><span class=token-line style=color:#d6deeb><span class="token plain"> </span><span class="token constant" style="color:rgb(130, 170, 255)">TLM_TARGET</span><span class="token plain"> </span><span class="token constant" style="color:rgb(130, 170, 255)">INST</span><span class="token plain"> </span><span class="token comment" style="color:rgb(99, 119, 119);font-style:italic"># This will store INST commands in the archive folder</span><br></span></code></pre><div class=buttonGroup_TNwR><button type=button aria-label="Copy code to clipboard" title=Copy class=clean-btn><span class=copyButtonIcons_MVhB aria-hidden=true><svg viewBox="0 0 24 24" class=copyButtonIcon_yxgH><path fill=currentColor d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"/></svg><svg viewBox="0 0 24 24" class=copyButtonSuccessIcon_QJLJ><path fill=currentColor d=M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z /></svg></span></button></div></div></div>
103
114
  <h3 class="anchor anchorWithStickyNavbar_fF9Z" id=snmp-interface-enterprise>SNMP Interface (Enterprise)<a href=#snmp-interface-enterprise class=hash-link aria-label="Direct link to SNMP Interface (Enterprise)" title="Direct link to SNMP Interface (Enterprise)">​</a></h3>
104
115
  <p>The SNMP Interface is for connecting to Simple Network Management Protocol devices. The SNMP Interface is currently only implemented in Ruby.</p>
105
116
  <table><thead><tr><th>Parameter<th>Description<th>Required<th>Default<tbody><tr><td>Host<td>Host name of the SNMP device<td>Yes<td><tr><td>Port<td>Port on the SNMP device<td>No<td>161</table>
106
- <h4 class="anchor anchorWithStickyNavbar_fF9Z" id=interface-options-5>Interface Options<a href=#interface-options-5 class=hash-link aria-label="Direct link to Interface Options" title="Direct link to Interface Options">​</a></h4>
117
+ <h4 class="anchor anchorWithStickyNavbar_fF9Z" id=interface-options-6>Interface Options<a href=#interface-options-6 class=hash-link aria-label="Direct link to Interface Options" title="Direct link to Interface Options">​</a></h4>
107
118
  <p>Options are added directly beneath the interface definition as shown in the example.</p>
108
119
  <table><thead><tr><th>Option<th>Description<th>Default<tbody><tr><td>VERSION<td>SNMP Version: 1, 2, or 3<td>1<tr><td>COMMUNITY<td>Password or user ID that allows access to a device<td>private<tr><td>USERNAME<td>Username<td>N/A<tr><td>RETRIES<td>Retries when sending requests<td>N/A<tr><td>TIMEOUT<td>Timeout waiting for a response from an agent<td>N/A<tr><td>CONTEXT<td>SNMP context<td>N/A<tr><td>SECURITY_LEVEL<td>Must be one of NO_AUTH, AUTH_PRIV, or AUTH_NO_PRIV<td>N/A<tr><td>AUTH_PROTOCOL<td>Must be one of MD5, SHA, or SHA256<td>N/A<tr><td>PRIV_PROTOCOL<td>Must be one of DES or AES<td>N/A<tr><td>AUTH_PASSWORD<td>Auth password<td>N/A<tr><td>PRIV_PASSWORD<td>Priv password<td>N/A</table>
109
120
  <p>plugin.txt Ruby Examples:</p>
@@ -112,7 +123,7 @@
112
123
  <h3 class="anchor anchorWithStickyNavbar_fF9Z" id=snmp-trap-interface-enterprise>SNMP Trap Interface (Enterprise)<a href=#snmp-trap-interface-enterprise class=hash-link aria-label="Direct link to SNMP Trap Interface (Enterprise)" title="Direct link to SNMP Trap Interface (Enterprise)">​</a></h3>
113
124
  <p>The SNMP Trap Interface is for receiving Simple Network Management Protocol traps. The SNMP Trap Interface is currently only implemented in Ruby.</p>
114
125
  <table><thead><tr><th>Parameter<th>Description<th>Required<th>Default<tbody><tr><td>Read Port<td>Port to read from<td>No<td>162<tr><td>Read Timeout<td>Read timeout<td>No<td>nil<tr><td>Bind Address<td>Address to bind UDP port to<td>Yes<td>0.0.0.0</table>
115
- <h4 class="anchor anchorWithStickyNavbar_fF9Z" id=interface-options-6>Interface Options<a href=#interface-options-6 class=hash-link aria-label="Direct link to Interface Options" title="Direct link to Interface Options">​</a></h4>
126
+ <h4 class="anchor anchorWithStickyNavbar_fF9Z" id=interface-options-7>Interface Options<a href=#interface-options-7 class=hash-link aria-label="Direct link to Interface Options" title="Direct link to Interface Options">​</a></h4>
116
127
  <p>Options are added directly beneath the interface definition as shown in the example.</p>
117
128
  <table><thead><tr><th>Option<th>Description<th>Default<tbody><tr><td>VERSION<td>SNMP Version: 1, 2, or 3<td>1</table>
118
129
  <p>plugin.txt Ruby Examples:</p>
@@ -144,4 +155,4 @@
144
155
  <li><strong>write</strong> - Send a packet to the interface. COSMOS implements this method to allow the Protocol system to operate on the packet and the data before it is sent.</li>
145
156
  <li><strong>write_raw</strong> - Send a raw binary string of data to the target. COSMOS implements this method by basically calling write_interface with the raw data.</li>
146
157
  </ol>
147
- <div class="theme-admonition theme-admonition-warning admonition_IZjC alert alert--warning"><div class=admonitionHeading_uVvU><span class=admonitionIcon_HiR3><svg viewBox="0 0 16 16"><path fill-rule=evenodd d="M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"/></svg></span>Naming Conventions</div><div class=admonitionContent_bl22><p>When creating your own interfaces, in most cases they will be subclasses of one of the built-in interfaces described below. It is important to know that both the filename and class name of the interface files must match with correct capitalization or you will receive "class not found" errors when trying to load your new interface. For example, an interface file called labview_interface.rb must contain the class LabviewInterface. If the class was named, LabVIEWInterface, for example, COSMOS would not be able to find the class because of the unexpected capitalization.</div></div></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="row margin-top--sm theme-doc-footer-edit-meta-row"><div class=col><a href=https://github.com/OpenC3/cosmos/tree/main/docs.openc3.com/docs/configuration/interfaces.md target=_blank rel="noopener noreferrer" class=theme-edit-this-page><svg fill=currentColor height=20 width=20 viewBox="0 0 40 40" class=iconEdit_UohW aria-hidden=true><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"/></g></svg>Edit this page</a></div><div class="col lastUpdated_g62E"></div></div></footer></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href=/tools/staticdocs/docs/configuration/telemetry><div class=pagination-nav__sublabel>Previous</div><div class=pagination-nav__label>Telemetry</div></a><a class="pagination-nav__link pagination-nav__link--next" href=/tools/staticdocs/docs/configuration/protocols><div class=pagination-nav__sublabel>Next</div><div class=pagination-nav__label>Protocols</div></a></nav></div></div><div class="col col--3"><div class="tableOfContents_TN1Q thin-scrollbar theme-doc-toc-desktop"><ul class="table-of-contents table-of-contents__left-border"><li><a href=#overview class="table-of-contents__link toc-highlight">Overview</a><ul><li><a href=#protocols class="table-of-contents__link toc-highlight">Protocols</a><li><a href=#accessors class="table-of-contents__link toc-highlight">Accessors</a></ul><li><a href=#provided-interfaces class="table-of-contents__link toc-highlight">Provided Interfaces</a><ul><li><a href=#all-interface-options class="table-of-contents__link toc-highlight">All Interface Options</a><li><a href=#tcpip-client-interface class="table-of-contents__link toc-highlight">TCPIP Client Interface</a><li><a href=#tcpip-server-interface class="table-of-contents__link toc-highlight">TCPIP Server Interface</a><ul><li><a href=#interface-options class="table-of-contents__link toc-highlight">Interface Options</a></ul><li><a href=#udp-interface class="table-of-contents__link toc-highlight">UDP Interface</a><li><a href=#http-client-interface class="table-of-contents__link toc-highlight">HTTP Client Interface</a><li><a href=#http-server-interface class="table-of-contents__link toc-highlight">HTTP Server Interface</a><ul><li><a href=#interface-options-1 class="table-of-contents__link toc-highlight">Interface Options</a></ul><li><a href=#mqtt-interface class="table-of-contents__link toc-highlight">MQTT Interface</a><ul><li><a href=#interface-options-2 class="table-of-contents__link toc-highlight">Interface Options</a><li><a href=#packet-definitions class="table-of-contents__link toc-highlight">Packet Definitions</a></ul><li><a href=#mqtt-streaming-interface class="table-of-contents__link toc-highlight">MQTT Streaming Interface</a><ul><li><a href=#interface-options-3 class="table-of-contents__link toc-highlight">Interface Options</a><li><a href=#packet-definitions-1 class="table-of-contents__link toc-highlight">Packet Definitions</a></ul><li><a href=#serial-interface class="table-of-contents__link toc-highlight">Serial Interface</a><ul><li><a href=#interface-options-4 class="table-of-contents__link toc-highlight">Interface Options</a></ul><li><a href=#snmp-interface-enterprise class="table-of-contents__link toc-highlight">SNMP Interface (Enterprise)</a><ul><li><a href=#interface-options-5 class="table-of-contents__link toc-highlight">Interface Options</a></ul><li><a href=#snmp-trap-interface-enterprise class="table-of-contents__link toc-highlight">SNMP Trap Interface (Enterprise)</a><ul><li><a href=#interface-options-6 class="table-of-contents__link toc-highlight">Interface Options</a></ul><li><a href=#grpc-interface-enterprise class="table-of-contents__link toc-highlight">gRPC Interface (Enterprise)</a><ul><li><a href=#commands class="table-of-contents__link toc-highlight">Commands</a></ul></ul><li><a href=#custom-interfaces class="table-of-contents__link toc-highlight">Custom Interfaces</a></ul></div></div></div></div></main></div></div></div><footer class="footer footer--dark"><div class="container container-fluid"><div class="row footer__links"><div class="col footer__col"><div class=footer__title>Homepage</div><ul class="footer__items clean-list"><li class=footer__item><a href=https://openc3.com target=_blank rel="noopener noreferrer" class=footer__link-item>Home</a></ul></div><div class="col footer__col"><div class=footer__title>Docs</div><ul class="footer__items clean-list"><li class=footer__item><a class=footer__link-item href=/tools/staticdocs/docs>Documentation</a></ul></div><div class="col footer__col"><div class=footer__title>Community</div><ul class="footer__items clean-list"><li class=footer__item><a href=https://www.linkedin.com/company/openc3 target=_blank rel="noopener noreferrer" class=footer__link-item>LinkedIn<svg width=13.5 height=13.5 aria-hidden=true viewBox="0 0 24 24" class=iconExternalLink_awgD><path fill=currentColor d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></svg></a></ul></div><div class="col footer__col"><div class=footer__title>More</div><ul class="footer__items clean-list"><li class=footer__item><a href=https://github.com/OpenC3/cosmos target=_blank rel="noopener noreferrer" class=footer__link-item>GitHub<svg width=13.5 height=13.5 aria-hidden=true viewBox="0 0 24 24" class=iconExternalLink_awgD><path fill=currentColor d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></svg></a><li class=footer__item><a class=footer__link-item href=/tools/staticdocs/docs/privacy>Privacy</a></ul></div></div><div class="footer__bottom text--center"><div class=footer__copyright>Copyright © 2025 OpenC3, Inc.</div></div></div></footer></div>
158
+ <div class="theme-admonition theme-admonition-warning admonition_IZjC alert alert--warning"><div class=admonitionHeading_uVvU><span class=admonitionIcon_HiR3><svg viewBox="0 0 16 16"><path fill-rule=evenodd d="M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"/></svg></span>Naming Conventions</div><div class=admonitionContent_bl22><p>When creating your own interfaces, in most cases they will be subclasses of one of the built-in interfaces described below. It is important to know that both the filename and class name of the interface files must match with correct capitalization or you will receive "class not found" errors when trying to load your new interface. For example, an interface file called labview_interface.rb must contain the class LabviewInterface. If the class was named, LabVIEWInterface, for example, COSMOS would not be able to find the class because of the unexpected capitalization.</div></div></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="row margin-top--sm theme-doc-footer-edit-meta-row"><div class=col><a href=https://github.com/OpenC3/cosmos/tree/main/docs.openc3.com/docs/configuration/interfaces.md target=_blank rel="noopener noreferrer" class=theme-edit-this-page><svg fill=currentColor height=20 width=20 viewBox="0 0 40 40" class=iconEdit_UohW aria-hidden=true><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"/></g></svg>Edit this page</a></div><div class="col lastUpdated_g62E"></div></div></footer></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href=/tools/staticdocs/docs/configuration/telemetry><div class=pagination-nav__sublabel>Previous</div><div class=pagination-nav__label>Telemetry</div></a><a class="pagination-nav__link pagination-nav__link--next" href=/tools/staticdocs/docs/configuration/protocols><div class=pagination-nav__sublabel>Next</div><div class=pagination-nav__label>Protocols</div></a></nav></div></div><div class="col col--3"><div class="tableOfContents_TN1Q thin-scrollbar theme-doc-toc-desktop"><ul class="table-of-contents table-of-contents__left-border"><li><a href=#overview class="table-of-contents__link toc-highlight">Overview</a><ul><li><a href=#protocols class="table-of-contents__link toc-highlight">Protocols</a><li><a href=#accessors class="table-of-contents__link toc-highlight">Accessors</a></ul><li><a href=#provided-interfaces class="table-of-contents__link toc-highlight">Provided Interfaces</a><ul><li><a href=#all-interface-options class="table-of-contents__link toc-highlight">All Interface Options</a><li><a href=#tcpip-client-interface class="table-of-contents__link toc-highlight">TCPIP Client Interface</a><li><a href=#tcpip-server-interface class="table-of-contents__link toc-highlight">TCPIP Server Interface</a><ul><li><a href=#interface-options class="table-of-contents__link toc-highlight">Interface Options</a></ul><li><a href=#udp-interface class="table-of-contents__link toc-highlight">UDP Interface</a><li><a href=#http-client-interface class="table-of-contents__link toc-highlight">HTTP Client Interface</a><li><a href=#http-server-interface class="table-of-contents__link toc-highlight">HTTP Server Interface</a><ul><li><a href=#interface-options-1 class="table-of-contents__link toc-highlight">Interface Options</a></ul><li><a href=#mqtt-interface class="table-of-contents__link toc-highlight">MQTT Interface</a><ul><li><a href=#interface-options-2 class="table-of-contents__link toc-highlight">Interface Options</a><li><a href=#packet-definitions class="table-of-contents__link toc-highlight">Packet Definitions</a></ul><li><a href=#mqtt-streaming-interface class="table-of-contents__link toc-highlight">MQTT Streaming Interface</a><ul><li><a href=#interface-options-3 class="table-of-contents__link toc-highlight">Interface Options</a><li><a href=#packet-definitions-1 class="table-of-contents__link toc-highlight">Packet Definitions</a></ul><li><a href=#serial-interface class="table-of-contents__link toc-highlight">Serial Interface</a><ul><li><a href=#interface-options-4 class="table-of-contents__link toc-highlight">Interface Options</a></ul><li><a href=#file-interface class="table-of-contents__link toc-highlight">File Interface</a><ul><li><a href=#interface-options-5 class="table-of-contents__link toc-highlight">Interface Options</a><li><a href=#docker-composeyaml class="table-of-contents__link toc-highlight">Docker compose.yaml</a></ul><li><a href=#snmp-interface-enterprise class="table-of-contents__link toc-highlight">SNMP Interface (Enterprise)</a><ul><li><a href=#interface-options-6 class="table-of-contents__link toc-highlight">Interface Options</a></ul><li><a href=#snmp-trap-interface-enterprise class="table-of-contents__link toc-highlight">SNMP Trap Interface (Enterprise)</a><ul><li><a href=#interface-options-7 class="table-of-contents__link toc-highlight">Interface Options</a></ul><li><a href=#grpc-interface-enterprise class="table-of-contents__link toc-highlight">gRPC Interface (Enterprise)</a><ul><li><a href=#commands class="table-of-contents__link toc-highlight">Commands</a></ul></ul><li><a href=#custom-interfaces class="table-of-contents__link toc-highlight">Custom Interfaces</a></ul></div></div></div></div></main></div></div></div><footer class="footer footer--dark"><div class="container container-fluid"><div class="row footer__links"><div class="col footer__col"><div class=footer__title>Homepage</div><ul class="footer__items clean-list"><li class=footer__item><a href=https://openc3.com target=_blank rel="noopener noreferrer" class=footer__link-item>Home</a></ul></div><div class="col footer__col"><div class=footer__title>Docs</div><ul class="footer__items clean-list"><li class=footer__item><a class=footer__link-item href=/tools/staticdocs/docs>Documentation</a></ul></div><div class="col footer__col"><div class=footer__title>Community</div><ul class="footer__items clean-list"><li class=footer__item><a href=https://www.linkedin.com/company/openc3 target=_blank rel="noopener noreferrer" class=footer__link-item>LinkedIn<svg width=13.5 height=13.5 aria-hidden=true viewBox="0 0 24 24" class=iconExternalLink_awgD><path fill=currentColor d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></svg></a></ul></div><div class="col footer__col"><div class=footer__title>More</div><ul class="footer__items clean-list"><li class=footer__item><a href=https://github.com/OpenC3/cosmos target=_blank rel="noopener noreferrer" class=footer__link-item>GitHub<svg width=13.5 height=13.5 aria-hidden=true viewBox="0 0 24 24" class=iconExternalLink_awgD><path fill=currentColor d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></svg></a><li class=footer__item><a class=footer__link-item href=/tools/staticdocs/docs/privacy>Privacy</a></ul></div></div><div class="footer__bottom text--center"><div class=footer__copyright>Copyright © 2025 OpenC3, Inc.</div></div></div></footer></div>
@@ -1,4 +1,4 @@
1
- <!doctype html><html lang=en dir=ltr class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-configuration/plugins" data-has-hydrated=false><meta charset=UTF-8><meta name=generator content="Docusaurus v3.7.0"><title data-rh=true>Plugins | OpenC3 Docs</title><meta data-rh=true name=viewport content="width=device-width, initial-scale=1.0"><meta data-rh=true name=twitter:card content=summary_large_image><meta data-rh=true property=og:url content=https://docs.openc3.com/tools/staticdocs/docs/configuration/plugins><meta data-rh=true property=og:locale content=en><meta data-rh=true name=docusaurus_locale content=en><meta data-rh=true name=docsearch:language content=en><meta data-rh=true name=docusaurus_version content=current><meta data-rh=true name=docusaurus_tag content=docs-default-current><meta data-rh=true name=docsearch:version content=current><meta data-rh=true name=docsearch:docusaurus_tag content=docs-default-current><meta data-rh=true property=og:title content="Plugins | OpenC3 Docs"><meta data-rh=true name=description content="Plugin definition file format and keywords"><meta data-rh=true property=og:description content="Plugin definition file format and keywords"><link data-rh=true rel=icon href=/tools/staticdocs/img/favicon.png><link data-rh=true rel=canonical href=https://docs.openc3.com/tools/staticdocs/docs/configuration/plugins><link data-rh=true rel=alternate href=https://docs.openc3.com/tools/staticdocs/docs/configuration/plugins hreflang=en><link data-rh=true rel=alternate href=https://docs.openc3.com/tools/staticdocs/docs/configuration/plugins hreflang=x-default><link rel=stylesheet href=/tools/staticdocs/assets/css/styles.1de6b959.css><script src=/tools/staticdocs/assets/js/runtime~main.d38c5d36.js defer></script><script src=/tools/staticdocs/assets/js/main.8d947189.js defer></script><body class=navigation-with-keyboard><script>!function(){var t,e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t=null!==e?e:"dark",document.documentElement.setAttribute("data-theme",t)}(),function(){try{for(var[t,e]of new URLSearchParams(window.location.search).entries())if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id=__docusaurus><link rel=preload as=image href=/tools/staticdocs/img/logo.svg><div role=region aria-label="Skip to main content"><a class=skipToContent_G6ar href=#__docusaurus_skipToContent_fallback>Skip to main content</a></div><nav aria-label=Main class="navbar navbar--fixed-top"><div class=navbar__inner><div class=navbar__items><button aria-label="Toggle navigation bar" aria-expanded=false class="navbar__toggle clean-btn" type=button><svg width=30 height=30 viewBox="0 0 30 30" aria-hidden=true><path stroke=currentColor stroke-linecap=round stroke-miterlimit=10 stroke-width=2 d="M4 7h22M4 15h22M4 23h22"/></svg></button><a class=navbar__brand href=/tools/staticdocs/><div class=navbar__logo><img src=/tools/staticdocs/img/logo.svg alt="OpenC3 Logo" class="themedComponent_DHUr themedComponent--light_DIHH"><img src=/tools/staticdocs/img/logo.svg alt="OpenC3 Logo" class="themedComponent_DHUr themedComponent--dark_Bv2M"></div><b class="navbar__title text--truncate">OpenC3 Docs</b></a><a aria-current=page class="navbar__item navbar__link navbar__link--active" href=/tools/staticdocs/docs>Documentation</a><a href=https://openc3.com/enterprise/ target=_blank rel="noopener noreferrer" class="navbar__item navbar__link">Enterprise</a></div><div class="navbar__items navbar__items--right"><div class=navbarSearchContainer_bmvg><div class=navbar__search><span aria-label="expand searchbar" role=button class=search-icon tabindex=0></span><input id=search_input_react type=search placeholder=Loading... aria-label=Search class="navbar__search-input search-bar" disabled></div></div></div></div><div role=presentation class=navbar-sidebar__backdrop></div></nav><div id=__docusaurus_skipToContent_fallback class="main-wrapper mainWrapper_UyTV"><div class=docsWrapper_XLvK><button aria-label="Scroll back to top" class="clean-btn theme-back-to-top-button backToTopButton_z1FD" type=button></button><div class=docRoot_HciC><aside class="theme-doc-sidebar-container docSidebarContainer_e5ai"><div class=sidebarViewport_N8x0><div class=sidebar_vJCc><nav aria-label="Docs sidebar" class="menu thin-scrollbar menu_qiME"><ul class="theme-doc-sidebar-menu menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class=menu__link href=/tools/staticdocs/docs>Introduction</a><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class=menu__list-item-collapsible><a class="menu__link menu__link--sublist" href=/tools/staticdocs/docs/getting-started>Getting Started</a><button aria-label="Expand sidebar category 'Getting Started'" aria-expanded=false type=button class="clean-btn menu__caret"></button></div><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class=menu__list-item-collapsible><a class="menu__link menu__link--sublist menu__link--active" href=/tools/staticdocs/docs/configuration>Configuration</a><button aria-label="Collapse sidebar category 'Configuration'" aria-expanded=true type=button class="clean-btn menu__caret"></button></div><ul style=display:block;overflow:visible;height:auto class=menu__list><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class=menu__link tabindex=0 href=/tools/staticdocs/docs/configuration/format>File Format</a><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link menu__link--active" aria-current=page tabindex=0 href=/tools/staticdocs/docs/configuration/plugins>Plugins</a><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class=menu__link tabindex=0 href=/tools/staticdocs/docs/configuration/target>Targets</a><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class=menu__link tabindex=0 href=/tools/staticdocs/docs/configuration/command>Commands</a><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class=menu__link tabindex=0 href=/tools/staticdocs/docs/configuration/telemetry>Telemetry</a><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class=menu__link tabindex=0 href=/tools/staticdocs/docs/configuration/interfaces>Interfaces</a><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class=menu__link tabindex=0 href=/tools/staticdocs/docs/configuration/protocols>Protocols</a><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class=menu__link tabindex=0 href=/tools/staticdocs/docs/configuration/accessors>Accessors</a><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class=menu__link tabindex=0 href=/tools/staticdocs/docs/configuration/table>Tables</a><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class=menu__link tabindex=0 href=/tools/staticdocs/docs/configuration/telemetry-screens>Screens</a><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class=menu__link tabindex=0 href=/tools/staticdocs/docs/configuration/ssl-tls>SSL-TLS</a></ul><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class=menu__list-item-collapsible><a class="menu__link menu__link--sublist" href=/tools/staticdocs/docs/tools>Tools</a><button aria-label="Expand sidebar category 'Tools'" aria-expanded=false type=button class="clean-btn menu__caret"></button></div><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class=menu__list-item-collapsible><a class="menu__link menu__link--sublist" href=/tools/staticdocs/docs/guides>Guides</a><button aria-label="Expand sidebar category 'Guides'" aria-expanded=false type=button class="clean-btn menu__caret"></button></div><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class=menu__list-item-collapsible><a class="menu__link menu__link--sublist" href=/tools/staticdocs/docs/development>Development</a><button aria-label="Expand sidebar category 'Development'" aria-expanded=false type=button class="clean-btn menu__caret"></button></div><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class=menu__list-item-collapsible><a class="menu__link menu__link--sublist" href=/tools/staticdocs/docs/meta>Meta</a><button aria-label="Expand sidebar category 'Meta'" aria-expanded=false type=button class="clean-btn menu__caret"></button></div><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class=menu__link href=/tools/staticdocs/docs/privacy>OpenC3, Inc. Privacy Policy</a></ul></nav></div></div></aside><main class=docMainContainer_namt><div class="container padding-top--md padding-bottom--lg"><div class=row><div class="col docItemCol_YAwJ"><div class=docItemContainer_Rv5Z><article><nav class="theme-doc-breadcrumbs breadcrumbsContainer_zCmv" aria-label=Breadcrumbs><ul class=breadcrumbs itemscope itemtype=https://schema.org/BreadcrumbList><li class=breadcrumbs__item><a aria-label="Home page" class=breadcrumbs__link href=/tools/staticdocs/><svg viewBox="0 0 24 24" class=breadcrumbHomeIcon_JFrk><path d="M10 19v-5h4v5c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-7h1.7c.46 0 .68-.57.33-.87L12.67 3.6c-.38-.34-.96-.34-1.34 0l-8.36 7.53c-.34.3-.13.87.33.87H5v7c0 .55.45 1 1 1h3c.55 0 1-.45 1-1z" fill=currentColor /></svg></a><li itemscope itemprop=itemListElement itemtype=https://schema.org/ListItem class=breadcrumbs__item><a class=breadcrumbs__link itemprop=item href=/tools/staticdocs/docs/configuration><span itemprop=name>Configuration</span></a><meta itemprop=position content=1><li itemscope itemprop=itemListElement itemtype=https://schema.org/ListItem class="breadcrumbs__item breadcrumbs__item--active"><span class=breadcrumbs__link itemprop=name>Plugins</span><meta itemprop=position content=2></ul></nav><div class="tocCollapsible_O_Qc theme-doc-toc-mobile tocMobile_tjDr"><button type=button class="clean-btn tocCollapsibleButton_htYj">On this page</button></div><div class="theme-doc-markdown markdown"><header><h1>Plugins</h1></header><h2 class="anchor anchorWithStickyNavbar_fF9Z" id=introduction>Introduction<a href=#introduction class=hash-link aria-label="Direct link to Introduction" title="Direct link to Introduction">​</a></h2>
1
+ <!doctype html><html lang=en dir=ltr class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-configuration/plugins" data-has-hydrated=false><meta charset=UTF-8><meta name=generator content="Docusaurus v3.7.0"><title data-rh=true>Plugins | OpenC3 Docs</title><meta data-rh=true name=viewport content="width=device-width, initial-scale=1.0"><meta data-rh=true name=twitter:card content=summary_large_image><meta data-rh=true property=og:url content=https://docs.openc3.com/tools/staticdocs/docs/configuration/plugins><meta data-rh=true property=og:locale content=en><meta data-rh=true name=docusaurus_locale content=en><meta data-rh=true name=docsearch:language content=en><meta data-rh=true name=docusaurus_version content=current><meta data-rh=true name=docusaurus_tag content=docs-default-current><meta data-rh=true name=docsearch:version content=current><meta data-rh=true name=docsearch:docusaurus_tag content=docs-default-current><meta data-rh=true property=og:title content="Plugins | OpenC3 Docs"><meta data-rh=true name=description content="Plugin definition file format and keywords"><meta data-rh=true property=og:description content="Plugin definition file format and keywords"><link data-rh=true rel=icon href=/tools/staticdocs/img/favicon.png><link data-rh=true rel=canonical href=https://docs.openc3.com/tools/staticdocs/docs/configuration/plugins><link data-rh=true rel=alternate href=https://docs.openc3.com/tools/staticdocs/docs/configuration/plugins hreflang=en><link data-rh=true rel=alternate href=https://docs.openc3.com/tools/staticdocs/docs/configuration/plugins hreflang=x-default><link rel=stylesheet href=/tools/staticdocs/assets/css/styles.1de6b959.css><script src=/tools/staticdocs/assets/js/runtime~main.7102cb65.js defer></script><script src=/tools/staticdocs/assets/js/main.a8e2c06c.js defer></script><body class=navigation-with-keyboard><script>!function(){var t,e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t=null!==e?e:"dark",document.documentElement.setAttribute("data-theme",t)}(),function(){try{for(var[t,e]of new URLSearchParams(window.location.search).entries())if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id=__docusaurus><link rel=preload as=image href=/tools/staticdocs/img/logo.svg><div role=region aria-label="Skip to main content"><a class=skipToContent_G6ar href=#__docusaurus_skipToContent_fallback>Skip to main content</a></div><nav aria-label=Main class="navbar navbar--fixed-top"><div class=navbar__inner><div class=navbar__items><button aria-label="Toggle navigation bar" aria-expanded=false class="navbar__toggle clean-btn" type=button><svg width=30 height=30 viewBox="0 0 30 30" aria-hidden=true><path stroke=currentColor stroke-linecap=round stroke-miterlimit=10 stroke-width=2 d="M4 7h22M4 15h22M4 23h22"/></svg></button><a class=navbar__brand href=/tools/staticdocs/><div class=navbar__logo><img src=/tools/staticdocs/img/logo.svg alt="OpenC3 Logo" class="themedComponent_DHUr themedComponent--light_DIHH"><img src=/tools/staticdocs/img/logo.svg alt="OpenC3 Logo" class="themedComponent_DHUr themedComponent--dark_Bv2M"></div><b class="navbar__title text--truncate">OpenC3 Docs</b></a><a aria-current=page class="navbar__item navbar__link navbar__link--active" href=/tools/staticdocs/docs>Documentation</a><a href=https://openc3.com/enterprise/ target=_blank rel="noopener noreferrer" class="navbar__item navbar__link">Enterprise</a></div><div class="navbar__items navbar__items--right"><div class=navbarSearchContainer_bmvg><div class=navbar__search><span aria-label="expand searchbar" role=button class=search-icon tabindex=0></span><input id=search_input_react type=search placeholder=Loading... aria-label=Search class="navbar__search-input search-bar" disabled></div></div></div></div><div role=presentation class=navbar-sidebar__backdrop></div></nav><div id=__docusaurus_skipToContent_fallback class="main-wrapper mainWrapper_UyTV"><div class=docsWrapper_XLvK><button aria-label="Scroll back to top" class="clean-btn theme-back-to-top-button backToTopButton_z1FD" type=button></button><div class=docRoot_HciC><aside class="theme-doc-sidebar-container docSidebarContainer_e5ai"><div class=sidebarViewport_N8x0><div class=sidebar_vJCc><nav aria-label="Docs sidebar" class="menu thin-scrollbar menu_qiME"><ul class="theme-doc-sidebar-menu menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class=menu__link href=/tools/staticdocs/docs>Introduction</a><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class=menu__list-item-collapsible><a class="menu__link menu__link--sublist" href=/tools/staticdocs/docs/getting-started>Getting Started</a><button aria-label="Expand sidebar category 'Getting Started'" aria-expanded=false type=button class="clean-btn menu__caret"></button></div><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class=menu__list-item-collapsible><a class="menu__link menu__link--sublist menu__link--active" href=/tools/staticdocs/docs/configuration>Configuration</a><button aria-label="Collapse sidebar category 'Configuration'" aria-expanded=true type=button class="clean-btn menu__caret"></button></div><ul style=display:block;overflow:visible;height:auto class=menu__list><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class=menu__link tabindex=0 href=/tools/staticdocs/docs/configuration/format>File Format</a><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link menu__link--active" aria-current=page tabindex=0 href=/tools/staticdocs/docs/configuration/plugins>Plugins</a><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class=menu__link tabindex=0 href=/tools/staticdocs/docs/configuration/target>Targets</a><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class=menu__link tabindex=0 href=/tools/staticdocs/docs/configuration/command>Commands</a><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class=menu__link tabindex=0 href=/tools/staticdocs/docs/configuration/telemetry>Telemetry</a><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class=menu__link tabindex=0 href=/tools/staticdocs/docs/configuration/interfaces>Interfaces</a><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class=menu__link tabindex=0 href=/tools/staticdocs/docs/configuration/protocols>Protocols</a><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class=menu__link tabindex=0 href=/tools/staticdocs/docs/configuration/accessors>Accessors</a><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class=menu__link tabindex=0 href=/tools/staticdocs/docs/configuration/table>Tables</a><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class=menu__link tabindex=0 href=/tools/staticdocs/docs/configuration/telemetry-screens>Screens</a><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class=menu__link tabindex=0 href=/tools/staticdocs/docs/configuration/ssl-tls>SSL-TLS</a></ul><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class=menu__list-item-collapsible><a class="menu__link menu__link--sublist" href=/tools/staticdocs/docs/tools>Tools</a><button aria-label="Expand sidebar category 'Tools'" aria-expanded=false type=button class="clean-btn menu__caret"></button></div><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class=menu__list-item-collapsible><a class="menu__link menu__link--sublist" href=/tools/staticdocs/docs/guides>Guides</a><button aria-label="Expand sidebar category 'Guides'" aria-expanded=false type=button class="clean-btn menu__caret"></button></div><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class=menu__list-item-collapsible><a class="menu__link menu__link--sublist" href=/tools/staticdocs/docs/development>Development</a><button aria-label="Expand sidebar category 'Development'" aria-expanded=false type=button class="clean-btn menu__caret"></button></div><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class=menu__list-item-collapsible><a class="menu__link menu__link--sublist" href=/tools/staticdocs/docs/meta>Meta</a><button aria-label="Expand sidebar category 'Meta'" aria-expanded=false type=button class="clean-btn menu__caret"></button></div><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class=menu__link href=/tools/staticdocs/docs/privacy>OpenC3, Inc. Privacy Policy</a></ul></nav></div></div></aside><main class=docMainContainer_namt><div class="container padding-top--md padding-bottom--lg"><div class=row><div class="col docItemCol_YAwJ"><div class=docItemContainer_Rv5Z><article><nav class="theme-doc-breadcrumbs breadcrumbsContainer_zCmv" aria-label=Breadcrumbs><ul class=breadcrumbs itemscope itemtype=https://schema.org/BreadcrumbList><li class=breadcrumbs__item><a aria-label="Home page" class=breadcrumbs__link href=/tools/staticdocs/><svg viewBox="0 0 24 24" class=breadcrumbHomeIcon_JFrk><path d="M10 19v-5h4v5c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-7h1.7c.46 0 .68-.57.33-.87L12.67 3.6c-.38-.34-.96-.34-1.34 0l-8.36 7.53c-.34.3-.13.87.33.87H5v7c0 .55.45 1 1 1h3c.55 0 1-.45 1-1z" fill=currentColor /></svg></a><li itemscope itemprop=itemListElement itemtype=https://schema.org/ListItem class=breadcrumbs__item><a class=breadcrumbs__link itemprop=item href=/tools/staticdocs/docs/configuration><span itemprop=name>Configuration</span></a><meta itemprop=position content=1><li itemscope itemprop=itemListElement itemtype=https://schema.org/ListItem class="breadcrumbs__item breadcrumbs__item--active"><span class=breadcrumbs__link itemprop=name>Plugins</span><meta itemprop=position content=2></ul></nav><div class="tocCollapsible_O_Qc theme-doc-toc-mobile tocMobile_tjDr"><button type=button class="clean-btn tocCollapsibleButton_htYj">On this page</button></div><div class="theme-doc-markdown markdown"><header><h1>Plugins</h1></header><h2 class="anchor anchorWithStickyNavbar_fF9Z" id=introduction>Introduction<a href=#introduction class=hash-link aria-label="Direct link to Introduction" title="Direct link to Introduction">​</a></h2>
2
2
  <p>This document provides the information necessary to configure a COSMOS plugin. Plugins are how you configure and extend COSMOS.</p>
3
3
  <p>Plugins are where you define targets (and their corresponding command and telemetry packet definitions), where you configure the interfaces needed to talk to targets, where you can define routers to stream raw data out of COSMOS, how you can add new tools to the COSMOS user interface, and how you can run additional microservices to provide new functionality.</p>
4
4
  <p>Each plugin is built as a Ruby gem and thus has a plugin.gemspec file which builds it. Plugins have a plugin.txt file which declares all the variables used by the plugin and how to interface to the target(s) it contains.</p>
@@ -24,7 +24,7 @@ This file follows the standard COSMOS configuration file format of keywords foll
24
24
  <table><thead><tr><th>Parameter<th>Description<th>Required<tbody><tr><td>Variable Name<td>The name of the variable<td>True<tr><td>Default Value<td>Default value of the variable<td>True</table>
25
25
  <h2 class="anchor anchorWithStickyNavbar_fF9Z" id=needs_dependencies>NEEDS_DEPENDENCIES<a href=#needs_dependencies class=hash-link aria-label="Direct link to NEEDS_DEPENDENCIES" title="Direct link to NEEDS_DEPENDENCIES">​</a></h2>
26
26
  <p><div class=right>(Since 5.5.0)</div><strong>Indicates the plugin needs dependencies and sets the GEM_HOME environment variable</strong><p></p>
27
- <p>If the plugin has a top level lib folder or lists runtime dependencies in the gemspec, NEEDS_DEPENDENCIES is effectively already set. Note that in Enterprise Edition, having NEEDS_DEPENDENCIES adds the NFS volume mount to the Kubernetes pod.</p>
27
+ <p>If the plugin has a top level lib folder or lists runtime dependencies in the gemspec, NEEDS_DEPENDENCIES is effectively already set. Note that in Enterprise, having NEEDS_DEPENDENCIES adds the NFS volume mount to the Kubernetes pod.</p>
28
28
  <h2 class="anchor anchorWithStickyNavbar_fF9Z" id=interface-1>INTERFACE<a href=#interface-1 class=hash-link aria-label="Direct link to INTERFACE" title="Direct link to INTERFACE">​</a></h2>
29
29
  <p><strong>Defines a connection to a physical target</strong></p>
30
30
  <p>Interfaces are what OpenC3 uses to talk to a particular piece of hardware. Interfaces require a Ruby or Python file which implements all the interface methods necessary to talk to the hardware. OpenC3 defines many built in interfaces or you can define your own as long as it implements the interface protocol.</p>
@@ -119,7 +119,7 @@ This file follows the standard COSMOS configuration file format of keywords foll
119
119
  <div class="language-python codeBlockContainer_ZGJx theme-code-block" style=--prism-color:#d6deeb;--prism-background-color:#011627><div class=codeBlockContent_qZBB><pre tabindex=0 class="prism-code language-python codeBlock_TAPP thin-scrollbar" style=color:#d6deeb;background-color:#011627><code class=codeBlockLines_AdAo><span class=token-line style=color:#d6deeb><span class="token plain">CMD python interface_microservice</span><span class="token punctuation" style="color:rgb(199, 146, 234)">.</span><span class="token plain">py DEFAULT__INTERFACE__INT1</span><br></span></code></pre><div class=buttonGroup_TNwR><button type=button aria-label="Copy code to clipboard" title=Copy class=clean-btn><span class=copyButtonIcons_MVhB aria-hidden=true><svg viewBox="0 0 24 24" class=copyButtonIcon_yxgH><path fill=currentColor d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"/></svg><svg viewBox="0 0 24 24" class=copyButtonSuccessIcon_QJLJ><path fill=currentColor d=M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z /></svg></span></button></div></div></div>
120
120
  <h3 class="anchor anchorWithStickyNavbar_fF9Z" id=container>CONTAINER<a href=#container class=hash-link aria-label="Direct link to CONTAINER" title="Direct link to CONTAINER">​</a></h3>
121
121
  <p><div class=right>(Since 5.7.0)</div><strong>Docker Container</strong><p></p>
122
- <p>Container to execute and run the microservice in. Only used in COSMOS Enterprise Edition.</p>
122
+ <p>Container to execute and run the microservice in. Only used in COSMOS Enterprise.</p>
123
123
  <table><thead><tr><th>Parameter<th>Description<th>Required<tbody><tr><td>Args<td>Name of the container<td>False</table>
124
124
  <h3 class="anchor anchorWithStickyNavbar_fF9Z" id=route_prefix>ROUTE_PREFIX<a href=#route_prefix class=hash-link aria-label="Direct link to ROUTE_PREFIX" title="Direct link to ROUTE_PREFIX">​</a></h3>
125
125
  <p><div class=right>(Since 5.7.0)</div><strong>Prefix of route</strong><p></p>
@@ -278,7 +278,7 @@ This file follows the standard COSMOS configuration file format of keywords foll
278
278
  <table><thead><tr><th>Parameter<th>Description<th>Required<tbody><tr><td>Option Name<td>Name of the option<td>True<tr><td>Option Value(s)<td>One or more values to associate with the option<td>True</table>
279
279
  <h3 class="anchor anchorWithStickyNavbar_fF9Z" id=container-1>CONTAINER<a href=#container-1 class=hash-link aria-label="Direct link to CONTAINER" title="Direct link to CONTAINER">​</a></h3>
280
280
  <p><strong>Docker Container</strong></p>
281
- <p>Container to execute and run the microservice in. Only used in COSMOS Enterprise Edition.</p>
281
+ <p>Container to execute and run the microservice in. Only used in COSMOS Enterprise.</p>
282
282
  <table><thead><tr><th>Parameter<th>Description<th>Required<tbody><tr><td>Args<td>Name of the container<td>False</table>
283
283
  <h3 class="anchor anchorWithStickyNavbar_fF9Z" id=secret-1>SECRET<a href=#secret-1 class=hash-link aria-label="Direct link to SECRET" title="Direct link to SECRET">​</a></h3>
284
284
  <p><div class=right>(Since 5.3.0)</div><strong>Define a secret needed by this microservice</strong><p></p>
@@ -340,7 +340,7 @@ This file follows the standard COSMOS configuration file format of keywords foll
340
340
  <table><thead><tr><th>Parameter<th>Description<th>Required<tbody><tr><td>Shown<td>Whether or not the tool is shown. TRUE or FALSE<br><br>Valid Values: <span class=values>true, false</span><td>True</table>
341
341
  <h3 class="anchor anchorWithStickyNavbar_fF9Z" id=position>POSITION<a href=#position class=hash-link aria-label="Direct link to POSITION" title="Direct link to POSITION">​</a></h3>
342
342
  <p><div class=right>(Since 5.0.8)</div><strong>Position of the tool in the nav bar</strong><p></p>
343
- <p>Position of the tool starting at 2 (1 is reserved for Admin Console). Tools without a position are appended to the end as they are installed. All COSMOS open source tools have consecutive integer values for position.</p>
343
+ <p>Position of the tool starting at 2 (1 is reserved for Admin Console). Tools without a position are appended to the end as they are installed. All COSMOS Core tools have consecutive integer values for position.</p>
344
344
  <table><thead><tr><th>Parameter<th>Description<th>Required<tbody><tr><td>Position<td>Numerical position<td>True</table>
345
345
  <h3 class="anchor anchorWithStickyNavbar_fF9Z" id=disable_erb-2>DISABLE_ERB<a href=#disable_erb-2 class=hash-link aria-label="Direct link to DISABLE_ERB" title="Direct link to DISABLE_ERB">​</a></h3>
346
346
  <p><div class=right>(Since 5.12.0)</div><strong>Disable ERB processing</strong><p></p>
@@ -1,4 +1,4 @@
1
- <!doctype html><html lang=en dir=ltr class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-configuration/protocols" data-has-hydrated=false><meta charset=UTF-8><meta name=generator content="Docusaurus v3.7.0"><title data-rh=true>Protocols | OpenC3 Docs</title><meta data-rh=true name=viewport content="width=device-width, initial-scale=1.0"><meta data-rh=true name=twitter:card content=summary_large_image><meta data-rh=true property=og:url content=https://docs.openc3.com/tools/staticdocs/docs/configuration/protocols><meta data-rh=true property=og:locale content=en><meta data-rh=true name=docusaurus_locale content=en><meta data-rh=true name=docsearch:language content=en><meta data-rh=true name=docusaurus_version content=current><meta data-rh=true name=docusaurus_tag content=docs-default-current><meta data-rh=true name=docsearch:version content=current><meta data-rh=true name=docsearch:docusaurus_tag content=docs-default-current><meta data-rh=true property=og:title content="Protocols | OpenC3 Docs"><meta data-rh=true name=description content="Built-in COSMOS protocols including how to create one"><meta data-rh=true property=og:description content="Built-in COSMOS protocols including how to create one"><link data-rh=true rel=icon href=/tools/staticdocs/img/favicon.png><link data-rh=true rel=canonical href=https://docs.openc3.com/tools/staticdocs/docs/configuration/protocols><link data-rh=true rel=alternate href=https://docs.openc3.com/tools/staticdocs/docs/configuration/protocols hreflang=en><link data-rh=true rel=alternate href=https://docs.openc3.com/tools/staticdocs/docs/configuration/protocols hreflang=x-default><link rel=stylesheet href=/tools/staticdocs/assets/css/styles.1de6b959.css><script src=/tools/staticdocs/assets/js/runtime~main.d38c5d36.js defer></script><script src=/tools/staticdocs/assets/js/main.8d947189.js defer></script><body class=navigation-with-keyboard><script>!function(){var t,e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t=null!==e?e:"dark",document.documentElement.setAttribute("data-theme",t)}(),function(){try{for(var[t,e]of new URLSearchParams(window.location.search).entries())if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id=__docusaurus><link rel=preload as=image href=/tools/staticdocs/img/logo.svg><div role=region aria-label="Skip to main content"><a class=skipToContent_G6ar href=#__docusaurus_skipToContent_fallback>Skip to main content</a></div><nav aria-label=Main class="navbar navbar--fixed-top"><div class=navbar__inner><div class=navbar__items><button aria-label="Toggle navigation bar" aria-expanded=false class="navbar__toggle clean-btn" type=button><svg width=30 height=30 viewBox="0 0 30 30" aria-hidden=true><path stroke=currentColor stroke-linecap=round stroke-miterlimit=10 stroke-width=2 d="M4 7h22M4 15h22M4 23h22"/></svg></button><a class=navbar__brand href=/tools/staticdocs/><div class=navbar__logo><img src=/tools/staticdocs/img/logo.svg alt="OpenC3 Logo" class="themedComponent_DHUr themedComponent--light_DIHH"><img src=/tools/staticdocs/img/logo.svg alt="OpenC3 Logo" class="themedComponent_DHUr themedComponent--dark_Bv2M"></div><b class="navbar__title text--truncate">OpenC3 Docs</b></a><a aria-current=page class="navbar__item navbar__link navbar__link--active" href=/tools/staticdocs/docs>Documentation</a><a href=https://openc3.com/enterprise/ target=_blank rel="noopener noreferrer" class="navbar__item navbar__link">Enterprise</a></div><div class="navbar__items navbar__items--right"><div class=navbarSearchContainer_bmvg><div class=navbar__search><span aria-label="expand searchbar" role=button class=search-icon tabindex=0></span><input id=search_input_react type=search placeholder=Loading... aria-label=Search class="navbar__search-input search-bar" disabled></div></div></div></div><div role=presentation class=navbar-sidebar__backdrop></div></nav><div id=__docusaurus_skipToContent_fallback class="main-wrapper mainWrapper_UyTV"><div class=docsWrapper_XLvK><button aria-label="Scroll back to top" class="clean-btn theme-back-to-top-button backToTopButton_z1FD" type=button></button><div class=docRoot_HciC><aside class="theme-doc-sidebar-container docSidebarContainer_e5ai"><div class=sidebarViewport_N8x0><div class=sidebar_vJCc><nav aria-label="Docs sidebar" class="menu thin-scrollbar menu_qiME"><ul class="theme-doc-sidebar-menu menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class=menu__link href=/tools/staticdocs/docs>Introduction</a><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class=menu__list-item-collapsible><a class="menu__link menu__link--sublist" href=/tools/staticdocs/docs/getting-started>Getting Started</a><button aria-label="Expand sidebar category 'Getting Started'" aria-expanded=false type=button class="clean-btn menu__caret"></button></div><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class=menu__list-item-collapsible><a class="menu__link menu__link--sublist menu__link--active" href=/tools/staticdocs/docs/configuration>Configuration</a><button aria-label="Collapse sidebar category 'Configuration'" aria-expanded=true type=button class="clean-btn menu__caret"></button></div><ul style=display:block;overflow:visible;height:auto class=menu__list><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class=menu__link tabindex=0 href=/tools/staticdocs/docs/configuration/format>File Format</a><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class=menu__link tabindex=0 href=/tools/staticdocs/docs/configuration/plugins>Plugins</a><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class=menu__link tabindex=0 href=/tools/staticdocs/docs/configuration/target>Targets</a><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class=menu__link tabindex=0 href=/tools/staticdocs/docs/configuration/command>Commands</a><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class=menu__link tabindex=0 href=/tools/staticdocs/docs/configuration/telemetry>Telemetry</a><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class=menu__link tabindex=0 href=/tools/staticdocs/docs/configuration/interfaces>Interfaces</a><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link menu__link--active" aria-current=page tabindex=0 href=/tools/staticdocs/docs/configuration/protocols>Protocols</a><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class=menu__link tabindex=0 href=/tools/staticdocs/docs/configuration/accessors>Accessors</a><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class=menu__link tabindex=0 href=/tools/staticdocs/docs/configuration/table>Tables</a><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class=menu__link tabindex=0 href=/tools/staticdocs/docs/configuration/telemetry-screens>Screens</a><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class=menu__link tabindex=0 href=/tools/staticdocs/docs/configuration/ssl-tls>SSL-TLS</a></ul><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class=menu__list-item-collapsible><a class="menu__link menu__link--sublist" href=/tools/staticdocs/docs/tools>Tools</a><button aria-label="Expand sidebar category 'Tools'" aria-expanded=false type=button class="clean-btn menu__caret"></button></div><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class=menu__list-item-collapsible><a class="menu__link menu__link--sublist" href=/tools/staticdocs/docs/guides>Guides</a><button aria-label="Expand sidebar category 'Guides'" aria-expanded=false type=button class="clean-btn menu__caret"></button></div><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class=menu__list-item-collapsible><a class="menu__link menu__link--sublist" href=/tools/staticdocs/docs/development>Development</a><button aria-label="Expand sidebar category 'Development'" aria-expanded=false type=button class="clean-btn menu__caret"></button></div><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class=menu__list-item-collapsible><a class="menu__link menu__link--sublist" href=/tools/staticdocs/docs/meta>Meta</a><button aria-label="Expand sidebar category 'Meta'" aria-expanded=false type=button class="clean-btn menu__caret"></button></div><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class=menu__link href=/tools/staticdocs/docs/privacy>OpenC3, Inc. Privacy Policy</a></ul></nav></div></div></aside><main class=docMainContainer_namt><div class="container padding-top--md padding-bottom--lg"><div class=row><div class="col docItemCol_YAwJ"><div class=docItemContainer_Rv5Z><article><nav class="theme-doc-breadcrumbs breadcrumbsContainer_zCmv" aria-label=Breadcrumbs><ul class=breadcrumbs itemscope itemtype=https://schema.org/BreadcrumbList><li class=breadcrumbs__item><a aria-label="Home page" class=breadcrumbs__link href=/tools/staticdocs/><svg viewBox="0 0 24 24" class=breadcrumbHomeIcon_JFrk><path d="M10 19v-5h4v5c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-7h1.7c.46 0 .68-.57.33-.87L12.67 3.6c-.38-.34-.96-.34-1.34 0l-8.36 7.53c-.34.3-.13.87.33.87H5v7c0 .55.45 1 1 1h3c.55 0 1-.45 1-1z" fill=currentColor /></svg></a><li itemscope itemprop=itemListElement itemtype=https://schema.org/ListItem class=breadcrumbs__item><a class=breadcrumbs__link itemprop=item href=/tools/staticdocs/docs/configuration><span itemprop=name>Configuration</span></a><meta itemprop=position content=1><li itemscope itemprop=itemListElement itemtype=https://schema.org/ListItem class="breadcrumbs__item breadcrumbs__item--active"><span class=breadcrumbs__link itemprop=name>Protocols</span><meta itemprop=position content=2></ul></nav><div class="tocCollapsible_O_Qc theme-doc-toc-mobile tocMobile_tjDr"><button type=button class="clean-btn tocCollapsibleButton_htYj">On this page</button></div><div class="theme-doc-markdown markdown"><header><h1>Protocols</h1></header><p>Protocols process data on behalf of an <a href=/tools/staticdocs/docs/configuration/interfaces>Interface</a>. They can modify the data being written, data being read, or both. Protocols can also mark a packet as stored instead of real-time which means COSMOS will not update the current value table with the packet data. Protocols can be layered and will be processed in order. For example, if you have a low-level encryption layer that must be first removed before processing a higher level buffer length protocol.</p>
1
+ <!doctype html><html lang=en dir=ltr class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-configuration/protocols" data-has-hydrated=false><meta charset=UTF-8><meta name=generator content="Docusaurus v3.7.0"><title data-rh=true>Protocols | OpenC3 Docs</title><meta data-rh=true name=viewport content="width=device-width, initial-scale=1.0"><meta data-rh=true name=twitter:card content=summary_large_image><meta data-rh=true property=og:url content=https://docs.openc3.com/tools/staticdocs/docs/configuration/protocols><meta data-rh=true property=og:locale content=en><meta data-rh=true name=docusaurus_locale content=en><meta data-rh=true name=docsearch:language content=en><meta data-rh=true name=docusaurus_version content=current><meta data-rh=true name=docusaurus_tag content=docs-default-current><meta data-rh=true name=docsearch:version content=current><meta data-rh=true name=docsearch:docusaurus_tag content=docs-default-current><meta data-rh=true property=og:title content="Protocols | OpenC3 Docs"><meta data-rh=true name=description content="Built-in COSMOS protocols including how to create one"><meta data-rh=true property=og:description content="Built-in COSMOS protocols including how to create one"><link data-rh=true rel=icon href=/tools/staticdocs/img/favicon.png><link data-rh=true rel=canonical href=https://docs.openc3.com/tools/staticdocs/docs/configuration/protocols><link data-rh=true rel=alternate href=https://docs.openc3.com/tools/staticdocs/docs/configuration/protocols hreflang=en><link data-rh=true rel=alternate href=https://docs.openc3.com/tools/staticdocs/docs/configuration/protocols hreflang=x-default><link rel=stylesheet href=/tools/staticdocs/assets/css/styles.1de6b959.css><script src=/tools/staticdocs/assets/js/runtime~main.7102cb65.js defer></script><script src=/tools/staticdocs/assets/js/main.a8e2c06c.js defer></script><body class=navigation-with-keyboard><script>!function(){var t,e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t=null!==e?e:"dark",document.documentElement.setAttribute("data-theme",t)}(),function(){try{for(var[t,e]of new URLSearchParams(window.location.search).entries())if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id=__docusaurus><link rel=preload as=image href=/tools/staticdocs/img/logo.svg><div role=region aria-label="Skip to main content"><a class=skipToContent_G6ar href=#__docusaurus_skipToContent_fallback>Skip to main content</a></div><nav aria-label=Main class="navbar navbar--fixed-top"><div class=navbar__inner><div class=navbar__items><button aria-label="Toggle navigation bar" aria-expanded=false class="navbar__toggle clean-btn" type=button><svg width=30 height=30 viewBox="0 0 30 30" aria-hidden=true><path stroke=currentColor stroke-linecap=round stroke-miterlimit=10 stroke-width=2 d="M4 7h22M4 15h22M4 23h22"/></svg></button><a class=navbar__brand href=/tools/staticdocs/><div class=navbar__logo><img src=/tools/staticdocs/img/logo.svg alt="OpenC3 Logo" class="themedComponent_DHUr themedComponent--light_DIHH"><img src=/tools/staticdocs/img/logo.svg alt="OpenC3 Logo" class="themedComponent_DHUr themedComponent--dark_Bv2M"></div><b class="navbar__title text--truncate">OpenC3 Docs</b></a><a aria-current=page class="navbar__item navbar__link navbar__link--active" href=/tools/staticdocs/docs>Documentation</a><a href=https://openc3.com/enterprise/ target=_blank rel="noopener noreferrer" class="navbar__item navbar__link">Enterprise</a></div><div class="navbar__items navbar__items--right"><div class=navbarSearchContainer_bmvg><div class=navbar__search><span aria-label="expand searchbar" role=button class=search-icon tabindex=0></span><input id=search_input_react type=search placeholder=Loading... aria-label=Search class="navbar__search-input search-bar" disabled></div></div></div></div><div role=presentation class=navbar-sidebar__backdrop></div></nav><div id=__docusaurus_skipToContent_fallback class="main-wrapper mainWrapper_UyTV"><div class=docsWrapper_XLvK><button aria-label="Scroll back to top" class="clean-btn theme-back-to-top-button backToTopButton_z1FD" type=button></button><div class=docRoot_HciC><aside class="theme-doc-sidebar-container docSidebarContainer_e5ai"><div class=sidebarViewport_N8x0><div class=sidebar_vJCc><nav aria-label="Docs sidebar" class="menu thin-scrollbar menu_qiME"><ul class="theme-doc-sidebar-menu menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class=menu__link href=/tools/staticdocs/docs>Introduction</a><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class=menu__list-item-collapsible><a class="menu__link menu__link--sublist" href=/tools/staticdocs/docs/getting-started>Getting Started</a><button aria-label="Expand sidebar category 'Getting Started'" aria-expanded=false type=button class="clean-btn menu__caret"></button></div><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class=menu__list-item-collapsible><a class="menu__link menu__link--sublist menu__link--active" href=/tools/staticdocs/docs/configuration>Configuration</a><button aria-label="Collapse sidebar category 'Configuration'" aria-expanded=true type=button class="clean-btn menu__caret"></button></div><ul style=display:block;overflow:visible;height:auto class=menu__list><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class=menu__link tabindex=0 href=/tools/staticdocs/docs/configuration/format>File Format</a><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class=menu__link tabindex=0 href=/tools/staticdocs/docs/configuration/plugins>Plugins</a><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class=menu__link tabindex=0 href=/tools/staticdocs/docs/configuration/target>Targets</a><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class=menu__link tabindex=0 href=/tools/staticdocs/docs/configuration/command>Commands</a><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class=menu__link tabindex=0 href=/tools/staticdocs/docs/configuration/telemetry>Telemetry</a><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class=menu__link tabindex=0 href=/tools/staticdocs/docs/configuration/interfaces>Interfaces</a><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link menu__link--active" aria-current=page tabindex=0 href=/tools/staticdocs/docs/configuration/protocols>Protocols</a><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class=menu__link tabindex=0 href=/tools/staticdocs/docs/configuration/accessors>Accessors</a><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class=menu__link tabindex=0 href=/tools/staticdocs/docs/configuration/table>Tables</a><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class=menu__link tabindex=0 href=/tools/staticdocs/docs/configuration/telemetry-screens>Screens</a><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class=menu__link tabindex=0 href=/tools/staticdocs/docs/configuration/ssl-tls>SSL-TLS</a></ul><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class=menu__list-item-collapsible><a class="menu__link menu__link--sublist" href=/tools/staticdocs/docs/tools>Tools</a><button aria-label="Expand sidebar category 'Tools'" aria-expanded=false type=button class="clean-btn menu__caret"></button></div><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class=menu__list-item-collapsible><a class="menu__link menu__link--sublist" href=/tools/staticdocs/docs/guides>Guides</a><button aria-label="Expand sidebar category 'Guides'" aria-expanded=false type=button class="clean-btn menu__caret"></button></div><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class=menu__list-item-collapsible><a class="menu__link menu__link--sublist" href=/tools/staticdocs/docs/development>Development</a><button aria-label="Expand sidebar category 'Development'" aria-expanded=false type=button class="clean-btn menu__caret"></button></div><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class=menu__list-item-collapsible><a class="menu__link menu__link--sublist" href=/tools/staticdocs/docs/meta>Meta</a><button aria-label="Expand sidebar category 'Meta'" aria-expanded=false type=button class="clean-btn menu__caret"></button></div><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class=menu__link href=/tools/staticdocs/docs/privacy>OpenC3, Inc. Privacy Policy</a></ul></nav></div></div></aside><main class=docMainContainer_namt><div class="container padding-top--md padding-bottom--lg"><div class=row><div class="col docItemCol_YAwJ"><div class=docItemContainer_Rv5Z><article><nav class="theme-doc-breadcrumbs breadcrumbsContainer_zCmv" aria-label=Breadcrumbs><ul class=breadcrumbs itemscope itemtype=https://schema.org/BreadcrumbList><li class=breadcrumbs__item><a aria-label="Home page" class=breadcrumbs__link href=/tools/staticdocs/><svg viewBox="0 0 24 24" class=breadcrumbHomeIcon_JFrk><path d="M10 19v-5h4v5c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-7h1.7c.46 0 .68-.57.33-.87L12.67 3.6c-.38-.34-.96-.34-1.34 0l-8.36 7.53c-.34.3-.13.87.33.87H5v7c0 .55.45 1 1 1h3c.55 0 1-.45 1-1z" fill=currentColor /></svg></a><li itemscope itemprop=itemListElement itemtype=https://schema.org/ListItem class=breadcrumbs__item><a class=breadcrumbs__link itemprop=item href=/tools/staticdocs/docs/configuration><span itemprop=name>Configuration</span></a><meta itemprop=position content=1><li itemscope itemprop=itemListElement itemtype=https://schema.org/ListItem class="breadcrumbs__item breadcrumbs__item--active"><span class=breadcrumbs__link itemprop=name>Protocols</span><meta itemprop=position content=2></ul></nav><div class="tocCollapsible_O_Qc theme-doc-toc-mobile tocMobile_tjDr"><button type=button class="clean-btn tocCollapsibleButton_htYj">On this page</button></div><div class="theme-doc-markdown markdown"><header><h1>Protocols</h1></header><p>Protocols process data on behalf of an <a href=/tools/staticdocs/docs/configuration/interfaces>Interface</a>. They can modify the data being written, data being read, or both. Protocols can also mark a packet as stored instead of real-time which means COSMOS will not update the current value table with the packet data. Protocols can be layered and will be processed in order. For example, if you have a low-level encryption layer that must be first removed before processing a higher level buffer length protocol.</p>
2
2
  <div class="theme-admonition theme-admonition-info admonition_IZjC alert alert--info"><div class=admonitionHeading_uVvU><span class=admonitionIcon_HiR3><svg viewBox="0 0 14 16"><path fill-rule=evenodd d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"/></svg></span>Protocol Run Order</div><div class=admonitionContent_bl22><p>Read protocols execute in the order specified (First specified runs first). Write protocols execute in the reverse order (Last specified executes first).</div></div>
3
3
  <p>Protocols are typically used to define the logic to delineate packets and manipulate data as it written to and read from Interfaces. COSMOS includes Interfaces for TCP/IP Client, TCP/IP Server, Udp Client / Server, and Serial connections. For 99% of use cases these Interfaces should not require any changes as they universally handle the low-level details of reading and writing from these types of connections. All unique behavior should now be defined in Protocols.</p>
4
4
  <p>At a minimum, any byte stream based Interface will require a Protocol to delineate packets. TCP/IP and Serial are examples of byte stream based Interfaces. A byte stream is just a simple stream of bytes and thus you need some way to know where packets begin and end within the stream.</p>
@@ -53,9 +53,10 @@
53
53
  <p>This protocol is now deprecated because it is not able to capture the original SCPI messages in COSMOS raw logging. Please use the TemplateAccessor with the CmdResponseProtocol instead.</p>
54
54
  <p>The Template Protocol works much like the Terminated Protocol except it is designed for text-based command and response type interfaces such as SCPI (Standard Commands for Programmable Instruments). It delineates packets in the same way as the Terminated Protocol except each packet is referred to as a line (because each usually contains a line of text). For outgoing packets, a CMD_TEMPLATE field is expected to exist in the packet. This field contains a template string with items to be filled in delineated within HTML tag style brackets <code>"&lt;EXAMPLE>"</code>. The Template Protocol will read the named items from within the packet and fill in the CMD_TEMPLATE. This filled in string is then sent out rather than the originally passed in packet. Correspondingly, if a response is expected the outgoing packet should include a RSP_TEMPLATE and RSP_PACKET field. The RSP_TEMPLATE is used to extract data from the response string and build a corresponding RSP_PACKET. See the TEMPLATE target within the COSMOS Demo configuration for an example of usage.</p>
55
55
  <table><thead><tr><th>Parameter<th>Description<th>Required<th>Default<tbody><tr><td>Write Termination Characters<td>The data to write after writing a command packet. Given as a hex string such as 0xABCD.<td>Yes<td><tr><td>Read Termination Characters<td>The characters which delineate the end of a telemetry packet. Given as a hex string such as 0xABCD.<td>Yes<td><tr><td>Ignore Lines<td>Number of response lines to ignore (completely drop)<td>No<td>0 lines<tr><td>Initial Read Delay<td>An initial delay after connecting after which the interface will be read till empty and data dropped. Useful for discarding connect headers and initial prompts.<td>No<td>nil (no initial read)<tr><td>Response Lines<td>The number of lines that make up expected responses<td>No<td>1 line<tr><td>Strip Read Termination<td>Whether to remove the read termination characters before returning the telemetry packet<td>No<td>true<tr><td>Discard Leading Bytes<td>The number of bytes to discard from the binary data after reading. Note that this applies to bytes including the sync pattern if the sync pattern is being used.<td>No<td>0 (do not discard bytes)<tr><td>Sync Pattern<td>Hex string representing a byte pattern that will be searched for in the raw data. This pattern represents a packet delimiter and all data found including the sync pattern will be returned.<td>No<td>nil (no sync pattern)<tr><td>Fill Fields<td>Whether to fill in the sync pattern on outgoing packets<td>No<td>false<tr><td>Response Timeout<td>Number of seconds to wait for a response before timing out<td>No<td>5.0<tr><td>Response Polling Period<td>Number of seconds to wait between polling for a response<td>No<td>0.02<tr><td>Raise Exceptions<td>Whether to raise exceptions when errors occur like timeouts or unexpected responses<td>No<td>false</table>
56
- <h3 class="anchor anchorWithStickyNavbar_fF9Z" id=preidentified-protocol-internal>Preidentified Protocol (Internal)<a href=#preidentified-protocol-internal class=hash-link aria-label="Direct link to Preidentified Protocol (Internal)" title="Direct link to Preidentified Protocol (Internal)">​</a></h3>
57
- <p>The Preidentified Protocol delineates packets using a custom COSMOS header. This internal Protocol was created to allow tools to connect and receive the entire packet stream. It can also be used to chain COSMOS instances together although that should rarely be needed with the new web native implementation.</p>
58
- <table><thead><tr><th>Parameter<th>Description<th>Required<th>Default<tbody><tr><td>Sync Pattern<td>Hex string representing a byte pattern that will be searched for in the raw data. This pattern represents a packet delimiter and all data found AFTER the sync pattern will be returned. The sync pattern itself is discarded.<td>No<td>nil (no sync pattern)<tr><td>Max Length<td>The maximum allowed value in the length field<td>No<td>nil (no maximum length)<tr><td>Mode<td>The Version of the preidentified protocol to support (2 or 4).3<td>No<td>4</table>
56
+ <h3 class="anchor anchorWithStickyNavbar_fF9Z" id=preidentified-protocol>Preidentified Protocol<a href=#preidentified-protocol class=hash-link aria-label="Direct link to Preidentified Protocol" title="Direct link to Preidentified Protocol">​</a></h3>
57
+ <p>The Preidentified Protocol delineates packets using the COSMOS header. This Protocol was created to allow tools to connect and receive the entire packet stream. It can be used with the <a href=/tools/staticdocs/docs/configuration/interfaces#file-interface>FileInterface</a> to process COSMOS 4 log files. It can also be used to chain COSMOS instances together although that should rarely be needed with the new web native implementation.</p>
58
+ <table><thead><tr><th>Parameter<th>Description<th>Required<th>Default<tbody><tr><td>Sync Pattern<td>Hex string representing a byte pattern that will be searched for in the raw data. This pattern represents a packet delimiter and all data found AFTER the sync pattern will be returned. The sync pattern itself is discarded.<td>No<td>nil (no sync pattern)<tr><td>Max Length<td>The maximum allowed value in the length field<td>No<td>nil (no maximum length)</table>
59
+ <p>For an example of using Preidentified Protocol see <a href=/tools/staticdocs/docs/configuration/interfaces#file-interface>FileInterface</a>.</p>
59
60
  <h2 class="anchor anchorWithStickyNavbar_fF9Z" id=helper-protocols>Helper Protocols<a href=#helper-protocols class=hash-link aria-label="Direct link to Helper Protocols" title="Direct link to Helper Protocols">​</a></h2>
60
61
  <p>COSMOS provides the following helper protocols: CmdResponse, Crc and Ignore. These protocols provide helper functionality to Interfaces.</p>
61
62
  <h3 class="anchor anchorWithStickyNavbar_fF9Z" id=cmdresponse-protocol>CmdResponse Protocol<a href=#cmdresponse-protocol class=hash-link aria-label="Direct link to CmdResponse Protocol" title="Direct link to CmdResponse Protocol">​</a></h3>
@@ -74,7 +75,7 @@
74
75
  <p>The Ignore Packet protocol drops specified command packets sent by COSMOS or drops incoming telemetry packets.</p>
75
76
  <table><thead><tr><th>Parameter<th>Description<th>Required<th>Default<tbody><tr><td>Target Name<td>Target name of the packet to ignore<td>Yes<td>nil<tr><td>Packet Name<td>Packet name of the packet to ignore<td>Yes<td>nil</table>
76
77
  <h2 class="anchor anchorWithStickyNavbar_fF9Z" id=custom-protocols>Custom Protocols<a href=#custom-protocols class=hash-link aria-label="Direct link to Custom Protocols" title="Direct link to Custom Protocols">​</a></h2>
77
- <p>Creating a custom protocol is easy and should be the default solution for customizing COSMOS Interfaces (rather than creating a new Interface class). However, creating custom Interfaces is still useful for defaulting parameters to values that always are fixed for your target and for including the necessary Protocols. The base COSMOS Interfaces take a lot of parameters that can be confusing to your end users. Thus you may want to create a custom Interface just to hard coded these values and cut the available parameters down to something like the hostname and port to connect to.</p>
78
+ <p>Creating a custom protocol is easy and should be the default solution for customizing COSMOS Interfaces (rather than creating a new Interface class). However, creating custom Interfaces is still useful for defaulting parameters to values that always are fixed for your target and for including the necessary Protocols. The COSMOS Interfaces take a lot of parameters that can be confusing to your end users. Thus you may want to create a custom Interface just to hard coded these values and cut the available parameters down to something like the hostname and port to connect to.</p>
78
79
  <p>All custom Protocols should derive from the Protocol class <a href=https://github.com/OpenC3/cosmos/blob/main/openc3/lib/openc3/interfaces/protocols/protocol.rb target=_blank rel="noopener noreferrer">openc3/interfaces/protocols/protocol.rb</a> (Ruby) and <a href=https://github.com/OpenC3/cosmos/blob/main/openc3/python/openc3/interfaces/protocols/protocol.py target=_blank rel="noopener noreferrer">openc3/interfaces/protocols/protocol.py</a> (Python). This class defines the 9 methods that are relevant to writing your own protocol. The base class implementation for each method is included below as well as a discussion as to how the methods should be overridden and used in your own Protocols.</p>
79
80
  <div class="theme-admonition theme-admonition-info admonition_IZjC alert alert--info"><div class=admonitionHeading_uVvU><span class=admonitionIcon_HiR3><svg viewBox="0 0 14 16"><path fill-rule=evenodd d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"/></svg></span>Ruby Protocol APIs</div><div class=admonitionContent_bl22><p>Protocols should not <code>require 'openc3/script'</code> since they are part of a COSMOS interface. They should use the COSMOS library code directly like <a href=https://github.com/OpenC3/cosmos/blob/main/openc3/lib/openc3/system/system.rb target=_blank rel="noopener noreferrer">System</a>, <a href=https://github.com/OpenC3/cosmos/blob/main/openc3/lib/openc3/packets/packet.rb target=_blank rel="noopener noreferrer">Packet</a>, <a href=https://github.com/OpenC3/cosmos/blob/main/openc3/lib/openc3/utilities/bucket.rb target=_blank rel="noopener noreferrer">Bucket</a>, <a href=https://github.com/OpenC3/cosmos/blob/main/openc3/lib/openc3/accessors/binary_accessor.rb target=_blank rel="noopener noreferrer">BinaryAccessor</a>, etc. When in doubt, consult the existing COSMOS <a href=https://github.com/OpenC3/cosmos/tree/main/openc3/lib/openc3/interfaces/protocols target=_blank rel="noopener noreferrer">protocol</a> classes.</div></div>
80
81
  <div class="theme-admonition theme-admonition-info admonition_IZjC alert alert--info"><div class=admonitionHeading_uVvU><span class=admonitionIcon_HiR3><svg viewBox="0 0 14 16"><path fill-rule=evenodd d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"/></svg></span>Python Protocol APIs</div><div class=admonitionContent_bl22><p>Protocols should not <code>from openc3.script import *</code> since they are part of a COSMOS interface. They should use the COSMOS library code directly like <a href=https://github.com/OpenC3/cosmos/blob/main/openc3/python/openc3/system/system.py target=_blank rel="noopener noreferrer">System</a>, <a href=https://github.com/OpenC3/cosmos/blob/main/openc3/python/openc3/packets/packet.py target=_blank rel="noopener noreferrer">Packet</a>, <a href=https://github.com/OpenC3/cosmos/blob/main/openc3/python/openc3/utilities/bucket.py target=_blank rel="noopener noreferrer">Bucket</a>, <a href=https://github.com/OpenC3/cosmos/blob/main/openc3/python/openc3/accessors/binary_accessor.py target=_blank rel="noopener noreferrer">BinaryAccessor</a>, etc. When in doubt, consult the existing COSMOS <a href=https://github.com/OpenC3/cosmos/tree/main/openc3/python/openc3/interfaces/protocols target=_blank rel="noopener noreferrer">protocol</a> classes.</div></div>
@@ -158,4 +159,4 @@
158
159
  <div class="language-python codeBlockContainer_ZGJx theme-code-block" style=--prism-color:#d6deeb;--prism-background-color:#011627><div class=codeBlockContent_qZBB><pre tabindex=0 class="prism-code language-python codeBlock_TAPP thin-scrollbar" style=color:#d6deeb;background-color:#011627><code class=codeBlockLines_AdAo><span class=token-line style=color:#d6deeb><span class="token keyword" style="color:rgb(127, 219, 202)">def</span><span class="token plain"> </span><span class="token function" style="color:rgb(130, 170, 255)">protocol_cmd</span><span class="token punctuation" style="color:rgb(199, 146, 234)">(</span><span class="token plain">self</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"> cmd_name</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</span><span class="token plain"> </span><span class="token operator" style="color:rgb(127, 219, 202)">*</span><span class="token plain">cmd_args</span><span class="token punctuation" style="color:rgb(199, 146, 234)">)</span><span class="token punctuation" style="color:rgb(199, 146, 234)">:</span><span class="token plain"></span><br></span><span class=token-line style=color:#d6deeb><span class="token plain"> </span><span class="token comment" style="color:rgb(99, 119, 119);font-style:italic"># Default do nothing - Implemented by subclasses</span><span class="token plain"></span><br></span><span class=token-line style=color:#d6deeb><span class="token plain"> </span><span class="token keyword" style="color:rgb(127, 219, 202)">return</span><span class="token plain"> </span><span class="token boolean" style="color:rgb(255, 88, 116)">False</span><br></span></code></pre><div class=buttonGroup_TNwR><button type=button aria-label="Copy code to clipboard" title=Copy class=clean-btn><span class=copyButtonIcons_MVhB aria-hidden=true><svg viewBox="0 0 24 24" class=copyButtonIcon_yxgH><path fill=currentColor d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"/></svg><svg viewBox="0 0 24 24" class=copyButtonSuccessIcon_QJLJ><path fill=currentColor d=M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z /></svg></span></button></div></div></div>
159
160
  <p>The base class does nothing as this is special functionality implemented by subclasses.</p>
160
161
  <h2 class="anchor anchorWithStickyNavbar_fF9Z" id=examples>Examples<a href=#examples class=hash-link aria-label="Direct link to Examples" title="Direct link to Examples">​</a></h2>
161
- <p>Please see the linked <a href=https://github.com/OpenC3/cosmos/blob/main/openc3/lib/openc3/interfaces/protocols target=_blank rel="noopener noreferrer">Ruby Protocol</a> and <a href=https://github.com/OpenC3/cosmos/blob/main/openc3/python/openc3/interfaces/protocols target=_blank rel="noopener noreferrer">Python Protocol</a> code for examples of the above methods in action.</div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="row margin-top--sm theme-doc-footer-edit-meta-row"><div class=col><a href=https://github.com/OpenC3/cosmos/tree/main/docs.openc3.com/docs/configuration/protocols.md target=_blank rel="noopener noreferrer" class=theme-edit-this-page><svg fill=currentColor height=20 width=20 viewBox="0 0 40 40" class=iconEdit_UohW aria-hidden=true><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"/></g></svg>Edit this page</a></div><div class="col lastUpdated_g62E"></div></div></footer></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href=/tools/staticdocs/docs/configuration/interfaces><div class=pagination-nav__sublabel>Previous</div><div class=pagination-nav__label>Interfaces</div></a><a class="pagination-nav__link pagination-nav__link--next" href=/tools/staticdocs/docs/configuration/accessors><div class=pagination-nav__sublabel>Next</div><div class=pagination-nav__label>Accessors</div></a></nav></div></div><div class="col col--3"><div class="tableOfContents_TN1Q thin-scrollbar theme-doc-toc-desktop"><ul class="table-of-contents table-of-contents__left-border"><li><a href=#packet-delineation-protocols class="table-of-contents__link toc-highlight">Packet Delineation Protocols</a><ul><li><a href=#cobs-protocol class="table-of-contents__link toc-highlight">COBS Protocol</a><li><a href=#slip-protocol class="table-of-contents__link toc-highlight">SLIP Protocol</a><li><a href=#burst-protocol class="table-of-contents__link toc-highlight">Burst Protocol</a><li><a href=#fixed-protocol class="table-of-contents__link toc-highlight">Fixed Protocol</a><li><a href=#length-protocol class="table-of-contents__link toc-highlight">Length Protocol</a><li><a href=#terminated-protocol class="table-of-contents__link toc-highlight">Terminated Protocol</a><li><a href=#gems-protocol-enterprise class="table-of-contents__link toc-highlight">GEMS Protocol (Enterprise)</a><li><a href=#ccsds-cltu-protocol-enterprise class="table-of-contents__link toc-highlight">CCSDS CLTU Protocol (Enterprise)</a><li><a href=#ccsds-tctf-protocol-enterprise class="table-of-contents__link toc-highlight">CCSDS TCTF Protocol (Enterprise)</a><li><a href=#ccsds-tmtf-protocol-enterprise class="table-of-contents__link toc-highlight">CCSDS TMTF Protocol (Enterprise)</a><li><a href=#template-protocol-deprecated class="table-of-contents__link toc-highlight">Template Protocol (Deprecated)</a><li><a href=#preidentified-protocol-internal class="table-of-contents__link toc-highlight">Preidentified Protocol (Internal)</a></ul><li><a href=#helper-protocols class="table-of-contents__link toc-highlight">Helper Protocols</a><ul><li><a href=#cmdresponse-protocol class="table-of-contents__link toc-highlight">CmdResponse Protocol</a><ul><li><a href=#packet-definitions class="table-of-contents__link toc-highlight">Packet Definitions</a></ul><li><a href=#crc-protocol class="table-of-contents__link toc-highlight">CRC Protocol</a><li><a href=#ignore-packet-protocol class="table-of-contents__link toc-highlight">Ignore Packet Protocol</a></ul><li><a href=#custom-protocols class="table-of-contents__link toc-highlight">Custom Protocols</a><li><a href=#method-discussions class="table-of-contents__link toc-highlight">Method discussions</a><ul><li><a href=#initialize-or-init class="table-of-contents__link toc-highlight">initialize or <strong>init</strong></a><li><a href=#reset class="table-of-contents__link toc-highlight">reset</a><li><a href=#connect_reset class="table-of-contents__link toc-highlight">connect_reset</a><li><a href=#disconnect_reset class="table-of-contents__link toc-highlight">disconnect_reset</a><li><a href=#read_data class="table-of-contents__link toc-highlight">read_data</a><li><a href=#read_packet class="table-of-contents__link toc-highlight">read_packet</a><li><a href=#write_packet class="table-of-contents__link toc-highlight">write_packet</a><li><a href=#write_data class="table-of-contents__link toc-highlight">write_data</a><li><a href=#post_write_interface class="table-of-contents__link toc-highlight">post_write_interface</a><li><a href=#protocol_cmd class="table-of-contents__link toc-highlight">protocol_cmd</a></ul><li><a href=#examples class="table-of-contents__link toc-highlight">Examples</a></ul></div></div></div></div></main></div></div></div><footer class="footer footer--dark"><div class="container container-fluid"><div class="row footer__links"><div class="col footer__col"><div class=footer__title>Homepage</div><ul class="footer__items clean-list"><li class=footer__item><a href=https://openc3.com target=_blank rel="noopener noreferrer" class=footer__link-item>Home</a></ul></div><div class="col footer__col"><div class=footer__title>Docs</div><ul class="footer__items clean-list"><li class=footer__item><a class=footer__link-item href=/tools/staticdocs/docs>Documentation</a></ul></div><div class="col footer__col"><div class=footer__title>Community</div><ul class="footer__items clean-list"><li class=footer__item><a href=https://www.linkedin.com/company/openc3 target=_blank rel="noopener noreferrer" class=footer__link-item>LinkedIn<svg width=13.5 height=13.5 aria-hidden=true viewBox="0 0 24 24" class=iconExternalLink_awgD><path fill=currentColor d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></svg></a></ul></div><div class="col footer__col"><div class=footer__title>More</div><ul class="footer__items clean-list"><li class=footer__item><a href=https://github.com/OpenC3/cosmos target=_blank rel="noopener noreferrer" class=footer__link-item>GitHub<svg width=13.5 height=13.5 aria-hidden=true viewBox="0 0 24 24" class=iconExternalLink_awgD><path fill=currentColor d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></svg></a><li class=footer__item><a class=footer__link-item href=/tools/staticdocs/docs/privacy>Privacy</a></ul></div></div><div class="footer__bottom text--center"><div class=footer__copyright>Copyright © 2025 OpenC3, Inc.</div></div></div></footer></div>
162
+ <p>Please see the linked <a href=https://github.com/OpenC3/cosmos/blob/main/openc3/lib/openc3/interfaces/protocols target=_blank rel="noopener noreferrer">Ruby Protocol</a> and <a href=https://github.com/OpenC3/cosmos/blob/main/openc3/python/openc3/interfaces/protocols target=_blank rel="noopener noreferrer">Python Protocol</a> code for examples of the above methods in action.</div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="row margin-top--sm theme-doc-footer-edit-meta-row"><div class=col><a href=https://github.com/OpenC3/cosmos/tree/main/docs.openc3.com/docs/configuration/protocols.md target=_blank rel="noopener noreferrer" class=theme-edit-this-page><svg fill=currentColor height=20 width=20 viewBox="0 0 40 40" class=iconEdit_UohW aria-hidden=true><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"/></g></svg>Edit this page</a></div><div class="col lastUpdated_g62E"></div></div></footer></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href=/tools/staticdocs/docs/configuration/interfaces><div class=pagination-nav__sublabel>Previous</div><div class=pagination-nav__label>Interfaces</div></a><a class="pagination-nav__link pagination-nav__link--next" href=/tools/staticdocs/docs/configuration/accessors><div class=pagination-nav__sublabel>Next</div><div class=pagination-nav__label>Accessors</div></a></nav></div></div><div class="col col--3"><div class="tableOfContents_TN1Q thin-scrollbar theme-doc-toc-desktop"><ul class="table-of-contents table-of-contents__left-border"><li><a href=#packet-delineation-protocols class="table-of-contents__link toc-highlight">Packet Delineation Protocols</a><ul><li><a href=#cobs-protocol class="table-of-contents__link toc-highlight">COBS Protocol</a><li><a href=#slip-protocol class="table-of-contents__link toc-highlight">SLIP Protocol</a><li><a href=#burst-protocol class="table-of-contents__link toc-highlight">Burst Protocol</a><li><a href=#fixed-protocol class="table-of-contents__link toc-highlight">Fixed Protocol</a><li><a href=#length-protocol class="table-of-contents__link toc-highlight">Length Protocol</a><li><a href=#terminated-protocol class="table-of-contents__link toc-highlight">Terminated Protocol</a><li><a href=#gems-protocol-enterprise class="table-of-contents__link toc-highlight">GEMS Protocol (Enterprise)</a><li><a href=#ccsds-cltu-protocol-enterprise class="table-of-contents__link toc-highlight">CCSDS CLTU Protocol (Enterprise)</a><li><a href=#ccsds-tctf-protocol-enterprise class="table-of-contents__link toc-highlight">CCSDS TCTF Protocol (Enterprise)</a><li><a href=#ccsds-tmtf-protocol-enterprise class="table-of-contents__link toc-highlight">CCSDS TMTF Protocol (Enterprise)</a><li><a href=#template-protocol-deprecated class="table-of-contents__link toc-highlight">Template Protocol (Deprecated)</a><li><a href=#preidentified-protocol class="table-of-contents__link toc-highlight">Preidentified Protocol</a></ul><li><a href=#helper-protocols class="table-of-contents__link toc-highlight">Helper Protocols</a><ul><li><a href=#cmdresponse-protocol class="table-of-contents__link toc-highlight">CmdResponse Protocol</a><ul><li><a href=#packet-definitions class="table-of-contents__link toc-highlight">Packet Definitions</a></ul><li><a href=#crc-protocol class="table-of-contents__link toc-highlight">CRC Protocol</a><li><a href=#ignore-packet-protocol class="table-of-contents__link toc-highlight">Ignore Packet Protocol</a></ul><li><a href=#custom-protocols class="table-of-contents__link toc-highlight">Custom Protocols</a><li><a href=#method-discussions class="table-of-contents__link toc-highlight">Method discussions</a><ul><li><a href=#initialize-or-init class="table-of-contents__link toc-highlight">initialize or <strong>init</strong></a><li><a href=#reset class="table-of-contents__link toc-highlight">reset</a><li><a href=#connect_reset class="table-of-contents__link toc-highlight">connect_reset</a><li><a href=#disconnect_reset class="table-of-contents__link toc-highlight">disconnect_reset</a><li><a href=#read_data class="table-of-contents__link toc-highlight">read_data</a><li><a href=#read_packet class="table-of-contents__link toc-highlight">read_packet</a><li><a href=#write_packet class="table-of-contents__link toc-highlight">write_packet</a><li><a href=#write_data class="table-of-contents__link toc-highlight">write_data</a><li><a href=#post_write_interface class="table-of-contents__link toc-highlight">post_write_interface</a><li><a href=#protocol_cmd class="table-of-contents__link toc-highlight">protocol_cmd</a></ul><li><a href=#examples class="table-of-contents__link toc-highlight">Examples</a></ul></div></div></div></div></main></div></div></div><footer class="footer footer--dark"><div class="container container-fluid"><div class="row footer__links"><div class="col footer__col"><div class=footer__title>Homepage</div><ul class="footer__items clean-list"><li class=footer__item><a href=https://openc3.com target=_blank rel="noopener noreferrer" class=footer__link-item>Home</a></ul></div><div class="col footer__col"><div class=footer__title>Docs</div><ul class="footer__items clean-list"><li class=footer__item><a class=footer__link-item href=/tools/staticdocs/docs>Documentation</a></ul></div><div class="col footer__col"><div class=footer__title>Community</div><ul class="footer__items clean-list"><li class=footer__item><a href=https://www.linkedin.com/company/openc3 target=_blank rel="noopener noreferrer" class=footer__link-item>LinkedIn<svg width=13.5 height=13.5 aria-hidden=true viewBox="0 0 24 24" class=iconExternalLink_awgD><path fill=currentColor d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></svg></a></ul></div><div class="col footer__col"><div class=footer__title>More</div><ul class="footer__items clean-list"><li class=footer__item><a href=https://github.com/OpenC3/cosmos target=_blank rel="noopener noreferrer" class=footer__link-item>GitHub<svg width=13.5 height=13.5 aria-hidden=true viewBox="0 0 24 24" class=iconExternalLink_awgD><path fill=currentColor d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></svg></a><li class=footer__item><a class=footer__link-item href=/tools/staticdocs/docs/privacy>Privacy</a></ul></div></div><div class="footer__bottom text--center"><div class=footer__copyright>Copyright © 2025 OpenC3, Inc.</div></div></div></footer></div>