takashi kadono / Mbed OS Nucleo446_SSD1331

Dependencies:   ssd1331

Committer:
kadonotakashi
Date:
Wed Oct 10 00:33:53 2018 +0000
Revision:
0:8fdf9a60065b
how to make mbed librry

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kadonotakashi 0:8fdf9a60065b 1 /* mbed Microcontroller Library
kadonotakashi 0:8fdf9a60065b 2 * Copyright (c) 2017-2017 ARM Limited
kadonotakashi 0:8fdf9a60065b 3 *
kadonotakashi 0:8fdf9a60065b 4 * Permission is hereby granted, free of charge, to any person obtaining a copy
kadonotakashi 0:8fdf9a60065b 5 * of this software and associated documentation files (the "Software"), to deal
kadonotakashi 0:8fdf9a60065b 6 * in the Software without restriction, including without limitation the rights
kadonotakashi 0:8fdf9a60065b 7 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
kadonotakashi 0:8fdf9a60065b 8 * copies of the Software, and to permit persons to whom the Software is
kadonotakashi 0:8fdf9a60065b 9 * furnished to do so, subject to the following conditions:
kadonotakashi 0:8fdf9a60065b 10 *
kadonotakashi 0:8fdf9a60065b 11 * The above copyright notice and this permission notice shall be included in
kadonotakashi 0:8fdf9a60065b 12 * all copies or substantial portions of the Software.
kadonotakashi 0:8fdf9a60065b 13 *
kadonotakashi 0:8fdf9a60065b 14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
kadonotakashi 0:8fdf9a60065b 15 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
kadonotakashi 0:8fdf9a60065b 16 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
kadonotakashi 0:8fdf9a60065b 17 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
kadonotakashi 0:8fdf9a60065b 18 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
kadonotakashi 0:8fdf9a60065b 19 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
kadonotakashi 0:8fdf9a60065b 20 * SOFTWARE.
kadonotakashi 0:8fdf9a60065b 21 */
kadonotakashi 0:8fdf9a60065b 22 #ifndef MBED_READ_ONLY_BLOCK_DEVICE_H
kadonotakashi 0:8fdf9a60065b 23 #define MBED_READ_ONLY_BLOCK_DEVICE_H
kadonotakashi 0:8fdf9a60065b 24
kadonotakashi 0:8fdf9a60065b 25 #include "BlockDevice.h"
kadonotakashi 0:8fdf9a60065b 26 #include "PlatformMutex.h"
kadonotakashi 0:8fdf9a60065b 27
kadonotakashi 0:8fdf9a60065b 28
kadonotakashi 0:8fdf9a60065b 29 class ReadOnlyBlockDevice : public BlockDevice
kadonotakashi 0:8fdf9a60065b 30 {
kadonotakashi 0:8fdf9a60065b 31 public:
kadonotakashi 0:8fdf9a60065b 32
kadonotakashi 0:8fdf9a60065b 33 /** Lifetime of the block device
kadonotakashi 0:8fdf9a60065b 34 *
kadonotakashi 0:8fdf9a60065b 35 * @param bd Block device to wrap as read only
kadonotakashi 0:8fdf9a60065b 36 */
kadonotakashi 0:8fdf9a60065b 37 ReadOnlyBlockDevice(BlockDevice *bd);
kadonotakashi 0:8fdf9a60065b 38 virtual ~ReadOnlyBlockDevice();
kadonotakashi 0:8fdf9a60065b 39
kadonotakashi 0:8fdf9a60065b 40 /** Initialize a block device
kadonotakashi 0:8fdf9a60065b 41 *
kadonotakashi 0:8fdf9a60065b 42 * @return 0 on success or a negative error code on failure
kadonotakashi 0:8fdf9a60065b 43 */
kadonotakashi 0:8fdf9a60065b 44 virtual int init();
kadonotakashi 0:8fdf9a60065b 45
kadonotakashi 0:8fdf9a60065b 46 /** Deinitialize a block device
kadonotakashi 0:8fdf9a60065b 47 *
kadonotakashi 0:8fdf9a60065b 48 * @return 0 on success or a negative error code on failure
kadonotakashi 0:8fdf9a60065b 49 */
kadonotakashi 0:8fdf9a60065b 50 virtual int deinit();
kadonotakashi 0:8fdf9a60065b 51
kadonotakashi 0:8fdf9a60065b 52 /** Ensure data on storage is in sync with the driver
kadonotakashi 0:8fdf9a60065b 53 *
kadonotakashi 0:8fdf9a60065b 54 * @return 0 on success or a negative error code on failure
kadonotakashi 0:8fdf9a60065b 55 */
kadonotakashi 0:8fdf9a60065b 56 virtual int sync();
kadonotakashi 0:8fdf9a60065b 57
kadonotakashi 0:8fdf9a60065b 58 /** Read blocks from a block device
kadonotakashi 0:8fdf9a60065b 59 *
kadonotakashi 0:8fdf9a60065b 60 * @param buffer Buffer to read blocks into
kadonotakashi 0:8fdf9a60065b 61 * @param addr Address of block to begin reading from
kadonotakashi 0:8fdf9a60065b 62 * @param size Size to read in bytes, must be a multiple of read block size
kadonotakashi 0:8fdf9a60065b 63 * @return 0 on success, negative error code on failure
kadonotakashi 0:8fdf9a60065b 64 */
kadonotakashi 0:8fdf9a60065b 65 virtual int read(void *buffer, bd_addr_t addr, bd_size_t size);
kadonotakashi 0:8fdf9a60065b 66
kadonotakashi 0:8fdf9a60065b 67 /** Program blocks to a block device
kadonotakashi 0:8fdf9a60065b 68 *
kadonotakashi 0:8fdf9a60065b 69 * The blocks must have been erased prior to being programmed
kadonotakashi 0:8fdf9a60065b 70 *
kadonotakashi 0:8fdf9a60065b 71 * @param buffer Buffer of data to write to blocks
kadonotakashi 0:8fdf9a60065b 72 * @param addr Address of block to begin writing to
kadonotakashi 0:8fdf9a60065b 73 * @param size Size to write in bytes, must be a multiple of program block size
kadonotakashi 0:8fdf9a60065b 74 * @return 0 on success, negative error code on failure
kadonotakashi 0:8fdf9a60065b 75 */
kadonotakashi 0:8fdf9a60065b 76 virtual int program(const void *buffer, bd_addr_t addr, bd_size_t size);
kadonotakashi 0:8fdf9a60065b 77
kadonotakashi 0:8fdf9a60065b 78 /** Erase blocks on a block device
kadonotakashi 0:8fdf9a60065b 79 *
kadonotakashi 0:8fdf9a60065b 80 * The state of an erased block is undefined until it has been programmed,
kadonotakashi 0:8fdf9a60065b 81 * unless get_erase_value returns a non-negative byte value
kadonotakashi 0:8fdf9a60065b 82 *
kadonotakashi 0:8fdf9a60065b 83 * @param addr Address of block to begin erasing
kadonotakashi 0:8fdf9a60065b 84 * @param size Size to erase in bytes, must be a multiple of erase block size
kadonotakashi 0:8fdf9a60065b 85 * @return 0 on success, negative error code on failure
kadonotakashi 0:8fdf9a60065b 86 */
kadonotakashi 0:8fdf9a60065b 87 virtual int erase(bd_addr_t addr, bd_size_t size);
kadonotakashi 0:8fdf9a60065b 88
kadonotakashi 0:8fdf9a60065b 89 /** Get the size of a readable block
kadonotakashi 0:8fdf9a60065b 90 *
kadonotakashi 0:8fdf9a60065b 91 * @return Size of a readable block in bytes
kadonotakashi 0:8fdf9a60065b 92 */
kadonotakashi 0:8fdf9a60065b 93 virtual bd_size_t get_read_size() const;
kadonotakashi 0:8fdf9a60065b 94
kadonotakashi 0:8fdf9a60065b 95 /** Get the size of a programmable block
kadonotakashi 0:8fdf9a60065b 96 *
kadonotakashi 0:8fdf9a60065b 97 * @return Size of a programmable block in bytes
kadonotakashi 0:8fdf9a60065b 98 */
kadonotakashi 0:8fdf9a60065b 99 virtual bd_size_t get_program_size() const;
kadonotakashi 0:8fdf9a60065b 100
kadonotakashi 0:8fdf9a60065b 101 /** Get the size of an erasable block
kadonotakashi 0:8fdf9a60065b 102 *
kadonotakashi 0:8fdf9a60065b 103 * @return Size of an erasable block in bytes
kadonotakashi 0:8fdf9a60065b 104 */
kadonotakashi 0:8fdf9a60065b 105 virtual bd_size_t get_erase_size() const;
kadonotakashi 0:8fdf9a60065b 106
kadonotakashi 0:8fdf9a60065b 107 /** Get the size of an erasable block given address
kadonotakashi 0:8fdf9a60065b 108 *
kadonotakashi 0:8fdf9a60065b 109 * @param addr Address within the erasable block
kadonotakashi 0:8fdf9a60065b 110 * @return Size of an erasable block in bytes
kadonotakashi 0:8fdf9a60065b 111 * @note Must be a multiple of the program size
kadonotakashi 0:8fdf9a60065b 112 */
kadonotakashi 0:8fdf9a60065b 113 virtual bd_size_t get_erase_size(bd_addr_t addr) const;
kadonotakashi 0:8fdf9a60065b 114
kadonotakashi 0:8fdf9a60065b 115 /** Get the value of storage when erased
kadonotakashi 0:8fdf9a60065b 116 *
kadonotakashi 0:8fdf9a60065b 117 * If get_erase_value returns a non-negative byte value, the underlying
kadonotakashi 0:8fdf9a60065b 118 * storage is set to that value when erased, and storage containing
kadonotakashi 0:8fdf9a60065b 119 * that value can be programmed without another erase.
kadonotakashi 0:8fdf9a60065b 120 *
kadonotakashi 0:8fdf9a60065b 121 * @return The value of storage when erased, or -1 if you can't
kadonotakashi 0:8fdf9a60065b 122 * rely on the value of erased storage
kadonotakashi 0:8fdf9a60065b 123 */
kadonotakashi 0:8fdf9a60065b 124 virtual int get_erase_value() const;
kadonotakashi 0:8fdf9a60065b 125
kadonotakashi 0:8fdf9a60065b 126 /** Get the total size of the underlying device
kadonotakashi 0:8fdf9a60065b 127 *
kadonotakashi 0:8fdf9a60065b 128 * @return Size of the underlying device in bytes
kadonotakashi 0:8fdf9a60065b 129 */
kadonotakashi 0:8fdf9a60065b 130 virtual bd_size_t size() const;
kadonotakashi 0:8fdf9a60065b 131
kadonotakashi 0:8fdf9a60065b 132 private:
kadonotakashi 0:8fdf9a60065b 133 BlockDevice *_bd;
kadonotakashi 0:8fdf9a60065b 134 };
kadonotakashi 0:8fdf9a60065b 135
kadonotakashi 0:8fdf9a60065b 136
kadonotakashi 0:8fdf9a60065b 137
kadonotakashi 0:8fdf9a60065b 138 #endif