]> granicus.if.org Git - esp-idf/commitdiff
bluedroid: use the new socket registering API
authorRoland Dobai <dobai.roland@gmail.com>
Mon, 7 May 2018 07:01:56 +0000 (09:01 +0200)
committerRoland Dobai <dobai.roland@gmail.com>
Mon, 7 May 2018 07:01:56 +0000 (09:01 +0200)
components/bt/bluedroid/btc/profile/std/spp/btc_spp.c

index 82d84b2d02928f36f3f6d58fd87b4308fc797bbb..dcab978657159835fa8bfdebc17daf4c4ce52d53 100644 (file)
 #include <sys/fcntl.h>
 #include "esp_vfs.h"
 #include "esp_vfs_dev.h"
+#include "lwip/opt.h" // just for LWIP_SOCKET_OFFSET
 
+/**
+ * BTC_SPP_FDS is the number of file descriptors this VFS driver registers
+ */
+#define BTC_SPP_FDS         32
 
 #if (defined BTC_SPP_INCLUDED && BTC_SPP_INCLUDED == TRUE)
 
@@ -828,7 +833,7 @@ static ssize_t spp_vfs_read(int fd, void * dst, size_t size)
 void btc_spp_vfs_register()
 {
     esp_vfs_t vfs = {
-        .flags = ESP_VFS_FLAG_DEFAULT | ESP_VFS_FLAG_SHARED_FD_SPACE,
+        .flags = ESP_VFS_FLAG_DEFAULT,
         .write = spp_vfs_write,
         .open = NULL,
         .fstat = NULL,
@@ -836,8 +841,15 @@ void btc_spp_vfs_register()
         .read = spp_vfs_read,
         .fcntl = NULL
     };
-    ESP_ERROR_CHECK(esp_vfs_register_socket_space(&vfs, NULL, &spp_local_param.spp_min_fd, &spp_local_param.spp_max_fd));
+    // File descriptors from LWIP_SOCKET_OFFSET to MAX_FDS-1 are registered
+    // for sockets. So here we register from (LWIP_SOCKET_OFFSET - BTC_SPP_FDS)
+    // to (LWIP_SOCKET_OFFSET-1) leaving unregistered from 0 to
+    // .(LWIP_SOCKET_OFFSET - BTC_SPP_FDS - 1).
+    spp_local_param.spp_min_fd = LWIP_SOCKET_OFFSET - BTC_SPP_FDS;
+    assert(spp_local_param.spp_min_fd >= 0); //TODO return error instead
+    spp_local_param.spp_max_fd = LWIP_SOCKET_OFFSET;
+    ESP_ERROR_CHECK(esp_vfs_register_fd_range(&vfs, NULL, spp_local_param.spp_min_fd, spp_local_param.spp_max_fd));//TODO return error if fails
     spp_local_param.spp_fd = spp_local_param.spp_min_fd;
 }
 
-#endif ///defined BTC_SPP_INCLUDED && BTC_SPP_INCLUDED == TRUE
\ No newline at end of file
+#endif ///defined BTC_SPP_INCLUDED && BTC_SPP_INCLUDED == TRUE