Mbed SDK for XRange SX1272 LoRa module

Dependents:   XRangePingPong XRange-LoRaWAN-lmic-app lora-transceiver

SX1272 LoRa RF module

https://www.netblocks.eu/xrange-sx1272-lora-datasheet/

Committer:
netblocks
Date:
Thu Jan 07 13:01:25 2016 +0000
Revision:
339:ac6f3fd999f3
Parent:
336:1e18a06a987b
HSE_VALUE set for XTAL 16Mhz

Who changed what in which revision?

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