@@ -189,29 +189,35 @@ void rs_change_channel(uint8_t channel) {
189
189
request_channel_change (channel );
190
190
}
191
191
192
- void filters_set_scanning_mode ();
193
- void filters_set_client_mode (const uint8_t * bssid );
192
+ void filters_set_scanning_mode (uint8_t interface , const uint8_t * own_mac );
193
+ void filters_set_client_mode (uint8_t interface , const uint8_t * own_mac , const uint8_t * bssid );
194
+ void filters_set_ap_mode (uint8_t interface , const uint8_t * bssid );
194
195
195
- void rs_filters_set_scanning () {
196
- filters_set_scanning_mode ();
196
+ void rs_filters_set_scanning (uint8_t interface , const uint8_t * own_mac ) {
197
+ filters_set_scanning_mode (interface , own_mac );
197
198
}
198
199
199
- void rs_filters_set_client_with_bssid (const uint8_t * addr ) {
200
- filters_set_client_mode (addr );
200
+ void rs_filters_set_client_with_bssid (uint8_t interface , const uint8_t * own_mac , const uint8_t * bssid ) {
201
+ filters_set_client_mode (interface , own_mac , bssid );
202
+ }
203
+
204
+ void rs_filters_set_ap_mode (uint8_t interface , const uint8_t * addr ) {
205
+ filters_set_ap_mode (interface , addr );
201
206
}
202
207
203
208
// Called from the C ESP-NETIF stack to request the Rust MAC stack to TX a frame
204
209
// This function does NOT take ownership of the frame, so you're allowed to reuse the buffer directly after this returns
205
210
void c_transmit_data_frame (rs_mac_interface_type_t interface , uint8_t * frame , size_t len ) {
206
211
// TODO make sure we don't flood the stack by sending too much frames
207
212
// maybe use a counting semaphore?
208
- void * queued_buffer = malloc (len );
209
- memcpy (queued_buffer , frame , len );
213
+ uint8_t * queued_buffer = malloc (1 + len );
214
+ queued_buffer [0 ] = interface ;
215
+ memcpy (queued_buffer + 1 , frame , len );
210
216
211
217
rust_mac_event_queue_item_t to_queue = {0 };
212
218
to_queue .event_type = EVENT_TYPE_MAC_TX_DATA_FRAME ;
213
219
to_queue .ptr = queued_buffer ;
214
- to_queue .len = len ;
220
+ to_queue .len = len + 1 ;
215
221
if (xQueueSendToBack (rust_mac_event_queue , & to_queue , 0 ) != pdTRUE ) {
216
222
rs_recycle_mac_tx_data (queued_buffer );
217
223
}
0 commit comments