5.2.1 - Updated I2C files

Dependents:   mbed-TFT-example-NCS36510 mbed-Accelerometer-example-NCS36510 mbed-Accelerometer-example-NCS36510

Committer:
jacobjohnson
Date:
Mon Feb 27 17:45:05 2017 +0000
Revision:
1:f30bdcd2b33b
Parent:
0:098463de4c5d
changed the inputscale from 1 to 7 in analogin_api.c.  This will need to be changed later, and accessed from the main level, but for now this allows the  adc to read a value from 0 to 3.7V, instead of just up to 1V.;

Who changed what in which revision?

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