• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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()56 FlashPartition& FlashTestPartition() { return test_partition; }
57 
58 }  // namespace pw::kvs
59