SPKT

Dependencies:   F746_GUI SD_PlayerSkeleton F746_SAI_IO

Committer:
phungductung
Date:
Tue Jun 04 09:08:29 2019 +0000
Revision:
0:aa3fc5ad02f7
SPKT

Who changed what in which revision?

UserRevisionLine numberNew contents of line
phungductung 0:aa3fc5ad02f7 1 /* mbed Microcontroller Library
phungductung 0:aa3fc5ad02f7 2 * Copyright (c) 2006-2013 ARM Limited
phungductung 0:aa3fc5ad02f7 3 *
phungductung 0:aa3fc5ad02f7 4 * Licensed under the Apache License, Version 2.0 (the "License");
phungductung 0:aa3fc5ad02f7 5 * you may not use this file except in compliance with the License.
phungductung 0:aa3fc5ad02f7 6 * You may obtain a copy of the License at
phungductung 0:aa3fc5ad02f7 7 *
phungductung 0:aa3fc5ad02f7 8 * http://www.apache.org/licenses/LICENSE-2.0
phungductung 0:aa3fc5ad02f7 9 *
phungductung 0:aa3fc5ad02f7 10 * Unless required by applicable law or agreed to in writing, software
phungductung 0:aa3fc5ad02f7 11 * distributed under the License is distributed on an "AS IS" BASIS,
phungductung 0:aa3fc5ad02f7 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
phungductung 0:aa3fc5ad02f7 13 * See the License for the specific language governing permissions and
phungductung 0:aa3fc5ad02f7 14 * limitations under the License.
phungductung 0:aa3fc5ad02f7 15 */
phungductung 0:aa3fc5ad02f7 16 #include "BusIn.h"
phungductung 0:aa3fc5ad02f7 17 #include "mbed_assert.h"
phungductung 0:aa3fc5ad02f7 18
phungductung 0:aa3fc5ad02f7 19 namespace mbed {
phungductung 0:aa3fc5ad02f7 20
phungductung 0:aa3fc5ad02f7 21 BusIn::BusIn(PinName p0, PinName p1, PinName p2, PinName p3, PinName p4, PinName p5, PinName p6, PinName p7, PinName p8, PinName p9, PinName p10, PinName p11, PinName p12, PinName p13, PinName p14, PinName p15) {
phungductung 0:aa3fc5ad02f7 22 PinName pins[16] = {p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15};
phungductung 0:aa3fc5ad02f7 23
phungductung 0:aa3fc5ad02f7 24 _nc_mask = 0;
phungductung 0:aa3fc5ad02f7 25 for (int i=0; i<16; i++) {
phungductung 0:aa3fc5ad02f7 26 _pin[i] = (pins[i] != NC) ? new DigitalIn(pins[i]) : 0;
phungductung 0:aa3fc5ad02f7 27 if (pins[i] != NC) {
phungductung 0:aa3fc5ad02f7 28 _nc_mask |= (1 << i);
phungductung 0:aa3fc5ad02f7 29 }
phungductung 0:aa3fc5ad02f7 30 }
phungductung 0:aa3fc5ad02f7 31 }
phungductung 0:aa3fc5ad02f7 32
phungductung 0:aa3fc5ad02f7 33 BusIn::BusIn(PinName pins[16]) {
phungductung 0:aa3fc5ad02f7 34 _nc_mask = 0;
phungductung 0:aa3fc5ad02f7 35 for (int i=0; i<16; i++) {
phungductung 0:aa3fc5ad02f7 36 _pin[i] = (pins[i] != NC) ? new DigitalIn(pins[i]) : 0;
phungductung 0:aa3fc5ad02f7 37 if (pins[i] != NC) {
phungductung 0:aa3fc5ad02f7 38 _nc_mask |= (1 << i);
phungductung 0:aa3fc5ad02f7 39 }
phungductung 0:aa3fc5ad02f7 40 }
phungductung 0:aa3fc5ad02f7 41 }
phungductung 0:aa3fc5ad02f7 42
phungductung 0:aa3fc5ad02f7 43 BusIn::~BusIn() {
phungductung 0:aa3fc5ad02f7 44 for (int i=0; i<16; i++) {
phungductung 0:aa3fc5ad02f7 45 if (_pin[i] != 0) {
phungductung 0:aa3fc5ad02f7 46 delete _pin[i];
phungductung 0:aa3fc5ad02f7 47 }
phungductung 0:aa3fc5ad02f7 48 }
phungductung 0:aa3fc5ad02f7 49 }
phungductung 0:aa3fc5ad02f7 50
phungductung 0:aa3fc5ad02f7 51 int BusIn::read() {
phungductung 0:aa3fc5ad02f7 52 int v = 0;
phungductung 0:aa3fc5ad02f7 53 for (int i=0; i<16; i++) {
phungductung 0:aa3fc5ad02f7 54 if (_pin[i] != 0) {
phungductung 0:aa3fc5ad02f7 55 v |= _pin[i]->read() << i;
phungductung 0:aa3fc5ad02f7 56 }
phungductung 0:aa3fc5ad02f7 57 }
phungductung 0:aa3fc5ad02f7 58 return v;
phungductung 0:aa3fc5ad02f7 59 }
phungductung 0:aa3fc5ad02f7 60
phungductung 0:aa3fc5ad02f7 61 void BusIn::mode(PinMode pull) {
phungductung 0:aa3fc5ad02f7 62 for (int i=0; i<16; i++) {
phungductung 0:aa3fc5ad02f7 63 if (_pin[i] != 0) {
phungductung 0:aa3fc5ad02f7 64 _pin[i]->mode(pull);
phungductung 0:aa3fc5ad02f7 65 }
phungductung 0:aa3fc5ad02f7 66 }
phungductung 0:aa3fc5ad02f7 67 }
phungductung 0:aa3fc5ad02f7 68
phungductung 0:aa3fc5ad02f7 69 #ifdef MBED_OPERATORS
phungductung 0:aa3fc5ad02f7 70 BusIn::operator int() {
phungductung 0:aa3fc5ad02f7 71 return read();
phungductung 0:aa3fc5ad02f7 72 }
phungductung 0:aa3fc5ad02f7 73
phungductung 0:aa3fc5ad02f7 74 DigitalIn& BusIn::operator[] (int index) {
phungductung 0:aa3fc5ad02f7 75 MBED_ASSERT(index >= 0 && index <= 16);
phungductung 0:aa3fc5ad02f7 76 MBED_ASSERT(_pin[index]);
phungductung 0:aa3fc5ad02f7 77 return *_pin[index];
phungductung 0:aa3fc5ad02f7 78 }
phungductung 0:aa3fc5ad02f7 79
phungductung 0:aa3fc5ad02f7 80 #endif
phungductung 0:aa3fc5ad02f7 81
phungductung 0:aa3fc5ad02f7 82 } // namespace mbed