iSDIO library for FlashAir
Dependents: FlashAir_iSDIO_sample FlashAir_iSDIO_16seg_ADT7410_step1 FlashAir_iSDIO_16seg_ADT7410 FlashAir_iSDIO_sample_OS5_ ... more
iSDIO.h
- Committer:
- hogejun
- Date:
- 2019-01-19
- Revision:
- 2:b8b33621e7fe
- Parent:
- 1:dc888b9028cf
File content as of revision 2:b8b33621e7fe:
/* mbed SD iSDIO Library * Copyright (C) 2018 by Junichi SHIBA, PIAX Inc. * * Arduino Sdio Library * Copyright (C) 2014 by Munehiro Doi * * This file is an iSDIO extension of the Arduino Sd2Card Library * Copyright (C) 2009 by William Greiman * * This Library is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This Library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with the Arduino Sd2Card Library. If not, see * <http://www.gnu.org/licenses/>. */ #ifndef __ISDIO_H__ #define __ISDIO_H__ #include "mbed.h" #include "SDFileSystem.h" #include "iSDIO_template.h" // Extention Register Commands #define MIO_MEM 0 #define MIO_IO 1 #define FUNC1 1 // iSDIO register #define ISDIO_BASE 0x000 #define ISDIO_WRITE_OFFSET 0x000 #define ISDIO_RESPONSE_OFFSET 0x200 #define ISDIO_STATUS_OFFSET 0x400 #define ISDIO_VENDOR_OFFSET 0x1000 #define ISDIO_WRITE (ISDIO_BASE + ISDIO_WRITE_OFFSET) #define ISDIO_RESPONSE (ISDIO_BASE + ISDIO_RESPONSE_OFFSET) #define ISDIO_STATUS (ISDIO_BASE + ISDIO_STATUS_OFFSET) #define ISDIO_VENDOR (ISDIO_BASE + ISDIO_VENDOR_OFFSET) #define ISDIO_STATUS_QUEUE_OFFSET 0x040 #define ISDIO_STATUS_QUEUE (ISDIO_STATUS + ISDIO_STATUS_QUEUE_OFFSET) #define ISDIO_STATUS_QUEUE_SIZE 0x14 #define OFFSET_RESPONSE_DATA 24 // change structured data in the future #define OFFSET_START_SSID 28 #define COMMAND_SEQUENCE_OFFSET 0x4 #define RESPONSE_STATUS_OFFSET 0x8 // iSDIO command #define WLAN_SCAN 0x01 #define WLAN_CONNECT 0x02 #define WLAN_ESTABLISH 0x03 #define WLAN_DISCONNECT 0x07 //#define ENCMODE_WPA2PSK_AES 0x06 class iSDIO : public SDFileSystem { public: iSDIO(PinName mosi, PinName miso, PinName sclk, PinName cs, const char* name, Serial* console = NULL); static iSDIO* getInstance(); uint32_t getSequenceId(); uint32_t getNextSequenceId(); virtual ~iSDIO(); uint8_t readExtDataPort(uint8_t mio, uint8_t func, uint16_t addr, uint8_t* dst); uint8_t readExtMemory(uint8_t mio, uint8_t func, uint32_t addr, uint16_t count, uint8_t* dst); uint8_t writeExtDataPort(uint8_t mio, uint8_t func, uint16_t addr, const uint8_t* src); uint8_t writeExtMemory(uint8_t mio, uint8_t func, uint32_t addr, uint16_t count, const uint8_t* src); uint8_t writeExtMask(uint8_t mio, uint8_t func, uint32_t addr, uint8_t mask, const uint8_t* src); uint8_t waitResponse(uint32_t sequenceId); private: Serial* _console ; protected: uint8_t readExt(uint32_t arg, uint8_t* src, uint16_t count); uint8_t writeExt(uint32_t arg, const uint8_t* src, uint16_t count); static iSDIO* instance; uint32_t sequenceId; //for debug void printByte(uint8_t value); void printBytes(uint8_t* p, uint32_t len); void printHex(uint8_t* p, uint32_t len); }; #endif // __ISDIO_H__