The prosthetic control(MIT)

Committer:
ganlikun
Date:
Thu Jun 23 05:23:34 2022 +0000
Revision:
0:20e0c61e0684
01

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ganlikun 0:20e0c61e0684 1 /* mbed Microcontroller Library
ganlikun 0:20e0c61e0684 2 * Copyright (c) 2015 ARM Limited
ganlikun 0:20e0c61e0684 3 *
ganlikun 0:20e0c61e0684 4 * Licensed under the Apache License, Version 2.0 (the "License");
ganlikun 0:20e0c61e0684 5 * you may not use this file except in compliance with the License.
ganlikun 0:20e0c61e0684 6 * You may obtain a copy of the License at
ganlikun 0:20e0c61e0684 7 *
ganlikun 0:20e0c61e0684 8 * http://www.apache.org/licenses/LICENSE-2.0
ganlikun 0:20e0c61e0684 9 *
ganlikun 0:20e0c61e0684 10 * Unless required by applicable law or agreed to in writing, software
ganlikun 0:20e0c61e0684 11 * distributed under the License is distributed on an "AS IS" BASIS,
ganlikun 0:20e0c61e0684 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
ganlikun 0:20e0c61e0684 13 * See the License for the specific language governing permissions and
ganlikun 0:20e0c61e0684 14 * limitations under the License.
ganlikun 0:20e0c61e0684 15 */
ganlikun 0:20e0c61e0684 16 #ifndef MBED_TRANSACTION_H
ganlikun 0:20e0c61e0684 17 #define MBED_TRANSACTION_H
ganlikun 0:20e0c61e0684 18
ganlikun 0:20e0c61e0684 19 #include "platform/platform.h"
ganlikun 0:20e0c61e0684 20 #include "platform/FunctionPointer.h"
ganlikun 0:20e0c61e0684 21
ganlikun 0:20e0c61e0684 22 namespace mbed {
ganlikun 0:20e0c61e0684 23 /** \addtogroup platform */
ganlikun 0:20e0c61e0684 24
ganlikun 0:20e0c61e0684 25 /** Transaction structure
ganlikun 0:20e0c61e0684 26 * @ingroup platform
ganlikun 0:20e0c61e0684 27 */
ganlikun 0:20e0c61e0684 28 typedef struct {
ganlikun 0:20e0c61e0684 29 void *tx_buffer; /**< Tx buffer */
ganlikun 0:20e0c61e0684 30 size_t tx_length; /**< Length of Tx buffer*/
ganlikun 0:20e0c61e0684 31 void *rx_buffer; /**< Rx buffer */
ganlikun 0:20e0c61e0684 32 size_t rx_length; /**< Length of Rx buffer */
ganlikun 0:20e0c61e0684 33 uint32_t event; /**< Event for a transaction */
ganlikun 0:20e0c61e0684 34 event_callback_t callback; /**< User's callback */
ganlikun 0:20e0c61e0684 35 uint8_t width; /**< Buffer's word width (8, 16, 32, 64) */
ganlikun 0:20e0c61e0684 36 } transaction_t;
ganlikun 0:20e0c61e0684 37
ganlikun 0:20e0c61e0684 38 /** Transaction class defines a transaction.
ganlikun 0:20e0c61e0684 39 *
ganlikun 0:20e0c61e0684 40 * @note Synchronization level: Not protected
ganlikun 0:20e0c61e0684 41 * @ingroup platform
ganlikun 0:20e0c61e0684 42 */
ganlikun 0:20e0c61e0684 43 template<typename Class>
ganlikun 0:20e0c61e0684 44 class Transaction {
ganlikun 0:20e0c61e0684 45 public:
ganlikun 0:20e0c61e0684 46 Transaction(Class *tpointer, const transaction_t& transaction) : _obj(tpointer), _data(transaction) {
ganlikun 0:20e0c61e0684 47 }
ganlikun 0:20e0c61e0684 48
ganlikun 0:20e0c61e0684 49 Transaction() : _obj(), _data() {
ganlikun 0:20e0c61e0684 50 }
ganlikun 0:20e0c61e0684 51
ganlikun 0:20e0c61e0684 52 ~Transaction() {
ganlikun 0:20e0c61e0684 53 }
ganlikun 0:20e0c61e0684 54
ganlikun 0:20e0c61e0684 55 /** Get object's instance for the transaction
ganlikun 0:20e0c61e0684 56 *
ganlikun 0:20e0c61e0684 57 * @return The object which was stored
ganlikun 0:20e0c61e0684 58 */
ganlikun 0:20e0c61e0684 59 Class* get_object() {
ganlikun 0:20e0c61e0684 60 return _obj;
ganlikun 0:20e0c61e0684 61 }
ganlikun 0:20e0c61e0684 62
ganlikun 0:20e0c61e0684 63 /** Get the transaction
ganlikun 0:20e0c61e0684 64 *
ganlikun 0:20e0c61e0684 65 * @return The transaction which was stored
ganlikun 0:20e0c61e0684 66 */
ganlikun 0:20e0c61e0684 67 transaction_t* get_transaction() {
ganlikun 0:20e0c61e0684 68 return &_data;
ganlikun 0:20e0c61e0684 69 }
ganlikun 0:20e0c61e0684 70
ganlikun 0:20e0c61e0684 71 private:
ganlikun 0:20e0c61e0684 72 Class* _obj;
ganlikun 0:20e0c61e0684 73 transaction_t _data;
ganlikun 0:20e0c61e0684 74 };
ganlikun 0:20e0c61e0684 75
ganlikun 0:20e0c61e0684 76 }
ganlikun 0:20e0c61e0684 77
ganlikun 0:20e0c61e0684 78 #endif
ganlikun 0:20e0c61e0684 79