openc3 6.10.4 → 7.0.0.pre.rc1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (350) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +2 -1
  3. data/Guardfile +4 -9
  4. data/LICENSE.md +85 -0
  5. data/README.md +8 -8
  6. data/Rakefile +3 -9
  7. data/bin/cstol_converter +3 -8
  8. data/bin/openc3cli +64 -35
  9. data/data/config/command_modifiers.yaml +9 -1
  10. data/data/config/interface_modifiers.yaml +0 -2
  11. data/data/config/plugins.yaml +14 -18
  12. data/data/config/screen.yaml +1 -1
  13. data/data/config/target.yaml +26 -79
  14. data/data/config/telemetry_modifiers.yaml +6 -0
  15. data/data/config/widgets.yaml +32 -32
  16. data/ext/openc3/ext/array/array.c +4 -9
  17. data/ext/openc3/ext/buffered_file/buffered_file.c +4 -9
  18. data/ext/openc3/ext/burst_protocol/burst_protocol.c +3 -8
  19. data/ext/openc3/ext/config_parser/config_parser.c +2 -7
  20. data/ext/openc3/ext/crc/crc.c +3 -8
  21. data/ext/openc3/ext/openc3_io/openc3_io.c +4 -9
  22. data/ext/openc3/ext/packet/packet.c +7 -9
  23. data/ext/openc3/ext/platform/platform.c +3 -8
  24. data/ext/openc3/ext/polynomial_conversion/polynomial_conversion.c +16 -12
  25. data/ext/openc3/ext/string/string.c +4 -9
  26. data/ext/openc3/ext/structure/structure.c +5 -9
  27. data/ext/openc3/ext/tabbed_plots_config/tabbed_plots_config.c +4 -9
  28. data/ext/openc3/ext/telemetry/telemetry.c +8 -12
  29. data/lib/cosmos.rb +4 -9
  30. data/lib/cosmosc2.rb +4 -9
  31. data/lib/openc3/accessors/accessor.rb +3 -8
  32. data/lib/openc3/accessors/binary_accessor.rb +9 -10
  33. data/lib/openc3/accessors/cbor_accessor.rb +3 -8
  34. data/lib/openc3/accessors/form_accessor.rb +4 -9
  35. data/lib/openc3/accessors/html_accessor.rb +3 -8
  36. data/lib/openc3/accessors/http_accessor.rb +4 -9
  37. data/lib/openc3/accessors/json_accessor.rb +4 -9
  38. data/lib/openc3/accessors/template_accessor.rb +4 -9
  39. data/lib/openc3/accessors/xml_accessor.rb +4 -9
  40. data/lib/openc3/accessors.rb +3 -8
  41. data/lib/openc3/api/README.md +1 -1
  42. data/lib/openc3/api/api.rb +3 -8
  43. data/lib/openc3/api/authorized_api.rb +4 -9
  44. data/lib/openc3/api/cmd_api.rb +3 -8
  45. data/lib/openc3/api/config_api.rb +3 -8
  46. data/lib/openc3/api/interface_api.rb +4 -9
  47. data/lib/openc3/api/limits_api.rb +3 -8
  48. data/lib/openc3/api/metrics_api.rb +2 -19
  49. data/lib/openc3/api/offline_access_api.rb +2 -7
  50. data/lib/openc3/api/router_api.rb +5 -10
  51. data/lib/openc3/api/settings_api.rb +3 -8
  52. data/lib/openc3/api/stash_api.rb +2 -7
  53. data/lib/openc3/api/target_api.rb +3 -8
  54. data/lib/openc3/api/tlm_api.rb +15 -38
  55. data/lib/openc3/bridge/bridge.rb +3 -8
  56. data/lib/openc3/bridge/bridge_config.rb +5 -10
  57. data/lib/openc3/bridge/bridge_interface_thread.rb +4 -9
  58. data/lib/openc3/bridge/bridge_router_thread.rb +4 -9
  59. data/lib/openc3/ccsds/ccsds_packet.rb +4 -9
  60. data/lib/openc3/ccsds/ccsds_parser.rb +3 -8
  61. data/lib/openc3/config/config_parser.rb +3 -8
  62. data/lib/openc3/config/meta_config_parser.rb +3 -8
  63. data/lib/openc3/conversions/bit_reverse_conversion.rb +3 -8
  64. data/lib/openc3/conversions/conversion.rb +3 -8
  65. data/lib/openc3/conversions/generic_conversion.rb +3 -8
  66. data/lib/openc3/conversions/ip_read_conversion.rb +3 -8
  67. data/lib/openc3/conversions/ip_write_conversion.rb +3 -8
  68. data/lib/openc3/conversions/object_read_conversion.rb +3 -8
  69. data/lib/openc3/conversions/object_write_conversion.rb +3 -8
  70. data/lib/openc3/conversions/packet_time_formatted_conversion.rb +4 -9
  71. data/lib/openc3/conversions/packet_time_seconds_conversion.rb +4 -9
  72. data/lib/openc3/conversions/polynomial_conversion.rb +6 -8
  73. data/lib/openc3/conversions/processor_conversion.rb +3 -8
  74. data/lib/openc3/conversions/received_count_conversion.rb +4 -9
  75. data/lib/openc3/conversions/received_time_formatted_conversion.rb +4 -9
  76. data/lib/openc3/conversions/received_time_seconds_conversion.rb +4 -9
  77. data/lib/openc3/conversions/segmented_polynomial_conversion.rb +6 -8
  78. data/lib/openc3/conversions/unix_time_conversion.rb +3 -8
  79. data/lib/openc3/conversions/unix_time_formatted_conversion.rb +3 -8
  80. data/lib/openc3/conversions/unix_time_seconds_conversion.rb +3 -8
  81. data/lib/openc3/conversions.rb +3 -8
  82. data/lib/openc3/core_ext/array.rb +3 -8
  83. data/lib/openc3/core_ext/binding.rb +4 -9
  84. data/lib/openc3/core_ext/class.rb +4 -9
  85. data/lib/openc3/core_ext/exception.rb +3 -8
  86. data/lib/openc3/core_ext/file.rb +4 -9
  87. data/lib/openc3/core_ext/io.rb +4 -9
  88. data/lib/openc3/core_ext/kernel.rb +3 -8
  89. data/lib/openc3/core_ext/math.rb +4 -9
  90. data/lib/openc3/core_ext/matrix.rb +4 -9
  91. data/lib/openc3/core_ext/objectspace.rb +4 -9
  92. data/lib/openc3/core_ext/openc3_io.rb +4 -9
  93. data/lib/openc3/core_ext/range.rb +4 -9
  94. data/lib/openc3/core_ext/socket.rb +4 -9
  95. data/lib/openc3/core_ext/string.rb +3 -8
  96. data/lib/openc3/core_ext/stringio.rb +4 -9
  97. data/lib/openc3/core_ext/tempfile.rb +4 -9
  98. data/lib/openc3/core_ext/time.rb +3 -8
  99. data/lib/openc3/core_ext.rb +3 -8
  100. data/lib/openc3/interfaces/file_interface.rb +3 -8
  101. data/lib/openc3/interfaces/http_client_interface.rb +3 -8
  102. data/lib/openc3/interfaces/http_server_interface.rb +3 -8
  103. data/lib/openc3/interfaces/interface.rb +3 -8
  104. data/lib/openc3/interfaces/mqtt_interface.rb +3 -8
  105. data/lib/openc3/interfaces/mqtt_stream_interface.rb +3 -8
  106. data/lib/openc3/interfaces/protocols/burst_protocol.rb +3 -8
  107. data/lib/openc3/interfaces/protocols/cmd_response_protocol.rb +3 -8
  108. data/lib/openc3/interfaces/protocols/cobs_protocol.rb +3 -8
  109. data/lib/openc3/interfaces/protocols/crc_protocol.rb +3 -8
  110. data/lib/openc3/interfaces/protocols/fixed_protocol.rb +3 -8
  111. data/lib/openc3/interfaces/protocols/ignore_packet_protocol.rb +3 -8
  112. data/lib/openc3/interfaces/protocols/length_protocol.rb +3 -8
  113. data/lib/openc3/interfaces/protocols/preidentified_protocol.rb +3 -8
  114. data/lib/openc3/interfaces/protocols/protocol.rb +3 -8
  115. data/lib/openc3/interfaces/protocols/slip_protocol.rb +3 -8
  116. data/lib/openc3/interfaces/protocols/template_protocol.rb +3 -8
  117. data/lib/openc3/interfaces/protocols/terminated_protocol.rb +3 -8
  118. data/lib/openc3/interfaces/serial_interface.rb +3 -8
  119. data/lib/openc3/interfaces/simulated_target_interface.rb +3 -8
  120. data/lib/openc3/interfaces/stream_interface.rb +3 -8
  121. data/lib/openc3/interfaces/tcpip_client_interface.rb +3 -8
  122. data/lib/openc3/interfaces/tcpip_server_interface.rb +3 -8
  123. data/lib/openc3/interfaces/udp_interface.rb +3 -8
  124. data/lib/openc3/interfaces.rb +3 -8
  125. data/lib/openc3/io/buffered_file.rb +4 -9
  126. data/lib/openc3/io/io_multiplexer.rb +4 -9
  127. data/lib/openc3/io/json_api.rb +3 -8
  128. data/lib/openc3/io/json_api_object.rb +4 -9
  129. data/lib/openc3/io/json_drb.rb +3 -8
  130. data/lib/openc3/io/json_drb_object.rb +4 -9
  131. data/lib/openc3/io/json_drb_rack.rb +4 -9
  132. data/lib/openc3/io/json_rpc.rb +3 -8
  133. data/lib/openc3/io/posix_serial_driver.rb +3 -8
  134. data/lib/openc3/io/serial_driver.rb +3 -8
  135. data/lib/openc3/io/stderr.rb +4 -9
  136. data/lib/openc3/io/stdout.rb +4 -9
  137. data/lib/openc3/io/udp_sockets.rb +3 -8
  138. data/lib/openc3/io/win32_serial_driver.rb +4 -9
  139. data/lib/openc3/logs/buffered_packet_log_reader.rb +3 -8
  140. data/lib/openc3/logs/buffered_packet_log_writer.rb +3 -8
  141. data/lib/openc3/logs/log_writer.rb +3 -8
  142. data/lib/openc3/logs/packet_log_constants.rb +3 -8
  143. data/lib/openc3/logs/packet_log_reader.rb +3 -8
  144. data/lib/openc3/logs/packet_log_writer.rb +3 -8
  145. data/lib/openc3/logs/stream_log.rb +3 -8
  146. data/lib/openc3/logs/stream_log_pair.rb +3 -8
  147. data/lib/openc3/logs/text_log_writer.rb +3 -8
  148. data/lib/openc3/logs.rb +3 -8
  149. data/lib/openc3/microservices/cleanup_microservice.rb +4 -14
  150. data/lib/openc3/microservices/decom_microservice.rb +3 -8
  151. data/lib/openc3/microservices/interface_decom_common.rb +3 -8
  152. data/lib/openc3/microservices/interface_microservice.rb +5 -9
  153. data/lib/openc3/microservices/log_microservice.rb +3 -8
  154. data/lib/openc3/microservices/microservice.rb +24 -12
  155. data/lib/openc3/microservices/multi_microservice.rb +2 -7
  156. data/lib/openc3/microservices/periodic_microservice.rb +3 -8
  157. data/lib/openc3/microservices/plugin_microservice.rb +3 -8
  158. data/lib/openc3/microservices/queue_microservice.rb +3 -8
  159. data/lib/openc3/microservices/router_microservice.rb +3 -8
  160. data/lib/openc3/microservices/scope_cleanup_microservice.rb +3 -8
  161. data/lib/openc3/microservices/text_log_microservice.rb +3 -8
  162. data/lib/openc3/migrations/20251213120000_reinstall_plugins.rb +45 -0
  163. data/lib/openc3/migrations/20260204000000_remove_decom_reducer.rb +60 -0
  164. data/lib/openc3/models/activity_model.rb +4 -8
  165. data/lib/openc3/models/auth_model.rb +57 -38
  166. data/lib/openc3/models/cvt_model.rb +202 -61
  167. data/lib/openc3/models/environment_model.rb +4 -9
  168. data/lib/openc3/models/gem_model.rb +3 -8
  169. data/lib/openc3/models/info_model.rb +4 -9
  170. data/lib/openc3/models/interface_model.rb +6 -10
  171. data/lib/openc3/models/interface_status_model.rb +4 -9
  172. data/lib/openc3/models/metadata_model.rb +3 -8
  173. data/lib/openc3/models/metric_model.rb +3 -8
  174. data/lib/openc3/models/microservice_model.rb +16 -10
  175. data/lib/openc3/models/microservice_status_model.rb +3 -8
  176. data/lib/openc3/models/migration_model.rb +3 -8
  177. data/lib/openc3/models/model.rb +3 -8
  178. data/lib/openc3/models/news_model.rb +3 -8
  179. data/lib/openc3/models/note_model.rb +3 -8
  180. data/lib/openc3/models/offline_access_model.rb +3 -8
  181. data/lib/openc3/models/ping_model.rb +4 -9
  182. data/lib/openc3/models/plugin_model.rb +11 -8
  183. data/lib/openc3/models/plugin_store_model.rb +21 -17
  184. data/lib/openc3/models/process_status_model.rb +4 -9
  185. data/lib/openc3/models/python_package_model.rb +3 -8
  186. data/lib/openc3/models/queue_model.rb +3 -8
  187. data/lib/openc3/models/reaction_model.rb +9 -10
  188. data/lib/openc3/models/router_model.rb +4 -9
  189. data/lib/openc3/models/router_status_model.rb +4 -9
  190. data/lib/openc3/models/scope_model.rb +4 -9
  191. data/lib/openc3/models/script_engine_model.rb +3 -8
  192. data/lib/openc3/models/script_status_model.rb +3 -8
  193. data/lib/openc3/models/secret_model.rb +3 -8
  194. data/lib/openc3/models/setting_model.rb +3 -8
  195. data/lib/openc3/models/sorted_model.rb +3 -8
  196. data/lib/openc3/models/stash_model.rb +3 -8
  197. data/lib/openc3/models/target_model.rb +99 -229
  198. data/lib/openc3/models/timeline_model.rb +3 -8
  199. data/lib/openc3/models/tool_config_model.rb +3 -8
  200. data/lib/openc3/models/tool_model.rb +10 -10
  201. data/lib/openc3/models/trigger_group_model.rb +3 -8
  202. data/lib/openc3/models/trigger_model.rb +3 -8
  203. data/lib/openc3/models/widget_model.rb +3 -8
  204. data/lib/openc3/operators/microservice_operator.rb +7 -8
  205. data/lib/openc3/operators/operator.rb +3 -8
  206. data/lib/openc3/packets/command_validator.rb +3 -8
  207. data/lib/openc3/packets/commands.rb +32 -14
  208. data/lib/openc3/packets/json_packet.rb +7 -19
  209. data/lib/openc3/packets/limits.rb +3 -8
  210. data/lib/openc3/packets/limits_response.rb +3 -8
  211. data/lib/openc3/packets/packet.rb +35 -28
  212. data/lib/openc3/packets/packet_config.rb +15 -11
  213. data/lib/openc3/packets/packet_item.rb +3 -8
  214. data/lib/openc3/packets/packet_item_limits.rb +3 -8
  215. data/lib/openc3/packets/parsers/format_string_parser.rb +3 -8
  216. data/lib/openc3/packets/parsers/limits_parser.rb +3 -8
  217. data/lib/openc3/packets/parsers/limits_response_parser.rb +3 -8
  218. data/lib/openc3/packets/parsers/packet_item_parser.rb +7 -8
  219. data/lib/openc3/packets/parsers/packet_parser.rb +3 -8
  220. data/lib/openc3/packets/parsers/processor_parser.rb +3 -8
  221. data/lib/openc3/packets/parsers/state_parser.rb +3 -8
  222. data/lib/openc3/packets/parsers/xtce_converter.rb +3 -8
  223. data/lib/openc3/packets/parsers/xtce_parser.rb +3 -8
  224. data/lib/openc3/packets/structure.rb +14 -11
  225. data/lib/openc3/packets/structure_item.rb +3 -8
  226. data/lib/openc3/packets/telemetry.rb +7 -11
  227. data/lib/openc3/processors/processor.rb +5 -10
  228. data/lib/openc3/processors/statistics_processor.rb +4 -9
  229. data/lib/openc3/processors/watermark_processor.rb +4 -9
  230. data/lib/openc3/processors.rb +4 -9
  231. data/lib/openc3/script/api_shared.rb +8 -37
  232. data/lib/openc3/script/autonomic.rb +3 -8
  233. data/lib/openc3/script/calendar.rb +3 -8
  234. data/lib/openc3/script/commands.rb +3 -8
  235. data/lib/openc3/script/critical_cmd.rb +3 -8
  236. data/lib/openc3/script/exceptions.rb +4 -9
  237. data/lib/openc3/script/extract.rb +3 -8
  238. data/lib/openc3/script/limits.rb +3 -8
  239. data/lib/openc3/script/metadata.rb +3 -8
  240. data/lib/openc3/script/packages.rb +3 -8
  241. data/lib/openc3/script/plugins.rb +3 -8
  242. data/lib/openc3/script/queue.rb +3 -8
  243. data/lib/openc3/script/screen.rb +7 -8
  244. data/lib/openc3/script/script.rb +3 -8
  245. data/lib/openc3/script/script_runner.rb +3 -8
  246. data/lib/openc3/script/storage.rb +6 -10
  247. data/lib/openc3/script/suite.rb +3 -8
  248. data/lib/openc3/script/suite_results.rb +3 -8
  249. data/lib/openc3/script/suite_runner.rb +3 -8
  250. data/lib/openc3/script/tables.rb +3 -8
  251. data/lib/openc3/script/telemetry.rb +3 -8
  252. data/lib/openc3/script/web_socket_api.rb +8 -13
  253. data/lib/openc3/script.rb +4 -9
  254. data/lib/openc3/script_engines/script_engine.rb +3 -8
  255. data/lib/openc3/streams/mqtt_stream.rb +3 -8
  256. data/lib/openc3/streams/serial_stream.rb +3 -8
  257. data/lib/openc3/streams/stream.rb +3 -8
  258. data/lib/openc3/streams/tcpip_client_stream.rb +3 -8
  259. data/lib/openc3/streams/tcpip_socket_stream.rb +3 -8
  260. data/lib/openc3/streams/web_socket_client_stream.rb +3 -8
  261. data/lib/openc3/system/system.rb +3 -8
  262. data/lib/openc3/system/target.rb +3 -8
  263. data/lib/openc3/system.rb +3 -8
  264. data/lib/openc3/tools/cmd_tlm_server/api.rb +4 -9
  265. data/lib/openc3/tools/cmd_tlm_server/interface_thread.rb +3 -8
  266. data/lib/openc3/tools/table_manager/table.rb +3 -8
  267. data/lib/openc3/tools/table_manager/table_config.rb +3 -8
  268. data/lib/openc3/tools/table_manager/table_item.rb +4 -9
  269. data/lib/openc3/tools/table_manager/table_item_parser.rb +3 -8
  270. data/lib/openc3/tools/table_manager/table_manager_core.rb +3 -8
  271. data/lib/openc3/tools/table_manager/table_parser.rb +3 -8
  272. data/lib/openc3/tools/test_runner/test.rb +4 -9
  273. data/lib/openc3/top_level.rb +3 -8
  274. data/lib/openc3/topics/autonomic_topic.rb +4 -9
  275. data/lib/openc3/topics/calendar_topic.rb +4 -9
  276. data/lib/openc3/topics/command_decom_topic.rb +14 -17
  277. data/lib/openc3/topics/command_topic.rb +14 -10
  278. data/lib/openc3/topics/config_topic.rb +3 -8
  279. data/lib/openc3/topics/decom_interface_topic.rb +3 -8
  280. data/lib/openc3/topics/interface_topic.rb +3 -8
  281. data/lib/openc3/topics/limits_event_topic.rb +3 -8
  282. data/lib/openc3/topics/notebook_topic.rb +32 -0
  283. data/lib/openc3/topics/queue_topic.rb +3 -8
  284. data/lib/openc3/topics/router_topic.rb +3 -8
  285. data/lib/openc3/topics/system_events_topic.rb +3 -8
  286. data/lib/openc3/topics/telemetry_decom_topic.rb +12 -12
  287. data/lib/openc3/topics/telemetry_topic.rb +3 -8
  288. data/lib/openc3/topics/timeline_topic.rb +4 -9
  289. data/lib/openc3/topics/topic.rb +3 -8
  290. data/lib/openc3/utilities/authentication.rb +29 -10
  291. data/lib/openc3/utilities/authorization.rb +4 -9
  292. data/lib/openc3/utilities/aws_bucket.rb +126 -16
  293. data/lib/openc3/utilities/bucket.rb +9 -9
  294. data/lib/openc3/utilities/bucket_file_cache.rb +3 -13
  295. data/lib/openc3/utilities/bucket_require.rb +3 -8
  296. data/lib/openc3/utilities/bucket_utilities.rb +3 -10
  297. data/lib/openc3/utilities/cli_generator.rb +11 -16
  298. data/lib/openc3/utilities/cmd_log.rb +3 -8
  299. data/lib/openc3/utilities/crc.rb +3 -8
  300. data/lib/openc3/utilities/csv.rb +4 -9
  301. data/lib/openc3/utilities/local_bucket.rb +5 -10
  302. data/lib/openc3/utilities/local_mode.rb +14 -18
  303. data/lib/openc3/utilities/logger.rb +3 -8
  304. data/lib/openc3/utilities/message_log.rb +3 -8
  305. data/lib/openc3/utilities/metric.rb +3 -8
  306. data/lib/openc3/utilities/migration.rb +3 -8
  307. data/lib/openc3/utilities/open_telemetry.rb +3 -8
  308. data/lib/openc3/utilities/process_manager.rb +3 -8
  309. data/lib/openc3/utilities/python_proxy.rb +3 -8
  310. data/lib/openc3/utilities/quaternion.rb +3 -8
  311. data/lib/openc3/utilities/questdb_client.rb +209 -0
  312. data/lib/openc3/utilities/redis_secrets.rb +3 -8
  313. data/lib/openc3/utilities/ruby_lex_utils.rb +3 -8
  314. data/lib/openc3/utilities/running_script.rb +11 -10
  315. data/lib/openc3/utilities/s3_autoload.rb +9 -2
  316. data/lib/openc3/utilities/secrets.rb +8 -9
  317. data/lib/openc3/utilities/simulated_target.rb +4 -9
  318. data/lib/openc3/utilities/sleeper.rb +3 -8
  319. data/lib/openc3/utilities/store.rb +4 -9
  320. data/lib/openc3/utilities/store_autoload.rb +7 -14
  321. data/lib/openc3/utilities/store_queued.rb +6 -9
  322. data/lib/openc3/utilities/target_file.rb +3 -8
  323. data/lib/openc3/utilities/thread_manager.rb +3 -8
  324. data/lib/openc3/utilities/throttle.rb +3 -8
  325. data/lib/openc3/utilities/zip.rb +4 -9
  326. data/lib/openc3/utilities.rb +4 -9
  327. data/lib/openc3/version.rb +8 -8
  328. data/lib/openc3/win32/excel.rb +4 -9
  329. data/lib/openc3/win32/win32.rb +4 -9
  330. data/lib/openc3/win32/win32_main.rb +3 -8
  331. data/lib/openc3.rb +3 -12
  332. data/tasks/gemfile_stats.rake +4 -9
  333. data/tasks/spec.rake +4 -9
  334. data/templates/plugin/README.md +2 -2
  335. data/templates/plugin/plugin.gemspec +1 -1
  336. data/templates/tool_angular/package.json +1 -1
  337. data/templates/tool_vue/package.json +3 -3
  338. data/templates/tool_vue/vite.config.js +2 -1
  339. data/templates/widget/package.json +3 -3
  340. data/templates/widget/vite.config.js +1 -1
  341. metadata +49 -26
  342. data/LICENSE.txt +0 -729
  343. data/bin/rubysloc +0 -142
  344. data/ext/openc3/ext/reducer_microservice/extconf.rb +0 -13
  345. data/ext/openc3/ext/reducer_microservice/reducer_microservice.c +0 -165
  346. data/lib/openc3/microservices/reducer_microservice.rb +0 -640
  347. data/lib/openc3/models/reducer_model.rb +0 -72
  348. data/lib/openc3/topics/telemetry_reduced_topics.rb +0 -80
  349. /data/templates/plugin/{LICENSE.txt → LICENSE.md} +0 -0
  350. /data/templates/widget/{LICENSE.txt → LICENSE.md} +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e6cc1e03ca8cd4ac75025fc7cd4758099c513957b012291e7b332e8c61c513cf
4
- data.tar.gz: '058a71978241f50cc97a1ebefe70a7a6ecc69a9f1fb51e11690d50fd167ae60f'
3
+ metadata.gz: 716b55f22220d1ee722f05550fcb177cea96e9898356a62bfa970e4222f7c7fa
4
+ data.tar.gz: 2a8db01e57ce7215d352d38682f3c25893828c8a500d8fd5d8f0e3b09ab854e7
5
5
  SHA512:
6
- metadata.gz: a96529177ee05a9f04257e4668f245c7346692b039e000f970166fb311c80992401f19def70cbe63844510aa97b2a90ab89bafd835b377aecd14ef0505cb2feb
7
- data.tar.gz: 3a1c5152b36c733009daaefb07786087b428bbf172dd3ecbee2cfb4bb82de88c84ac0af727c25287cd4af5d1038812e1f4a3d2566c935cf0c519b984163013f5
6
+ metadata.gz: c74aaf9e7b3f4a0c176c002cc54b53388d291d50377814c16e13ab7276d8d567a38634c0a2fa51d6c5e9738270fcd1f851c0ea36b03ab3f4ea5ea499f43f3550
7
+ data.tar.gz: 2c97ee833cb18b8725caeab3b2ebe0347d85f8e6c4dcb4d531395f1c7c9e3be68d6405bd8d65a151bf989c4a66a945753c160b9a7fc05227d6f54f60dcc84c02
data/Gemfile CHANGED
@@ -7,6 +7,7 @@ gemspec :name => 'openc3'
7
7
  # Include the rails gems for the convenience of custom microservice plugins
8
8
  gem 'bootsnap', '>= 1.9.3', require: false
9
9
  gem 'rack-cors', '~> 3.0'
10
- gem 'rails', '~> 7.2.0'
10
+ gem 'rails', '~> 8.1.0'
11
11
  gem 'tzinfo-data'
12
12
  gem 'ruby-termios', '>= 1.0'
13
+ gem 'argon2', '~> 2.3', '>= 2.3.2'
data/Guardfile CHANGED
@@ -3,21 +3,16 @@
3
3
  # Copyright 2022 Ball Aerospace & Technologies Corp.
4
4
  # All Rights Reserved.
5
5
  #
6
- # This program is free software; you can modify and/or redistribute it
7
- # under the terms of the GNU Affero General Public License
8
- # as published by the Free Software Foundation; version 3 with
9
- # attribution addendums as found in the LICENSE.txt
10
- #
11
6
  # This program is distributed in the hope that it will be useful,
12
7
  # but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
- # GNU Affero General Public License for more details.
8
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
9
+ # See LICENSE.md for more details.
15
10
 
16
11
  # Modified by OpenC3, Inc.
17
- # All changes Copyright 2022, OpenC3, Inc.
12
+ # All changes Copyright 2026, OpenC3, Inc.
18
13
  # All Rights Reserved
19
14
  #
20
- # This file may also be used under the terms of a commercial license
15
+ # This file may also be used under the terms of a commercial license
21
16
  # if purchased from OpenC3, Inc.
22
17
 
23
18
  # A sample Guardfile
data/LICENSE.md ADDED
@@ -0,0 +1,85 @@
1
+ # OpenC3 Builder’s License
2
+
3
+ ## Acceptance
4
+
5
+ By using the software, you agree to all of the terms and conditions below.
6
+
7
+ ## Copyright License
8
+
9
+ The licensor grants you a non-exclusive, royalty-free, worldwide, non-sublicensable, non-transferable license to use, copy, distribute, make available, and prepare derivative works of the software, in each case subject to the limitations and conditions below.
10
+
11
+ ## Limitations
12
+
13
+ - You may not provide the software or its functionality to third parties as any part of a hosted or managed service.
14
+ - You may not distribute any changes made to the software on a commercial basis.
15
+ - You may not alter, remove, or obscure any licensing, copyright, or other notices of the licensor in the software. Any use of the licensor’s trademarks is subject to applicable law.
16
+
17
+ ## Patents
18
+
19
+ The licensor grants you a license, under any patent claims the licensor can license, or becomes able to license, to make, have made, use, sell, offer for sale, import and have imported the software, in each case subject to the limitations and conditions in this license. This license does not cover any patent claims that you cause to be infringed by modifications or additions to the software. If you or your company make any written claim that the software infringes or contributes to infringement of any patent, your patent license for the software granted under these terms ends immediately. If your company makes such a claim, your patent license ends immediately for work on behalf of your company.
20
+
21
+ ## Notices
22
+
23
+ You must ensure that anyone who gets a copy of any part of the software from you also gets a copy of these terms.
24
+
25
+ If you modify the software, you must include in any modified copies of the software prominent notices stating that you have modified the software.
26
+
27
+ # No Other Rights
28
+
29
+ These terms do not imply any licenses other than those expressly granted in these terms.
30
+
31
+ ## Termination
32
+
33
+ If you use the software in violation of these terms, such use is not licensed, and your licenses will automatically terminate. If the licensor provides you with a notice of your violation, and you cease all violation of this license no later than 30 days after you receive that notice, your licenses may be reinstated retroactively. However, if you violate these terms after such reinstatement, any additional violation of these terms will cause your licenses to terminate automatically and permanently.
34
+
35
+ ## No Liability
36
+
37
+ As far as the law allows, the software comes as is, without any warranty or condition, without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE and the licensor will not be liable to you, or any recipients of the software, for any damages arising out of these terms or the use or nature of the software, under any kind of legal claim.
38
+
39
+ ## Contributions
40
+
41
+ By submitting a Contribution, you agree to the following terms:
42
+
43
+ 1. **Grant of License**: You hereby grant to OpenC3, Inc. a perpetual, irrevocable, worldwide, royalty-free, fully paid-up, non-exclusive, sublicensable, and transferable license to use, reproduce, prepare derivative works of, publicly display, publicly perform, distribute, sublicense, sell, and otherwise exploit your Contribution and any derivative works thereof, for any purpose whatsoever, without restriction or obligation to you.
44
+
45
+ 2. **Grant of Patent License**: You hereby grant to OpenC3, Inc. a perpetual, irrevocable, worldwide, royalty-free, fully paid-up, non-exclusive, sublicensable, and transferable patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer your Contribution, where such license applies only to those patent claims licensable by you that are necessarily infringed by your Contribution alone or by combination of your Contribution with the Software.
46
+
47
+ 3. **Representation of Authority**: You represent that you are legally entitled to grant the above licenses. If your employer has rights to intellectual property you create, you represent that you have received permission to make the Contribution on behalf of your employer, or that your employer has waived such rights for your Contribution.
48
+
49
+ 4. **Representation of Originality**: You represent that each Contribution is your original creation and that you have the right to grant the licenses herein. You will identify any third-party licenses or restrictions associated with any part of your Contribution.
50
+
51
+ 5. **No Obligation**: You acknowledge that OpenC3, Inc. is under no obligation to accept, use, or include any Contribution.
52
+
53
+ 6. **No Expectation of Compensation**: Contributions are provided voluntarily. You have no expectation of compensation, royalties, or other payment for any Contribution, regardless of how OpenC3, Inc. uses it.
54
+
55
+ ## Governing Law
56
+
57
+ This license shall be governed by and construed in accordance with the laws of the State of Delaware, without regard to its conflict of law provisions.
58
+
59
+ ## Commercial Licensing and Contact Information
60
+
61
+ This software may also be used under the terms of a commercial license purchased from OpenC3, Inc.
62
+
63
+ For licensing inquiries, including requests for commercial licenses, please contact:
64
+
65
+ sales@openc3.com
66
+
67
+ ## Definitions
68
+
69
+ **Contribution** means any original work of authorship, including any modification or addition to existing work, that is submitted for inclusion in the Software. A Contribution is considered "submitted" when any form of electronic, verbal, or written communication is received by Licensor, including but not limited to communications on electronic mailing lists, source code control systems, issue tracking systems, and pull requests that are managed by or on behalf of Licensor for the purpose of discussing or improving the Software. Communications conspicuously marked "Not a Contribution" are excluded.
70
+
71
+ The **licensor** is the entity offering these terms, and the **software** is the software the licensor makes available under these terms, including any portion of it.
72
+
73
+ **you** refers to the individual or entity agreeing to these terms.
74
+
75
+ **your company** is any legal entity, sole proprietorship, or other kind of organization that you work for or with, plus all organizations that have control over, are under the control of, or are under common control with that organization. control means ownership of substantially all the assets of an entity, or the power to direct its management and policies by vote, contract, or otherwise. Control can be direct or indirect.
76
+
77
+ **your licenses** are all the licenses granted to you for the software under these terms.
78
+
79
+ **use** means anything you do with the software requiring one of your licenses.
80
+
81
+ **trademark** means trademarks, service marks, and similar rights.
82
+
83
+ ## Attribution
84
+
85
+ This license is based on the Elastic License 2.0, modified by OpenC3, Inc.
data/README.md CHANGED
@@ -15,12 +15,12 @@
15
15
  ```
16
16
  set OPENC3_REDIS_USERNAME=openc3
17
17
  set OPENC3_REDIS_PASSWORD=openc3password
18
- set OPENC3_BUCKET_USERNAME=openc3minio
19
- set OPENC3_BUCKET_PASSWORD=openc3miniopassword
18
+ set OPENC3_BUCKET_USERNAME=openc3bucket
19
+ set OPENC3_BUCKET_PASSWORD=openc3bucketpassword
20
20
  set OPENC3_SR_REDIS_USERNAME=scriptrunner
21
21
  set OPENC3_SR_REDIS_PASSWORD=scriptrunnerpassword
22
- set OPENC3_SR_BUCKET_USERNAME=scriptrunnerminio
23
- set OPENC3_SR_BUCKET_PASSWORD=scriptrunnerminiopassword
22
+ set OPENC3_SR_BUCKET_USERNAME=scriptrunnerbucket
23
+ set OPENC3_SR_BUCKET_PASSWORD=scriptrunnerbucketpassword
24
24
  ```
25
25
 
26
26
  ## Linux Environment variables
@@ -28,10 +28,10 @@ set OPENC3_SR_BUCKET_PASSWORD=scriptrunnerminiopassword
28
28
  ```
29
29
  OPENC3_REDIS_USERNAME=openc3
30
30
  OPENC3_REDIS_PASSWORD=openc3password
31
- OPENC3_BUCKET_USERNAME=openc3minio
32
- OPENC3_BUCKET_PASSWORD=openc3miniopassword
31
+ OPENC3_BUCKET_USERNAME=openc3bucket
32
+ OPENC3_BUCKET_PASSWORD=openc3bucketpassword
33
33
  OPENC3_SR_REDIS_USERNAME=scriptrunner
34
34
  OPENC3_SR_REDIS_PASSWORD=scriptrunnerpassword
35
- OPENC3_SR_BUCKET_USERNAME=scriptrunnerminio
36
- OPENC3_SR_BUCKET_PASSWORD=scriptrunnerminiopassword
35
+ OPENC3_SR_BUCKET_USERNAME=scriptrunnerbucket
36
+ OPENC3_SR_BUCKET_PASSWORD=scriptrunnerbucketpassword
37
37
  ```
data/Rakefile CHANGED
@@ -3,18 +3,13 @@
3
3
  # Copyright 2022 Ball Aerospace & Technologies Corp.
4
4
  # All Rights Reserved.
5
5
  #
6
- # This program is free software; you can modify and/or redistribute it
7
- # under the terms of the GNU Affero General Public License
8
- # as published by the Free Software Foundation; version 3 with
9
- # attribution addendums as found in the LICENSE.txt
10
- #
11
6
  # This program is distributed in the hope that it will be useful,
12
7
  # but WITHOUT ANY WARRANTY; without even the implied warranty of
13
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
- # GNU Affero General Public License for more details.
8
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
9
+ # See LICENSE.md for more details.
15
10
 
16
11
  # Modified by OpenC3, Inc.
17
- # All changes Copyright 2022, OpenC3, Inc.
12
+ # All changes Copyright 2026, OpenC3, Inc.
18
13
  # All Rights Reserved
19
14
  #
20
15
  # This file may also be used under the terms of a commercial license
@@ -65,7 +60,6 @@ task :build => [:devkit] do
65
60
  'packet',
66
61
  'platform',
67
62
  'buffered_file',
68
- 'reducer_microservice'
69
63
  ]
70
64
 
71
65
  extensions.each do |extension_name|
data/bin/cstol_converter CHANGED
@@ -4,18 +4,13 @@
4
4
  # Copyright 2022 Ball Aerospace & Technologies Corp.
5
5
  # All Rights Reserved.
6
6
  #
7
- # This program is free software; you can modify and/or redistribute it
8
- # under the terms of the GNU Affero General Public License
9
- # as published by the Free Software Foundation; version 3 with
10
- # attribution addendums as found in the LICENSE.txt
11
- #
12
7
  # This program is distributed in the hope that it will be useful,
13
8
  # but WITHOUT ANY WARRANTY; without even the implied warranty of
14
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
- # GNU Affero General Public License for more details.
9
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
10
+ # See LICENSE.md for more details.
16
11
 
17
12
  # Modified by OpenC3, Inc.
18
- # All changes Copyright 2022, OpenC3, Inc.
13
+ # All changes Copyright 2026, OpenC3, Inc.
19
14
  # All Rights Reserved
20
15
  #
21
16
  # This file may also be used under the terms of a commercial license
data/bin/openc3cli CHANGED
@@ -4,18 +4,13 @@
4
4
  # Copyright 2022 Ball Aerospace & Technologies Corp.
5
5
  # All Rights Reserved.
6
6
  #
7
- # This program is free software; you can modify and/or redistribute it
8
- # under the terms of the GNU Affero General Public License
9
- # as published by the Free Software Foundation; version 3 with
10
- # attribution addendums as found in the LICENSE.txt
11
- #
12
7
  # This program is distributed in the hope that it will be useful,
13
8
  # but WITHOUT ANY WARRANTY; without even the implied warranty of
14
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
- # GNU Affero General Public License for more details.
9
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
10
+ # See LICENSE.md for more details.
16
11
 
17
12
  # Modified by OpenC3, Inc.
18
- # All changes Copyright 2025, OpenC3, Inc.
13
+ # All changes Copyright 2026, OpenC3, Inc.
19
14
  # All Rights Reserved
20
15
  #
21
16
  # This file may also be used under the terms of a commercial license
@@ -47,6 +42,8 @@ require 'redis'
47
42
  require 'erb'
48
43
  require 'irb'
49
44
  require 'irb/completion'
45
+ require 'digest'
46
+ require 'argon2'
50
47
 
51
48
  $redis_url = "redis://#{ENV['OPENC3_REDIS_HOSTNAME']}:#{ENV['OPENC3_REDIS_PORT']}"
52
49
 
@@ -76,7 +73,6 @@ def print_usage
76
73
  puts " cli bridgesetup CONFIG_FILENAME # Create a default config file"
77
74
  puts " cli pkginstall PKGFILENAME SCOPE # Install loaded package (Ruby gem or python package)"
78
75
  puts " cli pkguninstall PKGFILENAME SCOPE # Uninstall loaded package (Ruby gem or python package)"
79
- puts " cli rubysloc # DEPRECATED: Please use scc (https://github.com/boyter/scc)"
80
76
  puts " cli xtce_converter # Convert to and from the XTCE format. Run with --help for more info."
81
77
  puts " cli cstol_converter # Converts CSTOL files (.prc) to COSMOS. Run with --help for more info."
82
78
  puts ""
@@ -108,7 +104,7 @@ def xtce_converter(args)
108
104
  options = {}
109
105
  option_parser = OptionParser.new do |opts|
110
106
  opts.banner = "Usage: xtce_converter [options] --import input_xtce_filename --output output_dir\n"+
111
- " xtce_converter [options] --plugin /PATH/FILENAME.gem --output output_dir "+
107
+ " xtce_converter [options] --plugin /PATH/FILENAME.gem --output output_dir "+
112
108
  " --variables variables.txt --root_target root_target_name --time_association_name time_association_name"
113
109
  opts.separator("")
114
110
  opts.on("-h", "--help", "Show this message") do
@@ -595,33 +591,39 @@ end
595
591
  def cli_script_monitor(script_id)
596
592
  ret_code = ERROR_CODE
597
593
  require 'openc3/script'
598
- OpenC3::RunningScriptWebSocketApi.new(id: script_id) do |api|
599
- while (resp = api.read) do
600
- # see ScriptRunner.vue for types and states
601
- case resp['type']
602
- when 'file'
603
- puts "Filename #{resp['filename']} scope #{resp['scope']}"
604
- when 'line'
605
- fn = resp['filename'].nil? ? '<no file>' : resp['filename']
606
- puts "At [#{fn}:#{resp['line_no']}] state [#{resp['state']}]"
607
- if resp['state'] == 'error' or resp['state'] == 'crashed'
594
+ begin
595
+ OpenC3::RunningScriptWebSocketApi.new(id: script_id) do |api|
596
+ while (resp = api.read) do
597
+ # see ScriptRunner.vue for types and states
598
+ case resp['type']
599
+ when 'file'
600
+ puts "Filename #{resp['filename']} scope #{resp['scope']}"
601
+ when 'line'
602
+ fn = resp['filename'].nil? ? '<no file>' : resp['filename']
603
+ puts "At [#{fn}:#{resp['line_no']}] state [#{resp['state']}]"
604
+ if resp['state'] == 'error' or resp['state'] == 'crashed'
605
+ $script_interrupt_text = ''
606
+ puts 'script failed'
607
+ break
608
+ end
609
+ when 'output'
610
+ puts resp['line']
611
+ when 'complete'
608
612
  $script_interrupt_text = ''
609
- puts 'script failed'
613
+ puts 'script complete'
614
+ ret_code = 0
610
615
  break
616
+ # These conditions are all handled by the else
617
+ # when 'running', 'breakpoint', 'waiting', 'time'
618
+ else
619
+ puts resp.pretty_inspect
611
620
  end
612
- when 'output'
613
- puts resp['line']
614
- when 'complete'
615
- $script_interrupt_text = ''
616
- puts 'script complete'
617
- ret_code = 0
618
- break
619
- # These conditions are all handled by the else
620
- # when 'running', 'breakpoint', 'waiting', 'time'
621
- else
622
- puts resp.pretty_inspect
623
621
  end
624
622
  end
623
+ ensure
624
+ # Force flush output streams to ensure all data is written
625
+ STDOUT.flush
626
+ STDERR.flush
625
627
  end
626
628
  return ret_code
627
629
  end
@@ -877,9 +879,35 @@ def cli_script(args=[])
877
879
  else
878
880
  abort 'openc3cli internal error: parsing arguments'
879
881
  end
882
+ # Ensure output is flushed before exit
883
+ STDOUT.flush
884
+ STDERR.flush
885
+
886
+ # Kill any non-daemon threads that might prevent exit
887
+ # This is necessary because WebSocket/TCP streams may create background threads
888
+ Thread.list.each do |thread|
889
+ thread.kill unless thread == Thread.current || thread == Thread.main
890
+ end
891
+
880
892
  exit(ret_code)
881
893
  end
882
894
 
895
+ def migrate_password_hash
896
+ password = ENV['OPENC3_API_PASSWORD']
897
+ argon2_profile = ENV["OPENC3_ARGON2_PROFILE"]&.to_sym || :rfc_9106_low_memory
898
+ if password.nil? or password.empty?
899
+ abort "OPENC3_API_PASSWORD environment variable is required for password migration"
900
+ end
901
+ redis = Redis.new(url: $redis_url, username: ENV['OPENC3_REDIS_USERNAME'], password: ENV['OPENC3_REDIS_PASSWORD'])
902
+ old_pw_hash = redis.get('OPENC3__TOKEN')
903
+ abort "Password hash already migrated" if old_pw_hash.start_with?('$argon2')
904
+ abort "OPENC3_API_PASSWORD incorrect" unless old_pw_hash == Digest::SHA256.hexdigest(password)
905
+ new_pw_hash = Argon2::Password.create(password, profile: argon2_profile)
906
+ redis.set('OPENC3__TOKEN', new_pw_hash)
907
+ puts "Password migrated successfully."
908
+ exit 0
909
+ end
910
+
883
911
  if not ARGV[0].nil? # argument(s) given
884
912
 
885
913
  # Handle each task
@@ -1088,9 +1116,6 @@ if not ARGV[0].nil? # argument(s) given
1088
1116
  # ruby -Iopenc3/lib openc3/bin/openc3cli generate ...
1089
1117
  OpenC3::CliGenerator.generate(ARGV[1..-1])
1090
1118
 
1091
- when 'rubysloc'
1092
- puts `ruby /openc3/bin/rubysloc #{ARGV[1..-1].join(' ')}`
1093
-
1094
1119
  when 'cstol_converter'
1095
1120
  puts `ruby /openc3/bin/cstol_converter #{ARGV[1..-1].join(' ')}`
1096
1121
 
@@ -1329,6 +1354,7 @@ if not ARGV[0].nil? # argument(s) given
1329
1354
  end
1330
1355
  end
1331
1356
  client.ensure_public(ENV['OPENC3_TOOLS_BUCKET'])
1357
+ client.ensure_scriptrunner_policy(ENV['OPENC3_CONFIG_BUCKET'], ENV['OPENC3_LOGS_BUCKET'])
1332
1358
 
1333
1359
  when 'runmigrations'
1334
1360
  if ARGV[1] == '--help' || ARGV[1] == '-h'
@@ -1342,6 +1368,9 @@ if not ARGV[0].nil? # argument(s) given
1342
1368
  end
1343
1369
  run_migrations(ARGV[1])
1344
1370
 
1371
+ when 'migratepassword'
1372
+ migrate_password_hash()
1373
+
1345
1374
  else # Unknown task
1346
1375
  print_usage()
1347
1376
  abort("Unknown task: #{ARGV[0]}")
@@ -38,7 +38,10 @@ APPEND_PARAMETER:
38
38
  ID_PARAMETER:
39
39
  modifiers:
40
40
  <%= MetaConfigParser.load('parameter_modifiers.yaml').to_meta_config_yaml(4) %>
41
- summary: Defines an identification command parameter in the current command packet
41
+ summary: Defines an identification command parameter in the current command packet.
42
+ Note, packets defined without one or more ID_PARAMETERs are "catch-all" packets which
43
+ will match all incoming data. A warning will be generated for packets without ID_PARAMETERs
44
+ unless the CATCHALL keyword is used.
42
45
  description: ID parameters are used to identify the binary block of data as a
43
46
  particular command. A command packet may have one or more ID_PARAMETERs and all
44
47
  must match the binary data for the command to be identified.
@@ -325,6 +328,11 @@ SCREEN:
325
328
  description: Screen Name of related telemetry screen
326
329
  values: .+
327
330
  since: 5.14.0
331
+ CATCHALL:
332
+ summary: Marks this packet as an intentional catch-all packet
333
+ description: Suppresses the warning that is normally generated for packets defined without ID_PARAMETERs.
334
+ Use this when a packet is intentionally designed to match all incoming data that doesn't match other packets.
335
+ since: 7.0.0
328
336
  VIRTUAL:
329
337
  summary: Marks this packet as virtual and not participating in identification
330
338
  description: Used for packet definitions that can be used as structures for items with a given packet.
@@ -61,8 +61,6 @@ DISABLE_DISCONNECT:
61
61
  Use this keyword to prevent the user from disconnecting from the interface.
62
62
  This is typically used in a 'production' environment where you would not want
63
63
  the user to inadvertently disconnect from a target.
64
- LOG_RAW:
65
- summary: Deprecated, use LOG_STREAM
66
64
  LOG_STREAM:
67
65
  summary: Log all data on the interface exactly as it is sent and received
68
66
  description:
@@ -15,42 +15,38 @@ VARIABLE:
15
15
  values: .+
16
16
  VARIABLE_DESCRIPTION:
17
17
  summary: Add a description to a plugin variable
18
- description: The VARIABLE_DESCRIPTION keyword adds a human-readable description to a previously defined VARIABLE. This description appears as hint text below the variable input field during plugin installation. Must follow a VARIABLE definition.
18
+ description: The VARIABLE_DESCRIPTION keyword adds a human-readable description to a previously defined VARIABLE.
19
+ This description appears as hint text below the variable input field during plugin installation.
20
+ Must follow a VARIABLE definition.
19
21
  since: 7.0.0
20
22
  example: |
21
23
  VARIABLE port 8080
22
- VARIABLE_DESCRIPTION port "TCP port for the target connection"
24
+ VARIABLE_DESCRIPTION "TCP port for the target connection"
23
25
  parameters:
24
- - name: Variable Name
25
- required: true
26
- description: Name of the variable to describe. Must match a previously defined VARIABLE name.
27
- values: .+
28
26
  - name: Description
29
27
  required: true
30
28
  description: Human-readable description of the variable's purpose
31
29
  values: .+
32
30
  VARIABLE_STATE:
33
31
  summary: Add a selectable state for a plugin variable
34
- description: The VARIABLE_STATE keyword defines a selectable state for a previously defined VARIABLE. When states are defined for a variable, it renders as a dropdown/combobox in the plugin installation dialog instead of a text field. Users can still type custom values if needed. Multiple VARIABLE_STATE keywords can be used to define multiple states. Must follow a VARIABLE definition.
32
+ description: The VARIABLE_STATE keyword defines a selectable state for a previously defined VARIABLE.
33
+ When states are defined for a variable, it renders as a dropdown/combobox in the plugin installation dialog instead of a text field.
34
+ Users can still type custom values if needed. Multiple VARIABLE_STATE keywords can be used to define multiple states.
35
+ Must follow a VARIABLE definition.
35
36
  since: 7.0.0
36
37
  example: |
37
- VARIABLE target_name INST
38
- VARIABLE_DESCRIPTION target_name "Select the target name"
39
- VARIABLE_STATE target_name INST "Primary instrument"
40
- VARIABLE_STATE target_name INST2 "Secondary instrument"
38
+ VARIABLE log_retain_time 172800
39
+ VARIABLE_STATE "24 hours" 86400
40
+ VARIABLE_STATE "48 hours" 172800
41
41
  parameters:
42
- - name: Variable Name
43
- required: true
44
- description: Name of the variable this state belongs to. Must match a previously defined VARIABLE name.
42
+ - name: State Description
43
+ required: false
44
+ description: Human-readable description of what this state represents. Appears as option in the dropdown.
45
45
  values: .+
46
46
  - name: State Value
47
47
  required: true
48
48
  description: The value that will be used when this state is selected
49
49
  values: .+
50
- - name: State Description
51
- required: false
52
- description: Human-readable description of what this state represents. Appears as subtitle in the dropdown.
53
- values: .+
54
50
  NEEDS_DEPENDENCIES:
55
51
  summary: Indicates the plugin needs dependencies and sets the GEM_HOME environment variable
56
52
  description: If the plugin has a top level lib folder or lists runtime dependencies in the gemspec,
@@ -16,7 +16,7 @@ SCREEN:
16
16
  values: \d+
17
17
  - name: Polling Period
18
18
  required: true
19
- description: Number of seconds between screen updates
19
+ description: Number of seconds between screen updates. 0 means disable polling.
20
20
  values: '[0-9]*\.?[0-9]+'
21
21
  example: |
22
22
  SCREEN AUTO AUTO 1.0
@@ -9,8 +9,7 @@ TARGET:
9
9
  values: .*
10
10
  - name: Name
11
11
  required: true
12
- description:
13
- The target name. While this typically matches the Folder Name
12
+ description: The target name. While this typically matches the Folder Name
14
13
  it can be different to create multiple targets based on the same target definition.
15
14
  As in the Example Usage, the target folder is KEYSIGHT_N6700 but the target name is PWR_SUPPLY1.
16
15
  To create multiple targets from the same folder, just define multiple TARGET entries
@@ -48,27 +47,6 @@ TARGET:
48
47
  required: true
49
48
  description: Number of seconds to keep raw command logs (default = nil = Forever)
50
49
  values: \d+
51
- CMD_DECOM_LOG_CYCLE_TIME:
52
- summary: Command decommutation logs can be cycled on a time interval.
53
- parameters:
54
- - name: Time
55
- required: true
56
- description: Maximum time between files in seconds (default = 600)
57
- values: \d+
58
- CMD_DECOM_LOG_CYCLE_SIZE:
59
- summary: Command decommutation logs can be cycled after a certain log file size is reached.
60
- parameters:
61
- - name: Size
62
- required: true
63
- description: Maximum file size in bytes (default = 50_000_000)
64
- values: \d+
65
- CMD_DECOM_LOG_RETAIN_TIME:
66
- summary: How long to keep decom command logs in seconds.
67
- parameters:
68
- - name: Time
69
- required: true
70
- description: Number of seconds to keep decom command logs (default = nil = Forever)
71
- values: \d+
72
50
  TLM_BUFFER_DEPTH:
73
51
  summary: Number of telemetry packets to buffer to ensure logged in order
74
52
  since: 5.2.0
@@ -98,48 +76,34 @@ TARGET:
98
76
  required: true
99
77
  description: Number of seconds to keep raw telemetry logs (default = nil = Forever)
100
78
  values: \d+
101
- TLM_DECOM_LOG_CYCLE_TIME:
102
- summary: Telemetry decommutation logs can be cycled on a time interval.
103
- parameters:
104
- - name: Time
105
- required: true
106
- description: Maximum time between files in seconds (default = 600)
107
- values: \d+
108
- TLM_DECOM_LOG_CYCLE_SIZE:
109
- summary: Telemetry decommutation logs can be cycled after a certain log file size is reached.
110
- parameters:
111
- - name: Size
112
- required: true
113
- description: Maximum file size in bytes (default = 50_000_000)
114
- values: \d+
115
- TLM_DECOM_LOG_RETAIN_TIME:
116
- summary: How long to keep decom telemetry logs in seconds.
117
- parameters:
118
- - name: Time
119
- required: true
120
- description: Number of seconds to keep decom telemetry logs (default = nil = Forever)
121
- values: \d+
122
- REDUCED_MINUTE_LOG_RETAIN_TIME:
123
- summary: How long to keep reduced minute telemetry logs in seconds.
124
- parameters:
125
- - name: Time
126
- required: true
127
- description: Number of seconds to keep reduced minute telemetry logs (default = nil = Forever)
128
- values: \d+
129
- REDUCED_HOUR_LOG_RETAIN_TIME:
130
- summary: How long to keep reduced hour telemetry logs in seconds.
79
+ CMD_DECOM_RETAIN_TIME:
80
+ summary: How long to keep command decommutation records in the TSDB.
81
+ description:
82
+ Sets the retention time directly on QuestDB tables for automatic data expiration.
83
+ QuestDB will automatically remove data older than this retention time.
84
+ since: 7.0.0
131
85
  parameters:
132
86
  - name: Time
133
87
  required: true
134
- description: Number of seconds to keep reduced hour telemetry logs (default = nil = Forever)
135
- values: \d+
136
- REDUCED_DAY_LOG_RETAIN_TIME:
137
- summary: How long to keep reduced day telemetry logs in seconds.
88
+ description:
89
+ Retention time value with unit (e.g., "24h" for 24 hours, "30d" for 30 days, "1y" for 1 year).
90
+ Supported units are h (hours), d (days), w (weeks), M (months), y (years).
91
+ Default = nil = Forever
92
+ values: \d+[hdwMy]
93
+ TLM_DECOM_RETAIN_TIME:
94
+ summary: How long to keep telemetry decommutation records in the TSDB.
95
+ description:
96
+ Sets the retention time directly on QuestDB tables for automatic data expiration.
97
+ QuestDB will automatically remove data older than this retention time.
98
+ since: 7.0.0
138
99
  parameters:
139
100
  - name: Time
140
101
  required: true
141
- description: Number of seconds to keep reduced day telemetry logs (default = nil = Forever)
142
- values: \d+
102
+ description:
103
+ Retention time value with unit (e.g., "24h" for 24 hours, "30d" for 30 days, "1y" for 1 year).
104
+ Supported units are h (hours), d (days), w (weeks), M (months), y (years).
105
+ Default = nil = Forever
106
+ values: \d+[hdwMy]
143
107
  LOG_RETAIN_TIME:
144
108
  summary: How long to keep all regular telemetry logs in seconds.
145
109
  parameters:
@@ -147,28 +111,12 @@ TARGET:
147
111
  required: true
148
112
  description: Number of seconds to keep all regular telemetry logs (default = nil = Forever)
149
113
  values: \d+
150
- REDUCED_LOG_RETAIN_TIME:
151
- summary: How long to keep all reduced telemetry logs in seconds.
152
- parameters:
153
- - name: Time
154
- required: true
155
- description: Number of seconds to keep all reduced telemetry logs (default = nil = Forever)
156
- values: \d+
157
114
  CLEANUP_POLL_TIME:
158
115
  summary: Period at which to run the cleanup process.
159
116
  parameters:
160
117
  - name: Time
161
118
  required: true
162
- description: Number of seconds between runs of the cleanup process (default = 600 = 10 minutes)
163
- values: \d+
164
- REDUCER_DISABLE:
165
- summary: Disables the data reduction microservice for the target
166
- REDUCER_MAX_CPU_UTILIZATION:
167
- summary: Maximum amount of CPU utilization to apply to data reduction
168
- parameters:
169
- - name: Percentage
170
- required: true
171
- description: 0 to 100 percent (default = 30)
119
+ description: Number of seconds between runs of the cleanup process (default = 3600 = 1 hour)
172
120
  values: \d+
173
121
  TARGET_MICROSERVICE:
174
122
  summary: Breaks a target microservice out into its own process.
@@ -180,8 +128,7 @@ TARGET:
180
128
  parameters:
181
129
  - name: Type
182
130
  required: true
183
- description: The target microservice type. Must be one of
184
- DECOM, COMMANDLOG, DECOMCMDLOG, PACKETLOG, DECOMLOG, REDUCER, or CLEANUP
131
+ description: The target microservice type. Must be one of DECOM, COMMANDLOG, PACKETLOG, or CLEANUP
185
132
  values: .*
186
133
  PACKET:
187
134
  summary: Packet Name to allocate to the current TARGET_MICROSERVICE.
@@ -190,7 +137,7 @@ TARGET:
190
137
  - name: Packet Name
191
138
  required: true
192
139
  description: The packet name. Does not apply to
193
- REDUCER or CLEANUP target microservice types.
140
+ CLEANUP target microservice type.
194
141
  values: .*
195
142
  DISABLE_ERB:
196
143
  summary: Disable ERB processing