mbed.h library with any bug fixes AV finds.

Dependents:   micromouse4_encoder_testing PID_Test Lab1_Test WorkingPID ... more

Committer:
aravindsv
Date:
Mon Nov 02 03:07:12 2015 +0000
Revision:
1:ebce2ad32f95
Parent:
0:ba7650f404af
Changed the RCC timeout value to 500 ms, so total code startup time before program starts running is ~1s. Hopefully no side-effects from lower startup timeouts

Who changed what in which revision?

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