The code from https://github.com/vpcola/Nucleo

Committer:
sinrab
Date:
Wed Oct 08 11:00:24 2014 +0000
Revision:
0:5464d5e415e5
The code from https://github.com/vpcola/Nucleo

Who changed what in which revision?

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