pw_blob_store: Make ctor partition arg a reference

- Make partition argument in the BlobStore constructors a reference.
- Addition comments in header file added.

Change-Id: Id73b4f6e77d0660fb2ab417431ad9cbdcf744b10
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/18623
Reviewed-by: Ewout van Bekkum <ewout@google.com>
Commit-Queue: David Rogers <davidrogers@google.com>
diff --git a/pw_blob_store/blob_store_chunk_write_test.cc b/pw_blob_store/blob_store_chunk_write_test.cc
index ae9ef68..ccbd26d 100644
--- a/pw_blob_store/blob_store_chunk_write_test.cc
+++ b/pw_blob_store/blob_store_chunk_write_test.cc
@@ -59,7 +59,7 @@
     snprintf(name, sizeof(name), "Blob%u", static_cast<unsigned>(chunk_size));
 
     BlobStoreBuffer<kBufferSize> blob(
-        name, &partition_, &checksum, kvs::TestKvs());
+        name, partition_, &checksum, kvs::TestKvs());
     EXPECT_EQ(Status::OK, blob.Init());
 
     BlobStore::BlobWriter writer(blob);
diff --git a/pw_blob_store/blob_store_deferred_write_test.cc b/pw_blob_store/blob_store_deferred_write_test.cc
index 9ccc581..4f3d581 100644
--- a/pw_blob_store/blob_store_deferred_write_test.cc
+++ b/pw_blob_store/blob_store_deferred_write_test.cc
@@ -62,7 +62,7 @@
     snprintf(name, sizeof(name), "Blob%u", static_cast<unsigned>(chunk_size));
 
     BlobStoreBuffer<kBufferSize> blob(
-        name, &partition_, &checksum, kvs::TestKvs(), kWriteSize);
+        name, partition_, &checksum, kvs::TestKvs(), kWriteSize);
     EXPECT_EQ(Status::OK, blob.Init());
 
     BlobStore::DeferredWriter writer(blob);
diff --git a/pw_blob_store/blob_store_test.cc b/pw_blob_store/blob_store_test.cc
index 30cd64f..af1a717f 100644
--- a/pw_blob_store/blob_store_test.cc
+++ b/pw_blob_store/blob_store_test.cc
@@ -60,7 +60,7 @@
     snprintf(name, sizeof(name), "TestBlobBlock");
 
     BlobStoreBuffer<kBufferSize> blob(
-        name, &partition_, &checksum, kvs::TestKvs());
+        name, partition_, &checksum, kvs::TestKvs());
     EXPECT_EQ(Status::OK, blob.Init());
 
     BlobStore::BlobWriter writer(blob);
@@ -85,7 +85,7 @@
     VerifyFlash(flash_.buffer());
 
     char name[16] = "TestBlobBlock";
-    BlobStoreBuffer<16> blob(name, &partition_, &checksum, kvs::TestKvs());
+    BlobStoreBuffer<16> blob(name, partition_, &checksum, kvs::TestKvs());
     EXPECT_EQ(Status::OK, blob.Init());
 
     // Use reader to check for valid data.
@@ -142,12 +142,12 @@
 };
 
 TEST_F(BlobStoreTest, Init_Ok) {
-  BlobStoreBuffer<256> blob("Blob_OK", &partition_, nullptr, kvs::TestKvs());
+  BlobStoreBuffer<256> blob("Blob_OK", partition_, nullptr, kvs::TestKvs());
   EXPECT_EQ(Status::OK, blob.Init());
 }
 
 TEST_F(BlobStoreTest, MultipleErase) {
-  BlobStoreBuffer<256> blob("Blob_OK", &partition_, nullptr, kvs::TestKvs());
+  BlobStoreBuffer<256> blob("Blob_OK", partition_, nullptr, kvs::TestKvs());
   EXPECT_EQ(Status::OK, blob.Init());
 
   BlobStore::BlobWriter writer(blob);
@@ -168,7 +168,7 @@
   kvs::ChecksumCrc16 checksum;
 
   char name[16] = "TestBlobBlock";
-  BlobStoreBuffer<16> blob(name, &partition_, &checksum, kvs::TestKvs());
+  BlobStoreBuffer<16> blob(name, partition_, &checksum, kvs::TestKvs());
   EXPECT_EQ(Status::OK, blob.Init());
   BlobStore::BlobReader reader(blob);
   ASSERT_EQ(Status::OK, reader.Open(kOffset));
@@ -192,7 +192,7 @@
   kvs::ChecksumCrc16 checksum;
 
   char name[16] = "TestBlobBlock";
-  BlobStoreBuffer<16> blob(name, &partition_, &checksum, kvs::TestKvs());
+  BlobStoreBuffer<16> blob(name, partition_, &checksum, kvs::TestKvs());
   EXPECT_EQ(Status::OK, blob.Init());
   BlobStore::BlobReader reader(blob);
   ASSERT_EQ(Status::INVALID_ARGUMENT, reader.Open(kOffset));
diff --git a/pw_blob_store/public/pw_blob_store/blob_store.h b/pw_blob_store/public/pw_blob_store/blob_store.h
index d28c9d7..1fd5263 100644
--- a/pw_blob_store/public/pw_blob_store/blob_store.h
+++ b/pw_blob_store/public/pw_blob_store/blob_store.h
@@ -261,7 +261,7 @@
   // BlobStore
   // name - Name of blob store, used for metadata KVS key
   // partition - Flash partiton to use for this blob. Blob uses the entire
-  //     partition.
+  //     partition for blob data.
   // checksum_algo - Optional checksum for blob integrity checking. Use nullptr
   //     for no check.
   // kvs - KVS used for storing blob metadata.
@@ -272,13 +272,13 @@
   //     size. Must be greater than or equal to flash write alignment, less than
   //     or equal to flash sector size.
   BlobStore(std::string_view name,
-            kvs::FlashPartition* partition,
+            kvs::FlashPartition& partition,
             kvs::ChecksumAlgorithm* checksum_algo,
             kvs::KeyValueStore& kvs,
             ByteSpan write_buffer,
             size_t flash_write_size_bytes)
       : name_(name),
-        partition_(*partition),
+        partition_(partition),
         checksum_algo_(checksum_algo),
         kvs_(kvs),
         write_buffer_(write_buffer),
@@ -466,6 +466,7 @@
 
   std::string_view name_;
   kvs::FlashPartition& partition_;
+  // checksum_algo_ of nullptr indicates no checksum algorithm.
   kvs::ChecksumAlgorithm* const checksum_algo_;
   kvs::KeyValueStore& kvs_;
   ByteSpan write_buffer_;
@@ -509,11 +510,26 @@
 };
 
 // Creates a BlobStore with the buffer of kBufferSizeBytes.
+//
+// kBufferSizeBytes - Size in bytes of write buffer to create.
+// name - Name of blob store, used for metadata KVS key
+// partition - Flash partiton to use for this blob. Blob uses the entire
+//     partition for blob data.
+// checksum_algo - Optional checksum for blob integrity checking. Use nullptr
+//     for no check.
+// kvs - KVS used for storing blob metadata.
+// write_buffer - Used for buffering writes. Needs to be at least
+//     flash_write_size_bytes.
+// flash_write_size_bytes - Size in bytes to use for flash write operations.
+//     This should be chosen to balance optimal write size and required buffer
+//     size. Must be greater than or equal to flash write alignment, less than
+//     or equal to flash sector size.
+
 template <size_t kBufferSizeBytes>
 class BlobStoreBuffer : public BlobStore {
  public:
   explicit BlobStoreBuffer(std::string_view name,
-                           kvs::FlashPartition* partition,
+                           kvs::FlashPartition& partition,
                            kvs::ChecksumAlgorithm* checksum_algo,
                            kvs::KeyValueStore& kvs,
                            size_t flash_write_size_bytes = kBufferSizeBytes)