Przeglądaj źródła

add support for storage stats on nrf52

liamcottle 1 rok temu
rodzic
commit
37c20a348e
1 zmienionych plików z 25 dodań i 2 usunięć
  1. 25 2
      examples/companion_radio/DataStore.cpp

+ 25 - 2
examples/companion_radio/DataStore.cpp

@@ -44,6 +44,20 @@ void DataStore::begin() {
   #include <InternalFileSystem.h>
 #endif
 
+#if defined(NRF52_PLATFORM) || defined(STM32_PLATFORM)
+int _countLfsBlock(void *p, lfs_block_t block){
+	lfs_size_t *size = (lfs_size_t*) p;
+	*size += 1;
+	return 0;
+}
+
+lfs_ssize_t _getLfsUsedBlockCount() {
+  lfs_size_t size = 0;
+  lfs_traverse(InternalFS._getFS(), _countLfsBlock, &size);
+  return size;
+}
+#endif
+
 uint32_t DataStore::getStorageUsedKb() const {
 #if defined(ESP32)
   return SPIFFS.usedBytes() / 1024;
@@ -52,8 +66,13 @@ uint32_t DataStore::getStorageUsedKb() const {
   info.usedBytes = 0;
   _fs->info(info);
   return info.usedBytes / 1024;
+#elif defined(NRF52_PLATFORM) || defined(STM32_PLATFORM)
+  const lfs_config* config = InternalFS._getFS()->cfg;
+	int usedBlockCount = _getLfsUsedBlockCount();
+	int usedBytes = config->block_size * usedBlockCount;
+  return usedBytes / 1024;
 #else
-  return 0;  // TODO:  InternalFS. method?
+  return 0;
 #endif
 }
 
@@ -65,8 +84,12 @@ uint32_t DataStore::getStorageTotalKb() const {
   info.totalBytes = 0;
   _fs->info(info);
   return info.totalBytes / 1024;
+#elif defined(NRF52_PLATFORM) || defined(STM32_PLATFORM)
+  const lfs_config* config = InternalFS._getFS()->cfg;
+	int totalBytes = config->block_size * config->block_count;
+  return totalBytes / 1024;
 #else
-  return 0;  // TODO:  InternalFS. method?
+  return 0;
 #endif
 }