iSDIO library for FlashAir
Dependents: FlashAir_iSDIO_sample FlashAir_iSDIO_16seg_ADT7410_step1 FlashAir_iSDIO_16seg_ADT7410 FlashAir_iSDIO_sample_OS5_ ... more
Diff: FlashAir_iSDIO.cpp
- Revision:
- 0:89c6aae3a486
- Child:
- 1:dc888b9028cf
diff -r 000000000000 -r 89c6aae3a486 FlashAir_iSDIO.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/FlashAir_iSDIO.cpp Thu Aug 23 06:33:32 2018 +0000 @@ -0,0 +1,93 @@ +#include "mbed.h" +#include "FlashAir_iSDIO.h" + + +FlashAir_iSDIO::FlashAir_iSDIO(PinName mosi, PinName miso, PinName sclk, PinName cs, const char *name, Serial *console) : + iSDIO(mosi, miso, sclk, cs, name, console) +{ + instance = this ; + sequenceId = 0 ; + _console = console ; + _console->printf("new FlashAIr_iSDIO\n"); +} + +FlashAir_iSDIO *FlashAir_iSDIO::instance = 0; + +FlashAir_iSDIO *FlashAir_iSDIO::getInstance() +{ + return FlashAir_iSDIO::instance ; +} + +//uint32_t FlashAir_iSDIO::getSequenceId() +//{ +// return iSDIO::sequenceId ; +//} + +uint8_t FlashAir_iSDIO::wlan_disconnect(uint32_t sequenceId) { + _console->printf("\nDisconnect command: \n"); + memset(cmdbuffer, 0, sizeof(cmdbuffer)); + uint8_t* p = cmdbuffer; + p = put_command_header(p, 1, 0); + p = put_command_info_header(p, WLAN_DISCONNECT, sequenceId, 0); + put_command_header(cmdbuffer, 1, (p - cmdbuffer)); + printHex(cmdbuffer, (p - cmdbuffer)); +// return this.writeExtDataPort(1, 1, ISDIO_WRITE, cmdbuffer) ? true : false; + return writeExtDataPort(1, 1, ISDIO_WRITE, cmdbuffer) ? 1 : 0; +} + +uint8_t FlashAir_iSDIO::wlan_establish(uint32_t sequenceId, const uint8_t *ssid, const uint8_t *networkkey, const uint8_t encmode) { + _console->printf("\nEstablish command: \n"); + memset(cmdbuffer, 0, sizeof(cmdbuffer)); + uint8_t* p = cmdbuffer; + p = put_command_header(p, 1, 0); + p = put_command_info_header(p, WLAN_ESTABLISH, sequenceId, 3); + p = put_str_arg(p, ssid); + p = put_str_arg(p, networkkey); + p = put_u8_arg(p, encmode); + put_command_header(cmdbuffer, 1, (p - cmdbuffer)); + printHex(cmdbuffer, (p - cmdbuffer)); + return writeExtDataPort(1, 1, ISDIO_WRITE, cmdbuffer) ? 1 : 0; +} + +uint8_t FlashAir_iSDIO::wlan_connect(uint32_t sequenceId, const uint8_t* ssid, const uint8_t* networkKey) { + _console->printf("\nConnect command: \n"); + memset(cmdbuffer, 0, sizeof(cmdbuffer)); + uint8_t* p = cmdbuffer; + p = put_command_header(p, 1, 0); + p = put_command_info_header(p, WLAN_CONNECT, sequenceId, 2); + p = put_str_arg(p, ssid); + p = put_str_arg(p, networkKey); + put_command_header(cmdbuffer, 1, (p - cmdbuffer)); + printHex(cmdbuffer, (p - cmdbuffer)); + return writeExtDataPort(1, 1, ISDIO_WRITE, cmdbuffer) ? 1 : 0; +} + +uint8_t FlashAir_iSDIO::wlan_scan(uint32_t sequenceId) +{ + _console->printf("\nScan: \n"); + memset(cmdbuffer, 0, sizeof(cmdbuffer)); + uint8_t *p = cmdbuffer; + p = put_command_header(p, 1, 0); + p = put_command_info_header(p, WLAN_SCAN, sequenceId, 0); + put_command_header(cmdbuffer, 1, (p-cmdbuffer)); + printHex(cmdbuffer, (p - cmdbuffer)); + return writeExtDataPort(MIO_IO, FUNC1, ISDIO_WRITE, cmdbuffer) ? true : false; +} + +uint8_t FlashAir_iSDIO::read_shared_mem(uint32_t offset, uint8_t* dst, uint16_t length) +{ + uint8_t ret ; + + ret = readExtMemory(MIO_IO, FUNC1, ISDIO_VENDOR+offset, length, dst); + _console->printf("read_shared_memory:\n"); + printHex((uint8_t*)dst, (uint32_t)length); + return ret ; +} + +uint8_t FlashAir_iSDIO::write_shared_mem(uint32_t offset, uint8_t* src, uint16_t length) +{ + _console->printf("write_shared_mem:\n"); + printHex((uint8_t*)src, (uint32_t)length); + + return writeExtMemory(MIO_IO, FUNC1, ISDIO_VENDOR+offset, length, src); +}