diff options
| author | Vasil Zlatanov <v@skozl.com> | 2017-05-03 16:30:16 +0100 | 
|---|---|---|
| committer | Vasil Zlatanov <v@skozl.com> | 2017-05-03 16:30:16 +0100 | 
| commit | a6ed1742539c62186fb903017b52dd48f145ae4f (patch) | |
| tree | e9f49f0437e1f260b276b45fddcb66ea524f49e3 /ext/Transaction.h | |
| download | e2-switch-a6ed1742539c62186fb903017b52dd48f145ae4f.tar.gz e2-switch-a6ed1742539c62186fb903017b52dd48f145ae4f.tar.bz2 e2-switch-a6ed1742539c62186fb903017b52dd48f145ae4f.zip  | |
Add template and build environment.
Diffstat (limited to 'ext/Transaction.h')
| -rw-r--r-- | ext/Transaction.h | 73 | 
1 files changed, 73 insertions, 0 deletions
diff --git a/ext/Transaction.h b/ext/Transaction.h new file mode 100644 index 0000000..92852e2 --- /dev/null +++ b/ext/Transaction.h @@ -0,0 +1,73 @@ +/* mbed Microcontroller Library + * Copyright (c) 2015 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + *     http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef MBED_TRANSACTION_H +#define MBED_TRANSACTION_H + +#include "platform.h" +#include "FunctionPointer.h" + +namespace mbed { + +/** Transaction structure + */ +typedef struct { +    void *tx_buffer;           /**< Tx buffer */ +    size_t tx_length;          /**< Length of Tx buffer*/ +    void *rx_buffer;           /**< Rx buffer */ +    size_t rx_length;          /**< Length of Rx buffer */ +    uint32_t event;            /**< Event for a transaction */ +    event_callback_t callback; /**< User's callback */ +    uint8_t width;             /**< Buffer's word width (8, 16, 32, 64) */ +} transaction_t; + +/** Transaction class defines a transaction. + */ +template<typename Class> +class Transaction { +public: +    Transaction(Class *tpointer, const transaction_t& transaction) : _obj(tpointer), _data(transaction) { +    } + +    Transaction() : _obj(), _data() { +    } + +    ~Transaction() { +    } + +    /** Get object's instance for the transaction +     * +     * @return The object which was stored +     */ +    Class* get_object() { +        return _obj; +    } + +    /** Get the transaction +     * +     * @return The transaction which was stored +     */ +    transaction_t* get_transaction() { +        return &_data; +    } + +private: +    Class* _obj; +    transaction_t _data; +}; + +} + +#endif  | 
