1 // Copyright 2023 The Pigweed Authors 2 // 3 // Licensed under the Apache License, Version 2.0 (the "License"); you may not 4 // use this file except in compliance with the License. You may obtain a copy of 5 // the License at 6 // 7 // https://www.apache.org/licenses/LICENSE-2.0 8 // 9 // Unless required by applicable law or agreed to in writing, software 10 // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 11 // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 12 // License for the specific language governing permissions and limitations under 13 // the License. 14 15 #include "pw_kvs/fake_flash_memory.h" 16 #include "pw_kvs/flash_memory.h" 17 #include "pw_kvs/flash_partition_with_logical_sectors.h" 18 #include "pw_kvs/flash_test_partition.h" 19 20 namespace pw::kvs { 21 22 namespace { 23 24 #if !defined(PW_FLASH_TEST_SECTORS) || (PW_FLASH_TEST_SECTORS <= 0) 25 #error PW_FLASH_TEST_SECTORS must be defined and > 0 26 #endif // PW_FLASH_TEST_SECTORS 27 28 #if !defined(PW_FLASH_TEST_SECTOR_SIZE) || (PW_FLASH_TEST_SECTOR_SIZE <= 0) 29 #error PW_FLASH_TEST_SECTOR_SIZE must be defined and > 0 30 #endif // PW_FLASH_TEST_SECTOR_SIZE 31 32 #if !defined(PW_FLASH_TEST_ALIGNMENT) || (PW_FLASH_TEST_ALIGNMENT <= 0) 33 #error PW_FLASH_TEST_ALIGNMENT must be defined and > 0 34 #endif // PW_FLASH_TEST_ALIGNMENT 35 36 #if !defined(PW_FLASH_TEST_SECTORS_PER_LOGICAL_SECTOR) || \ 37 (PW_FLASH_TEST_SECTORS_PER_LOGICAL_SECTOR <= 0) 38 #error PW_FLASH_TEST_SECTORS_PER_LOGICAL_SECTOR must be defined and > 0 39 #endif // PW_FLASH_TEST_ALIGNMENT 40 41 constexpr size_t kSectors = PW_FLASH_TEST_SECTORS; 42 constexpr size_t kSectorSize = PW_FLASH_TEST_SECTOR_SIZE; 43 constexpr size_t kAlignment = PW_FLASH_TEST_ALIGNMENT; 44 constexpr size_t kSectorsPerLogicalSector = 45 PW_FLASH_TEST_SECTORS_PER_LOGICAL_SECTOR; 46 47 // Use PW_FLASH_TEST_SECTORS x PW_FLASH_TEST_SECTOR_SIZE sectors, 48 // PW_FLASH_TEST_ALIGNMENT byte alignment. 49 FakeFlashMemoryBuffer<kSectorSize, kSectors> test_flash(kAlignment); 50 51 FlashPartitionWithLogicalSectors test_partition(&test_flash, 52 kSectorsPerLogicalSector); 53 54 } // namespace 55 FlashTestPartition()56FlashPartition& FlashTestPartition() { return test_partition; } 57 58 } // namespace pw::kvs 59