SPKT

Dependents:   WAV

Committer:
phungductung
Date:
Tue Jun 04 21:51:46 2019 +0000
Revision:
0:e87aa4c49e95
libray

Who changed what in which revision?

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