-
v14.0.10fc469ae · ·
Bugfixes ======== - Fix a bug in the modem sim that would zero-pad bad frames when partial packets were received. (!165)
-
v14.0.0f0baa081 · ·
Breaking Changes ================ - `GetNextQueuedMessageResponse` (part of `GetNextQueuedMessage.srv`) has a new field: `string[] msg_tags`. (!160) - `PingModem.srv` and `PingTransponders.srv` timeout field is now that same: `timeout_sec` and logic has been updated across package (!158) - `Tdma*Status.msg` has the following fields added to support QoS tags (!158): - `minimum_priority`: will be value set in tag for [this] slot - `time_to_next_dedicated_slot`: time to next un-tagged / un-restricted slot where you are guarenteed to TX if you have _any_ data. New Features / Improvements =========================== - `GetNextQueuedMessageResponse` new field: `string[] msg_tags`. (!160) - `string[] msg_tags` are the tags for the message returned in the response. - since dynamic_queues are not handled by the `message_queue_node` directly, we now use this field to validate responses, and invalid responses are ignored. - added `deserialize_anymsg()` to `mac_utils.py` (!160) - changed `toggle_software_mute()` in `tdma_advanced_node` to a switch of type `std_msgs/Bool` and updated logic in `mac_switcher. (!158) - `tdma*` can now calculate `time_to_next_dedicated_slot` (!158) Bugfixes ======== - `TagConfig` was not setting `self.exclude_queue_ids`. it was setting `set.exclude_list` (typo!) and no other nodes were using that attr. - Fixes to message queue (!160): - dynamic queue response tag validation - was not setting `minimum_priority` when creating `tag_config` instance. - was not passing `minimum_priority` to dynamic_queue_query call. - set software_mute correctly in `tdma_advanced` (!161, #46)
-
-
-
-
-
v11.1.0931f8a97 · ·
New Features / Improvements =========================== - `tdma_advanced_node` can now pass an empty list for `~comms_slots`. When empty, (`comms_slots=""`) this tells `tdma_advanced_node` not to send comms packets in _any_ slots. Useful for a ping only tdma MAC config Bugfixes ======== - `acomms_driver_node`: changed minimum ping_reply_timeout from 5 seconds to 1. - `modem_sim_node`: changed minimum ping_reply_timeout from 5 seconds to 1. - `tdma_advanced_node` bug fix for empty `~comms_slots`.
-
v11.0.00912de93 · ·
Breaking Changes ================ - Removed legacy link-layer fragmentation (!142) - This functionality is now provided by `ros_acomms_net`, or by using dynamic queues to implement a new transport layer - Removes `EncodedAck` and `FragmentationStatus` messages - Removes associated unit tests - Removes the `allow_fragmentation` parameter from message codecs New Features / Improvements =========================== - Add acoustic range features, including node that publishes acoustic range automatically for pings (with sim and hardware support) (!144) - New message `AcousticRange.msg` - New node `acoustic_range_node.py`: Generates a range for every ping reply (modem ping OR remus transponder ping) using OWTT and `~sound_speed`. Publishes `AcousticRange.msg` on `~acoustic_range_topic` (`default=acoustic_range`). - Logging improvements (!144) - Lowered the log verbosity for `tdma_advanced` - Added mechanism to `tdma_node` for caching the rosnode log level during init (then available to subclasses) - New `mac_switcher` node to handle switching among multiple MAC nodes using software mute (!145, !146, !147) - New node `MacSwitcherNode` - New message `MacSwitcherStatus.msg` - Includes "dead man switch" to revert control to "default" MAC node (!146) - Example launch file: `ros_acomms/ros_acomms_tests/launch/test_mac_switcher.launch`. Bugfixes ======== - `modem_sim_node.py`: modem location topic name now uses the rosparam `~modem_location_topic`. It was hard coded to `location`. (!144)
-
v10.1.0fe1ab8ca · ·
New Features / Improvements =========================== - `tdma_node.py` manual_transmit feature can now take a list of modem commands (newline delimited string). (!136) - when a message is published on `tdma/nmea_to_modem` and data looks like: `"$CCCFG,BND,0\n$CCCMD,RLS,2,1,0,0,\n"`, the manual transmit object will split the nmea sentences (on newlines) and publish each of them (allows users to send config commands ahead of a transmitting command) - Add a service to query SRC address from modem (or modem sim). (!133) - Use this in `message_queue_node` to get the modem SRC address if it isn't passed as a parameter. (The SRC address may be used by packet codec plugins when encoding messages). - Adds `query_modem_param` service to `AcommsDriverNode` that queries uModem for any single config parameter or group of config parameters. (!134, !135) Bugfixes ======== - Fix a bug where missing SST values occasionally broke LinkLayerFeedback messaging (hotfix to 10.0.1 in !141, !132) - Fix conditions where packet codec is given more bits than it asked for (hotfix to 10.0.1 in !140, !139) - Add error handling when a dynamic queue returns more bits than we asked for, so it no longer breaks the packet codec - Improved logging. - Fixed a bug in `link_layer_feedback_node.py` that returned messages larger than requested. - Fixed a (probably) harmless bug with a mutable default argument in `message_queue_node.py` - `get_remaining_time_to_slot()` now correctly handles case when `{slot}` passed is wrapped around the cycle from the `current_slot`. (!138) - CI testing: - `test_tdma_extended.py` now `test_always_send_test_data_with_miniframes()` allows 1 packet (and it must be the first packet) to not fail the test if it's all zeros. (!137)
-
v10.0.15fcaadee · ·
Bugfixes ======== - Backport: Fix a bug where missing SST values occasionally broke LinkLayerFeedback messaging (!141, !132) - Backport: Fix conditions where packet codec is given more bits than it asked for (!140, !139) - Add error handling when a dynamic queue returns more bits than we asked for, so it no longer breaks the packet codec - Improved logging. - Fixed a bug in `link_layer_feedback_node.py` that returned messages larger than requested. - Fixed a (probably) harmless bug with a mutable default argument in `message_queue_node.py`
-
v10.0.0790ea58b · ·
Breaking Changes ================ - adds new field to `ros_acomms_msgs/SoundSpeedProfile`: `water_depth`. !130 - breaking changes in `tdma*`: - `TdmaStatus` message added field `slot_duration_seconds`. !123 - __tdma__ slots can take a range for input. The data type is also upgraded from `int8` to `uint16`. Can now support up to __65535__ slots. !129 - `TdmaStatus`, `TdmaScriptedStatus`, `TdmaSlottedAlohaStatus` and, `TdmaAdvancedStatus` have been updated: - `int8 current_slot` now: `uint16` - `int8 num_slots` now: `uint16` (*)does not apply to `TdmaStatus` which does not have this field) - `TdmaAdvancedStatus` message has new fields: !129 - `string[] this_cycle_modem_commands`: list of modem commands send this test cycle - `string[] last_cycle_modem_commands`: list of modem commands sent last test cycle - removed the unused dynamic reconfigure params from `tdma_advanced` (also effects `tdma_scripted` and `tdma_slotted_aloha` since they use `tdma_advanced`s' dynamic reconfigure method on top of their own). - `tdma_node` will no longer run with a configuration that does not allow transmit because of padding and self imposed guard time. If intentional, this forces users to make use of `tdma_advanced`'s `software_mute` feature (this is the tested and maintained code path for software mute with TDMA). If unintentional, this draws attention to the configuration mistake immediately. !123 - `tdma_scripted` will not transmit during its very first active slot after enabling a test plan (or when it is reloaded or changed with dynamic reconfigure). Burning the first slot means we can depend on the test plan order defined in the yaml file. !123 - changes to: `TdmaAdvancedStatus.msg`, `TdmaScriptedStatus.msg`, `TdmaSlottedAlohaStatus.msg`. Switching from nested message types for super class, to a flat message type. e.g., `we_are_active`, etc.. is now at the top level of these messages. Previously they were nested in the super classes type. !123 - `active_slots` changed field type from int8 to int8\[\]. - `nav_slots` is now a list type (int8\[\]) - `comms_slots` is now a list type (int8\[\]) - `time_to_next_active` in the context of `tdma_slotted_aloha` it means time to next own slot or aloha slot (whichever is closest) - `GetNextPacketData.srv` changed `min_priority` to `minimum_priority` to match other calls. !123 - `GetNextPacketData.srv` and `GetNextQueuedMessage.srv`, `minimum_priority` is type: `int8`. !123 - All instances of `minimum_priority` and `priority` fields are now type `int8`. !123 - Breaking changes in `ros_acomms_modeling`: - `sim_transmission_loss` node: Renamed `bellhop_arrivals` parameter to `use_bellhop_for_latency` for clarity. !125 New Features / Improvements =========================== - `tdma*` MAC nodes: - Added system in tdma super class (`manual_transmit_queue`) for sending modem NMEA messages manually to be queued by tdma and sent in active slot (in place of next packet) !117 - Added `rospy-yaml-include` parser to `tdma_scripted` for test plan parsing. (!115) - !115 now layering scripted dynamic reconfigure for controls related to cycling rates. - `tdma_scripted_node` now supports sending arbitrary NMEA modem commands. !129 - Adds the optional key `modem_commands` to a test block entry and the modem commands in the list will be published to `nmea_to_modem` before each transmit. Examples can be found in `ros_acomms_tests/launch/tdma_scripted_test_plan_modem_cmds.yaml`. -`active_slots`, `comms_slots`, `nav_slots` and, `aloha_slots` can be set with a range string (see notes) (!129) - New Node: `tdma_slotted_aloha` uses queue priority to gate traffic sent in the `aloha_slots`. (see notes) (!123) - New `DynamicReconfigure` parameters for `tdma_scripted` (overlaid on `tdma_advanced` `DynamicReconfigure`) !123 - `scripted_test_plan_enabled`, default True if `scripted_test_plan` yaml is passed - `scripted_test_plan_file`, filename for test plan yaml - New `DynamicReconfigure` parameters for `tdma_slotted_aloha` (overlaid on `tdma_advanced` `DynamicReconfigure`) !123 - `aloha_slot_priority` - `aloha_slots_`, trailing '\_' for this dynamic reconfigure param. This allows changing the `aloha_slots` after launch. - `tdma_slotted_aloha` now has `~aloha_slots = []` by default for test cases !121 - New test cases added: `test_tdma_extended.py` (!121), `test_tdma_scripted.py` (cases added: (!121), `test_tdma_slotted_aloha.py` (!118) - new features in `ros_acomms_modeling` for simualation: - Add utility to read SSPs from CSV files and use them in `sim_transmission_loss_node.py` (!119) - `sim_transmission_loss` sets depth in bellhop env on each ssp update when rosparam `~use_water_depth_from_ssp` is set to `True` (by default this is `False` to preserve the old behavior). (see notes) !130 - updates to modem sim system: !126 - added XST to `modem_sim` - more descriptive error messages, OWTT/latency and distance information - Ping replies that have timed out will now publish ping_reply on topic even though it does not have a transaction for it anymore. - added feature to handle partial packets (which can happen when `sim_packet_performance_node/fixed_frame_error_rate` \>0.0) - interpolates the frame_success masks to the size of the packet being processed, finds the first bad frame and clears the rest of the packet (like `acomms_driver_node.py` then publishes the truncated packet) - `sim_packet_performance.py` now populates `miniframe_success` in `SimPacketPerformanceResponse`, currently hard coded to succeed (only the dataframe rate is being passed to this service call at the the moment) - Bounds checking on platform locations in `sim_transmission_loss`: !125 - Added bounds checking on location inputs and print errors. - Automatically handle near-surface positions by clamping the minimum depth to 0.1m. - Handle 0 horizontal distance between modems (same lat/lon for both modems) - new features in `packet_dispatch`: - `packet_dispatch` handles empty packets and zero padded packets (only effects logging) !126 - Added error checking in codec config parser for multiple entries with the same ID. Logs an error message but doesn't change behavior otherwise !124 - Added hardware CI tests (using dual modem box) !114 Bugfixes ======== - sim_packets that are part of a ping transaction now get a shorter (and more realistic) 0.5s duration (!126) - `tdma_node`, `tdma_slotted_aloha_node` added more informative error messages. 477f2dd0 - `active_slots` was never allowed to be an empty list but, now the error is more clear and the condition is checked more explicitly. 477f2dd0 - if `active_slots` was previously set, tdma will keep the prior `active_slots` rather than raise an Exception (general M.O. only raise exc right away but once we have launched, do everything in our power to keep system up) - `tdma_scripted` initialization fixes !122 - #40 `tdma_scripted` will burn it's very first active slot IF there is an active test plan. This assures the rates/buffer sizes are cycled according to the test plan from the very first packet in the slot. - #40 `tdma_scripted` sets the parameters for the first transmit from the test plan rather than using values passed in launch for first TX - #40 when the test plan is toggled on from an off state (or it's re-read while running via dynamic reconf) the next active slot will be burned (in case the user toggled during an active slot. This keeps the code simple for handling this case and we won't activate a test plan mid slot) - CI pipeline now uses tag: `pipeline_$CI_PIPELINE_ID` instead of `latest` to avoid issues when running multiple CI pipelines in parallel (!120, !121) - e.g., `ros_acomms-tests:latest` is now `ros_acomms-tests:pipeline_$CI_PIPELINE_ID` - Fixed a bug that caused the `acomms_driver_node` to hang and require SIGTERM when the ROS master is shutdown before the `acomms_driver` node is able to get a `$CCCFQ,SRC` reply from the modem. (!116)
-
v10.0.0-rc.1d679b5da · ·
ssp water_depth, added support for setting tdma slots by range, added modem commands to tdma scripted, bug fixes to tdma, tdma status updates, new ci tests and some in progress
-
v10.0.0-rc.06249ed82 · ·
v10.0.0-rc.0: `tdma` slotted aloha, manual tx, new CI; `modem_sim` new: partial packets, bug fix in ping, `acomms_driver_node` bug fixes
-
v9.2.089eada81 · ·
New Features / Improvements =========================== - Add LinkLayerFeedback node that can batch CST (packet receive) and SST (noise) stats and transmit them to allow for feedback control. (!111) - Add `LinkStatsFeedback` message - Add unit test to CI - Publish SST messages from modem sim (!111) - Publish CST messages separate from `ReceivedPacket` messages in modem sim for received packets (!111) - Improved CST parameter simulation (!111) - Added documentation to `SST` message fields. (!111) - Improved documentation of `CST` message fields. (!111) - Add `packet_rx_topic` parameter to `modem_sim_node` to specify an alternate topic for `ReceivedPacket` messages. (!112)
-
v9.1.0716a4540 · ·
New Features / Improvements =========================== - Added a field to the `QueueParams` class that includes the full parameter dictionary from the codec yaml file. This allows other programs (like `ros_acomms_net`) to add arbitrary entries to the queue config dictionary. - Add support for publishing battery state from modem `CCBAT` queries
-
v9.0.13e703562 · ·
Bugfixes ======== - Fix exception handling when setting fields on ROS messages inside `ros_packet_codec.py`
-
-
-
-