mbed-os5 only for TYBLE16

Dependents:   TYBLE16_simple_data_logger TYBLE16_MP3_Air

Committer:
kenjiArai
Date:
Tue Dec 31 06:02:27 2019 +0000
Revision:
1:9db0e321a9f4
Parent:
0:5b88d5760320
updated based on mbed-os5.15.0

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kenjiArai 0:5b88d5760320 1 /* mbed Microcontroller Library
kenjiArai 1:9db0e321a9f4 2 * Copyright (c) 2006-2019 ARM Limited
kenjiArai 0:5b88d5760320 3 * SPDX-License-Identifier: Apache-2.0
kenjiArai 0:5b88d5760320 4 *
kenjiArai 0:5b88d5760320 5 * Licensed under the Apache License, Version 2.0 (the "License");
kenjiArai 0:5b88d5760320 6 * you may not use this file except in compliance with the License.
kenjiArai 0:5b88d5760320 7 * You may obtain a copy of the License at
kenjiArai 0:5b88d5760320 8 *
kenjiArai 0:5b88d5760320 9 * http://www.apache.org/licenses/LICENSE-2.0
kenjiArai 0:5b88d5760320 10 *
kenjiArai 0:5b88d5760320 11 * Unless required by applicable law or agreed to in writing, software
kenjiArai 0:5b88d5760320 12 * distributed under the License is distributed on an "AS IS" BASIS,
kenjiArai 0:5b88d5760320 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
kenjiArai 0:5b88d5760320 14 * See the License for the specific language governing permissions and
kenjiArai 0:5b88d5760320 15 * limitations under the License.
kenjiArai 0:5b88d5760320 16 */
kenjiArai 0:5b88d5760320 17 #ifndef MBED_CALLCHAIN_H
kenjiArai 0:5b88d5760320 18 #define MBED_CALLCHAIN_H
kenjiArai 0:5b88d5760320 19
kenjiArai 0:5b88d5760320 20 #include "platform/Callback.h"
kenjiArai 0:5b88d5760320 21 #include "platform/mbed_toolchain.h"
kenjiArai 0:5b88d5760320 22 #include "platform/NonCopyable.h"
kenjiArai 0:5b88d5760320 23 #include <string.h>
kenjiArai 0:5b88d5760320 24
kenjiArai 0:5b88d5760320 25 namespace mbed {
kenjiArai 0:5b88d5760320 26
kenjiArai 0:5b88d5760320 27
kenjiArai 0:5b88d5760320 28 typedef Callback<void()> *pFunctionPointer_t;
kenjiArai 0:5b88d5760320 29 class CallChainLink;
kenjiArai 0:5b88d5760320 30
kenjiArai 0:5b88d5760320 31 /**
kenjiArai 0:5b88d5760320 32 * \defgroup platform_CallChain CallChain class
kenjiArai 1:9db0e321a9f4 33 * \ingroup platform-public-api
kenjiArai 0:5b88d5760320 34 * @{
kenjiArai 0:5b88d5760320 35 */
kenjiArai 0:5b88d5760320 36
kenjiArai 0:5b88d5760320 37 /** Group one or more functions in an instance of a CallChain, then call them in
kenjiArai 0:5b88d5760320 38 * sequence using CallChain::call(). Used mostly by the interrupt chaining code,
kenjiArai 0:5b88d5760320 39 * but can be used for other purposes.
kenjiArai 0:5b88d5760320 40 *
kenjiArai 0:5b88d5760320 41 * @deprecated Do not use this class. This class is not part of the public API of mbed-os and is being removed in the future.
kenjiArai 0:5b88d5760320 42 * @note Synchronization level: Not protected
kenjiArai 0:5b88d5760320 43 *
kenjiArai 0:5b88d5760320 44 * Example:
kenjiArai 0:5b88d5760320 45 * @code
kenjiArai 0:5b88d5760320 46 * #include "mbed.h"
kenjiArai 0:5b88d5760320 47 *
kenjiArai 0:5b88d5760320 48 * CallChain chain;
kenjiArai 0:5b88d5760320 49 *
kenjiArai 0:5b88d5760320 50 * void first(void) {
kenjiArai 0:5b88d5760320 51 * printf("'first' function.\n");
kenjiArai 0:5b88d5760320 52 * }
kenjiArai 0:5b88d5760320 53 *
kenjiArai 0:5b88d5760320 54 * void second(void) {
kenjiArai 0:5b88d5760320 55 * printf("'second' function.\n");
kenjiArai 0:5b88d5760320 56 * }
kenjiArai 0:5b88d5760320 57 *
kenjiArai 0:5b88d5760320 58 * class Test {
kenjiArai 0:5b88d5760320 59 * public:
kenjiArai 0:5b88d5760320 60 * void f(void) {
kenjiArai 0:5b88d5760320 61 * printf("A::f (class member).\n");
kenjiArai 0:5b88d5760320 62 * }
kenjiArai 0:5b88d5760320 63 * };
kenjiArai 0:5b88d5760320 64 *
kenjiArai 0:5b88d5760320 65 * int main() {
kenjiArai 0:5b88d5760320 66 * Test test;
kenjiArai 0:5b88d5760320 67 *
kenjiArai 0:5b88d5760320 68 * chain.add(second);
kenjiArai 0:5b88d5760320 69 * chain.add_front(first);
kenjiArai 0:5b88d5760320 70 * chain.add(&test, &Test::f);
kenjiArai 0:5b88d5760320 71 * chain.call();
kenjiArai 0:5b88d5760320 72 * }
kenjiArai 0:5b88d5760320 73 * @endcode
kenjiArai 0:5b88d5760320 74 */
kenjiArai 1:9db0e321a9f4 75 class
kenjiArai 1:9db0e321a9f4 76 MBED_DEPRECATED("CallChain has been deprecated and will be removed.")
kenjiArai 1:9db0e321a9f4 77 CallChain : private NonCopyable<CallChain> {
kenjiArai 0:5b88d5760320 78 public:
kenjiArai 0:5b88d5760320 79 /** Create an empty chain
kenjiArai 0:5b88d5760320 80 * @deprecated
kenjiArai 0:5b88d5760320 81 * Do not use this function, this class is not part of the public API of mbed-os and is being removed in the future.
kenjiArai 0:5b88d5760320 82 *
kenjiArai 0:5b88d5760320 83 * @param size (optional) Initial size of the chain
kenjiArai 0:5b88d5760320 84 */
kenjiArai 0:5b88d5760320 85 MBED_DEPRECATED_SINCE("mbed-os-5.6", "This class is not part of the "
kenjiArai 0:5b88d5760320 86 "public API of mbed-os and is being removed in the future.")
kenjiArai 0:5b88d5760320 87 CallChain(int size = 4);
kenjiArai 0:5b88d5760320 88
kenjiArai 0:5b88d5760320 89 /** Create an empty chain
kenjiArai 0:5b88d5760320 90 * @deprecated
kenjiArai 0:5b88d5760320 91 * Do not use this function, this class is not part of the public API of mbed-os and is being removed in the future.
kenjiArai 0:5b88d5760320 92 */
kenjiArai 0:5b88d5760320 93 MBED_DEPRECATED_SINCE("mbed-os-5.6", "This class is not part of the "
kenjiArai 0:5b88d5760320 94 "public API of mbed-os and is being removed in the future.")
kenjiArai 0:5b88d5760320 95 virtual ~CallChain();
kenjiArai 0:5b88d5760320 96
kenjiArai 0:5b88d5760320 97 /** Add a function at the end of the chain
kenjiArai 0:5b88d5760320 98 *
kenjiArai 0:5b88d5760320 99 * @deprecated
kenjiArai 0:5b88d5760320 100 * Do not use this function, this class is not part of the public API of mbed-os and is being removed in the future.
kenjiArai 0:5b88d5760320 101 *
kenjiArai 0:5b88d5760320 102 * @param func A pointer to a void function
kenjiArai 0:5b88d5760320 103 *
kenjiArai 0:5b88d5760320 104 * @returns
kenjiArai 0:5b88d5760320 105 * The function object created for 'func'
kenjiArai 0:5b88d5760320 106 */
kenjiArai 0:5b88d5760320 107 MBED_DEPRECATED_SINCE("mbed-os-5.6", "This class is not part of the "
kenjiArai 0:5b88d5760320 108 "public API of mbed-os and is being removed in the future.")
kenjiArai 0:5b88d5760320 109 pFunctionPointer_t add(Callback<void()> func);
kenjiArai 0:5b88d5760320 110
kenjiArai 0:5b88d5760320 111 /** Add a function at the end of the chain
kenjiArai 0:5b88d5760320 112 *
kenjiArai 0:5b88d5760320 113 * @param obj pointer to the object to call the member function on
kenjiArai 0:5b88d5760320 114 * @param method pointer to the member function to be called
kenjiArai 0:5b88d5760320 115 *
kenjiArai 0:5b88d5760320 116 * @returns
kenjiArai 0:5b88d5760320 117 * The function object created for 'obj' and 'method'
kenjiArai 0:5b88d5760320 118 *
kenjiArai 0:5b88d5760320 119 * @deprecated
kenjiArai 0:5b88d5760320 120 * The add function does not support cv-qualifiers. Replaced by
kenjiArai 0:5b88d5760320 121 * add(callback(obj, method)).
kenjiArai 0:5b88d5760320 122 */
kenjiArai 0:5b88d5760320 123 template<typename T, typename M>
kenjiArai 0:5b88d5760320 124 MBED_DEPRECATED_SINCE("mbed-os-5.1",
kenjiArai 0:5b88d5760320 125 "The add function does not support cv-qualifiers. Replaced by "
kenjiArai 0:5b88d5760320 126 "add(callback(obj, method)).")
kenjiArai 0:5b88d5760320 127 pFunctionPointer_t add(T *obj, M method)
kenjiArai 0:5b88d5760320 128 {
kenjiArai 0:5b88d5760320 129 return add(callback(obj, method));
kenjiArai 0:5b88d5760320 130 }
kenjiArai 0:5b88d5760320 131
kenjiArai 0:5b88d5760320 132 /** Add a function at the beginning of the chain
kenjiArai 0:5b88d5760320 133 * @deprecated
kenjiArai 0:5b88d5760320 134 * Do not use this function, this class is not part of the public API of mbed-os and is being removed in the future.
kenjiArai 0:5b88d5760320 135 *
kenjiArai 0:5b88d5760320 136 *
kenjiArai 0:5b88d5760320 137 * @param func A pointer to a void function
kenjiArai 0:5b88d5760320 138 *
kenjiArai 0:5b88d5760320 139 * @returns
kenjiArai 0:5b88d5760320 140 * The function object created for 'func'
kenjiArai 0:5b88d5760320 141 */
kenjiArai 0:5b88d5760320 142 MBED_DEPRECATED_SINCE("mbed-os-5.6", "This class is not part of the "
kenjiArai 0:5b88d5760320 143 "public API of mbed-os and is being removed in the future.")
kenjiArai 0:5b88d5760320 144 pFunctionPointer_t add_front(Callback<void()> func);
kenjiArai 0:5b88d5760320 145
kenjiArai 0:5b88d5760320 146 /** Add a function at the beginning of the chain
kenjiArai 0:5b88d5760320 147 *
kenjiArai 0:5b88d5760320 148 * @param obj pointer to the object to call the member function on
kenjiArai 0:5b88d5760320 149 * @param method pointer to the member function to be called
kenjiArai 0:5b88d5760320 150 *
kenjiArai 0:5b88d5760320 151 * @returns
kenjiArai 0:5b88d5760320 152 * The function object created for the object and method pointers
kenjiArai 0:5b88d5760320 153 *
kenjiArai 0:5b88d5760320 154 * @deprecated
kenjiArai 0:5b88d5760320 155 * The add_front function does not support cv-qualifiers. Replaced by
kenjiArai 0:5b88d5760320 156 * add_front(callback(obj, method)).
kenjiArai 0:5b88d5760320 157 */
kenjiArai 0:5b88d5760320 158 template<typename T, typename M>
kenjiArai 0:5b88d5760320 159 MBED_DEPRECATED_SINCE("mbed-os-5.1",
kenjiArai 0:5b88d5760320 160 "The add_front function does not support cv-qualifiers. Replaced by "
kenjiArai 0:5b88d5760320 161 "add_front(callback(obj, method)).")
kenjiArai 0:5b88d5760320 162 pFunctionPointer_t add_front(T *obj, M method)
kenjiArai 0:5b88d5760320 163 {
kenjiArai 0:5b88d5760320 164 return add_front(callback(obj, method));
kenjiArai 0:5b88d5760320 165 }
kenjiArai 0:5b88d5760320 166
kenjiArai 0:5b88d5760320 167 /** Get the number of functions in the chain
kenjiArai 0:5b88d5760320 168 * @deprecated
kenjiArai 0:5b88d5760320 169 * Do not use this function, this class is not part of the public API of mbed-os and is being removed in the future.
kenjiArai 0:5b88d5760320 170 *
kenjiArai 0:5b88d5760320 171 */
kenjiArai 0:5b88d5760320 172 MBED_DEPRECATED_SINCE("mbed-os-5.6", "This class is not part of the "
kenjiArai 0:5b88d5760320 173 "public API of mbed-os and is being removed in the future.")
kenjiArai 0:5b88d5760320 174 int size() const;
kenjiArai 0:5b88d5760320 175
kenjiArai 0:5b88d5760320 176 /** Get a function object from the chain
kenjiArai 0:5b88d5760320 177 * @deprecated
kenjiArai 0:5b88d5760320 178 * Do not use this function, this class is not part of the public API of mbed-os and is being removed in the future.
kenjiArai 0:5b88d5760320 179 *
kenjiArai 0:5b88d5760320 180 * @param i function object index
kenjiArai 0:5b88d5760320 181 *
kenjiArai 0:5b88d5760320 182 * @returns
kenjiArai 0:5b88d5760320 183 * The function object at position 'i' in the chain
kenjiArai 0:5b88d5760320 184 */
kenjiArai 0:5b88d5760320 185 MBED_DEPRECATED_SINCE("mbed-os-5.6", "This class is not part of the "
kenjiArai 0:5b88d5760320 186 "public API of mbed-os and is being removed in the future.")
kenjiArai 0:5b88d5760320 187 pFunctionPointer_t get(int i) const;
kenjiArai 0:5b88d5760320 188
kenjiArai 0:5b88d5760320 189 /** Look for a function object in the call chain
kenjiArai 0:5b88d5760320 190 * @deprecated
kenjiArai 0:5b88d5760320 191 * Do not use this function, this class is not part of the public API of mbed-os and is being removed in the future.
kenjiArai 0:5b88d5760320 192 *
kenjiArai 0:5b88d5760320 193 * @param f the function object to search
kenjiArai 0:5b88d5760320 194 *
kenjiArai 0:5b88d5760320 195 * @returns
kenjiArai 0:5b88d5760320 196 * The index of the function object if found, -1 otherwise.
kenjiArai 0:5b88d5760320 197 */
kenjiArai 0:5b88d5760320 198 MBED_DEPRECATED_SINCE("mbed-os-5.6", "This class is not part of the "
kenjiArai 0:5b88d5760320 199 "public API of mbed-os and is being removed in the future.")
kenjiArai 0:5b88d5760320 200 int find(pFunctionPointer_t f) const;
kenjiArai 0:5b88d5760320 201
kenjiArai 0:5b88d5760320 202 /** Clear the call chain (remove all functions in the chain).
kenjiArai 0:5b88d5760320 203 * @deprecated Do not use this function. This class is not part of the public API of mbed-os and is being removed in the future.
kenjiArai 0:5b88d5760320 204 */
kenjiArai 0:5b88d5760320 205 MBED_DEPRECATED_SINCE("mbed-os-5.6", "This class is not part of the "
kenjiArai 0:5b88d5760320 206 "public API of mbed-os and is being removed in the future.")
kenjiArai 0:5b88d5760320 207 void clear();
kenjiArai 0:5b88d5760320 208
kenjiArai 0:5b88d5760320 209 /** Remove a function object from the chain
kenjiArai 0:5b88d5760320 210 * @deprecated
kenjiArai 0:5b88d5760320 211 * Do not use this function, this class is not part of the public API of mbed-os and is being removed in the future.
kenjiArai 0:5b88d5760320 212 *
kenjiArai 0:5b88d5760320 213 * @arg f the function object to remove
kenjiArai 0:5b88d5760320 214 *
kenjiArai 0:5b88d5760320 215 * @returns
kenjiArai 0:5b88d5760320 216 * true if the function object was found and removed, false otherwise.
kenjiArai 0:5b88d5760320 217 */
kenjiArai 0:5b88d5760320 218 MBED_DEPRECATED_SINCE("mbed-os-5.6", "This class is not part of the "
kenjiArai 0:5b88d5760320 219 "public API of mbed-os and is being removed in the future.")
kenjiArai 0:5b88d5760320 220 bool remove(pFunctionPointer_t f);
kenjiArai 0:5b88d5760320 221
kenjiArai 0:5b88d5760320 222 /** Call all the functions in the chain in sequence
kenjiArai 0:5b88d5760320 223 * @deprecated
kenjiArai 0:5b88d5760320 224 * Do not use this function, this class is not part of the public API of mbed-os and is being removed in the future.
kenjiArai 0:5b88d5760320 225 *
kenjiArai 0:5b88d5760320 226 */
kenjiArai 0:5b88d5760320 227 MBED_DEPRECATED_SINCE("mbed-os-5.6", "This class is not part of the "
kenjiArai 0:5b88d5760320 228 "public API of mbed-os and is being removed in the future.")
kenjiArai 0:5b88d5760320 229 void call();
kenjiArai 0:5b88d5760320 230
kenjiArai 0:5b88d5760320 231 /**
kenjiArai 0:5b88d5760320 232 * @deprecated
kenjiArai 0:5b88d5760320 233 * Do not use this function, this class is not part of the public API of mbed-os and is being removed in the future.
kenjiArai 0:5b88d5760320 234 *
kenjiArai 0:5b88d5760320 235 */
kenjiArai 0:5b88d5760320 236 MBED_DEPRECATED_SINCE("mbed-os-5.6", "This class is not part of the "
kenjiArai 0:5b88d5760320 237 "public API of mbed-os and is being removed in the future.")
kenjiArai 0:5b88d5760320 238 void operator()(void)
kenjiArai 0:5b88d5760320 239 {
kenjiArai 0:5b88d5760320 240 call();
kenjiArai 0:5b88d5760320 241 }
kenjiArai 0:5b88d5760320 242
kenjiArai 0:5b88d5760320 243 /**
kenjiArai 0:5b88d5760320 244 * @deprecated
kenjiArai 0:5b88d5760320 245 * Do not use this function, this class is not part of the public API of mbed-os and is being removed in the future.
kenjiArai 0:5b88d5760320 246 *
kenjiArai 0:5b88d5760320 247 */
kenjiArai 0:5b88d5760320 248 MBED_DEPRECATED_SINCE("mbed-os-5.6", "This class is not part of the "
kenjiArai 0:5b88d5760320 249 "public API of mbed-os and is being removed in the future.")
kenjiArai 0:5b88d5760320 250 pFunctionPointer_t operator [](int i) const
kenjiArai 0:5b88d5760320 251 {
kenjiArai 0:5b88d5760320 252 return get(i);
kenjiArai 0:5b88d5760320 253 }
kenjiArai 0:5b88d5760320 254
kenjiArai 0:5b88d5760320 255 private:
kenjiArai 0:5b88d5760320 256 CallChainLink *_chain;
kenjiArai 0:5b88d5760320 257 };
kenjiArai 0:5b88d5760320 258
kenjiArai 0:5b88d5760320 259 /**@}*/
kenjiArai 0:5b88d5760320 260
kenjiArai 0:5b88d5760320 261 } // namespace mbed
kenjiArai 0:5b88d5760320 262
kenjiArai 0:5b88d5760320 263 #endif