mbed library sources. Supersedes mbed-src.

Fork of mbed by teralytic

Committer:
rodriguise
Date:
Mon Oct 17 18:47:01 2016 +0000
Revision:
148:4802eb17e82b
Parent:
144:ef7eb2e8f9f7
backup

Who changed what in which revision?

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