Yihui Xiong / BLE_NODE_TEST

Dependencies:   BLE_API nRF51822

Fork of BLE_LoopbackUART by Bluetooth Low Energy

Committer:
yihui
Date:
Wed Oct 29 06:23:47 2014 +0000
Revision:
9:05f0b5a3a70a
initial

Who changed what in which revision?

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