customized mbed library sources for nrf51822

Dependents:   Grove_Node Potentiometer BLE_Beacon I2C_Scanner

Committer:
yihui
Date:
Tue Nov 04 07:38:53 2014 +0000
Revision:
0:700cadd8b708
customized mbed-src library for nrf51822

Who changed what in which revision?

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