Marco Mayer / Mbed OS Queue
Committer:
demayer
Date:
Sat Mar 28 15:28:19 2020 +0000
Revision:
0:6bf0743ece18
IMU Thread with an event-queue running parallel to handle tasks like a 5 times blinking LED. Button with interrupt detected.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
demayer 0:6bf0743ece18 1 /* mbed Microcontroller Library
demayer 0:6bf0743ece18 2 * Copyright (c) 2017 ARM Limited
demayer 0:6bf0743ece18 3 *
demayer 0:6bf0743ece18 4 * Licensed under the Apache License, Version 2.0 (the "License");
demayer 0:6bf0743ece18 5 * you may not use this file except in compliance with the License.
demayer 0:6bf0743ece18 6 * You may obtain a copy of the License at
demayer 0:6bf0743ece18 7 *
demayer 0:6bf0743ece18 8 * http://www.apache.org/licenses/LICENSE-2.0
demayer 0:6bf0743ece18 9 *
demayer 0:6bf0743ece18 10 * Unless required by applicable law or agreed to in writing, software
demayer 0:6bf0743ece18 11 * distributed under the License is distributed on an "AS IS" BASIS,
demayer 0:6bf0743ece18 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
demayer 0:6bf0743ece18 13 * See the License for the specific language governing permissions and
demayer 0:6bf0743ece18 14 * limitations under the License.
demayer 0:6bf0743ece18 15 */
demayer 0:6bf0743ece18 16
demayer 0:6bf0743ece18 17 #include "ProfilingBlockDevice.h"
demayer 0:6bf0743ece18 18
demayer 0:6bf0743ece18 19
demayer 0:6bf0743ece18 20 ProfilingBlockDevice::ProfilingBlockDevice(BlockDevice *bd)
demayer 0:6bf0743ece18 21 : _bd(bd)
demayer 0:6bf0743ece18 22 , _read_count(0)
demayer 0:6bf0743ece18 23 , _program_count(0)
demayer 0:6bf0743ece18 24 , _erase_count(0)
demayer 0:6bf0743ece18 25 {
demayer 0:6bf0743ece18 26 }
demayer 0:6bf0743ece18 27
demayer 0:6bf0743ece18 28 int ProfilingBlockDevice::init()
demayer 0:6bf0743ece18 29 {
demayer 0:6bf0743ece18 30 return _bd->init();
demayer 0:6bf0743ece18 31 }
demayer 0:6bf0743ece18 32
demayer 0:6bf0743ece18 33 int ProfilingBlockDevice::deinit()
demayer 0:6bf0743ece18 34 {
demayer 0:6bf0743ece18 35 return _bd->deinit();
demayer 0:6bf0743ece18 36 }
demayer 0:6bf0743ece18 37
demayer 0:6bf0743ece18 38 int ProfilingBlockDevice::read(void *b, bd_addr_t addr, bd_size_t size)
demayer 0:6bf0743ece18 39 {
demayer 0:6bf0743ece18 40 int err = _bd->read(b, addr, size);
demayer 0:6bf0743ece18 41 if (!err) {
demayer 0:6bf0743ece18 42 _read_count += size;
demayer 0:6bf0743ece18 43 }
demayer 0:6bf0743ece18 44 return err;
demayer 0:6bf0743ece18 45 }
demayer 0:6bf0743ece18 46
demayer 0:6bf0743ece18 47 int ProfilingBlockDevice::program(const void *b, bd_addr_t addr, bd_size_t size)
demayer 0:6bf0743ece18 48 {
demayer 0:6bf0743ece18 49 int err = _bd->program(b, addr, size);
demayer 0:6bf0743ece18 50 if (!err) {
demayer 0:6bf0743ece18 51 _program_count += size;
demayer 0:6bf0743ece18 52 }
demayer 0:6bf0743ece18 53 return err;
demayer 0:6bf0743ece18 54 }
demayer 0:6bf0743ece18 55
demayer 0:6bf0743ece18 56 int ProfilingBlockDevice::erase(bd_addr_t addr, bd_size_t size)
demayer 0:6bf0743ece18 57 {
demayer 0:6bf0743ece18 58 int err = _bd->erase(addr, size);
demayer 0:6bf0743ece18 59 if (!err) {
demayer 0:6bf0743ece18 60 _erase_count += size;
demayer 0:6bf0743ece18 61 }
demayer 0:6bf0743ece18 62 return err;
demayer 0:6bf0743ece18 63 }
demayer 0:6bf0743ece18 64
demayer 0:6bf0743ece18 65 bd_size_t ProfilingBlockDevice::get_read_size() const
demayer 0:6bf0743ece18 66 {
demayer 0:6bf0743ece18 67 return _bd->get_read_size();
demayer 0:6bf0743ece18 68 }
demayer 0:6bf0743ece18 69
demayer 0:6bf0743ece18 70 bd_size_t ProfilingBlockDevice::get_program_size() const
demayer 0:6bf0743ece18 71 {
demayer 0:6bf0743ece18 72 return _bd->get_program_size();
demayer 0:6bf0743ece18 73 }
demayer 0:6bf0743ece18 74
demayer 0:6bf0743ece18 75 bd_size_t ProfilingBlockDevice::get_erase_size() const
demayer 0:6bf0743ece18 76 {
demayer 0:6bf0743ece18 77 return _bd->get_erase_size();
demayer 0:6bf0743ece18 78 }
demayer 0:6bf0743ece18 79
demayer 0:6bf0743ece18 80 bd_size_t ProfilingBlockDevice::size() const
demayer 0:6bf0743ece18 81 {
demayer 0:6bf0743ece18 82 return _bd->size();
demayer 0:6bf0743ece18 83 }
demayer 0:6bf0743ece18 84
demayer 0:6bf0743ece18 85 void ProfilingBlockDevice::reset()
demayer 0:6bf0743ece18 86 {
demayer 0:6bf0743ece18 87 _read_count = 0;
demayer 0:6bf0743ece18 88 _program_count = 0;
demayer 0:6bf0743ece18 89 _erase_count = 0;
demayer 0:6bf0743ece18 90 }
demayer 0:6bf0743ece18 91
demayer 0:6bf0743ece18 92 bd_size_t ProfilingBlockDevice::get_read_count() const
demayer 0:6bf0743ece18 93 {
demayer 0:6bf0743ece18 94 return _read_count;
demayer 0:6bf0743ece18 95 }
demayer 0:6bf0743ece18 96
demayer 0:6bf0743ece18 97 bd_size_t ProfilingBlockDevice::get_program_count() const
demayer 0:6bf0743ece18 98 {
demayer 0:6bf0743ece18 99 return _program_count;
demayer 0:6bf0743ece18 100 }
demayer 0:6bf0743ece18 101
demayer 0:6bf0743ece18 102 bd_size_t ProfilingBlockDevice::get_erase_count() const
demayer 0:6bf0743ece18 103 {
demayer 0:6bf0743ece18 104 return _erase_count;
demayer 0:6bf0743ece18 105 }