Denislam Valeev / Mbed OS Nucleo_rtos_basic
Committer:
valeyev
Date:
Tue Mar 13 07:17:50 2018 +0000
Revision:
0:e056ac8fecf8
looking for...

Who changed what in which revision?

UserRevisionLine numberNew contents of line
valeyev 0:e056ac8fecf8 1 /* mbed Microcontroller Library
valeyev 0:e056ac8fecf8 2 * Copyright (c) 2017-2017 ARM Limited
valeyev 0:e056ac8fecf8 3 *
valeyev 0:e056ac8fecf8 4 * Permission is hereby granted, free of charge, to any person obtaining a copy
valeyev 0:e056ac8fecf8 5 * of this software and associated documentation files (the "Software"), to deal
valeyev 0:e056ac8fecf8 6 * in the Software without restriction, including without limitation the rights
valeyev 0:e056ac8fecf8 7 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
valeyev 0:e056ac8fecf8 8 * copies of the Software, and to permit persons to whom the Software is
valeyev 0:e056ac8fecf8 9 * furnished to do so, subject to the following conditions:
valeyev 0:e056ac8fecf8 10 *
valeyev 0:e056ac8fecf8 11 * The above copyright notice and this permission notice shall be included in
valeyev 0:e056ac8fecf8 12 * all copies or substantial portions of the Software.
valeyev 0:e056ac8fecf8 13 *
valeyev 0:e056ac8fecf8 14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
valeyev 0:e056ac8fecf8 15 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
valeyev 0:e056ac8fecf8 16 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
valeyev 0:e056ac8fecf8 17 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
valeyev 0:e056ac8fecf8 18 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
valeyev 0:e056ac8fecf8 19 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
valeyev 0:e056ac8fecf8 20 * SOFTWARE.
valeyev 0:e056ac8fecf8 21 */
valeyev 0:e056ac8fecf8 22
valeyev 0:e056ac8fecf8 23 #include "ObservingBlockDevice.h"
valeyev 0:e056ac8fecf8 24 #include "ReadOnlyBlockDevice.h"
valeyev 0:e056ac8fecf8 25 #include "mbed.h"
valeyev 0:e056ac8fecf8 26
valeyev 0:e056ac8fecf8 27
valeyev 0:e056ac8fecf8 28 ObservingBlockDevice::ObservingBlockDevice(BlockDevice *bd)
valeyev 0:e056ac8fecf8 29 : _bd(bd)
valeyev 0:e056ac8fecf8 30 {
valeyev 0:e056ac8fecf8 31 // Does nothing
valeyev 0:e056ac8fecf8 32 }
valeyev 0:e056ac8fecf8 33
valeyev 0:e056ac8fecf8 34 ObservingBlockDevice::~ObservingBlockDevice()
valeyev 0:e056ac8fecf8 35 {
valeyev 0:e056ac8fecf8 36 // Does nothing
valeyev 0:e056ac8fecf8 37 }
valeyev 0:e056ac8fecf8 38
valeyev 0:e056ac8fecf8 39 void ObservingBlockDevice::attach(Callback<void(BlockDevice *)> cb)
valeyev 0:e056ac8fecf8 40 {
valeyev 0:e056ac8fecf8 41 _change = cb;
valeyev 0:e056ac8fecf8 42 }
valeyev 0:e056ac8fecf8 43
valeyev 0:e056ac8fecf8 44 int ObservingBlockDevice::init()
valeyev 0:e056ac8fecf8 45 {
valeyev 0:e056ac8fecf8 46 return _bd->init();
valeyev 0:e056ac8fecf8 47 }
valeyev 0:e056ac8fecf8 48
valeyev 0:e056ac8fecf8 49 int ObservingBlockDevice::deinit()
valeyev 0:e056ac8fecf8 50 {
valeyev 0:e056ac8fecf8 51 return _bd->deinit();
valeyev 0:e056ac8fecf8 52 }
valeyev 0:e056ac8fecf8 53
valeyev 0:e056ac8fecf8 54 int ObservingBlockDevice::sync()
valeyev 0:e056ac8fecf8 55 {
valeyev 0:e056ac8fecf8 56 return _bd->sync();
valeyev 0:e056ac8fecf8 57 }
valeyev 0:e056ac8fecf8 58
valeyev 0:e056ac8fecf8 59 int ObservingBlockDevice::read(void *buffer, bd_addr_t addr, bd_size_t size)
valeyev 0:e056ac8fecf8 60 {
valeyev 0:e056ac8fecf8 61 return _bd->read(buffer, addr, size);
valeyev 0:e056ac8fecf8 62 }
valeyev 0:e056ac8fecf8 63
valeyev 0:e056ac8fecf8 64 int ObservingBlockDevice::program(const void *buffer, bd_addr_t addr, bd_size_t size)
valeyev 0:e056ac8fecf8 65 {
valeyev 0:e056ac8fecf8 66 int res = _bd->program(buffer, addr, size);
valeyev 0:e056ac8fecf8 67 if (_change) {
valeyev 0:e056ac8fecf8 68 ReadOnlyBlockDevice dev(_bd);
valeyev 0:e056ac8fecf8 69 _change(&dev);
valeyev 0:e056ac8fecf8 70 }
valeyev 0:e056ac8fecf8 71 return res;
valeyev 0:e056ac8fecf8 72 }
valeyev 0:e056ac8fecf8 73
valeyev 0:e056ac8fecf8 74 int ObservingBlockDevice::erase(bd_addr_t addr, bd_size_t size)
valeyev 0:e056ac8fecf8 75 {
valeyev 0:e056ac8fecf8 76 int res = _bd->erase(addr, size);
valeyev 0:e056ac8fecf8 77 if (_change) {
valeyev 0:e056ac8fecf8 78 ReadOnlyBlockDevice dev(_bd);
valeyev 0:e056ac8fecf8 79 _change(&dev);
valeyev 0:e056ac8fecf8 80 }
valeyev 0:e056ac8fecf8 81 return res;
valeyev 0:e056ac8fecf8 82 }
valeyev 0:e056ac8fecf8 83
valeyev 0:e056ac8fecf8 84 bd_size_t ObservingBlockDevice::get_read_size() const
valeyev 0:e056ac8fecf8 85 {
valeyev 0:e056ac8fecf8 86 return _bd->get_read_size();
valeyev 0:e056ac8fecf8 87 }
valeyev 0:e056ac8fecf8 88
valeyev 0:e056ac8fecf8 89 bd_size_t ObservingBlockDevice::get_program_size() const
valeyev 0:e056ac8fecf8 90 {
valeyev 0:e056ac8fecf8 91 return _bd->get_program_size();
valeyev 0:e056ac8fecf8 92 }
valeyev 0:e056ac8fecf8 93
valeyev 0:e056ac8fecf8 94 bd_size_t ObservingBlockDevice::get_erase_size() const
valeyev 0:e056ac8fecf8 95 {
valeyev 0:e056ac8fecf8 96 return _bd->get_erase_size();
valeyev 0:e056ac8fecf8 97 }
valeyev 0:e056ac8fecf8 98
valeyev 0:e056ac8fecf8 99 int ObservingBlockDevice::get_erase_value() const
valeyev 0:e056ac8fecf8 100 {
valeyev 0:e056ac8fecf8 101 return _bd->get_erase_value();
valeyev 0:e056ac8fecf8 102 }
valeyev 0:e056ac8fecf8 103
valeyev 0:e056ac8fecf8 104 bd_size_t ObservingBlockDevice::size() const
valeyev 0:e056ac8fecf8 105 {
valeyev 0:e056ac8fecf8 106 return _bd->size();
valeyev 0:e056ac8fecf8 107 }