Morpheus / mbed-hal

Dependencies:   target-freescale

Committer:
screamer
Date:
Wed Mar 23 21:36:09 2016 +0000
Revision:
0:9c59db1fbc9e
Initial revision

Who changed what in which revision?

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