pro vyuku PSS v Jecne

Committer:
vladvana
Date:
Sun Sep 24 12:31:52 2017 +0000
Revision:
0:23d1f73bf130
podklady pro cviceni z PSS

Who changed what in which revision?

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