openc3 6.10.3 → 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 (352) 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 +68 -38
  9. data/data/config/command_modifiers.yaml +9 -1
  10. data/data/config/interface_modifiers.yaml +0 -2
  11. data/data/config/plugins.yaml +34 -0
  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 +51 -44
  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 +5 -10
  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 +47 -32
  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 +23 -17
  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 +51 -17
  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 +36 -29
  212. data/lib/openc3/packets/packet_config.rb +17 -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 +9 -14
  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 +16 -18
  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 +2 -2
  337. data/templates/tool_react/package.json +1 -1
  338. data/templates/tool_svelte/package.json +1 -1
  339. data/templates/tool_vue/package.json +5 -5
  340. data/templates/tool_vue/vite.config.js +2 -1
  341. data/templates/widget/package.json +4 -4
  342. data/templates/widget/vite.config.js +1 -1
  343. metadata +49 -26
  344. data/LICENSE.txt +0 -729
  345. data/bin/rubysloc +0 -142
  346. data/ext/openc3/ext/reducer_microservice/extconf.rb +0 -13
  347. data/ext/openc3/ext/reducer_microservice/reducer_microservice.c +0 -165
  348. data/lib/openc3/microservices/reducer_microservice.rb +0 -640
  349. data/lib/openc3/models/reducer_model.rb +0 -72
  350. data/lib/openc3/topics/telemetry_reduced_topics.rb +0 -80
  351. /data/templates/plugin/{LICENSE.txt → LICENSE.md} +0 -0
  352. /data/templates/widget/{LICENSE.txt → LICENSE.md} +0 -0
@@ -35,6 +35,7 @@ ID_ITEM:
35
35
  summary: Defines a telemetry item in the current telemetry packet.
36
36
  Note, packets defined without one or more ID_ITEMs are "catch-all" packets which
37
37
  will match all incoming data. Normally this is the job of the UNKNOWN packet.
38
+ A warning will be generated for packets without ID_ITEMs unless the CATCHALL keyword is used.
38
39
  example: ID_ITEM PKTID 112 16 UINT 1 "Packet ID which must be 1"
39
40
  parameters:
40
41
  - name: Name
@@ -271,6 +272,11 @@ IGNORE_OVERLAP:
271
272
  description: Packet items which overlap normally generate a warning unless each individual item has the OVERLAP keyword.
272
273
  This ignores overlaps across the entire packet.
273
274
  since: 5.16.0
275
+ CATCHALL:
276
+ summary: Marks this packet as an intentional catch-all packet
277
+ description: Suppresses the warning that is normally generated for packets defined without ID_ITEMs.
278
+ Use this when a packet is intentionally designed to match all incoming data that doesn't match other packets.
279
+ since: 7.0.0
274
280
  VIRTUAL:
275
281
  summary: Marks this packet as virtual and not participating in identification
276
282
  description: Used for packet definitions that can be used as structures for items with a given packet.
@@ -274,10 +274,10 @@ Telemetry Widgets:
274
274
  - name: Value type
275
275
  required: false
276
276
  description: The type of the value to display. Default is CONVERTED.
277
- values: <%= %w(RAW CONVERTED FORMATTED WITH_UNITS) %>
277
+ values: <%= %w(RAW CONVERTED FORMATTED) %>
278
278
  example: |
279
279
  ARRAY INST HEALTH_STATUS ARY 250 80 "0x%x" 6 FORMATTED
280
- ARRAY INST HEALTH_STATUS ARY2 200 100 nil 4 WITH_UNITS
280
+ ARRAY INST HEALTH_STATUS ARY2 200 100 nil 4 FORMATTED
281
281
  ARRAYPLOT:
282
282
  summary: Plot an array of values.
283
283
  description:
@@ -356,7 +356,7 @@ Telemetry Widgets:
356
356
  - name: Value type
357
357
  required: false
358
358
  description: The type of the value to display. Default is CONVERTED.
359
- values: <%= %w(RAW CONVERTED FORMATTED WITH_UNITS) %>
359
+ values: <%= %w(RAW CONVERTED FORMATTED) %>
360
360
  example: |
361
361
  BLOCK INST IMAGE IMAGE 620 200 "%02X" 4 4 "0x%08X:"
362
362
  # FORMATFONTVALUE:
@@ -386,7 +386,7 @@ Telemetry Widgets:
386
386
  # - name: Value type
387
387
  # required: false
388
388
  # description: The type of the value to display. Default is CONVERTED.
389
- # values: <%= %w(RAW CONVERTED FORMATTED WITH_UNITS) %>
389
+ # values: <%= %w(RAW CONVERTED FORMATTED) %>
390
390
  # - name: Number of characters
391
391
  # required: false
392
392
  # description: The number of characters wide to make the value box (default = 12)
@@ -429,7 +429,7 @@ Telemetry Widgets:
429
429
  - name: Value type
430
430
  required: false
431
431
  description: The type of the value to display. Default is CONVERTED.
432
- values: <%= %w(RAW CONVERTED FORMATTED WITH_UNITS) %>
432
+ values: <%= %w(RAW CONVERTED FORMATTED) %>
433
433
  - name: Number of characters
434
434
  required: false
435
435
  description: The number of characters wide to make the value box (default = 12)
@@ -456,7 +456,7 @@ Telemetry Widgets:
456
456
  - name: Value type
457
457
  required: false
458
458
  description: The type of the value to display. Default is CONVERTED.
459
- values: <%= %w(RAW CONVERTED FORMATTED WITH_UNITS) %>
459
+ values: <%= %w(RAW CONVERTED FORMATTED) %>
460
460
  - name: Width
461
461
  required: false
462
462
  description: Width of the LED circle (default = 15)
@@ -516,7 +516,7 @@ Telemetry Widgets:
516
516
  - name: Value type
517
517
  required: false
518
518
  description: The type of the value to display. Default is CONVERTED.
519
- values: <%= %w(RAW CONVERTED FORMATTED WITH_UNITS) %>
519
+ values: <%= %w(RAW CONVERTED FORMATTED) %>
520
520
  example: |
521
521
  LABELPROGRESSBAR INST ADCS POSPROGRESS 2 200 RAW
522
522
  LABELPROGRESSBAR INST ADCS POSPROGRESS
@@ -538,7 +538,7 @@ Telemetry Widgets:
538
538
  - name: Value type
539
539
  required: false
540
540
  description: The type of the value to display. Default is CONVERTED.
541
- values: <%= %w(RAW CONVERTED FORMATTED WITH_UNITS) %>
541
+ values: <%= %w(RAW CONVERTED FORMATTED) %>
542
542
  - name: Number of characters
543
543
  required: false
544
544
  description: The number of characters wide to make the value box (default = 12)
@@ -570,7 +570,7 @@ Telemetry Widgets:
570
570
  - name: Value type
571
571
  required: false
572
572
  description: The type of the value to display. Default is CONVERTED.
573
- values: <%= %w(RAW CONVERTED FORMATTED WITH_UNITS) %>
573
+ values: <%= %w(RAW CONVERTED FORMATTED) %>
574
574
  - name: Number of characters
575
575
  required: false
576
576
  description: The number of characters wide to make the value box (default = 12)
@@ -601,7 +601,7 @@ Telemetry Widgets:
601
601
  # - name: Value type
602
602
  # required: false
603
603
  # description: The type of the value to display. Default is CONVERTED.
604
- # values: <%= %w(RAW CONVERTED FORMATTED WITH_UNITS) %>
604
+ # values: <%= %w(RAW CONVERTED FORMATTED) %>
605
605
  # - name: Number of characters
606
606
  # required: false
607
607
  # description: The number of characters wide to make the value box (default = 12)
@@ -624,7 +624,7 @@ Telemetry Widgets:
624
624
  - name: Value type
625
625
  required: false
626
626
  description: The type of the value to display. Default is CONVERTED.
627
- values: <%= %w(RAW CONVERTED FORMATTED WITH_UNITS) %>
627
+ values: <%= %w(RAW CONVERTED FORMATTED) %>
628
628
  - name: Number of characters
629
629
  required: false
630
630
  description: The number of characters wide to make the value box (default = 12)
@@ -650,7 +650,7 @@ Telemetry Widgets:
650
650
  - name: Value type
651
651
  required: false
652
652
  description: The type of the value to display. Default is CONVERTED.
653
- values: <%= %w(RAW CONVERTED FORMATTED WITH_UNITS) %>
653
+ values: <%= %w(RAW CONVERTED FORMATTED) %>
654
654
  - name: Number of characters
655
655
  required: false
656
656
  description: The number of characters wide to make the value box (default = 12)
@@ -688,7 +688,7 @@ Telemetry Widgets:
688
688
  - name: Value type
689
689
  required: false
690
690
  description: The type of the value to display. Default is CONVERTED.
691
- values: <%= %w(RAW CONVERTED FORMATTED WITH_UNITS) %>
691
+ values: <%= %w(RAW CONVERTED FORMATTED) %>
692
692
  - name: Number of characters
693
693
  required: false
694
694
  description: The number of characters wide to make the value box (default = 12)
@@ -733,7 +733,7 @@ Telemetry Widgets:
733
733
  # - name: Value type
734
734
  # required: false
735
735
  # description: The type of the value to display. Default is CONVERTED.
736
- # values: <%= %w(RAW CONVERTED FORMATTED WITH_UNITS) %>
736
+ # values: <%= %w(RAW CONVERTED FORMATTED) %>
737
737
  # - name: Number of characters
738
738
  # required: false
739
739
  # description: The number of characters wide to make the value box (default = 12)
@@ -773,7 +773,7 @@ Telemetry Widgets:
773
773
  - name: Value type
774
774
  required: false
775
775
  description: The type of the value to display. Default is CONVERTED.
776
- values: <%= %w(RAW CONVERTED FORMATTED WITH_UNITS) %>
776
+ values: <%= %w(RAW CONVERTED FORMATTED) %>
777
777
  - name: Width
778
778
  required: false
779
779
  description: Width of the LED circle (default = 20)
@@ -817,7 +817,7 @@ Telemetry Widgets:
817
817
  - name: Value type
818
818
  required: false
819
819
  description: The type of the value to display. Default is CONVERTED.
820
- values: <%= %w(RAW CONVERTED FORMATTED WITH_UNITS) %>
820
+ values: <%= %w(RAW CONVERTED FORMATTED) %>
821
821
  - name: Width
822
822
  required: false
823
823
  description: Width of the range bar (default = 160)
@@ -847,7 +847,7 @@ Telemetry Widgets:
847
847
  - name: Value type
848
848
  required: false
849
849
  description: The type of the value to display. Default is CONVERTED.
850
- values: <%= %w(RAW CONVERTED FORMATTED WITH_UNITS) %>
850
+ values: <%= %w(RAW CONVERTED FORMATTED) %>
851
851
  - name: Width
852
852
  required: false
853
853
  description: Width of the range bar (default = 160)
@@ -878,7 +878,7 @@ Telemetry Widgets:
878
878
  - name: Value type
879
879
  required: false
880
880
  description: The type of the value to display. Default is CONVERTED.
881
- values: <%= %w(RAW CONVERTED FORMATTED WITH_UNITS) %>
881
+ values: <%= %w(RAW CONVERTED FORMATTED) %>
882
882
  - name: Radius
883
883
  required: false
884
884
  description: Radius of the circle (default is 10)
@@ -912,7 +912,7 @@ Telemetry Widgets:
912
912
  - name: Value type
913
913
  required: false
914
914
  description: The type of the value to display. Default is CONVERTED.
915
- values: <%= %w(RAW CONVERTED FORMATTED WITH_UNITS) %>
915
+ values: <%= %w(RAW CONVERTED FORMATTED) %>
916
916
  - name: Number of characters
917
917
  required: false
918
918
  description: The number of characters wide to make the value box (default = 12)
@@ -938,7 +938,7 @@ Telemetry Widgets:
938
938
  - name: Value type
939
939
  required: false
940
940
  description: The type of the value to display. Default is CONVERTED.
941
- values: <%= %w(RAW CONVERTED FORMATTED WITH_UNITS) %>
941
+ values: <%= %w(RAW CONVERTED FORMATTED) %>
942
942
  - name: Number of characters
943
943
  required: false
944
944
  description: The number of characters wide to make the value box (default = 8)
@@ -976,7 +976,7 @@ Telemetry Widgets:
976
976
  - name: Value type
977
977
  required: false
978
978
  description: The type of the value to display. Default is CONVERTED.
979
- values: <%= %w(RAW CONVERTED FORMATTED WITH_UNITS) %>
979
+ values: <%= %w(RAW CONVERTED FORMATTED) %>
980
980
  - name: Number of characters
981
981
  required: false
982
982
  description: The number of characters wide to make the value box (default = 12)
@@ -1021,7 +1021,7 @@ Telemetry Widgets:
1021
1021
  # - name: Value type
1022
1022
  # required: false
1023
1023
  # description: The type of the value to display. Default is CONVERTED.
1024
- # values: <%= %w(RAW CONVERTED FORMATTED WITH_UNITS) %>
1024
+ # values: <%= %w(RAW CONVERTED FORMATTED) %>
1025
1025
  # - name: Number of characters
1026
1026
  # required: false
1027
1027
  # description: The number of characters wide to make the value box (default = 12)
@@ -1121,7 +1121,7 @@ Telemetry Widgets:
1121
1121
  - name: Value type
1122
1122
  required: false
1123
1123
  description: The type of the value to display. Default is CONVERTED.
1124
- values: <%= %w(RAW CONVERTED FORMATTED WITH_UNITS) %>
1124
+ values: <%= %w(RAW CONVERTED FORMATTED) %>
1125
1125
  example: |
1126
1126
  PROGRESSBAR INST ADCS POSPROGRESS 0.5 200
1127
1127
  PROGRESSBAR INST ADCS POSPROGRESS
@@ -1155,7 +1155,7 @@ Telemetry Widgets:
1155
1155
  - name: Value type
1156
1156
  required: false
1157
1157
  description: The type of the value to display. Default is CONVERTED.
1158
- values: <%= %w(RAW CONVERTED FORMATTED WITH_UNITS) %>
1158
+ values: <%= %w(RAW CONVERTED FORMATTED) %>
1159
1159
  - name: Width
1160
1160
  required: false
1161
1161
  description: Width of the range bar (default = 100)
@@ -1196,7 +1196,7 @@ Telemetry Widgets:
1196
1196
  # - name: Value type
1197
1197
  # required: false
1198
1198
  # description: The type of the value to display. Default is CONVERTED.
1199
- # values: <%= %w(RAW CONVERTED FORMATTED WITH_UNITS) %>
1199
+ # values: <%= %w(RAW CONVERTED FORMATTED) %>
1200
1200
  # - name: Width
1201
1201
  # required: false
1202
1202
  # description: Width of the range bar (default = 30)
@@ -1313,7 +1313,7 @@ Telemetry Widgets:
1313
1313
  # - name: Value type
1314
1314
  # required: false
1315
1315
  # description: The type of the value to display. Default is CONVERTED.
1316
- # values: <%= %w(RAW CONVERTED FORMATTED WITH_UNITS) %>
1316
+ # values: <%= %w(RAW CONVERTED FORMATTED) %>
1317
1317
  # - name: Trend Seconds
1318
1318
  # required: false
1319
1319
  # description: The number of seconds in the past to display the trend value (default = 60)
@@ -1349,7 +1349,7 @@ Telemetry Widgets:
1349
1349
  # - name: Value type
1350
1350
  # required: false
1351
1351
  # description: The type of the value to display. Default is CONVERTED.
1352
- # values: <%= %w(RAW CONVERTED FORMATTED WITH_UNITS) %>
1352
+ # values: <%= %w(RAW CONVERTED FORMATTED) %>
1353
1353
  # - name: Trend Seconds
1354
1354
  # required: false
1355
1355
  # description: The number of seconds in the past to display the trend value (default = 60)
@@ -1391,7 +1391,7 @@ Telemetry Widgets:
1391
1391
  - name: Value type
1392
1392
  required: false
1393
1393
  description: The type of the value to display. Default is CONVERTED.
1394
- values: <%= %w(RAW CONVERTED FORMATTED WITH_UNITS) %>
1394
+ values: <%= %w(RAW CONVERTED FORMATTED) %>
1395
1395
  - name: Number of characters
1396
1396
  required: false
1397
1397
  description: The number of characters wide to make the value box (default = 12)
@@ -1642,11 +1642,11 @@ Canvas Widgets:
1642
1642
  - name: Value type
1643
1643
  required: false
1644
1644
  description: The type of the value to display. Default is CONVERTED.
1645
- values: <%= %w(RAW CONVERTED FORMATTED WITH_UNITS) %>
1645
+ values: <%= %w(RAW CONVERTED FORMATTED) %>
1646
1646
  example: |
1647
1647
  CANVAS 200 100
1648
1648
  CANVASLABELVALUE INST HEALTH_STATUS TEMP1 5 34 12 red
1649
- CANVASLABELVALUE INST HEALTH_STATUS TEMP2 5 70 10 blue WITH_UNITS
1649
+ CANVASLABELVALUE INST HEALTH_STATUS TEMP2 5 70 10 blue FORMATTED
1650
1650
  END
1651
1651
  CANVASIMAGE:
1652
1652
  summary: Displays an image on the canvas
@@ -1702,7 +1702,7 @@ Canvas Widgets:
1702
1702
  - name: Value type
1703
1703
  required: true
1704
1704
  description: The type of the value to display
1705
- values: <%= %w(RAW CONVERTED FORMATTED WITH_UNITS) %>
1705
+ values: <%= %w(RAW CONVERTED FORMATTED) %>
1706
1706
  - name: Default image filename
1707
1707
  required: true
1708
1708
  description: The default image to display. The file must be in the targets/TARGET/public directory.
@@ -1835,7 +1835,7 @@ Canvas Widgets:
1835
1835
  - name: Value type
1836
1836
  required: false
1837
1837
  description: The type of the value to display. Default is CONVERTED
1838
- values: <%= %w(RAW CONVERTED FORMATTED WITH_UNITS) %>
1838
+ values: <%= %w(RAW CONVERTED FORMATTED) %>
1839
1839
  example: |
1840
1840
  CANVAS 120 50
1841
1841
  CANVASLABELVALUE INST HEALTH_STATUS GROUND1STATUS 0 12 12 black
@@ -2,23 +2,18 @@
2
2
  # Copyright 2022 Ball Aerospace & Technologies Corp.
3
3
  # All Rights Reserved.
4
4
  #
5
- # This program is free software; you can modify and/or redistribute it
6
- # under the terms of the GNU Affero General Public License
7
- # as published by the Free Software Foundation; version 3 with
8
- # attribution addendums as found in the LICENSE.txt
9
- #
10
5
  # This program is distributed in the hope that it will be useful,
11
6
  # but WITHOUT ANY WARRANTY; without even the implied warranty of
12
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
- # GNU Affero General Public License for more details.
7
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
8
+ # See LICENSE.md for more details.
14
9
  */
15
10
 
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
- # This file may also be used under the terms of a commercial license
16
+ # This file may also be used under the terms of a commercial license
22
17
  # if purchased from OpenC3, Inc.
23
18
  */
24
19
 
@@ -2,23 +2,18 @@
2
2
  # Copyright 2022 Ball Aerospace & Technologies Corp.
3
3
  # All Rights Reserved.
4
4
  #
5
- # This program is free software; you can modify and/or redistribute it
6
- # under the terms of the GNU Affero General Public License
7
- # as published by the Free Software Foundation; version 3 with
8
- # attribution addendums as found in the LICENSE.txt
9
- #
10
5
  # This program is distributed in the hope that it will be useful,
11
6
  # but WITHOUT ANY WARRANTY; without even the implied warranty of
12
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
- # GNU Affero General Public License for more details.
7
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
8
+ # See LICENSE.md for more details.
14
9
  */
15
10
 
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
- # This file may also be used under the terms of a commercial license
16
+ # This file may also be used under the terms of a commercial license
22
17
  # if purchased from OpenC3, Inc.
23
18
  */
24
19
 
@@ -1,16 +1,11 @@
1
1
  /*
2
- # Copyright 2024 OpenC3, Inc.
2
+ # Copyright 2026 OpenC3, Inc.
3
3
  # All Rights Reserved.
4
4
  #
5
- # This program is free software; you can modify and/or redistribute it
6
- # under the terms of the GNU Affero General Public License
7
- # as published by the Free Software Foundation; version 3 with
8
- # attribution addendums as found in the LICENSE.txt
9
- #
10
5
  # This program is distributed in the hope that it will be useful,
11
6
  # but WITHOUT ANY WARRANTY; without even the implied warranty of
12
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
- # GNU Affero General Public License for more details.
7
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
8
+ # See LICENSE.md for more details.
14
9
  #
15
10
  # This file may also be used under the terms of a commercial license
16
11
  # if purchased from OpenC3, Inc.
@@ -2,20 +2,15 @@
2
2
  # Copyright 2022 Ball Aerospace & Technologies Corp.
3
3
  # All Rights Reserved.
4
4
  #
5
- # This program is free software; you can modify and/or redistribute it
6
- # under the terms of the GNU Affero General Public License
7
- # as published by the Free Software Foundation; version 3 with
8
- # attribution addendums as found in the LICENSE.txt
9
- #
10
5
  # This program is distributed in the hope that it will be useful,
11
6
  # but WITHOUT ANY WARRANTY; without even the implied warranty of
12
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
- # GNU Affero General Public License for more details.
7
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
8
+ # See LICENSE.md for more details.
14
9
  */
15
10
 
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
@@ -33,6 +28,7 @@ static ID id_ivar_line_number = 0;
33
28
  static ID id_ivar_keyword = 0;
34
29
  static ID id_ivar_parameters = 0;
35
30
  static ID id_ivar_line = 0;
31
+ static ID id_ivar_preserve_lines = 0;
36
32
  static ID id_method_readline = 0;
37
33
  static ID id_method_close = 0;
38
34
  static ID id_method_pos = 0;
@@ -42,6 +38,7 @@ static ID id_method_strip = 0;
42
38
  static ID id_method_to_s = 0;
43
39
  static ID id_method_upcase = 0;
44
40
  static ID id_method_parse_errors = 0;
41
+ static ID id_method_chomp_exclamation = 0;
45
42
 
46
43
  /*
47
44
  * Removes quotes from the given string if present.
@@ -131,53 +128,61 @@ static VALUE parse_loop(VALUE self, VALUE io, VALUE yield_non_keyword_lines, VAL
131
128
  rb_set_errinfo(Qnil);
132
129
  break;
133
130
  }
134
- line = rb_funcall(line, id_method_strip, 0);
135
- // Ensure the line length is not 0
136
- if (RSTRING_LEN(line) == 0) {
137
- continue;
138
- }
131
+ line = rb_funcall(line, id_method_chomp_exclamation, 0);
139
132
 
140
- if (RTEST(string_concat))
141
- {
142
- /* Skip comment lines after a string concat */
143
- if (RSTRING_PTR(line)[0] == '#')
144
- {
133
+ if (!RTEST(rb_ivar_get(self, id_ivar_preserve_lines))) {
134
+ line = rb_funcall(line, id_method_strip, 0);
135
+
136
+ // Ensure the line length is not 0
137
+ if (RSTRING_LEN(line) == 0) {
145
138
  continue;
146
139
  }
147
- /* Remove the opening quote if we're continuing the line */
148
- line = rb_str_new(RSTRING_PTR(line) + 1, RSTRING_LEN(line) - 1);
149
- }
150
140
 
151
- /* Check for string continuation */
152
- if ((RSTRING_PTR(line)[RSTRING_LEN(line) - 1] == '+') ||
153
- (RSTRING_PTR(line)[RSTRING_LEN(line) - 1] == '\\'))
154
- {
155
- int newline = 0;
156
- if (RSTRING_PTR(line)[RSTRING_LEN(line) - 1] == '+')
141
+ if (RTEST(string_concat))
157
142
  {
158
- newline = 1;
143
+ /* Skip comment lines after a string concat */
144
+ if (RSTRING_PTR(line)[0] == '#')
145
+ {
146
+ continue;
147
+ }
148
+ /* Remove the opening quote if we're continuing the line */
149
+ line = rb_str_new(RSTRING_PTR(line) + 1, RSTRING_LEN(line) - 1);
159
150
  }
160
- rb_str_resize(line, RSTRING_LEN(line) - 1);
161
- line = rb_funcall(line, id_method_strip, 0);
162
- rb_str_append(ivar_line, line);
163
- rb_str_resize(ivar_line, RSTRING_LEN(ivar_line) - 1);
164
- if (newline == 1)
151
+
152
+ /* Check for string continuation */
153
+ if ((RSTRING_PTR(line)[RSTRING_LEN(line) - 1] == '+') ||
154
+ (RSTRING_PTR(line)[RSTRING_LEN(line) - 1] == '\\'))
165
155
  {
166
- rb_str_cat2(ivar_line, "\n");
156
+ int newline = 0;
157
+ if (RSTRING_PTR(line)[RSTRING_LEN(line) - 1] == '+')
158
+ {
159
+ newline = 1;
160
+ }
161
+ rb_str_resize(line, RSTRING_LEN(line) - 1);
162
+ line = rb_funcall(line, id_method_strip, 0);
163
+ rb_str_append(ivar_line, line);
164
+ rb_str_resize(ivar_line, RSTRING_LEN(ivar_line) - 1);
165
+ if (newline == 1)
166
+ {
167
+ rb_str_cat2(ivar_line, "\n");
168
+ }
169
+ rb_ivar_set(self, id_ivar_line, ivar_line);
170
+ string_concat = Qtrue;
171
+ continue;
172
+ }
173
+ if (RSTRING_PTR(line)[RSTRING_LEN(line) - 1] == '&')
174
+ {
175
+ rb_str_append(ivar_line, line);
176
+ rb_str_resize(ivar_line, RSTRING_LEN(ivar_line) - 1);
177
+ rb_ivar_set(self, id_ivar_line, ivar_line);
178
+ continue;
167
179
  }
168
- rb_ivar_set(self, id_ivar_line, ivar_line);
169
- string_concat = Qtrue;
170
- continue;
171
- }
172
- if (RSTRING_PTR(line)[RSTRING_LEN(line) - 1] == '&')
173
- {
174
180
  rb_str_append(ivar_line, line);
175
- rb_str_resize(ivar_line, RSTRING_LEN(ivar_line) - 1);
176
181
  rb_ivar_set(self, id_ivar_line, ivar_line);
177
- continue;
182
+ } else {
183
+ ivar_line = line;
184
+ rb_ivar_set(self, id_ivar_line, ivar_line);
178
185
  }
179
- rb_str_append(ivar_line, line);
180
- rb_ivar_set(self, id_ivar_line, ivar_line);
181
186
  string_concat = Qfalse;
182
187
 
183
188
  data = rb_funcall(ivar_line, id_method_scan, 1, rx);
@@ -284,6 +289,7 @@ void Init_config_parser(void)
284
289
  id_ivar_keyword = rb_intern("@keyword");
285
290
  id_ivar_parameters = rb_intern("@parameters");
286
291
  id_ivar_line = rb_intern("@line");
292
+ id_ivar_preserve_lines = rb_intern("@preserve_lines");
287
293
  id_method_readline = rb_intern("readline");
288
294
  id_method_close = rb_intern("close");
289
295
  id_method_pos = rb_intern("pos");
@@ -293,6 +299,7 @@ void Init_config_parser(void)
293
299
  id_method_to_s = rb_intern("to_s");
294
300
  id_method_upcase = rb_intern("upcase");
295
301
  id_method_parse_errors = rb_intern("parse_errors");
302
+ id_method_chomp_exclamation = rb_intern("chomp!");
296
303
 
297
304
  mOpenC3 = rb_define_module("OpenC3");
298
305
 
@@ -2,20 +2,15 @@
2
2
  # Copyright 2022 Ball Aerospace & Technologies Corp.
3
3
  # All Rights Reserved.
4
4
  #
5
- # This program is free software; you can modify and/or redistribute it
6
- # under the terms of the GNU Affero General Public License
7
- # as published by the Free Software Foundation; version 3 with
8
- # attribution addendums as found in the LICENSE.txt
9
- #
10
5
  # This program is distributed in the hope that it will be useful,
11
6
  # but WITHOUT ANY WARRANTY; without even the implied warranty of
12
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
- # GNU Affero General Public License for more details.
7
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
8
+ # See LICENSE.md for more details.
14
9
  */
15
10
 
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
@@ -2,23 +2,18 @@
2
2
  # Copyright 2022 Ball Aerospace & Technologies Corp.
3
3
  # All Rights Reserved.
4
4
  #
5
- # This program is free software; you can modify and/or redistribute it
6
- # under the terms of the GNU Affero General Public License
7
- # as published by the Free Software Foundation; version 3 with
8
- # attribution addendums as found in the LICENSE.txt
9
- #
10
5
  # This program is distributed in the hope that it will be useful,
11
6
  # but WITHOUT ANY WARRANTY; without even the implied warranty of
12
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
- # GNU Affero General Public License for more details.
7
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
8
+ # See LICENSE.md for more details.
14
9
  */
15
10
 
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
- # This file may also be used under the terms of a commercial license
16
+ # This file may also be used under the terms of a commercial license
22
17
  # if purchased from OpenC3, Inc.
23
18
  */
24
19
 
@@ -2,20 +2,15 @@
2
2
  # Copyright 2022 Ball Aerospace & Technologies Corp.
3
3
  # All Rights Reserved.
4
4
  #
5
- # This program is free software; you can modify and/or redistribute it
6
- # under the terms of the GNU Affero General Public License
7
- # as published by the Free Software Foundation; version 3 with
8
- # attribution addendums as found in the LICENSE.txt
9
- #
10
5
  # This program is distributed in the hope that it will be useful,
11
6
  # but WITHOUT ANY WARRANTY; without even the implied warranty of
12
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
- # GNU Affero General Public License for more details.
7
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
8
+ # See LICENSE.md for more details.
14
9
  */
15
10
 
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
@@ -67,6 +62,7 @@ static ID id_ivar_restricted = 0;
67
62
  static ID id_ivar_subpacket = 0;
68
63
  static ID id_ivar_subpacketizer = 0;
69
64
  static ID id_ivar_obfuscated_items = 0;
65
+ static ID id_ivar_catchall = 0;
70
66
 
71
67
  /* Sets the target name this packet is associated with. Unidentified packets
72
68
  * will have target name set to nil.
@@ -142,7 +138,7 @@ static VALUE received_time_equals(VALUE self, VALUE received_time)
142
138
  {
143
139
  rb_raise(rb_eArgError, "received_time must be a Time but is a %s", RSTRING_PTR(rb_funcall(rb_funcall(received_time, id_method_class, 0), id_method_to_s, 0)));
144
140
  }
145
- rb_ivar_set(self, id_ivar_received_time, rb_funcall(rb_funcall(received_time, id_method_clone, 0), id_method_freeze, 0));
141
+ rb_ivar_set(self, id_ivar_received_time, received_time);
146
142
  }
147
143
  else
148
144
  {
@@ -297,6 +293,7 @@ static VALUE packet_initialize(int argc, VALUE *argv, VALUE self)
297
293
  rb_ivar_set(self, id_ivar_subpacket, Qfalse);
298
294
  rb_ivar_set(self, id_ivar_subpacketizer, Qnil);
299
295
  rb_ivar_set(self, id_ivar_obfuscated_items, Qnil);
296
+ rb_ivar_set(self, id_ivar_catchall, Qfalse);
300
297
  return self;
301
298
  }
302
299
 
@@ -344,6 +341,7 @@ void Init_packet(void)
344
341
  id_ivar_subpacket = rb_intern("@subpacket");
345
342
  id_ivar_subpacketizer = rb_intern("@subpacketizer");
346
343
  id_ivar_obfuscated_items = rb_intern("@obfuscated_items");
344
+ id_ivar_catchall = rb_intern("@catchall");
347
345
 
348
346
  cPacket = rb_define_class_under(mOpenC3, "Packet", cStructure);
349
347
  rb_define_method(cPacket, "initialize", packet_initialize, -1);
@@ -2,20 +2,15 @@
2
2
  # Copyright 2022 Ball Aerospace & Technologies Corp.
3
3
  # All Rights Reserved.
4
4
  #
5
- # This program is free software; you can modify and/or redistribute it
6
- # under the terms of the GNU Affero General Public License
7
- # as published by the Free Software Foundation; version 3 with
8
- # attribution addendums as found in the LICENSE.txt
9
- #
10
5
  # This program is distributed in the hope that it will be useful,
11
6
  # but WITHOUT ANY WARRANTY; without even the implied warranty of
12
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
- # GNU Affero General Public License for more details.
7
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
8
+ # See LICENSE.md for more details.
14
9
  */
15
10
 
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