openc3-cosmos-tool-docs 5.20.0 → 6.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (427) hide show
  1. checksums.yaml +4 -4
  2. data/tools/staticdocs/404.html +1 -13
  3. data/tools/staticdocs/assets/css/styles.839a3ee9.css +1 -0
  4. data/tools/staticdocs/assets/images/add_tool-6919be6e6c05db133a8816a9fc03bf98b0789a8525da4cdaa7b041b25bf9edb8.png +0 -0
  5. data/tools/staticdocs/assets/images/array-c0c541246cb3f9e355acc5c510649c29116ce4d6eb8864b9ace48e9958b36421.png +0 -0
  6. data/tools/staticdocs/assets/images/backcolor-39ca0e2a25bd98fe1c9e067f026f3a719a760d3f14ccb404e2da3a0af4235760.png +0 -0
  7. data/tools/staticdocs/assets/images/block-14583c7d26c1a1c6553435d57015bc5282426f7aa176804867de223009a8d4d7.png +0 -0
  8. data/tools/staticdocs/assets/images/bordercolor-a3ac15f24f91c910fcc9c8bd195232205ec44da0b428b11b71108687ce6316d3.png +0 -0
  9. data/tools/staticdocs/assets/images/button-3f6fd69518f4b2c60b15605ca607cda8b596d4d5e804b867f09f750a47b6cbad.png +0 -0
  10. data/tools/staticdocs/assets/images/canvasdot-d634bed1905d13b0da41200e62781cea6e012b5d68fc914f4c11f512c9c4f7fd.png +0 -0
  11. data/tools/staticdocs/assets/images/canvasimage-6f6f83dc6d777fdff0b820287a96ad171a475fda2896c0a3b678b14984e496fd.png +0 -0
  12. data/tools/staticdocs/assets/images/canvasimagevalue-8c835310f99cebbb15ad34632c77370cf4cc9b95535040fa4723df8baedb5b57.png +0 -0
  13. data/tools/staticdocs/assets/images/canvaslabel-68ee99da9ef15924a2b5b41c60ba7de47382d036eece57574411839ff5ec14e4.png +0 -0
  14. data/tools/staticdocs/assets/images/canvaslabelvalue-43254b6647e626939e79ec7e0940e921582039af006e5024c952881ba196b165.png +0 -0
  15. data/tools/staticdocs/assets/images/canvasline-c5120da84530d4a60a04d40d5565daede656639808d1a456f430e9404a2d5bad.png +0 -0
  16. data/tools/staticdocs/assets/images/canvaslinevalue-5540d10997f723fd09b269b75997452622a3c4333ed4f25628747c1212699255.png +0 -0
  17. data/tools/staticdocs/assets/images/checkbutton-c263b840dcdbeca5cd886884fe8f24bedac7daac5a0ca224a1fb2cce3e24bdf6.png +0 -0
  18. data/tools/staticdocs/assets/images/cmd_authority-34cde391ad5109ad53bca40b55cb74d59e8cd1d0e70eedb3e5bf4d258c324787.png +0 -0
  19. data/tools/staticdocs/assets/images/cmd_tlm_server-dbc02e99c1c837efabeba52831d1d2a3445904fb06b758aaa747496725423fe5.png +0 -0
  20. data/tools/staticdocs/assets/images/collect_states-5418d5b4cb901577f2cbdeccceb254dd2e5b81b1f2c975fb15b5fc679cf23dbf.png +0 -0
  21. data/tools/staticdocs/assets/images/combobox-6c8fa241aa7c5ccf31a42a2373dbd4f6f66d9a063e98ba111d5472b5c8e21590.png +0 -0
  22. data/tools/staticdocs/assets/images/command_history-ecc9b618661ad0aefa0700047a8ab3b094372f2aa427e9fcd270dcd352a30408.png +0 -0
  23. data/tools/staticdocs/assets/images/command_sender-83cf2e2343133c2883c405abd0b322f6d3d4a095c6ee800158a04c8eefe474ed.png +0 -0
  24. data/tools/staticdocs/assets/images/critical_cmd_sender-dd81e845489cf1efd3e08cec87da2262eb9f22dbeb3d89359edf0c58146524a1.png +0 -0
  25. data/tools/staticdocs/assets/images/date-d104f822ef7a1b99ade0a334e2e34c27fc6b1d087ed267f13280623a943113ce.png +0 -0
  26. data/tools/staticdocs/assets/images/formatvalue-8e2ddb6cec177fde1846d333d70168479a3bf67dd2b293764f938726b9e7cdf8.png +0 -0
  27. data/tools/staticdocs/assets/images/height-67268e562da2f9b2d0b9adc38d8fb2ba629504b09d798d8c26be9cfbfdad672a.png +0 -0
  28. data/tools/staticdocs/assets/images/history-04aebef1a0fdaaacc5042e5b835f850b48ea04f4fe50271d9bb57803b442d6cd.png +0 -0
  29. data/tools/staticdocs/assets/images/horizontal-11de51b6fc8baf057ca4f38a7f54a5302b58f30099331c22a074f012e53497aa.png +0 -0
  30. data/tools/staticdocs/assets/images/horizontalbox-ddf82f64de700286a742a71e0c1adebbc7e9822a0dff41139f41bc476e4fc4ce.png +0 -0
  31. data/tools/staticdocs/assets/images/horizontalline-0805762eadcc125ed6584a29a60e7cf8e2d76d13c6243e18eecbaba7a3803128.png +0 -0
  32. data/tools/staticdocs/assets/images/iframe-30d5a4104336b84d18ba538d668978a7986679431a7fe1fd0e3179fea08c074f.png +0 -0
  33. data/tools/staticdocs/assets/images/imageviewer-6149159e29a35cd6694926b344836ce034ce17cc019537028a80d95460eec405.png +0 -0
  34. data/tools/staticdocs/assets/images/inst_clear-48f37464d774363be4a5c1d30a48d4bc7803cb806a15d80dcd3741d7a9a37811.png +0 -0
  35. data/tools/staticdocs/assets/images/inst_collect-ef36e8a1e97fde625cde7a9c300c3db61aca30140f5431f089ce6a3e5da9d7f4.png +0 -0
  36. data/tools/staticdocs/assets/images/inst_collect_hazardous-02857bda2b5e7e821d3f42d3301962ede2bb4379c469a9d62f4a0e686336f0c4.png +0 -0
  37. data/tools/staticdocs/assets/images/interfaces-fa10646a27eb9045b70c2c485498a864bed1896ff171b7f31f8698288e08ae73.png +0 -0
  38. data/tools/staticdocs/assets/images/label-25a3052a497d0db7ebf84c788baedcd01d34f4b423aceee53d6d83639a128e82.png +0 -0
  39. data/tools/staticdocs/assets/images/labelled-b8d0f0a157f48e1fa98511f9177f962e69d1e0e8c24b37cf9f355671f9d13ab8.png +0 -0
  40. data/tools/staticdocs/assets/images/labelprogressbar-c3412db92b2f4e6af20233b085ee20915414d6c4da371398a3e8f36b84971cc7.png +0 -0
  41. data/tools/staticdocs/assets/images/labelsparkline-5985a0f034a5d2fb54b040612178ac9f0d5476eb76ca7e04cacc2618a9970c69.png +0 -0
  42. data/tools/staticdocs/assets/images/labelvalue-db97724272df4815b4ecc397974f91a62c31108b98ef0657716c670ca8128051.png +0 -0
  43. data/tools/staticdocs/assets/images/labelvaluedesc-2e174a9f3443ba971683dea9a33f8aa66d0248fb92a3aff41ec26b7424b5e68c.png +0 -0
  44. data/tools/staticdocs/assets/images/labelvaluelimitscolumn-47664affa9d88150ce257e90d32c61b314d7f0b6aa6da4f5e49152be2cce4ef7.png +0 -0
  45. data/tools/staticdocs/assets/images/labelvaluerangebar-641eba160b8ef7872557584de92f046d9e4411fae3280781f9b049265cc6dd52.png +0 -0
  46. data/tools/staticdocs/assets/images/led-d333a6c7e8b1bad13b7775142c74f94b1829ddedd38814d606b2d00e76707751.png +0 -0
  47. data/tools/staticdocs/assets/images/limitsbar-4f2758f846f6f8a1add81aeaf3b58e071792a6d2ccae9eb504e9c07ab8f8dae1.png +0 -0
  48. data/tools/staticdocs/assets/images/limitscolor-7f8e24e4f27f476c3b4c57393ab797268b86aa8ad8b6e7b83d72dd5bf3ca7952.png +0 -0
  49. data/tools/staticdocs/assets/images/limitscolumn-743800180e9558c86a4f5c5d949e2b8355420a98c85ef98a3320b09defa21fe6.png +0 -0
  50. data/tools/staticdocs/assets/images/linegraph-dc3cca59601beb3ea551bbd05e4e09b6cfabd1a7cbc93b757a7d4b22c478a75b.png +0 -0
  51. data/tools/staticdocs/assets/images/log_messages-6da2901ac63928daa3dcaf39a78ca9e455482c48d4ba917ee704f697e5210818.png +0 -0
  52. data/tools/staticdocs/assets/images/margin-4247b51c2c305cb961d08a807f30883b7fc6d9e3316c18174b86afe2356106dd.png +0 -0
  53. data/tools/staticdocs/assets/images/matrixbycolumns-74a67f236a97fffbdf7251fc98da2302a92df20ad16793a1617bc6f77380c9f6.png +0 -0
  54. data/tools/staticdocs/assets/images/microservices-805cc7d137958ac8183579cdb9a9845e7aef79db19723f0773f4ea4d957b48a1.png +0 -0
  55. data/tools/staticdocs/assets/images/mode_menu-04b9187b57a09ed12481a2699a86c7504fdc1c822579b4f762865ea90cb52dd3.png +0 -0
  56. data/tools/staticdocs/assets/images/named_widget-37362db8e310e5639be849d729fd637677f72330d676da4cd6baafc4b961331c.png +0 -0
  57. data/tools/staticdocs/assets/images/packages-3bfae1a91b0534077280c323a40e879a8ac6a7c3ac45376b3c706a098dab12c3.png +0 -0
  58. data/tools/staticdocs/assets/images/padding-e8ceea8ec79def3b14d186971854c44883675d974409366b77c586eedd85025c.png +0 -0
  59. data/tools/staticdocs/assets/images/plugins-aabbe060bec19e6fa2490b737f20758af9000066121f5af85f260a3b14f9b3d8.png +0 -0
  60. data/tools/staticdocs/assets/images/progressbar-cc1095369de0d483c4a9b07ad3a76f9e966990b2aa68b2bc8177d7130ed382a7.png +0 -0
  61. data/tools/staticdocs/assets/images/radiobutton-9151f7cb0dae5120e51e05b5575981c143e19f350e84c7e190d3dd78aa80fae8.png +0 -0
  62. data/tools/staticdocs/assets/images/rangebar-ceae5a30609ab12625e29fd479e88fb3ba16eb12879976edc807da87547a275d.png +0 -0
  63. data/tools/staticdocs/assets/images/raw-63c1dd793f4a734e7d512bf4c0c3722831c38d5392a1a1b0cb77bbef4d16b96b.png +0 -0
  64. data/tools/staticdocs/assets/images/redis-4553b5b35292cca3df1fa08577f2175efef34e0fdfe512f30ca70785b086b24f.png +0 -0
  65. data/tools/staticdocs/assets/images/rollup-ff0cecc0daa8dbdc84bc2a81efe4625b88f36a699368ada18e70c8d3d0c63c06.png +0 -0
  66. data/tools/staticdocs/assets/images/routers-489fe07165973feede7a63adf71781cca7ecb1f7d17c069761c1c57e70cf926e.png +0 -0
  67. data/tools/staticdocs/assets/images/scrollwindow-03e2823bf392679f0bd26159f476bad2f6d70a7ebb5a31e109fd75ad681cdd50.png +0 -0
  68. data/tools/staticdocs/assets/images/secrets-c8daf324829a0d4dde1d30f9da89d884ca06ce458e400dfa5d1de4ccb10395a1.png +0 -0
  69. data/tools/staticdocs/assets/images/settings1-36a446ec0455ae5ab3a6d225647264647e517e1e2d83da5c639a63756e0339a6.png +0 -0
  70. data/tools/staticdocs/assets/images/settings2-c18e478b65ba569bea37a2bb185b4702e347aecc570fbc7b26a6e66aeecc9129.png +0 -0
  71. data/tools/staticdocs/assets/images/signal-0e5def1ecb42b4688c7c6ab616ae87ef05c8b9afb5b1a27077e6cc9127721668.png +0 -0
  72. data/tools/staticdocs/assets/images/spacer-055e206bed0b13cba778071458407f184a690a8f2d5ff9cd9789f925c60c4886.png +0 -0
  73. data/tools/staticdocs/assets/images/sparkline-c5f8ecd361eef8172a9dea7ff70f3c1b056a3a00b525459429ead67d00c0c0e5.png +0 -0
  74. data/tools/staticdocs/assets/images/subsetting-ef46d38a0ba47b2fd0ad48422ccc7343a6ff88901c8a9675a27c13c9313e222b.png +0 -0
  75. data/tools/staticdocs/assets/images/tabitem-58fb7c6faa16ac04a0561a0315515852ad43ebdfbf709bd65b211af29f2f85f1.png +0 -0
  76. data/tools/staticdocs/assets/images/targets-c02c28769712aa226fdcbd3b90329285aeb39e775b9be1df6ab0e2ad31231518.png +0 -0
  77. data/tools/staticdocs/assets/images/textbox-9e4a1eb37cf68aabf92e326ff248d098a70295ffe6f7cf2e002a5dbff9ff0ef5.png +0 -0
  78. data/tools/staticdocs/assets/images/textcolor-e6d5bb0fba3786e4da7dd5e739306500ddc5fc6a4ead8e212bbe99a80433596c.png +0 -0
  79. data/tools/staticdocs/assets/images/textfield-931f510c2160ed8e5475bee78fa4c6cebd67d9195d92a22600217824ff55943d.png +0 -0
  80. data/tools/staticdocs/assets/images/time-d77e3f94633eb1008d5a382054940052070f5a4cd385f4a9203c0f60d406d7c6.png +0 -0
  81. data/tools/staticdocs/assets/images/title-5817bee0aa4702b4fd22c81a25e8036c1afc88a465a68d79707b2d58fb48789a.png +0 -0
  82. data/tools/staticdocs/assets/images/tools-d3ea80e2fdc04e5b85743146ebaf1fc7f1406b7b5e6ec9b700ed35dedc8d16e6.png +0 -0
  83. data/tools/staticdocs/assets/images/value-825b95d71be2c565e1d3fa5c57ec94be1bbb6e0a1e8166abb8617d5f50a93d39.png +0 -0
  84. data/tools/staticdocs/assets/images/valuelimitsbar-fd7637e8b4287430ab21a888acd1d10276438186bad6d204a4081c1b0423950f.png +0 -0
  85. data/tools/staticdocs/assets/images/valuelimitscolumn-aecfce9016c27e500eb506675bd372f77df1d671fd8fb0f30debe18c5cfee46c.png +0 -0
  86. data/tools/staticdocs/assets/images/valuerangebar-3a860f1fb4af1beeeb846c389c60f08eb633cc15cbb6f1c09509b5f5c0116d56.png +0 -0
  87. data/tools/staticdocs/assets/images/vertical-d4ea61f78a2cfc2cacc725f0a5dea194ab75278f0cb676e4a749f55d58a632f3.png +0 -0
  88. data/tools/staticdocs/assets/images/verticalbox-28fdba6f2c051a499b7f08a1be97edf0297ac9a9ce0dba44f02a7fe1c2616d91.png +0 -0
  89. data/tools/staticdocs/assets/images/width-1a69354459761ea23e4824436ef364124236f9bb96d46a28c97d8ff20d07ab81.png +0 -0
  90. data/tools/staticdocs/assets/js/019369f3.8413befc.js +1 -0
  91. data/tools/staticdocs/assets/js/058ffc22.a4ceeb8e.js +1 -0
  92. data/tools/staticdocs/assets/js/0686a885.ae0a89e8.js +1 -0
  93. data/tools/staticdocs/assets/js/078dbab0.90ef4019.js +1 -0
  94. data/tools/staticdocs/assets/js/0f5d161c.1c827de2.js +1 -0
  95. data/tools/staticdocs/assets/js/0ff569c9.3b7f9c95.js +1 -0
  96. data/tools/staticdocs/assets/js/103cc3be.76716a45.js +1 -0
  97. data/tools/staticdocs/assets/js/13196248.18801ae0.js +1 -0
  98. data/tools/staticdocs/assets/js/13c1b4e4.4457fa9a.js +1 -0
  99. data/tools/staticdocs/assets/js/1602.1e622848.js +1 -0
  100. data/tools/staticdocs/assets/js/1e02e6a3.8e63f255.js +1 -0
  101. data/tools/staticdocs/assets/js/2047b354.9470f5c9.js +1 -0
  102. data/tools/staticdocs/assets/js/2124.0e1f26f5.js +1 -0
  103. data/tools/staticdocs/assets/js/22b3ac48.ac895789.js +1 -0
  104. data/tools/staticdocs/assets/js/26b8abb2.45d268b1.js +1 -0
  105. data/tools/staticdocs/assets/js/2bb7bf90.471e10a1.js +1 -0
  106. data/tools/staticdocs/assets/js/3040.18a0bb2a.js +4 -0
  107. data/tools/staticdocs/assets/js/3687.6fa52db1.js +101 -0
  108. data/tools/staticdocs/assets/js/3dd7ef3b.d8bb37a8.js +1 -0
  109. data/tools/staticdocs/assets/js/40365d27.5f8a5da7.js +1 -0
  110. data/tools/staticdocs/assets/js/411898ad.c8f67fde.js +1 -0
  111. data/tools/staticdocs/assets/js/42170351.86617d4a.js +1 -0
  112. data/tools/staticdocs/assets/js/4303.a84f454a.js +1 -0
  113. data/tools/staticdocs/assets/js/43652efd.0c473c25.js +1 -0
  114. data/tools/staticdocs/assets/js/53ca7c5b.f0e35da3.js +1 -0
  115. data/tools/staticdocs/assets/js/54d0d530.9ace531c.js +1 -0
  116. data/tools/staticdocs/assets/js/5b233ba7.565c0c28.js +1 -0
  117. data/tools/staticdocs/assets/js/5bc719f6.80b7b43c.js +1 -0
  118. data/tools/staticdocs/assets/js/5c6ce5ec.ed839e0d.js +1 -0
  119. data/tools/staticdocs/assets/js/5e3ed378.048e258b.js +1 -0
  120. data/tools/staticdocs/assets/js/5fe211ef.96109971.js +1 -0
  121. data/tools/staticdocs/assets/js/62df909c.dd5f3a0c.js +1 -0
  122. data/tools/staticdocs/assets/js/630e5448.699a9dec.js +1 -0
  123. data/tools/staticdocs/assets/js/6831b732.4008a669.js +1 -0
  124. data/tools/staticdocs/assets/js/696b4199.34aa1d77.js +1 -0
  125. data/tools/staticdocs/assets/js/6b210247.d37e3087.js +1 -0
  126. data/tools/staticdocs/assets/js/6b65133b.f71c0e94.js +1 -0
  127. data/tools/staticdocs/assets/js/6f92e431.c98e31e0.js +1 -0
  128. data/tools/staticdocs/assets/js/72c6d8a8.1053fbd7.js +1 -0
  129. data/tools/staticdocs/assets/js/75897369.522ccdd7.js +1 -0
  130. data/tools/staticdocs/assets/js/75e64983.45bf7edc.js +1 -0
  131. data/tools/staticdocs/assets/js/7690.fc05b8e6.js +1 -0
  132. data/tools/staticdocs/assets/js/7f5b2696.72e3b019.js +1 -0
  133. data/tools/staticdocs/assets/js/80c97f38.5a408d9c.js +1 -0
  134. data/tools/staticdocs/assets/js/867640d5.866fe67b.js +1 -0
  135. data/tools/staticdocs/assets/js/89e76475.b4e9da15.js +1 -0
  136. data/tools/staticdocs/assets/js/8f7843ee.59da8025.js +1 -0
  137. data/tools/staticdocs/assets/js/9424f0b3.cc8aa06e.js +1 -0
  138. data/tools/staticdocs/assets/js/97535711.94a5b402.js +1 -0
  139. data/tools/staticdocs/assets/js/99581c43.ebea1d08.js +1 -0
  140. data/tools/staticdocs/assets/js/9d6e81d0.4bc52207.js +1 -0
  141. data/tools/staticdocs/assets/js/{9fb6059a.a5107afb.js → 9fb6059a.57936fbe.js} +1 -1
  142. data/tools/staticdocs/assets/js/a677c089.d8d7a8f5.js +1 -0
  143. data/tools/staticdocs/assets/js/a9987364.2aa836fd.js +1 -0
  144. data/tools/staticdocs/assets/js/aa6b6c1b.993f091d.js +1 -0
  145. data/tools/staticdocs/assets/js/b4596165.a5fe2cea.js +1 -0
  146. data/tools/staticdocs/assets/js/b6d70f94.5df56282.js +1 -0
  147. data/tools/staticdocs/assets/js/b9f60ba6.cdb4a698.js +1 -0
  148. data/tools/staticdocs/assets/js/bd0034eb.5fb449fc.js +1 -0
  149. data/tools/staticdocs/assets/js/c24eae19.f419c8fb.js +1 -0
  150. data/tools/staticdocs/assets/js/c2598f55.85419dc8.js +1 -0
  151. data/tools/staticdocs/assets/js/c5388ca4.32f8f561.js +1 -0
  152. data/tools/staticdocs/assets/js/cb8c3f08.9264e5dd.js +1 -0
  153. data/tools/staticdocs/assets/js/cd879be4.aa3c877c.js +1 -0
  154. data/tools/staticdocs/assets/js/ce89ef36.1d76e86a.js +1 -0
  155. data/tools/staticdocs/assets/js/d1b923aa.de9e8fd6.js +1 -0
  156. data/tools/staticdocs/assets/js/d1bfc316.82dd17ab.js +1 -0
  157. data/tools/staticdocs/assets/js/d24bf9b6.1cb515f4.js +1 -0
  158. data/tools/staticdocs/assets/js/d57a4b5d.09769a64.js +1 -0
  159. data/tools/staticdocs/assets/js/d5d77c37.1704d750.js +1 -0
  160. data/tools/staticdocs/assets/js/d66bf9c0.9a597f56.js +1 -0
  161. data/tools/staticdocs/assets/js/d8ca4191.1861d710.js +1 -0
  162. data/tools/staticdocs/assets/js/d9b92eba.5a40eb6d.js +1 -0
  163. data/tools/staticdocs/assets/js/db8fa1d0.f9f65c91.js +1 -0
  164. data/tools/staticdocs/assets/js/dbe31111.dae4b9bd.js +1 -0
  165. data/tools/staticdocs/assets/js/dc5f7beb.15fc7cc8.js +1 -0
  166. data/tools/staticdocs/assets/js/dfbae5fd.3959d626.js +1 -0
  167. data/tools/staticdocs/assets/js/e501b0d1.cb2ef34f.js +1 -0
  168. data/tools/staticdocs/assets/js/ebec1ccb.086b8668.js +1 -0
  169. data/tools/staticdocs/assets/js/f15615f1.afd4ba93.js +1 -0
  170. data/tools/staticdocs/assets/js/fd886806.fa25adc4.js +1 -0
  171. data/tools/staticdocs/assets/js/main.c4acbd62.js +36 -0
  172. data/tools/staticdocs/assets/js/runtime~main.cb6ff8de.js +1 -0
  173. data/tools/staticdocs/docs/configuration/accessors.html +85 -0
  174. data/tools/staticdocs/docs/configuration/command.html +148 -160
  175. data/tools/staticdocs/docs/configuration/format.html +28 -40
  176. data/tools/staticdocs/docs/configuration/interfaces.html +119 -64
  177. data/tools/staticdocs/docs/configuration/plugins.html +234 -225
  178. data/tools/staticdocs/docs/configuration/protocols.html +106 -92
  179. data/tools/staticdocs/docs/configuration/ssl-tls.html +34 -46
  180. data/tools/staticdocs/docs/configuration/table.html +88 -100
  181. data/tools/staticdocs/docs/configuration/target.html +29 -41
  182. data/tools/staticdocs/docs/configuration/telemetry-screens.html +368 -322
  183. data/tools/staticdocs/docs/configuration/telemetry.html +136 -142
  184. data/tools/staticdocs/docs/configuration.html +1 -13
  185. data/tools/staticdocs/docs/development/curl.html +17 -29
  186. data/tools/staticdocs/docs/development/developing.html +24 -36
  187. data/tools/staticdocs/docs/development/json-api.html +26 -38
  188. data/tools/staticdocs/docs/development/log-structure.html +19 -31
  189. data/tools/staticdocs/docs/development/roadmap.html +26 -44
  190. data/tools/staticdocs/docs/development/streaming-api.html +10 -22
  191. data/tools/staticdocs/docs/development/testing.html +23 -27
  192. data/tools/staticdocs/docs/development.html +1 -13
  193. data/tools/staticdocs/docs/getting-started/generators.html +37 -49
  194. data/tools/staticdocs/docs/getting-started/gettingstarted.html +45 -56
  195. data/tools/staticdocs/docs/getting-started/installation.html +24 -36
  196. data/tools/staticdocs/docs/getting-started/key_concepts.html +32 -44
  197. data/tools/staticdocs/docs/getting-started/podman.html +25 -37
  198. data/tools/staticdocs/docs/getting-started/requirements.html +32 -44
  199. data/tools/staticdocs/docs/getting-started/upgrading.html +135 -24
  200. data/tools/staticdocs/docs/getting-started.html +1 -13
  201. data/tools/staticdocs/docs/guides/bridges.html +17 -30
  202. data/tools/staticdocs/docs/guides/cfs.html +46 -58
  203. data/tools/staticdocs/docs/guides/custom-widgets.html +17 -29
  204. data/tools/staticdocs/docs/guides/little-endian-bitfields.html +3 -15
  205. data/tools/staticdocs/docs/guides/local-mode.html +16 -28
  206. data/tools/staticdocs/docs/guides/logging.html +12 -24
  207. data/tools/staticdocs/docs/guides/monitoring.html +18 -30
  208. data/tools/staticdocs/docs/guides/performance.html +21 -33
  209. data/tools/staticdocs/docs/guides/raspberrypi.html +16 -28
  210. data/tools/staticdocs/docs/guides/script-writing.html +108 -120
  211. data/tools/staticdocs/docs/guides/scripting-api.html +606 -615
  212. data/tools/staticdocs/docs/guides.html +1 -13
  213. data/tools/staticdocs/docs/meta/contributing.html +14 -26
  214. data/tools/staticdocs/docs/meta/licenses.html +36 -25
  215. data/tools/staticdocs/docs/meta/philosophy.html +3 -15
  216. data/tools/staticdocs/docs/meta/xtce.html +13 -25
  217. data/tools/staticdocs/docs/meta.html +1 -13
  218. data/tools/staticdocs/docs/privacy.html +19 -31
  219. data/tools/staticdocs/docs/tools/admin.html +36 -0
  220. data/tools/staticdocs/docs/tools/autonomic.html +22 -34
  221. data/tools/staticdocs/docs/tools/bucket-explorer.html +10 -22
  222. data/tools/staticdocs/docs/tools/calendar.html +21 -33
  223. data/tools/staticdocs/docs/tools/cmd-sender.html +16 -28
  224. data/tools/staticdocs/docs/tools/cmd-tlm-server.html +27 -36
  225. data/tools/staticdocs/docs/tools/command_history.html +10 -0
  226. data/tools/staticdocs/docs/tools/data-extractor.html +29 -41
  227. data/tools/staticdocs/docs/tools/data-viewer.html +11 -23
  228. data/tools/staticdocs/docs/tools/handbooks.html +4 -16
  229. data/tools/staticdocs/docs/tools/limits-monitor.html +18 -30
  230. data/tools/staticdocs/docs/tools/packet-viewer.html +16 -28
  231. data/tools/staticdocs/docs/tools/script-runner.html +43 -55
  232. data/tools/staticdocs/docs/tools/table-manager.html +16 -28
  233. data/tools/staticdocs/docs/tools/tlm-grapher.html +21 -33
  234. data/tools/staticdocs/docs/tools/tlm-viewer.html +16 -28
  235. data/tools/staticdocs/docs/tools.html +1 -13
  236. data/tools/staticdocs/docs.html +12 -24
  237. data/tools/staticdocs/img/admin/add_tool.png +0 -0
  238. data/tools/staticdocs/img/admin/interfaces.png +0 -0
  239. data/tools/staticdocs/img/admin/microservices.png +0 -0
  240. data/tools/staticdocs/img/admin/packages.png +0 -0
  241. data/tools/staticdocs/img/admin/plugins.png +0 -0
  242. data/tools/staticdocs/img/admin/redis.png +0 -0
  243. data/tools/staticdocs/img/admin/routers.png +0 -0
  244. data/tools/staticdocs/img/admin/secrets.png +0 -0
  245. data/tools/staticdocs/img/admin/settings1.png +0 -0
  246. data/tools/staticdocs/img/admin/settings2.png +0 -0
  247. data/tools/staticdocs/img/admin/targets.png +0 -0
  248. data/tools/staticdocs/img/admin/tools.png +0 -0
  249. data/tools/staticdocs/img/cmd_tlm_server/cmd_authority.png +0 -0
  250. data/tools/staticdocs/img/cmd_tlm_server/cmd_tlm_server.png +0 -0
  251. data/tools/staticdocs/img/cmd_tlm_server/critical_cmd_sender.png +0 -0
  252. data/tools/staticdocs/img/cmd_tlm_server/log_messages.png +0 -0
  253. data/tools/staticdocs/img/command_history/command_history.png +0 -0
  254. data/tools/staticdocs/img/command_sender/collect_states.png +0 -0
  255. data/tools/staticdocs/img/command_sender/command_sender.png +0 -0
  256. data/tools/staticdocs/img/command_sender/history.png +0 -0
  257. data/tools/staticdocs/img/command_sender/inst_clear.png +0 -0
  258. data/tools/staticdocs/img/command_sender/inst_collect.png +0 -0
  259. data/tools/staticdocs/img/command_sender/inst_collect_hazardous.png +0 -0
  260. data/tools/staticdocs/img/command_sender/mode_menu.png +0 -0
  261. data/tools/staticdocs/img/telemetry_viewer/widgets/array.png +0 -0
  262. data/tools/staticdocs/img/telemetry_viewer/widgets/backcolor.png +0 -0
  263. data/tools/staticdocs/img/telemetry_viewer/widgets/block.png +0 -0
  264. data/tools/staticdocs/img/telemetry_viewer/widgets/bordercolor.png +0 -0
  265. data/tools/staticdocs/img/telemetry_viewer/widgets/button.png +0 -0
  266. data/tools/staticdocs/img/telemetry_viewer/widgets/canvasdot.png +0 -0
  267. data/tools/staticdocs/img/telemetry_viewer/widgets/canvasimage.png +0 -0
  268. data/tools/staticdocs/img/telemetry_viewer/widgets/canvasimagevalue.png +0 -0
  269. data/tools/staticdocs/img/telemetry_viewer/widgets/canvaslabel.png +0 -0
  270. data/tools/staticdocs/img/telemetry_viewer/widgets/canvaslabelvalue.png +0 -0
  271. data/tools/staticdocs/img/telemetry_viewer/widgets/canvasline.png +0 -0
  272. data/tools/staticdocs/img/telemetry_viewer/widgets/canvaslinevalue.png +0 -0
  273. data/tools/staticdocs/img/telemetry_viewer/widgets/checkbutton.png +0 -0
  274. data/tools/staticdocs/img/telemetry_viewer/widgets/combobox.png +0 -0
  275. data/tools/staticdocs/img/telemetry_viewer/widgets/date.png +0 -0
  276. data/tools/staticdocs/img/telemetry_viewer/widgets/formatvalue.png +0 -0
  277. data/tools/staticdocs/img/telemetry_viewer/widgets/height.png +0 -0
  278. data/tools/staticdocs/img/telemetry_viewer/widgets/horizontal.png +0 -0
  279. data/tools/staticdocs/img/telemetry_viewer/widgets/horizontalbox.png +0 -0
  280. data/tools/staticdocs/img/telemetry_viewer/widgets/horizontalline.png +0 -0
  281. data/tools/staticdocs/img/telemetry_viewer/widgets/iframe.png +0 -0
  282. data/tools/staticdocs/img/telemetry_viewer/widgets/imageviewer.png +0 -0
  283. data/tools/staticdocs/img/telemetry_viewer/widgets/label.png +0 -0
  284. data/tools/staticdocs/img/telemetry_viewer/widgets/labelled.png +0 -0
  285. data/tools/staticdocs/img/telemetry_viewer/widgets/labelprogressbar.png +0 -0
  286. data/tools/staticdocs/img/telemetry_viewer/widgets/labelsparkline.png +0 -0
  287. data/tools/staticdocs/img/telemetry_viewer/widgets/labelvalue.png +0 -0
  288. data/tools/staticdocs/img/telemetry_viewer/widgets/labelvaluedesc.png +0 -0
  289. data/tools/staticdocs/img/telemetry_viewer/widgets/labelvaluelimitscolumn.png +0 -0
  290. data/tools/staticdocs/img/telemetry_viewer/widgets/labelvaluerangebar.png +0 -0
  291. data/tools/staticdocs/img/telemetry_viewer/widgets/led.png +0 -0
  292. data/tools/staticdocs/img/telemetry_viewer/widgets/limitsbar.png +0 -0
  293. data/tools/staticdocs/img/telemetry_viewer/widgets/limitscolor.png +0 -0
  294. data/tools/staticdocs/img/telemetry_viewer/widgets/limitscolumn.png +0 -0
  295. data/tools/staticdocs/img/telemetry_viewer/widgets/linegraph.png +0 -0
  296. data/tools/staticdocs/img/telemetry_viewer/widgets/margin.png +0 -0
  297. data/tools/staticdocs/img/telemetry_viewer/widgets/matrixbycolumns.png +0 -0
  298. data/tools/staticdocs/img/telemetry_viewer/widgets/named_widget.png +0 -0
  299. data/tools/staticdocs/img/telemetry_viewer/widgets/padding.png +0 -0
  300. data/tools/staticdocs/img/telemetry_viewer/widgets/progressbar.png +0 -0
  301. data/tools/staticdocs/img/telemetry_viewer/widgets/radiobutton.png +0 -0
  302. data/tools/staticdocs/img/telemetry_viewer/widgets/rangebar.png +0 -0
  303. data/tools/staticdocs/img/telemetry_viewer/widgets/raw.png +0 -0
  304. data/tools/staticdocs/img/telemetry_viewer/widgets/rollup.png +0 -0
  305. data/tools/staticdocs/img/telemetry_viewer/widgets/scrollwindow.png +0 -0
  306. data/tools/staticdocs/img/telemetry_viewer/widgets/signal.png +0 -0
  307. data/tools/staticdocs/img/telemetry_viewer/widgets/spacer.png +0 -0
  308. data/tools/staticdocs/img/telemetry_viewer/widgets/sparkline.png +0 -0
  309. data/tools/staticdocs/img/telemetry_viewer/widgets/subsetting.png +0 -0
  310. data/tools/staticdocs/img/telemetry_viewer/widgets/tabbook.png +0 -0
  311. data/tools/staticdocs/img/telemetry_viewer/widgets/tabitem.png +0 -0
  312. data/tools/staticdocs/img/telemetry_viewer/widgets/textbox.png +0 -0
  313. data/tools/staticdocs/img/telemetry_viewer/widgets/textcolor.png +0 -0
  314. data/tools/staticdocs/img/telemetry_viewer/widgets/textfield.png +0 -0
  315. data/tools/staticdocs/img/telemetry_viewer/widgets/time.png +0 -0
  316. data/tools/staticdocs/img/telemetry_viewer/widgets/title.png +0 -0
  317. data/tools/staticdocs/img/telemetry_viewer/widgets/value.png +0 -0
  318. data/tools/staticdocs/img/telemetry_viewer/widgets/valuelimitsbar.png +0 -0
  319. data/tools/staticdocs/img/telemetry_viewer/widgets/valuelimitscolumn.png +0 -0
  320. data/tools/staticdocs/img/telemetry_viewer/widgets/valuerangebar.png +0 -0
  321. data/tools/staticdocs/img/telemetry_viewer/widgets/vertical.png +0 -0
  322. data/tools/staticdocs/img/telemetry_viewer/widgets/verticalbox.png +0 -0
  323. data/tools/staticdocs/img/telemetry_viewer/widgets/width.png +0 -0
  324. data/tools/staticdocs/index.html +1 -13
  325. data/tools/staticdocs/lunr-index-1734734383200.json +1 -0
  326. data/tools/staticdocs/lunr-index.json +1 -1
  327. data/tools/staticdocs/markdown-page.html +2 -14
  328. data/tools/staticdocs/search-doc-1734734383200.json +1 -0
  329. data/tools/staticdocs/search-doc.json +1 -1
  330. data/tools/staticdocs/sitemap.xml +1 -1
  331. metadata +254 -99
  332. data/tools/staticdocs/assets/css/styles.80ddca08.css +0 -1
  333. data/tools/staticdocs/assets/images/cmd_authority-51594401bfa6d8cc5849aae05b4d2af838360f8a3329f9746aa1307fe3091402.png +0 -0
  334. data/tools/staticdocs/assets/images/cmd_tlm_server-727ea478568988b10e4be4a3ba7255dd48ec56f6ab6444c6c1e32497fe478681.png +0 -0
  335. data/tools/staticdocs/assets/images/collect_states-565ae4b6d02449850585afd7ce35982711d4d677f5a04c1332b2c176f1ec3a25.png +0 -0
  336. data/tools/staticdocs/assets/images/command_sender-bb1543bde21fc1963405de5251d16a80a0c3a1bf5adb5fb78145d4995e2fe541.png +0 -0
  337. data/tools/staticdocs/assets/images/history-2391436f9edc3e00104a7375f88f5de72b0967f9eb154dfecc346c0a70af4389.png +0 -0
  338. data/tools/staticdocs/assets/images/inst_clear-2d5f985c879e8b917fedacdb8c6552bbd383231bf5c8ab8e560e77df4e050026.png +0 -0
  339. data/tools/staticdocs/assets/images/inst_collect-81bc422b3b33c5ebcbe4c2f489c730b32ab0d6ea6c7f81cc79d9f6bc03e9db15.png +0 -0
  340. data/tools/staticdocs/assets/images/inst_collect_hazardous-a8fb19ea296354a0cd276da1e0ad82f74479eea4e7e204fcf64b779596f2c092.png +0 -0
  341. data/tools/staticdocs/assets/images/log_messages-a934181ef59dc82d2624d052faf1023ef8ff2548f074ba9d67abdb6ebfd728d4.png +0 -0
  342. data/tools/staticdocs/assets/images/mode_menu-9c112084937db5bbff02c18a5681ad038caa0838fc88438628b134a6f6823a09.png +0 -0
  343. data/tools/staticdocs/assets/js/019369f3.727d87f1.js +0 -1
  344. data/tools/staticdocs/assets/js/058ffc22.f2d69d72.js +0 -1
  345. data/tools/staticdocs/assets/js/0686a885.83641127.js +0 -1
  346. data/tools/staticdocs/assets/js/078dbab0.945c9f59.js +0 -1
  347. data/tools/staticdocs/assets/js/0f5d161c.017a0733.js +0 -1
  348. data/tools/staticdocs/assets/js/0ff569c9.aa4daee5.js +0 -1
  349. data/tools/staticdocs/assets/js/103cc3be.537144c5.js +0 -1
  350. data/tools/staticdocs/assets/js/13196248.6b49e93d.js +0 -1
  351. data/tools/staticdocs/assets/js/13c1b4e4.22a0b1d4.js +0 -1
  352. data/tools/staticdocs/assets/js/1e02e6a3.0445f325.js +0 -1
  353. data/tools/staticdocs/assets/js/2047b354.25d11993.js +0 -1
  354. data/tools/staticdocs/assets/js/22b3ac48.7a5ea984.js +0 -1
  355. data/tools/staticdocs/assets/js/2601.ca992ab9.js +0 -1
  356. data/tools/staticdocs/assets/js/26b8abb2.dcdf815e.js +0 -1
  357. data/tools/staticdocs/assets/js/2bb7bf90.633f7a6c.js +0 -1
  358. data/tools/staticdocs/assets/js/3917.a6366d59.js +0 -1
  359. data/tools/staticdocs/assets/js/3dd7ef3b.d55880a8.js +0 -1
  360. data/tools/staticdocs/assets/js/40365d27.4b4b2ccd.js +0 -1
  361. data/tools/staticdocs/assets/js/411898ad.1d6a609d.js +0 -1
  362. data/tools/staticdocs/assets/js/42170351.d7f6034b.js +0 -1
  363. data/tools/staticdocs/assets/js/43652efd.d1e1add3.js +0 -1
  364. data/tools/staticdocs/assets/js/53ca7c5b.c3111020.js +0 -1
  365. data/tools/staticdocs/assets/js/54d0d530.fa34b0b0.js +0 -1
  366. data/tools/staticdocs/assets/js/5723.f6123e37.js +0 -1
  367. data/tools/staticdocs/assets/js/5778.7d36f1c2.js +0 -1
  368. data/tools/staticdocs/assets/js/5b233ba7.6fdd6b6c.js +0 -1
  369. data/tools/staticdocs/assets/js/5bc719f6.daa2a049.js +0 -1
  370. data/tools/staticdocs/assets/js/5c6ce5ec.61a9cae2.js +0 -1
  371. data/tools/staticdocs/assets/js/5e3ed378.2bee863a.js +0 -1
  372. data/tools/staticdocs/assets/js/5fe211ef.0b54b37a.js +0 -1
  373. data/tools/staticdocs/assets/js/62df909c.906d9999.js +0 -1
  374. data/tools/staticdocs/assets/js/630e5448.6fea087c.js +0 -1
  375. data/tools/staticdocs/assets/js/6831b732.60c3c6d5.js +0 -1
  376. data/tools/staticdocs/assets/js/696b4199.a5ae3d65.js +0 -1
  377. data/tools/staticdocs/assets/js/6b210247.aaa91da1.js +0 -1
  378. data/tools/staticdocs/assets/js/6b65133b.76b83e83.js +0 -1
  379. data/tools/staticdocs/assets/js/6f92e431.d02304f0.js +0 -1
  380. data/tools/staticdocs/assets/js/72c6d8a8.98821dd1.js +0 -1
  381. data/tools/staticdocs/assets/js/75897369.7b31b03e.js +0 -1
  382. data/tools/staticdocs/assets/js/75e64983.6ef0928b.js +0 -1
  383. data/tools/staticdocs/assets/js/7760.7f593c4f.js +0 -2
  384. data/tools/staticdocs/assets/js/7760.7f593c4f.js.LICENSE.txt +0 -61
  385. data/tools/staticdocs/assets/js/7f5b2696.60735273.js +0 -1
  386. data/tools/staticdocs/assets/js/867640d5.48133ad5.js +0 -1
  387. data/tools/staticdocs/assets/js/89e76475.13ce283b.js +0 -1
  388. data/tools/staticdocs/assets/js/8f7843ee.7a68246a.js +0 -1
  389. data/tools/staticdocs/assets/js/9424f0b3.b6a7e150.js +0 -1
  390. data/tools/staticdocs/assets/js/97535711.5311ddd9.js +0 -1
  391. data/tools/staticdocs/assets/js/99581c43.64e9c551.js +0 -1
  392. data/tools/staticdocs/assets/js/9d6e81d0.c31feabc.js +0 -1
  393. data/tools/staticdocs/assets/js/a507c363.d2cc5d72.js +0 -1
  394. data/tools/staticdocs/assets/js/a677c089.7877e85d.js +0 -1
  395. data/tools/staticdocs/assets/js/a9987364.0358fb0b.js +0 -1
  396. data/tools/staticdocs/assets/js/aa6b6c1b.9f3252e1.js +0 -1
  397. data/tools/staticdocs/assets/js/b4596165.daa24b72.js +0 -1
  398. data/tools/staticdocs/assets/js/b6d70f94.19c327f0.js +0 -1
  399. data/tools/staticdocs/assets/js/b9f60ba6.e55cd937.js +0 -1
  400. data/tools/staticdocs/assets/js/bd0034eb.6691ccc4.js +0 -1
  401. data/tools/staticdocs/assets/js/c24eae19.503774e8.js +0 -1
  402. data/tools/staticdocs/assets/js/c2598f55.c5a1bac3.js +0 -1
  403. data/tools/staticdocs/assets/js/c5388ca4.f526bb0c.js +0 -1
  404. data/tools/staticdocs/assets/js/cb8c3f08.b82ad06f.js +0 -1
  405. data/tools/staticdocs/assets/js/cd879be4.f956406f.js +0 -1
  406. data/tools/staticdocs/assets/js/ce89ef36.aa518a52.js +0 -1
  407. data/tools/staticdocs/assets/js/d1b923aa.d6bafb72.js +0 -1
  408. data/tools/staticdocs/assets/js/d1bfc316.28d99aa4.js +0 -1
  409. data/tools/staticdocs/assets/js/d24bf9b6.6c422113.js +0 -1
  410. data/tools/staticdocs/assets/js/d57a4b5d.8f23a506.js +0 -1
  411. data/tools/staticdocs/assets/js/d5d77c37.fb296e02.js +0 -1
  412. data/tools/staticdocs/assets/js/d8ca4191.2349d796.js +0 -1
  413. data/tools/staticdocs/assets/js/d9b92eba.8f82360d.js +0 -1
  414. data/tools/staticdocs/assets/js/db8fa1d0.b0500934.js +0 -1
  415. data/tools/staticdocs/assets/js/dc5f7beb.e3a82d1e.js +0 -1
  416. data/tools/staticdocs/assets/js/dfbae5fd.d1484e14.js +0 -1
  417. data/tools/staticdocs/assets/js/e501b0d1.0b407477.js +0 -1
  418. data/tools/staticdocs/assets/js/ebec1ccb.a1b5fc97.js +0 -1
  419. data/tools/staticdocs/assets/js/f15615f1.ee14b7d6.js +0 -1
  420. data/tools/staticdocs/assets/js/fd886806.4a41fa80.js +0 -1
  421. data/tools/staticdocs/assets/js/main.03e795fe.js +0 -2
  422. data/tools/staticdocs/assets/js/main.03e795fe.js.LICENSE.txt +0 -71
  423. data/tools/staticdocs/assets/js/runtime~main.cb8e940d.js +0 -1
  424. data/tools/staticdocs/docs/development/host-install.html +0 -38
  425. data/tools/staticdocs/docs/v5/host-install/index.html +0 -11
  426. data/tools/staticdocs/lunr-index-1730331075297.json +0 -1
  427. data/tools/staticdocs/search-doc-1730331075297.json +0 -1
@@ -1,30 +1,18 @@
1
- <!doctype html>
2
- <html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-guides/custom-widgets" data-has-hydrated="false">
3
- <head>
4
- <meta charset="UTF-8">
5
- <meta name="generator" content="Docusaurus v3.5.2">
6
- <title data-rh="true">Custom Widgets | OpenC3 Docs</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><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/guides/custom-widgets"><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="Custom Widgets | OpenC3 Docs"><meta data-rh="true" name="description" content="COSMOS allows you to build custom widgets which can be deployed with your plugin and used in Telemetry Viewer. Building custom widgets can utilize any javascript frameworks but since COSMOS is written with Vue.js, we will use that framework in this tutorial. Please see the Widget Generator guide for information about generating the scaffolding for a custom widget."><meta data-rh="true" property="og:description" content="COSMOS allows you to build custom widgets which can be deployed with your plugin and used in Telemetry Viewer. Building custom widgets can utilize any javascript frameworks but since COSMOS is written with Vue.js, we will use that framework in this tutorial. Please see the Widget Generator guide for information about generating the scaffolding for a custom widget."><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/guides/custom-widgets"><link data-rh="true" rel="alternate" href="https://docs.openc3.com/tools/staticdocs/docs/guides/custom-widgets" hreflang="en"><link data-rh="true" rel="alternate" href="https://docs.openc3.com/tools/staticdocs/docs/guides/custom-widgets" hreflang="x-default"><link rel="stylesheet" href="/tools/staticdocs/assets/css/styles.80ddca08.css">
7
- <script src="/tools/staticdocs/assets/js/runtime~main.cb8e940d.js" defer="defer"></script>
8
- <script src="/tools/staticdocs/assets/js/main.03e795fe.js" defer="defer"></script>
9
- </head>
10
- <body class="navigation-with-keyboard">
11
- <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var 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")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><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"></path></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><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 &#x27;Getting Started&#x27;" aria-expanded="false" type="button" class="clean-btn menu__caret"></button></div></li><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/configuration">Configuration</a><button aria-label="Expand sidebar category &#x27;Configuration&#x27;" aria-expanded="false" type="button" class="clean-btn menu__caret"></button></div></li><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 &#x27;Tools&#x27;" aria-expanded="false" type="button" class="clean-btn menu__caret"></button></div></li><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/guides">Guides</a><button aria-label="Collapse sidebar category &#x27;Guides&#x27;" 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/guides/bridges">Bridges</a></li><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/guides/cfs">COSMOS and NASA cFS</a></li><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/guides/custom-widgets">Custom Widgets</a></li><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/guides/little-endian-bitfields">Little Endian Bitfields</a></li><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/guides/local-mode">Local Mode</a></li><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/guides/logging">Logging</a></li><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/guides/monitoring">Monitoring</a></li><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/guides/performance">Performance</a></li><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/guides/raspberrypi">Raspberry Pi</a></li><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/guides/script-writing">Script Writing Guide</a></li><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/guides/scripting-api">Scripting API Guide</a></li></ul></li><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 &#x27;Development&#x27;" aria-expanded="false" type="button" class="clean-btn menu__caret"></button></div></li><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 &#x27;Meta&#x27;" aria-expanded="false" type="button" class="clean-btn menu__caret"></button></div></li><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></li></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"></path></svg></a></li><li itemscope="" itemprop="itemListElement" itemtype="https://schema.org/ListItem" class="breadcrumbs__item"><a class="breadcrumbs__link" itemprop="item" href="/tools/staticdocs/docs/guides"><span itemprop="name">Guides</span></a><meta itemprop="position" content="1"></li><li itemscope="" itemprop="itemListElement" itemtype="https://schema.org/ListItem" class="breadcrumbs__item breadcrumbs__item--active"><span class="breadcrumbs__link" itemprop="name">Custom Widgets</span><meta itemprop="position" content="2"></li></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>Custom Widgets</h1></header><p>COSMOS allows you to build custom widgets which can be deployed with your <a href="/tools/staticdocs/docs/configuration/plugins">plugin</a> and used in <a href="/tools/staticdocs/docs/tools/tlm-viewer">Telemetry Viewer</a>. Building custom widgets can utilize any javascript frameworks but since COSMOS is written with Vue.js, we will use that framework in this tutorial. Please see the <a href="/tools/staticdocs/docs/getting-started/generators#widget-generator">Widget Generator</a> guide for information about generating the scaffolding for a custom widget.</p>
12
- <h2 class="anchor anchorWithStickyNavbar_fF9Z" id="custom-widgets">Custom Widgets<a href="#custom-widgets" class="hash-link" aria-label="Direct link to Custom Widgets" title="Direct link to Custom Widgets">​</a></h2>
13
- <p>We&#x27;re basically going to follow the COSMOS <a href="https://github.com/OpenC3/cosmos/tree/main/openc3-cosmos-init/plugins/packages/openc3-cosmos-demo" target="_blank" rel="noopener noreferrer">Demo</a> and explain how that custom widget was created.</p>
14
- <p>If you look at the bottom of the Demo&#x27;s <a href="https://github.com/OpenC3/cosmos/blob/main/openc3-cosmos-init/plugins/packages/openc3-cosmos-demo/plugin.txt" target="_blank" rel="noopener noreferrer">plugin.txt</a> file you&#x27;ll see we declare the widgets:</p>
15
- <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)">WIDGET</span><span class="token plain"> </span><span class="token constant" style="color:rgb(130, 170, 255)">BIG</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)">WIDGET</span><span class="token plain"> </span><span class="token constant" style="color:rgb(130, 170, 255)">HELLOWORLD</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"></path></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"></path></svg></span></button></div></div></div>
16
- <p>When the plugin is deployed this causes COSMOS to look for the as-built widgets. For the BIG widget it will look for the widget at <code>tools/widgets/BigWidget/BigWidget.umd.min.js</code>. Similarly it looks for HELLOWORLD at <code>tools/widgets/HelloworldWidget/HelloworldWidget.umd.min.js</code>. These directories and file names may seem mysterious but it&#x27;s all about how the widgets get built.</p>
17
- <h3 class="anchor anchorWithStickyNavbar_fF9Z" id="helloworld-widget">Helloworld Widget<a href="#helloworld-widget" class="hash-link" aria-label="Direct link to Helloworld Widget" title="Direct link to Helloworld Widget">​</a></h3>
18
- <p>The Helloworld Widget source code is found in the plugin&#x27;s src directory and is called <a href="https://github.com/OpenC3/cosmos/blob/main/openc3-cosmos-init/plugins/packages/openc3-cosmos-demo/src/HelloworldWidget.vue" target="_blank" rel="noopener noreferrer">HelloworldWidget.vue</a>. The basic structure is as follows:</p>
19
- <div class="language-vue codeBlockContainer_ZGJx theme-code-block" style="--prism-color:#d6deeb;--prism-background-color:#011627"><div class="codeBlockContent_qZBB"><pre tabindex="0" class="prism-code language-vue 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">&lt;template&gt;</span><br></span><span class="token-line" style="color:#d6deeb"><span class="token plain"> &lt;!-- Implement widget here --&gt;</span><br></span><span class="token-line" style="color:#d6deeb"><span class="token plain">&lt;/template&gt;</span><br></span><span class="token-line" style="color:#d6deeb"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#d6deeb"><span class="token plain">&lt;script&gt;</span><br></span><span class="token-line" style="color:#d6deeb"><span class="token plain">import Widget from &quot;@openc3/tool-common/src/components/widgets/Widget&quot;;</span><br></span><span class="token-line" style="color:#d6deeb"><span class="token plain">export default {</span><br></span><span class="token-line" style="color:#d6deeb"><span class="token plain"> mixins: [Widget],</span><br></span><span class="token-line" style="color:#d6deeb"><span class="token plain"> data() {</span><br></span><span class="token-line" style="color:#d6deeb"><span class="token plain"> return {</span><br></span><span class="token-line" style="color:#d6deeb"><span class="token plain"> // Reactive data items</span><br></span><span class="token-line" style="color:#d6deeb"><span class="token plain"> };</span><br></span><span class="token-line" style="color:#d6deeb"><span class="token plain"> },</span><br></span><span class="token-line" style="color:#d6deeb"><span class="token plain">};</span><br></span><span class="token-line" style="color:#d6deeb"><span class="token plain">&lt;/script&gt;</span><br></span><span class="token-line" style="color:#d6deeb"><span class="token plain">&lt;style scoped&gt;</span><br></span><span class="token-line" style="color:#d6deeb"><span class="token plain">/* widget specific style */</span><br></span><span class="token-line" style="color:#d6deeb"><span class="token plain">&lt;/style&gt;</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"></path></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"></path></svg></span></button></div></div></div>
20
- <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"></path></svg></span>Vue &amp; Vuetify</div><div class="admonitionContent_bl22"><p>For more information about how the COSMOS frontend is built (including all the Widgets) please check out <a href="https://vuejs.org" target="_blank" rel="noopener noreferrer">Vue.js</a> and <a href="https://vuetifyjs.com" target="_blank" rel="noopener noreferrer">Vuetify</a>.</p></div></div>
21
- <p>To build this custom widget we changed the Demo <a href="https://github.com/OpenC3/cosmos/blob/main/openc3-cosmos-init/plugins/packages/openc3-cosmos-demo/Rakefile" target="_blank" rel="noopener noreferrer">Rakefile</a> to call <code>yarn run build</code> when the plugin is built. <code>yarn run XXX</code> looks for &#x27;scripts&#x27; to run in the <a href="https://github.com/OpenC3/cosmos/blob/main/openc3-cosmos-init/plugins/packages/openc3-cosmos-demo/package.json" target="_blank" rel="noopener noreferrer">package.json</a> file. If we open package.json we find the following:</p>
22
- <div class="language-json codeBlockContainer_ZGJx theme-code-block" style="--prism-color:#d6deeb;--prism-background-color:#011627"><div class="codeBlockContent_qZBB"><pre tabindex="0" class="prism-code language-json 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"> </span><span class="token property" style="color:rgb(128, 203, 196)">&quot;scripts&quot;</span><span class="token operator" style="color:rgb(127, 219, 202)">:</span><span class="token plain"> </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 property" style="color:rgb(128, 203, 196)">&quot;build&quot;</span><span class="token operator" style="color:rgb(127, 219, 202)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(173, 219, 103)">&quot;vue-cli-service build --target lib --dest tools/widgets/HelloworldWidget --formats umd-min src/HelloworldWidget.vue --name HelloworldWidget &amp;&amp; vue-cli-service build --target lib --dest tools/widgets/BigWidget --formats umd-min src/BigWidget.vue --name BigWidget&quot;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#d6deeb"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</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"></path></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"></path></svg></span></button></div></div></div>
23
- <p>This uses the <code>vue-cli-service</code> to build the code found at <code>src/HelloworldWidget.vue</code> and formats as <code>umd-min</code> and puts it in the <code>tools/widgets/HelloworldWidget</code> directory. So this is why the plugin looks for the plugin at <code>tools/widgets/HelloworldWidget/HelloworldWidget.umd.min.js</code>. Click <a href="https://cli.vuejs.org/guide/cli-service.html#vue-cli-service-build" target="_blank" rel="noopener noreferrer">here</a> for the <code>vue-cli-service build</code> documentation.</p>
24
- <p>If you look at the Demo plugin&#x27;s <a href="https://github.com/OpenC3/cosmos/blob/main/openc3-cosmos-init/plugins/packages/openc3-cosmos-demo/targets/INST/screens/simple.txt" target="_blank" rel="noopener noreferrer">simple.txt</a> screen you&#x27;ll see we&#x27;re using the widgets:</p>
25
- <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)">SCREEN</span><span class="token plain"> </span><span class="token constant" style="color:rgb(130, 170, 255)">AUTO</span><span class="token plain"> </span><span class="token constant" style="color:rgb(130, 170, 255)">AUTO</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">0.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)">LABELVALUE</span><span class="token plain"> </span><span class="token operator" style="color:rgb(127, 219, 202)">&lt;</span><span class="token operator" style="color:rgb(127, 219, 202)">%=</span><span class="token plain"> target_name </span><span class="token string-literal string" style="color:rgb(173, 219, 103)">%&gt; HEALTH_STATUS CCSDSSEQCNT</span><br></span><span class="token-line" style="color:#d6deeb"><span class="token string-literal string" style="color:rgb(173, 219, 103)">HELLOWORLD</span><br></span><span class="token-line" style="color:#d6deeb"><span class="token string-literal string" style="color:rgb(173, 219, 103)">BIG &lt;%= target_name %&gt;</span><span class="token plain"> </span><span class="token constant" style="color:rgb(130, 170, 255)">HEALTH_STATUS</span><span class="token plain"> </span><span class="token constant" style="color:rgb(130, 170, 255)">TEMP1</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"></path></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"></path></svg></span></button></div></div></div>
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-guides/custom-widgets" data-has-hydrated=false><meta charset=UTF-8><meta name=generator content="Docusaurus v3.6.3"><title data-rh=true>Custom Widgets | 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/guides/custom-widgets><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="Custom Widgets | OpenC3 Docs"><meta data-rh=true name=description content="How to build custom widgets for use in Telemetry Viewer"><meta data-rh=true property=og:description content="How to build custom widgets for use in Telemetry Viewer"><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/guides/custom-widgets><link data-rh=true rel=alternate href=https://docs.openc3.com/tools/staticdocs/docs/guides/custom-widgets hreflang=en><link data-rh=true rel=alternate href=https://docs.openc3.com/tools/staticdocs/docs/guides/custom-widgets hreflang=x-default><link rel=stylesheet href=/tools/staticdocs/assets/css/styles.839a3ee9.css><script src=/tools/staticdocs/assets/js/runtime~main.cb6ff8de.js defer></script><script src=/tools/staticdocs/assets/js/main.c4acbd62.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><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 menu__list-item--collapsed"><div class=menu__list-item-collapsible><a class="menu__link menu__link--sublist" href=/tools/staticdocs/docs/configuration>Configuration</a><button aria-label="Expand sidebar category 'Configuration'" 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/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"><div class=menu__list-item-collapsible><a class="menu__link menu__link--sublist menu__link--active" href=/tools/staticdocs/docs/guides>Guides</a><button aria-label="Collapse sidebar category 'Guides'" 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/guides/bridges>Bridges</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/guides/cfs>COSMOS and NASA cFS</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/guides/custom-widgets>Custom Widgets</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/guides/little-endian-bitfields>Little Endian Bitfields</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/guides/local-mode>Local Mode</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/guides/logging>Logging</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/guides/monitoring>Monitoring</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/guides/performance>Performance</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/guides/raspberrypi>Raspberry Pi</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/guides/script-writing>Script Writing Guide</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/guides/scripting-api>Scripting API Guide</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/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/guides><span itemprop=name>Guides</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>Custom Widgets</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>Custom Widgets</h1></header><p>COSMOS allows you to build custom widgets which can be deployed with your <a href=/tools/staticdocs/docs/configuration/plugins>plugin</a> and used in <a href=/tools/staticdocs/docs/tools/tlm-viewer>Telemetry Viewer</a>. Building custom widgets can utilize any javascript frameworks but since COSMOS is written with Vue.js, we will use that framework in this tutorial. Please see the <a href=/tools/staticdocs/docs/getting-started/generators#widget-generator>Widget Generator</a> guide for information about generating the scaffolding for a custom widget.</p>
2
+ <h2 class="anchor anchorWithStickyNavbar_fF9Z" id=custom-widgets>Custom Widgets<a href=#custom-widgets class=hash-link aria-label="Direct link to Custom Widgets" title="Direct link to Custom Widgets">​</a></h2>
3
+ <p>We're basically going to follow the COSMOS <a href=https://github.com/OpenC3/cosmos/tree/main/openc3-cosmos-init/plugins/packages/openc3-cosmos-demo target=_blank rel="noopener noreferrer">Demo</a> and explain how that custom widget was created.</p>
4
+ <p>If you look at the bottom of the Demo's <a href=https://github.com/OpenC3/cosmos/blob/main/openc3-cosmos-init/plugins/packages/openc3-cosmos-demo/plugin.txt target=_blank rel="noopener noreferrer">plugin.txt</a> file you'll see we declare the widgets:</p>
5
+ <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)">WIDGET</span><span class="token plain"> </span><span class="token constant" style="color:rgb(130, 170, 255)">BIG</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)">WIDGET</span><span class="token plain"> </span><span class="token constant" style="color:rgb(130, 170, 255)">HELLOWORLD</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>
6
+ <p>When the plugin is deployed this causes COSMOS to look for the as-built widgets. For the BIG widget it will look for the widget at <code>tools/widgets/BigWidget/BigWidget.umd.min.js</code>. Similarly it looks for HELLOWORLD at <code>tools/widgets/HelloworldWidget/HelloworldWidget.umd.min.js</code>. These directories and file names may seem mysterious but it's all about how the widgets get built.</p>
7
+ <h3 class="anchor anchorWithStickyNavbar_fF9Z" id=helloworld-widget>Helloworld Widget<a href=#helloworld-widget class=hash-link aria-label="Direct link to Helloworld Widget" title="Direct link to Helloworld Widget">​</a></h3>
8
+ <p>The Helloworld Widget source code is found in the plugin's src directory and is called <a href=https://github.com/OpenC3/cosmos/blob/main/openc3-cosmos-init/plugins/packages/openc3-cosmos-demo/src/HelloworldWidget.vue target=_blank rel="noopener noreferrer">HelloworldWidget.vue</a>. The basic structure is as follows:</p>
9
+ <div class="language-vue codeBlockContainer_ZGJx theme-code-block" style=--prism-color:#d6deeb;--prism-background-color:#011627><div class=codeBlockContent_qZBB><pre tabindex=0 class="prism-code language-vue 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">&lt;template></span><br></span><span class=token-line style=color:#d6deeb><span class="token plain"> &lt;!-- Implement widget here --></span><br></span><span class=token-line style=color:#d6deeb><span class="token plain">&lt;/template></span><br></span><span class=token-line style=color:#d6deeb><span class="token plain" style=display:inline-block></span><br></span><span class=token-line style=color:#d6deeb><span class="token plain">&lt;script></span><br></span><span class=token-line style=color:#d6deeb><span class="token plain">import { Widget } from "@openc3/vue-common/widgets";</span><br></span><span class=token-line style=color:#d6deeb><span class="token plain">export default {</span><br></span><span class=token-line style=color:#d6deeb><span class="token plain"> mixins: [Widget],</span><br></span><span class=token-line style=color:#d6deeb><span class="token plain"> data() {</span><br></span><span class=token-line style=color:#d6deeb><span class="token plain"> return {</span><br></span><span class=token-line style=color:#d6deeb><span class="token plain"> // Reactive data items</span><br></span><span class=token-line style=color:#d6deeb><span class="token plain"> };</span><br></span><span class=token-line style=color:#d6deeb><span class="token plain"> },</span><br></span><span class=token-line style=color:#d6deeb><span class="token plain">};</span><br></span><span class=token-line style=color:#d6deeb><span class="token plain">&lt;/script></span><br></span><span class=token-line style=color:#d6deeb><span class="token plain">&lt;style scoped></span><br></span><span class=token-line style=color:#d6deeb><span class="token plain">/* widget specific style */</span><br></span><span class=token-line style=color:#d6deeb><span class="token plain">&lt;/style></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>
10
+ <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>Vue & Vuetify</div><div class=admonitionContent_bl22><p>For more information about how the COSMOS frontend is built (including all the Widgets) please check out <a href=https://vuejs.org target=_blank rel="noopener noreferrer">Vue.js</a> and <a href=https://vuetifyjs.com target=_blank rel="noopener noreferrer">Vuetify</a>.</div></div>
11
+ <p>To build this custom widget we changed the Demo <a href=https://github.com/OpenC3/cosmos/blob/main/openc3-cosmos-init/plugins/packages/openc3-cosmos-demo/Rakefile target=_blank rel="noopener noreferrer">Rakefile</a> to call <code>yarn run build</code> when the plugin is built. <code>yarn run XXX</code> looks for 'scripts' to run in the <a href=https://github.com/OpenC3/cosmos/blob/main/openc3-cosmos-init/plugins/packages/openc3-cosmos-demo/package.json target=_blank rel="noopener noreferrer">package.json</a> file. If we open package.json we find the following:</p>
12
+ <div class="language-json codeBlockContainer_ZGJx theme-code-block" style=--prism-color:#d6deeb;--prism-background-color:#011627><div class=codeBlockContent_qZBB><pre tabindex=0 class="prism-code language-json 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"> </span><span class="token property" style="color:rgb(128, 203, 196)">"scripts"</span><span class="token operator" style="color:rgb(127, 219, 202)">:</span><span class="token plain"> </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 property" style="color:rgb(128, 203, 196)">"build"</span><span class="token operator" style="color:rgb(127, 219, 202)">:</span><span class="token plain"> </span><span class="token string" style="color:rgb(173, 219, 103)">"vue-cli-service build --target lib --dest tools/widgets/HelloworldWidget --formats umd-min src/HelloworldWidget.vue --name HelloworldWidget && vue-cli-service build --target lib --dest tools/widgets/BigWidget --formats umd-min src/BigWidget.vue --name BigWidget"</span><span class="token plain"></span><br></span><span class=token-line style=color:#d6deeb><span class="token plain"> </span><span class="token punctuation" style="color:rgb(199, 146, 234)">}</span><span class="token punctuation" style="color:rgb(199, 146, 234)">,</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>
13
+ <p>This uses the <code>vue-cli-service</code> to build the code found at <code>src/HelloworldWidget.vue</code> and formats as <code>umd-min</code> and puts it in the <code>tools/widgets/HelloworldWidget</code> directory. So this is why the plugin looks for the plugin at <code>tools/widgets/HelloworldWidget/HelloworldWidget.umd.min.js</code>. Click <a href=https://cli.vuejs.org/guide/cli-service.html#vue-cli-service-build target=_blank rel="noopener noreferrer">here</a> for the <code>vue-cli-service build</code> documentation.</p>
14
+ <p>If you look at the Demo plugin's <a href=https://github.com/OpenC3/cosmos/blob/main/openc3-cosmos-init/plugins/packages/openc3-cosmos-demo/targets/INST/screens/simple.txt target=_blank rel="noopener noreferrer">simple.txt</a> screen you'll see we're using the widgets:</p>
15
+ <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)">SCREEN</span><span class="token plain"> </span><span class="token constant" style="color:rgb(130, 170, 255)">AUTO</span><span class="token plain"> </span><span class="token constant" style="color:rgb(130, 170, 255)">AUTO</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">0.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)">LABELVALUE</span><span class="token plain"> </span><span class="token operator" style="color:rgb(127, 219, 202)">&lt;</span><span class="token operator" style="color:rgb(127, 219, 202)">%=</span><span class="token plain"> target_name </span><span class="token string-literal string" style="color:rgb(173, 219, 103)">%> HEALTH_STATUS CCSDSSEQCNT</span><br></span><span class=token-line style=color:#d6deeb><span class="token string-literal string" style="color:rgb(173, 219, 103)">HELLOWORLD</span><br></span><span class=token-line style=color:#d6deeb><span class="token string-literal string" style="color:rgb(173, 219, 103)">BIG &lt;%= target_name %></span><span class="token plain"> </span><span class="token constant" style="color:rgb(130, 170, 255)">HEALTH_STATUS</span><span class="token plain"> </span><span class="token constant" style="color:rgb(130, 170, 255)">TEMP1</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>
26
16
  <p>Opening this screen in Telemetry Viewer results in the following:</p>
27
- <p><img decoding="async" loading="lazy" alt="Simple Screen" src="/tools/staticdocs/assets/images/simple_screen-e3de1ad836c0661d73a0ba970f991c64df8ecc7e23f9e944b6508a9a43fbc33c.png" width="681" height="210" class="img__Ss2"></p>
28
- <p>While this is a simple example the possibilities with custom widgets are limitless!</p></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/guides/custom-widgets.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"></path></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/guides/cfs"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">COSMOS and NASA cFS</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/tools/staticdocs/docs/guides/little-endian-bitfields"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Little Endian Bitfields</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="#custom-widgets" class="table-of-contents__link toc-highlight">Custom Widgets</a><ul><li><a href="#helloworld-widget" class="table-of-contents__link toc-highlight">Helloworld Widget</a></li></ul></li></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></li></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></li></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"></path></svg></a></li></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"></path></svg></a></li><li class="footer__item"><a class="footer__link-item" href="/tools/staticdocs/docs/privacy">Privacy</a></li></ul></div></div><div class="footer__bottom text--center"><div class="footer__copyright">Copyright © 2024 OpenC3, Inc.</div></div></div></footer></div>
29
- </body>
30
- </html>
17
+ <p><img decoding=async loading=lazy alt="Simple Screen" src=/tools/staticdocs/assets/images/simple_screen-e3de1ad836c0661d73a0ba970f991c64df8ecc7e23f9e944b6508a9a43fbc33c.png width=681 height=210 class=img__Ss2></p>
18
+ <p>While this is a simple example the possibilities with custom widgets are limitless!</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/guides/custom-widgets.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/guides/cfs><div class=pagination-nav__sublabel>Previous</div><div class=pagination-nav__label>COSMOS and NASA cFS</div></a><a class="pagination-nav__link pagination-nav__link--next" href=/tools/staticdocs/docs/guides/little-endian-bitfields><div class=pagination-nav__sublabel>Next</div><div class=pagination-nav__label>Little Endian Bitfields</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=#custom-widgets class="table-of-contents__link toc-highlight">Custom Widgets</a><ul><li><a href=#helloworld-widget class="table-of-contents__link toc-highlight">Helloworld Widget</a></ul></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 © 2024 OpenC3, Inc.</div></div></div></footer></div>
@@ -1,14 +1,4 @@
1
- <!doctype html>
2
- <html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-guides/little-endian-bitfields" data-has-hydrated="false">
3
- <head>
4
- <meta charset="UTF-8">
5
- <meta name="generator" content="Docusaurus v3.5.2">
6
- <title data-rh="true">Little Endian Bitfields | OpenC3 Docs</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><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/guides/little-endian-bitfields"><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="Little Endian Bitfields | OpenC3 Docs"><meta data-rh="true" name="description" content="Defining little endian bitfields is a little weird but is possible in COSMOS. However, note that APPEND does not work with little endian bitfields."><meta data-rh="true" property="og:description" content="Defining little endian bitfields is a little weird but is possible in COSMOS. However, note that APPEND does not work with little endian bitfields."><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/guides/little-endian-bitfields"><link data-rh="true" rel="alternate" href="https://docs.openc3.com/tools/staticdocs/docs/guides/little-endian-bitfields" hreflang="en"><link data-rh="true" rel="alternate" href="https://docs.openc3.com/tools/staticdocs/docs/guides/little-endian-bitfields" hreflang="x-default"><link rel="stylesheet" href="/tools/staticdocs/assets/css/styles.80ddca08.css">
7
- <script src="/tools/staticdocs/assets/js/runtime~main.cb8e940d.js" defer="defer"></script>
8
- <script src="/tools/staticdocs/assets/js/main.03e795fe.js" defer="defer"></script>
9
- </head>
10
- <body class="navigation-with-keyboard">
11
- <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var 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")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><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"></path></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><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 &#x27;Getting Started&#x27;" aria-expanded="false" type="button" class="clean-btn menu__caret"></button></div></li><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/configuration">Configuration</a><button aria-label="Expand sidebar category &#x27;Configuration&#x27;" aria-expanded="false" type="button" class="clean-btn menu__caret"></button></div></li><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 &#x27;Tools&#x27;" aria-expanded="false" type="button" class="clean-btn menu__caret"></button></div></li><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/guides">Guides</a><button aria-label="Collapse sidebar category &#x27;Guides&#x27;" 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/guides/bridges">Bridges</a></li><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/guides/cfs">COSMOS and NASA cFS</a></li><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/guides/custom-widgets">Custom Widgets</a></li><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/guides/little-endian-bitfields">Little Endian Bitfields</a></li><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/guides/local-mode">Local Mode</a></li><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/guides/logging">Logging</a></li><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/guides/monitoring">Monitoring</a></li><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/guides/performance">Performance</a></li><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/guides/raspberrypi">Raspberry Pi</a></li><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/guides/script-writing">Script Writing Guide</a></li><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/guides/scripting-api">Scripting API Guide</a></li></ul></li><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 &#x27;Development&#x27;" aria-expanded="false" type="button" class="clean-btn menu__caret"></button></div></li><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 &#x27;Meta&#x27;" aria-expanded="false" type="button" class="clean-btn menu__caret"></button></div></li><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></li></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"></path></svg></a></li><li itemscope="" itemprop="itemListElement" itemtype="https://schema.org/ListItem" class="breadcrumbs__item"><a class="breadcrumbs__link" itemprop="item" href="/tools/staticdocs/docs/guides"><span itemprop="name">Guides</span></a><meta itemprop="position" content="1"></li><li itemscope="" itemprop="itemListElement" itemtype="https://schema.org/ListItem" class="breadcrumbs__item breadcrumbs__item--active"><span class="breadcrumbs__link" itemprop="name">Little Endian Bitfields</span><meta itemprop="position" content="2"></li></ul></nav><div class="theme-doc-markdown markdown"><header><h1>Little Endian Bitfields</h1></header><p>Defining little endian bitfields is a little weird but is possible in COSMOS. However, note that APPEND does not work with little endian bitfields.</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-guides/little-endian-bitfields" data-has-hydrated=false><meta charset=UTF-8><meta name=generator content="Docusaurus v3.6.3"><title data-rh=true>Little Endian Bitfields | 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/guides/little-endian-bitfields><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="Little Endian Bitfields | OpenC3 Docs"><meta data-rh=true name=description content="Defining little endian bitfields"><meta data-rh=true property=og:description content="Defining little endian bitfields"><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/guides/little-endian-bitfields><link data-rh=true rel=alternate href=https://docs.openc3.com/tools/staticdocs/docs/guides/little-endian-bitfields hreflang=en><link data-rh=true rel=alternate href=https://docs.openc3.com/tools/staticdocs/docs/guides/little-endian-bitfields hreflang=x-default><link rel=stylesheet href=/tools/staticdocs/assets/css/styles.839a3ee9.css><script src=/tools/staticdocs/assets/js/runtime~main.cb6ff8de.js defer></script><script src=/tools/staticdocs/assets/js/main.c4acbd62.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><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 menu__list-item--collapsed"><div class=menu__list-item-collapsible><a class="menu__link menu__link--sublist" href=/tools/staticdocs/docs/configuration>Configuration</a><button aria-label="Expand sidebar category 'Configuration'" 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/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"><div class=menu__list-item-collapsible><a class="menu__link menu__link--sublist menu__link--active" href=/tools/staticdocs/docs/guides>Guides</a><button aria-label="Collapse sidebar category 'Guides'" 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/guides/bridges>Bridges</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/guides/cfs>COSMOS and NASA cFS</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/guides/custom-widgets>Custom Widgets</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/guides/little-endian-bitfields>Little Endian Bitfields</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/guides/local-mode>Local Mode</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/guides/logging>Logging</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/guides/monitoring>Monitoring</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/guides/performance>Performance</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/guides/raspberrypi>Raspberry Pi</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/guides/script-writing>Script Writing Guide</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/guides/scripting-api>Scripting API Guide</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/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/guides><span itemprop=name>Guides</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>Little Endian Bitfields</span><meta itemprop=position content=2></ul></nav><div class="theme-doc-markdown markdown"><header><h1>Little Endian Bitfields</h1></header><p>Defining little endian bitfields is a little weird but is possible in COSMOS. However, note that APPEND does not work with little endian bitfields.</p>
12
2
  <p>Here are the rules on how COSMOS handles LITTLE_ENDIAN data:</p>
13
3
  <ol>
14
4
  <li>
@@ -24,8 +14,6 @@
24
14
  <p>LITTLE_ENDIAN bit fields must define their bit_offset as the location of the most significant bit of the bitfield in BIG_ENDIAN space as described in rule 1 above. So for example. The following C struct at the beginning of a packet would be defined like so:</p>
25
15
  </li>
26
16
  </ol>
27
- <div class="language-c codeBlockContainer_ZGJx theme-code-block" style="--prism-color:#d6deeb;--prism-background-color:#011627"><div class="codeBlockContent_qZBB"><pre tabindex="0" class="prism-code language-c 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)">struct</span><span class="token plain"> </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 keyword" style="color:rgb(127, 219, 202)">unsigned</span><span class="token plain"> </span><span class="token keyword" style="color:rgb(127, 219, 202)">short</span><span class="token plain"> a</span><span class="token operator" style="color:rgb(127, 219, 202)">:</span><span class="token number" style="color:rgb(247, 140, 108)">4</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 keyword" style="color:rgb(127, 219, 202)">unsigned</span><span class="token plain"> </span><span class="token keyword" style="color:rgb(127, 219, 202)">short</span><span class="token plain"> b</span><span class="token operator" style="color:rgb(127, 219, 202)">:</span><span class="token number" style="color:rgb(247, 140, 108)">8</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 keyword" style="color:rgb(127, 219, 202)">unsigned</span><span class="token plain"> </span><span class="token keyword" style="color:rgb(127, 219, 202)">short</span><span class="token plain"> c</span><span class="token operator" style="color:rgb(127, 219, 202)">:</span><span class="token number" style="color:rgb(247, 140, 108)">4</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 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" style="display:inline-block"></span><br></span><span class="token-line" style="color:#d6deeb"><span class="token plain">ITEM A </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)">4</span><span class="token plain"> UINT </span><span class="token string" style="color:rgb(173, 219, 103)">&quot;struct item a&quot;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#d6deeb"><span class="token plain">ITEM B </span><span class="token number" style="color:rgb(247, 140, 108)">12</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">8</span><span class="token plain"> UINT </span><span class="token string" style="color:rgb(173, 219, 103)">&quot;struct item b&quot;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#d6deeb"><span class="token plain">ITEM C </span><span class="token number" style="color:rgb(247, 140, 108)">8</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">4</span><span class="token plain"> UINT </span><span class="token string" style="color:rgb(173, 219, 103)">&quot;struct item c&quot;</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"></path></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"></path></svg></span></button></div></div></div>
17
+ <div class="language-c codeBlockContainer_ZGJx theme-code-block" style=--prism-color:#d6deeb;--prism-background-color:#011627><div class=codeBlockContent_qZBB><pre tabindex=0 class="prism-code language-c 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)">struct</span><span class="token plain"> </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 keyword" style="color:rgb(127, 219, 202)">unsigned</span><span class="token plain"> </span><span class="token keyword" style="color:rgb(127, 219, 202)">short</span><span class="token plain"> a</span><span class="token operator" style="color:rgb(127, 219, 202)">:</span><span class="token number" style="color:rgb(247, 140, 108)">4</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 keyword" style="color:rgb(127, 219, 202)">unsigned</span><span class="token plain"> </span><span class="token keyword" style="color:rgb(127, 219, 202)">short</span><span class="token plain"> b</span><span class="token operator" style="color:rgb(127, 219, 202)">:</span><span class="token number" style="color:rgb(247, 140, 108)">8</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 keyword" style="color:rgb(127, 219, 202)">unsigned</span><span class="token plain"> </span><span class="token keyword" style="color:rgb(127, 219, 202)">short</span><span class="token plain"> c</span><span class="token operator" style="color:rgb(127, 219, 202)">:</span><span class="token number" style="color:rgb(247, 140, 108)">4</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 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" style=display:inline-block></span><br></span><span class=token-line style=color:#d6deeb><span class="token plain">ITEM A </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)">4</span><span class="token plain"> UINT </span><span class="token string" style="color:rgb(173, 219, 103)">"struct item a"</span><span class="token plain"></span><br></span><span class=token-line style=color:#d6deeb><span class="token plain">ITEM B </span><span class="token number" style="color:rgb(247, 140, 108)">12</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">8</span><span class="token plain"> UINT </span><span class="token string" style="color:rgb(173, 219, 103)">"struct item b"</span><span class="token plain"></span><br></span><span class=token-line style=color:#d6deeb><span class="token plain">ITEM C </span><span class="token number" style="color:rgb(247, 140, 108)">8</span><span class="token plain"> </span><span class="token number" style="color:rgb(247, 140, 108)">4</span><span class="token plain"> UINT </span><span class="token string" style="color:rgb(173, 219, 103)">"struct item c"</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>
28
18
  <p>This is hard to visualize, but the structure above gets spread out in a byte array like the following after byte swapping: least significant 4 bits of b, 4-bits a, 4-bits c, most significant 4 bits of b.</p>
29
- <p>The best advice is to experiment and use the View Raw feature in the Command and Telemetry Service to inspect the bytes of the packet and adjust as necessary.</p></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/guides/little-endian-bitfields.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"></path></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/guides/custom-widgets"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Custom Widgets</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/tools/staticdocs/docs/guides/local-mode"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Local Mode</div></a></nav></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></li></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></li></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"></path></svg></a></li></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"></path></svg></a></li><li class="footer__item"><a class="footer__link-item" href="/tools/staticdocs/docs/privacy">Privacy</a></li></ul></div></div><div class="footer__bottom text--center"><div class="footer__copyright">Copyright © 2024 OpenC3, Inc.</div></div></div></footer></div>
30
- </body>
31
- </html>
19
+ <p>The best advice is to experiment and use the View Raw feature in the Command and Telemetry Service to inspect the bytes of the packet and adjust as necessary.</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/guides/little-endian-bitfields.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/guides/custom-widgets><div class=pagination-nav__sublabel>Previous</div><div class=pagination-nav__label>Custom Widgets</div></a><a class="pagination-nav__link pagination-nav__link--next" href=/tools/staticdocs/docs/guides/local-mode><div class=pagination-nav__sublabel>Next</div><div class=pagination-nav__label>Local Mode</div></a></nav></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 © 2024 OpenC3, Inc.</div></div></div></footer></div>
@@ -1,34 +1,22 @@
1
- <!doctype html>
2
- <html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-guides/local-mode" data-has-hydrated="false">
3
- <head>
4
- <meta charset="UTF-8">
5
- <meta name="generator" content="Docusaurus v3.5.2">
6
- <title data-rh="true">Local Mode | OpenC3 Docs</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><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/guides/local-mode"><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="Local Mode | OpenC3 Docs"><meta data-rh="true" name="description" content="Local Mode is a new feature in the 5.0.9 COSMOS release. It is intended to capture the configuration of an edited plugin so it can be configuration managed. It allows you to edit portions of a plugin (scripts and screens) locally in the editor of your choice and instantly have those changes appear in the COSMOS plugin. This avoids the plugin build / install cycle which is required when editing command and telemetry or interface definitions."><meta data-rh="true" property="og:description" content="Local Mode is a new feature in the 5.0.9 COSMOS release. It is intended to capture the configuration of an edited plugin so it can be configuration managed. It allows you to edit portions of a plugin (scripts and screens) locally in the editor of your choice and instantly have those changes appear in the COSMOS plugin. This avoids the plugin build / install cycle which is required when editing command and telemetry or interface definitions."><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/guides/local-mode"><link data-rh="true" rel="alternate" href="https://docs.openc3.com/tools/staticdocs/docs/guides/local-mode" hreflang="en"><link data-rh="true" rel="alternate" href="https://docs.openc3.com/tools/staticdocs/docs/guides/local-mode" hreflang="x-default"><link rel="stylesheet" href="/tools/staticdocs/assets/css/styles.80ddca08.css">
7
- <script src="/tools/staticdocs/assets/js/runtime~main.cb8e940d.js" defer="defer"></script>
8
- <script src="/tools/staticdocs/assets/js/main.03e795fe.js" defer="defer"></script>
9
- </head>
10
- <body class="navigation-with-keyboard">
11
- <script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var 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")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><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"></path></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><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 &#x27;Getting Started&#x27;" aria-expanded="false" type="button" class="clean-btn menu__caret"></button></div></li><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/configuration">Configuration</a><button aria-label="Expand sidebar category &#x27;Configuration&#x27;" aria-expanded="false" type="button" class="clean-btn menu__caret"></button></div></li><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 &#x27;Tools&#x27;" aria-expanded="false" type="button" class="clean-btn menu__caret"></button></div></li><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/guides">Guides</a><button aria-label="Collapse sidebar category &#x27;Guides&#x27;" 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/guides/bridges">Bridges</a></li><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/guides/cfs">COSMOS and NASA cFS</a></li><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/guides/custom-widgets">Custom Widgets</a></li><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/guides/little-endian-bitfields">Little Endian Bitfields</a></li><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/guides/local-mode">Local Mode</a></li><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/guides/logging">Logging</a></li><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/guides/monitoring">Monitoring</a></li><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/guides/performance">Performance</a></li><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/guides/raspberrypi">Raspberry Pi</a></li><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/guides/script-writing">Script Writing Guide</a></li><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/guides/scripting-api">Scripting API Guide</a></li></ul></li><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 &#x27;Development&#x27;" aria-expanded="false" type="button" class="clean-btn menu__caret"></button></div></li><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 &#x27;Meta&#x27;" aria-expanded="false" type="button" class="clean-btn menu__caret"></button></div></li><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></li></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"></path></svg></a></li><li itemscope="" itemprop="itemListElement" itemtype="https://schema.org/ListItem" class="breadcrumbs__item"><a class="breadcrumbs__link" itemprop="item" href="/tools/staticdocs/docs/guides"><span itemprop="name">Guides</span></a><meta itemprop="position" content="1"></li><li itemscope="" itemprop="itemListElement" itemtype="https://schema.org/ListItem" class="breadcrumbs__item breadcrumbs__item--active"><span class="breadcrumbs__link" itemprop="name">Local Mode</span><meta itemprop="position" content="2"></li></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>Local Mode</h1></header><p>Local Mode is a new feature in the 5.0.9 COSMOS release. It is intended to capture the configuration of an edited plugin so it can be configuration managed. It allows you to edit portions of a plugin (scripts and screens) locally in the editor of your choice and instantly have those changes appear in the COSMOS plugin. This avoids the plugin build / install cycle which is required when editing command and telemetry or interface definitions.</p>
12
- <h2 class="anchor anchorWithStickyNavbar_fF9Z" id="using-local-mode">Using Local Mode<a href="#using-local-mode" class="hash-link" aria-label="Direct link to Using Local Mode" title="Direct link to Using Local Mode">​</a></h2>
13
- <p>In this tutorial we will use the COSMOS Demo as configured by the <a href="/tools/staticdocs/docs/getting-started/installation">Installation Guide</a>. You should have cloned a <a href="https://github.com/OpenC3/cosmos-project" target="_blank" rel="noopener noreferrer">cosmos-project</a> and started it using <code>openc3.sh run</code>.</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-guides/local-mode" data-has-hydrated=false><meta charset=UTF-8><meta name=generator content="Docusaurus v3.6.3"><title data-rh=true>Local Mode | 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/guides/local-mode><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="Local Mode | OpenC3 Docs"><meta data-rh=true name=description content="Edit scripts and screens directly on the host file system"><meta data-rh=true property=og:description content="Edit scripts and screens directly on the host file system"><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/guides/local-mode><link data-rh=true rel=alternate href=https://docs.openc3.com/tools/staticdocs/docs/guides/local-mode hreflang=en><link data-rh=true rel=alternate href=https://docs.openc3.com/tools/staticdocs/docs/guides/local-mode hreflang=x-default><link rel=stylesheet href=/tools/staticdocs/assets/css/styles.839a3ee9.css><script src=/tools/staticdocs/assets/js/runtime~main.cb6ff8de.js defer></script><script src=/tools/staticdocs/assets/js/main.c4acbd62.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><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 menu__list-item--collapsed"><div class=menu__list-item-collapsible><a class="menu__link menu__link--sublist" href=/tools/staticdocs/docs/configuration>Configuration</a><button aria-label="Expand sidebar category 'Configuration'" 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/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"><div class=menu__list-item-collapsible><a class="menu__link menu__link--sublist menu__link--active" href=/tools/staticdocs/docs/guides>Guides</a><button aria-label="Collapse sidebar category 'Guides'" 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/guides/bridges>Bridges</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/guides/cfs>COSMOS and NASA cFS</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/guides/custom-widgets>Custom Widgets</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/guides/little-endian-bitfields>Little Endian Bitfields</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/guides/local-mode>Local Mode</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/guides/logging>Logging</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/guides/monitoring>Monitoring</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/guides/performance>Performance</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/guides/raspberrypi>Raspberry Pi</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/guides/script-writing>Script Writing Guide</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/guides/scripting-api>Scripting API Guide</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/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/guides><span itemprop=name>Guides</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>Local Mode</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>Local Mode</h1></header><p>Local Mode is a new feature in the 5.0.9 COSMOS release. It is intended to capture the configuration of an edited plugin so it can be configuration managed. It allows you to edit portions of a plugin (scripts and screens) locally in the editor of your choice and instantly have those changes appear in the COSMOS plugin. This avoids the plugin build / install cycle which is required when editing command and telemetry or interface definitions.</p>
2
+ <h2 class="anchor anchorWithStickyNavbar_fF9Z" id=using-local-mode>Using Local Mode<a href=#using-local-mode class=hash-link aria-label="Direct link to Using Local Mode" title="Direct link to Using Local Mode">​</a></h2>
3
+ <p>In this tutorial we will use the COSMOS Demo as configured by the <a href=/tools/staticdocs/docs/getting-started/installation>Installation Guide</a>. You should have cloned a <a href=https://github.com/OpenC3/cosmos-project target=_blank rel="noopener noreferrer">cosmos-project</a> and started it using <code>openc3.sh run</code>.</p>
14
4
  <p>If you check the project directory you should see a <code>plugins/DEFAULT/openc3-cosmos-demo</code> directory. This will contain both the gem that was installed and a <code>plugin_instance.json</code> file. The <code>plugin_instance.json</code> file captures the plugin.txt values when the plugin was installed. Note, all files in the plugins directory are meant to be configuration managed with the project. This ensures if you make local edits and check them in, another user can clone the project and get the exact same configuration. We will demonstrate this later.</p>
15
- <h3 class="anchor anchorWithStickyNavbar_fF9Z" id="editing-scripts">Editing scripts<a href="#editing-scripts" class="hash-link" aria-label="Direct link to Editing scripts" title="Direct link to Editing scripts">​</a></h3>
16
- <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"></path></svg></span>Visual Studio Code</div><div class="admonitionContent_bl22"><p>This tutorial will use <a href="https://code.visualstudio.com" target="_blank" rel="noopener noreferrer">VS Code</a> which is the editor used by the COSMOS developers.</p></div></div>
17
- <p>The most common use case for Local Mode is script development. Launch Script Runner and open the <code>INST/procedures/checks.rb</code> file. If you run this script you&#x27;ll notice that it has a few errors (by design) which prevent it from running to completion. Let&#x27;s fix it! Comment out lines 7 &amp; 9 and save the script. You should now notice that Local Mode has saved a copy of the script to <code>plugins/targets_modified/INST/procedures/checks.rb</code>.</p>
18
- <p><img decoding="async" loading="lazy" alt="Project Layout" src="/tools/staticdocs/assets/images/project-c521374330008c1292b4da1b9a1c8af6647ab59f1617b470f26e76a521fe8059.png" width="991" height="547" class="img__Ss2"></p>
19
- <p>At this point Local Mode keeps these scripts in sync so we can edit in either place. Let&#x27;s edit the local script by adding a simple comment at the top: <code># This is a script</code>. Now if we go back to Script Runner the changes have not <em>automatically</em> appeared. However, there is a Reload button next to the filename that will refresh the file from the backend.</p>
20
- <p><img decoding="async" loading="lazy" alt="Project Layout" src="/tools/staticdocs/assets/images/reload_file-056b240b1d48539a9fecfe2ad1bac0c27d83f5dddcd29af6cf719986869406ee.png" width="839" height="532" class="img__Ss2"></p>
5
+ <h3 class="anchor anchorWithStickyNavbar_fF9Z" id=editing-scripts>Editing scripts<a href=#editing-scripts class=hash-link aria-label="Direct link to Editing scripts" title="Direct link to Editing scripts">​</a></h3>
6
+ <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>Visual Studio Code</div><div class=admonitionContent_bl22><p>This tutorial will use <a href=https://code.visualstudio.com target=_blank rel="noopener noreferrer">VS Code</a> which is the editor used by the COSMOS developers.</div></div>
7
+ <p>The most common use case for Local Mode is script development. Launch Script Runner and open the <code>INST/procedures/checks.rb</code> file. If you run this script you'll notice that it has a few errors (by design) which prevent it from running to completion. Let's fix it! Comment out lines 7 & 9 and save the script. You should now notice that Local Mode has saved a copy of the script to <code>plugins/targets_modified/INST/procedures/checks.rb</code>.</p>
8
+ <p><img decoding=async loading=lazy alt="Project Layout" src=/tools/staticdocs/assets/images/project-c521374330008c1292b4da1b9a1c8af6647ab59f1617b470f26e76a521fe8059.png width=991 height=547 class=img__Ss2></p>
9
+ <p>At this point Local Mode keeps these scripts in sync so we can edit in either place. Let's edit the local script by adding a simple comment at the top: <code># This is a script</code>. Now if we go back to Script Runner the changes have not <em>automatically</em> appeared. However, there is a Reload button next to the filename that will refresh the file from the backend.</p>
10
+ <p><img decoding=async loading=lazy alt="Project Layout" src=/tools/staticdocs/assets/images/reload_file-056b240b1d48539a9fecfe2ad1bac0c27d83f5dddcd29af6cf719986869406ee.png width=839 height=532 class=img__Ss2></p>
21
11
  <p>Clicking this reloads the file which has been synced into COSMOS and now we see our comment.</p>
22
- <p><img decoding="async" loading="lazy" alt="Project Layout" src="/tools/staticdocs/assets/images/reloaded-516bc4c257f9b7f6ce3714f5a06eeef8ad47a8461e21613ba26989d5e56260ec.png" width="839" height="232" class="img__Ss2"></p>
23
- <h3 class="anchor anchorWithStickyNavbar_fF9Z" id="disabling-local-mode">Disabling Local Mode<a href="#disabling-local-mode" class="hash-link" aria-label="Direct link to Disabling Local Mode" title="Direct link to Disabling Local Mode">​</a></h3>
12
+ <p><img decoding=async loading=lazy alt="Project Layout" src=/tools/staticdocs/assets/images/reloaded-516bc4c257f9b7f6ce3714f5a06eeef8ad47a8461e21613ba26989d5e56260ec.png width=839 height=232 class=img__Ss2></p>
13
+ <h3 class="anchor anchorWithStickyNavbar_fF9Z" id=disabling-local-mode>Disabling Local Mode<a href=#disabling-local-mode class=hash-link aria-label="Direct link to Disabling Local Mode" title="Direct link to Disabling Local Mode">​</a></h3>
24
14
  <p>If you want to disable Local Mode you can edit the .env file and delete the setting <code>OPENC3_LOCAL_MODE=1</code>.</p>
25
- <h2 class="anchor anchorWithStickyNavbar_fF9Z" id="configuration-management">Configuration Management<a href="#configuration-management" class="hash-link" aria-label="Direct link to Configuration Management" title="Direct link to Configuration Management">​</a></h2>
15
+ <h2 class="anchor anchorWithStickyNavbar_fF9Z" id=configuration-management>Configuration Management<a href=#configuration-management class=hash-link aria-label="Direct link to Configuration Management" title="Direct link to Configuration Management">​</a></h2>
26
16
  <p>It is recommended to configuration manage the entire project including the plugins directory. This will allow any user who starts COSMOS to launch an identical configuration. Plugins are created and updated with any modifications found in the targets_modified directory.</p>
27
17
  <p>At some point you will probably want to release your local changes back to the plugin they originated from. Simply copy the entire targets_modified/TARGET directory back to the original plugin. At that point you can rebuild the plugin using the CLI.</p>
28
- <div class="codeBlockContainer_ZGJx theme-code-block" style="--prism-color:#d6deeb;--prism-background-color:#011627"><div class="codeBlockContent_qZBB"><pre tabindex="0" class="prism-code language-text 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">openc3-cosmos-demo % ./openc3.sh cli rake build VERSION=1.0.1</span><br></span><span class="token-line" style="color:#d6deeb"><span class="token plain"> Successfully built RubyGem</span><br></span><span class="token-line" style="color:#d6deeb"><span class="token plain"> Name: openc3-cosmos-demo</span><br></span><span class="token-line" style="color:#d6deeb"><span class="token plain"> Version: 1.0.1</span><br></span><span class="token-line" style="color:#d6deeb"><span class="token plain"> File: openc3-cosmos-demo-1.0.1.gem</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"></path></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"></path></svg></span></button></div></div></div>
18
+ <div class="codeBlockContainer_ZGJx theme-code-block" style=--prism-color:#d6deeb;--prism-background-color:#011627><div class=codeBlockContent_qZBB><pre tabindex=0 class="prism-code language-text 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">openc3-cosmos-demo % ./openc3.sh cli rake build VERSION=1.0.1</span><br></span><span class=token-line style=color:#d6deeb><span class="token plain"> Successfully built RubyGem</span><br></span><span class=token-line style=color:#d6deeb><span class="token plain"> Name: openc3-cosmos-demo</span><br></span><span class=token-line style=color:#d6deeb><span class="token plain"> Version: 1.0.1</span><br></span><span class=token-line style=color:#d6deeb><span class="token plain"> File: openc3-cosmos-demo-1.0.1.gem</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>
29
19
  <p>Upgrade the plugin using the Admin Plugins tab and the Upgrade link. When you select your newly built plugin, COSMOS detects the existing changes and asks if you want to delete them. There is a stern warning attached because this will permanently remove these changes! Since we just moved over the changes and rebuilt the plugin we will check the box and INSTALL.</p>
30
- <p><img decoding="async" loading="lazy" alt="Project Layout" src="/tools/staticdocs/assets/images/delete_modified-ecf9beabf5e6cc6b8cc9d249ba9e313bd18d51c671ebc36029b4cebd729fa2d0.png" width="1272" height="619" class="img__Ss2"></p>
31
- <p>When the new plugin is installed, the project&#x27;s <code>plugins</code> directory gets updated with the new plugin and everything under the targets_modified directory is removed because there are no modifications on a new install.</p>
32
- <p>Local Mode is a powerful way to develop scripts and screens on the local file system and automatically have them sync to COSMOS.</p></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/guides/local-mode.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"></path></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/guides/little-endian-bitfields"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Little Endian Bitfields</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/tools/staticdocs/docs/guides/logging"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Logging</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="#using-local-mode" class="table-of-contents__link toc-highlight">Using Local Mode</a><ul><li><a href="#editing-scripts" class="table-of-contents__link toc-highlight">Editing scripts</a></li><li><a href="#disabling-local-mode" class="table-of-contents__link toc-highlight">Disabling Local Mode</a></li></ul></li><li><a href="#configuration-management" class="table-of-contents__link toc-highlight">Configuration Management</a></li></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></li></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></li></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"></path></svg></a></li></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"></path></svg></a></li><li class="footer__item"><a class="footer__link-item" href="/tools/staticdocs/docs/privacy">Privacy</a></li></ul></div></div><div class="footer__bottom text--center"><div class="footer__copyright">Copyright © 2024 OpenC3, Inc.</div></div></div></footer></div>
33
- </body>
34
- </html>
20
+ <p><img decoding=async loading=lazy alt="Project Layout" src=/tools/staticdocs/assets/images/delete_modified-ecf9beabf5e6cc6b8cc9d249ba9e313bd18d51c671ebc36029b4cebd729fa2d0.png width=1272 height=619 class=img__Ss2></p>
21
+ <p>When the new plugin is installed, the project's <code>plugins</code> directory gets updated with the new plugin and everything under the targets_modified directory is removed because there are no modifications on a new install.</p>
22
+ <p>Local Mode is a powerful way to develop scripts and screens on the local file system and automatically have them sync to COSMOS.</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/guides/local-mode.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/guides/little-endian-bitfields><div class=pagination-nav__sublabel>Previous</div><div class=pagination-nav__label>Little Endian Bitfields</div></a><a class="pagination-nav__link pagination-nav__link--next" href=/tools/staticdocs/docs/guides/logging><div class=pagination-nav__sublabel>Next</div><div class=pagination-nav__label>Logging</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=#using-local-mode class="table-of-contents__link toc-highlight">Using Local Mode</a><ul><li><a href=#editing-scripts class="table-of-contents__link toc-highlight">Editing scripts</a><li><a href=#disabling-local-mode class="table-of-contents__link toc-highlight">Disabling Local Mode</a></ul><li><a href=#configuration-management class="table-of-contents__link toc-highlight">Configuration Management</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 © 2024 OpenC3, Inc.</div></div></div></footer></div>