iSDIO library for FlashAir

Dependents:   FlashAir_iSDIO_sample FlashAir_iSDIO_16seg_ADT7410_step1 FlashAir_iSDIO_16seg_ADT7410 FlashAir_iSDIO_sample_OS5_ ... more

Committer:
hogejun
Date:
Sat Jan 19 04:31:16 2019 +0000
Revision:
2:b8b33621e7fe
Parent:
1:dc888b9028cf
modified debug output

Who changed what in which revision?

UserRevisionLine numberNew contents of line
hogejun 0:89c6aae3a486 1 /* mbed SD iSDIO Library
hogejun 1:dc888b9028cf 2 * Copyright (C) 2018 by Junichi SHIBA, PIAX Inc.
hogejun 0:89c6aae3a486 3 *
hogejun 0:89c6aae3a486 4 * Arduino Sdio Library
hogejun 0:89c6aae3a486 5 * Copyright (C) 2014 by Munehiro Doi
hogejun 0:89c6aae3a486 6 *
hogejun 0:89c6aae3a486 7 * This file is an iSDIO extension of the Arduino Sd2Card Library
hogejun 0:89c6aae3a486 8 * Copyright (C) 2009 by William Greiman
hogejun 0:89c6aae3a486 9 *
hogejun 0:89c6aae3a486 10 * This Library is free software: you can redistribute it and/or modify
hogejun 0:89c6aae3a486 11 * it under the terms of the GNU General Public License as published by
hogejun 0:89c6aae3a486 12 * the Free Software Foundation, either version 3 of the License, or
hogejun 0:89c6aae3a486 13 * (at your option) any later version.
hogejun 0:89c6aae3a486 14 *
hogejun 0:89c6aae3a486 15 * This Library is distributed in the hope that it will be useful,
hogejun 0:89c6aae3a486 16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
hogejun 0:89c6aae3a486 17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
hogejun 0:89c6aae3a486 18 * GNU General Public License for more details.
hogejun 0:89c6aae3a486 19 *
hogejun 0:89c6aae3a486 20 * You should have received a copy of the GNU General Public License
hogejun 0:89c6aae3a486 21 * along with the Arduino Sd2Card Library. If not, see
hogejun 0:89c6aae3a486 22 * <http://www.gnu.org/licenses/>.
hogejun 0:89c6aae3a486 23 */
hogejun 0:89c6aae3a486 24 #ifndef __ISDIO_H__
hogejun 0:89c6aae3a486 25 #define __ISDIO_H__
hogejun 0:89c6aae3a486 26
hogejun 0:89c6aae3a486 27 #include "mbed.h"
hogejun 0:89c6aae3a486 28 #include "SDFileSystem.h"
hogejun 0:89c6aae3a486 29 #include "iSDIO_template.h"
hogejun 0:89c6aae3a486 30
hogejun 0:89c6aae3a486 31 // Extention Register Commands
hogejun 0:89c6aae3a486 32 #define MIO_MEM 0
hogejun 0:89c6aae3a486 33 #define MIO_IO 1
hogejun 0:89c6aae3a486 34 #define FUNC1 1
hogejun 0:89c6aae3a486 35
hogejun 0:89c6aae3a486 36 // iSDIO register
hogejun 0:89c6aae3a486 37 #define ISDIO_BASE 0x000
hogejun 0:89c6aae3a486 38 #define ISDIO_WRITE_OFFSET 0x000
hogejun 0:89c6aae3a486 39 #define ISDIO_RESPONSE_OFFSET 0x200
hogejun 0:89c6aae3a486 40 #define ISDIO_STATUS_OFFSET 0x400
hogejun 0:89c6aae3a486 41 #define ISDIO_VENDOR_OFFSET 0x1000
hogejun 0:89c6aae3a486 42
hogejun 0:89c6aae3a486 43 #define ISDIO_WRITE (ISDIO_BASE + ISDIO_WRITE_OFFSET)
hogejun 0:89c6aae3a486 44 #define ISDIO_RESPONSE (ISDIO_BASE + ISDIO_RESPONSE_OFFSET)
hogejun 0:89c6aae3a486 45 #define ISDIO_STATUS (ISDIO_BASE + ISDIO_STATUS_OFFSET)
hogejun 0:89c6aae3a486 46 #define ISDIO_VENDOR (ISDIO_BASE + ISDIO_VENDOR_OFFSET)
hogejun 0:89c6aae3a486 47
hogejun 0:89c6aae3a486 48 #define ISDIO_STATUS_QUEUE_OFFSET 0x040
hogejun 0:89c6aae3a486 49 #define ISDIO_STATUS_QUEUE (ISDIO_STATUS + ISDIO_STATUS_QUEUE_OFFSET)
hogejun 0:89c6aae3a486 50 #define ISDIO_STATUS_QUEUE_SIZE 0x14
hogejun 0:89c6aae3a486 51
hogejun 0:89c6aae3a486 52
hogejun 0:89c6aae3a486 53 #define OFFSET_RESPONSE_DATA 24 // change structured data in the future
hogejun 0:89c6aae3a486 54 #define OFFSET_START_SSID 28
hogejun 0:89c6aae3a486 55 #define COMMAND_SEQUENCE_OFFSET 0x4
hogejun 0:89c6aae3a486 56 #define RESPONSE_STATUS_OFFSET 0x8
hogejun 0:89c6aae3a486 57
hogejun 0:89c6aae3a486 58 // iSDIO command
hogejun 0:89c6aae3a486 59 #define WLAN_SCAN 0x01
hogejun 0:89c6aae3a486 60 #define WLAN_CONNECT 0x02
hogejun 0:89c6aae3a486 61 #define WLAN_ESTABLISH 0x03
hogejun 0:89c6aae3a486 62 #define WLAN_DISCONNECT 0x07
hogejun 0:89c6aae3a486 63
hogejun 0:89c6aae3a486 64 //#define ENCMODE_WPA2PSK_AES 0x06
hogejun 0:89c6aae3a486 65
hogejun 0:89c6aae3a486 66 class iSDIO : public SDFileSystem
hogejun 0:89c6aae3a486 67 {
hogejun 0:89c6aae3a486 68 public:
hogejun 0:89c6aae3a486 69 iSDIO(PinName mosi, PinName miso, PinName sclk, PinName cs, const char* name, Serial* console = NULL);
hogejun 0:89c6aae3a486 70
hogejun 0:89c6aae3a486 71 static iSDIO* getInstance();
hogejun 0:89c6aae3a486 72 uint32_t getSequenceId();
hogejun 0:89c6aae3a486 73 uint32_t getNextSequenceId();
hogejun 0:89c6aae3a486 74
hogejun 0:89c6aae3a486 75 virtual ~iSDIO();
hogejun 0:89c6aae3a486 76
hogejun 0:89c6aae3a486 77 uint8_t readExtDataPort(uint8_t mio, uint8_t func, uint16_t addr, uint8_t* dst);
hogejun 0:89c6aae3a486 78 uint8_t readExtMemory(uint8_t mio, uint8_t func, uint32_t addr, uint16_t count, uint8_t* dst);
hogejun 0:89c6aae3a486 79 uint8_t writeExtDataPort(uint8_t mio, uint8_t func, uint16_t addr, const uint8_t* src);
hogejun 0:89c6aae3a486 80 uint8_t writeExtMemory(uint8_t mio, uint8_t func, uint32_t addr, uint16_t count, const uint8_t* src);
hogejun 0:89c6aae3a486 81 uint8_t writeExtMask(uint8_t mio, uint8_t func, uint32_t addr, uint8_t mask, const uint8_t* src);
hogejun 0:89c6aae3a486 82
hogejun 0:89c6aae3a486 83 uint8_t waitResponse(uint32_t sequenceId);
hogejun 0:89c6aae3a486 84
hogejun 0:89c6aae3a486 85 private:
hogejun 0:89c6aae3a486 86 Serial* _console ;
hogejun 0:89c6aae3a486 87
hogejun 0:89c6aae3a486 88 protected:
hogejun 0:89c6aae3a486 89 uint8_t readExt(uint32_t arg, uint8_t* src, uint16_t count);
hogejun 0:89c6aae3a486 90 uint8_t writeExt(uint32_t arg, const uint8_t* src, uint16_t count);
hogejun 0:89c6aae3a486 91
hogejun 0:89c6aae3a486 92 static iSDIO* instance;
hogejun 0:89c6aae3a486 93 uint32_t sequenceId;
hogejun 0:89c6aae3a486 94
hogejun 0:89c6aae3a486 95 //for debug
hogejun 0:89c6aae3a486 96 void printByte(uint8_t value);
hogejun 0:89c6aae3a486 97 void printBytes(uint8_t* p, uint32_t len);
hogejun 0:89c6aae3a486 98 void printHex(uint8_t* p, uint32_t len);
hogejun 0:89c6aae3a486 99 };
hogejun 0:89c6aae3a486 100
hogejun 0:89c6aae3a486 101 #endif // __ISDIO_H__