iSDIO library for FlashAir
Dependents: FlashAir_iSDIO_sample FlashAir_iSDIO_16seg_ADT7410_step1 FlashAir_iSDIO_16seg_ADT7410 FlashAir_iSDIO_sample_OS5_ ... more
iSDIO.h@1:dc888b9028cf, 2018-08-29 (annotated)
- Committer:
- hogejun
- Date:
- Wed Aug 29 04:04:52 2018 +0000
- Revision:
- 1:dc888b9028cf
- Parent:
- 0:89c6aae3a486
add header to each file
Who changed what in which revision?
User | Revision | Line number | New 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__ |