44
55#include "hals/soft_ugn_demo_mu/device_instances.h"
66
7- #include "bittide_gather .h"
8- #include "bittide_scatter .h"
7+ #include "bittide_ring_receive .h"
8+ #include "bittide_ring_transmit .h"
99#include "bittide_timer.h"
1010#include "bittide_uart.h"
1111#include "bittide_ugn.h"
1616#include "ringbuffer_align.h"
1717
1818// ============================================================================
19- // Gather Unit Functions (TX/Outgoing)
19+ // Transmit Ringbuffer Functions (TX/Outgoing)
2020// ============================================================================
2121
22- void ringbuffer_set_alignment (GatherUnit gather ,
22+ void ringbuffer_set_alignment (TransmitRingbuffer tx_ring ,
2323 enum RingbufferAlignState state ) {
2424 uint64_t encoded_msg = (uint64_t )(state );
25- gather_unit_set_gather_memory_unchecked ( gather , 0 ,
26- (uint8_t const * )& encoded_msg );
25+ transmit_ringbuffer_set_data_unchecked ( tx_ring , 0 ,
26+ (uint8_t const * )& encoded_msg );
2727}
2828
2929// ============================================================================
30- // Scatter Unit Functions (RX/Incoming)
30+ // Receive Ringbuffer Functions (RX/Incoming)
3131// ============================================================================
3232
33- bool ringbuffer_find_alignment (ScatterUnit scatter , int16_t buffer_size ,
33+ bool ringbuffer_find_alignment (ReceiveRingbuffer rx_ring , int16_t buffer_size ,
3434 int16_t * found_offset ,
3535 enum RingbufferAlignState * found_state ) {
3636 // Initialize outputs
@@ -39,11 +39,10 @@ bool ringbuffer_find_alignment(ScatterUnit scatter, int16_t buffer_size,
3939
4040 // Scan the entire ringbuffer
4141 for (int16_t rx_idx = 0 ; rx_idx < buffer_size ; rx_idx ++ ) {
42- uint64_t scatter_data ;
43- scatter_unit_get_scatter_memory_unchecked (scatter , rx_idx ,
44- (uint8_t * )& scatter_data );
42+ uint64_t rx_data ;
43+ receive_ringbuffer_get_data_unchecked (rx_ring , rx_idx , (uint8_t * )& rx_data );
4544
46- enum RingbufferAlignState state = (enum RingbufferAlignState )(scatter_data );
45+ enum RingbufferAlignState state = (enum RingbufferAlignState )(rx_data );
4746
4847 // Check if we found an alignment message
4948 if (state == RINGBUFFER_ALIGN_ANNOUNCE ||
@@ -58,11 +57,10 @@ bool ringbuffer_find_alignment(ScatterUnit scatter, int16_t buffer_size,
5857}
5958
6059enum RingbufferAlignState
61- ringbuffer_get_alignment_at_offset (ScatterUnit scatter , int16_t offset ) {
62- uint64_t scatter_data ;
63- scatter_unit_get_scatter_memory_unchecked (scatter , offset ,
64- (uint8_t * )& scatter_data );
65- return (enum RingbufferAlignState )(scatter_data );
60+ ringbuffer_get_alignment_at_offset (ReceiveRingbuffer rx_ring , int16_t offset ) {
61+ uint64_t rx_data ;
62+ receive_ringbuffer_get_data_unchecked (rx_ring , offset , (uint8_t * )& rx_data );
63+ return (enum RingbufferAlignState )(rx_data );
6664}
6765
6866// ============================================================================
@@ -85,17 +83,17 @@ void align_ringbuffers(UgnContext *ugn_ctx, int16_t *incoming_offsets,
8583
8684 // Step 2: Initialize - Write ALIGNMENT_ANNOUNCE to TX index 0, clear rest
8785 for (int32_t port = 0 ; port < num_ports ; port ++ ) {
88- GatherUnit gather = ugn_ctx -> gather_units [port ];
86+ TransmitRingbuffer tx_ring = ugn_ctx -> transmit_ringbuffers [port ];
8987
9088 // Clear rest of buffer
9189 uint64_t empty_msg = (uint64_t )(RINGBUFFER_ALIGN_EMPTY );
92- for (int16_t i = 1 ; i < GATHER_UNIT_GATHER_MEMORY_LEN ; i ++ ) {
93- gather_unit_set_gather_memory_unchecked ( gather , i ,
94- (uint8_t const * )& empty_msg );
90+ for (int16_t i = 1 ; i < TRANSMIT_RINGBUFFER_DATA_LEN ; i ++ ) {
91+ transmit_ringbuffer_set_data_unchecked ( tx_ring , i ,
92+ (uint8_t const * )& empty_msg );
9593 }
9694
9795 // Write ALIGNMENT_ANNOUNCE at index 0
98- ringbuffer_set_alignment (gather , RINGBUFFER_ALIGN_ANNOUNCE );
96+ ringbuffer_set_alignment (tx_ring , RINGBUFFER_ALIGN_ANNOUNCE );
9997 }
10098
10199 // ========================================================================
@@ -112,12 +110,12 @@ void align_ringbuffers(UgnContext *ugn_ctx, int16_t *incoming_offsets,
112110 continue ; // Already found offset for this port
113111 }
114112
115- ScatterUnit scatter = ugn_ctx -> scatter_units [port ];
113+ ReceiveRingbuffer rx_ring = ugn_ctx -> receive_ringbuffers [port ];
116114
117115 // Use the scan function to search for alignment messages
118116 int16_t found_offset ;
119117 enum RingbufferAlignState found_state ;
120- if (ringbuffer_find_alignment (scatter , 4000 , & found_offset ,
118+ if (ringbuffer_find_alignment (rx_ring , 4000 , & found_offset ,
121119 & found_state )) {
122120 // Found message
123121 if (found_state == RINGBUFFER_ALIGN_ACKNOWLEDGE ) {
@@ -149,8 +147,8 @@ void align_ringbuffers(UgnContext *ugn_ctx, int16_t *incoming_offsets,
149147
150148 // Change all outgoing messages to ACKNOWLEDGE
151149 for (int32_t port = 0 ; port < num_ports ; port ++ ) {
152- GatherUnit gather = ugn_ctx -> gather_units [port ];
153- ringbuffer_set_alignment (gather , RINGBUFFER_ALIGN_ACKNOWLEDGE );
150+ TransmitRingbuffer tx_ring = ugn_ctx -> transmit_ringbuffers [port ];
151+ ringbuffer_set_alignment (tx_ring , RINGBUFFER_ALIGN_ACKNOWLEDGE );
154152 }
155153
156154 // Wait for all partners to send ACKNOWLEDGE
@@ -163,11 +161,11 @@ void align_ringbuffers(UgnContext *ugn_ctx, int16_t *incoming_offsets,
163161 continue ; // Already received ACK for this port
164162 }
165163
166- ScatterUnit scatter = ugn_ctx -> scatter_units [port ];
164+ ReceiveRingbuffer rx_ring = ugn_ctx -> receive_ringbuffers [port ];
167165
168166 // Check at the known position for ACKNOWLEDGE
169167 enum RingbufferAlignState state =
170- ringbuffer_get_alignment_at_offset (scatter , incoming_offsets [port ]);
168+ ringbuffer_get_alignment_at_offset (rx_ring , incoming_offsets [port ]);
171169
172170 if (state == RINGBUFFER_ALIGN_ACKNOWLEDGE ) {
173171 received_ack [port ] = true;
0 commit comments