Demo program for library named SD_PlayerSkeleton of SD card player skeleton. SD カードプレーヤのための骨組みとして使うためのライブラリ SD_PlayerSkeleton の使用例.このプログラムについては,CQ出版社インターフェース誌 2018年7月号で解説している.

Dependencies:   F746_GUI F746_SAI_IO SD_PlayerSkeleton

Committer:
MikamiUitOpen
Date:
Sun Apr 09 12:44:17 2017 +0000
Revision:
19:3c3833ec00d2
Parent:
2:cf42e62a97dc
20

Who changed what in which revision?

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