SAKURA Internet IoT Communication Module Library for mbed

Dependents:   patlite_sakuraio sakuraio_lte_firmwareupdater shownet2017-iinebutton patlite_sakuraio_stack ... more

SAKURA Internet IoT Communication Module Library for mbed

Sakura Communication Module (with sakura.io) library for mbed.

Support

This library supports following products.

Reference

Please see the datasheet.

License

The MIT License (MIT)

Copyright (c) SAKURA Internet Inc.

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Committer:
okuhara
Date:
Fri Apr 13 10:23:27 2018 +0000
Revision:
13:a9dbb86be232
Parent:
11:16e726ca39c6
Add the PowerSaveMode commands.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
misodengaku 7:9feee88e7cbc 1 /* SAKURA Internet IoT Communication Module Library for mbed
misodengaku 7:9feee88e7cbc 2 *
misodengaku 7:9feee88e7cbc 3 * The MIT License (MIT)
misodengaku 7:9feee88e7cbc 4 *
misodengaku 7:9feee88e7cbc 5 * Copyright (c) SAKURA Internet Inc.
misodengaku 7:9feee88e7cbc 6 *
misodengaku 7:9feee88e7cbc 7 * Permission is hereby granted, free of charge, to any person obtaining a copy
misodengaku 7:9feee88e7cbc 8 * of this software and associated documentation files (the "Software"),
misodengaku 7:9feee88e7cbc 9 * to deal in the Software without restriction, including without limitation
misodengaku 7:9feee88e7cbc 10 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
misodengaku 7:9feee88e7cbc 11 * and/or sell copies of the Software, and to permit persons to whom the Software
misodengaku 7:9feee88e7cbc 12 * is furnished to do so, subject to the following conditions:
misodengaku 7:9feee88e7cbc 13 *
misodengaku 7:9feee88e7cbc 14 * The above copyright notice and this permission notice shall be included
misodengaku 7:9feee88e7cbc 15 * in all copies or substantial portions of the Software.
misodengaku 7:9feee88e7cbc 16 *
misodengaku 7:9feee88e7cbc 17 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
misodengaku 7:9feee88e7cbc 18 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
misodengaku 7:9feee88e7cbc 19 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
misodengaku 7:9feee88e7cbc 20 * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
misodengaku 7:9feee88e7cbc 21 * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
misodengaku 7:9feee88e7cbc 22 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
misodengaku 7:9feee88e7cbc 23 */
misodengaku 7:9feee88e7cbc 24
misodengaku 7:9feee88e7cbc 25 #ifndef _SAKURAIO_H_
misodengaku 7:9feee88e7cbc 26 #define _SAKURAIO_H_
chibiegg 11:16e726ca39c6 27
misodengaku 7:9feee88e7cbc 28 #include "mbed.h"
misodengaku 7:9feee88e7cbc 29 #include <SakuraIO/commands.h>
chibiegg 11:16e726ca39c6 30
misodengaku 7:9feee88e7cbc 31 class SakuraIO
misodengaku 7:9feee88e7cbc 32 {
misodengaku 7:9feee88e7cbc 33 protected:
misodengaku 7:9feee88e7cbc 34 virtual void begin() {}
misodengaku 7:9feee88e7cbc 35 virtual void end() {}
chibiegg 11:16e726ca39c6 36
misodengaku 7:9feee88e7cbc 37 virtual void sendByte(uint8_t data) {}
misodengaku 7:9feee88e7cbc 38 //virtual void finishSending(){}
chibiegg 11:16e726ca39c6 39
misodengaku 7:9feee88e7cbc 40 virtual uint8_t startReceive(uint8_t length) {
misodengaku 7:9feee88e7cbc 41 return length;
misodengaku 7:9feee88e7cbc 42 };
misodengaku 7:9feee88e7cbc 43 virtual uint8_t receiveByte() {
misodengaku 7:9feee88e7cbc 44 return 0x00;
misodengaku 7:9feee88e7cbc 45 }
misodengaku 7:9feee88e7cbc 46 virtual uint8_t receiveByte(bool stop) {
misodengaku 7:9feee88e7cbc 47 return 0x00;
misodengaku 7:9feee88e7cbc 48 }
misodengaku 7:9feee88e7cbc 49 //virtual void finishReceiving(){}
chibiegg 11:16e726ca39c6 50
misodengaku 7:9feee88e7cbc 51 uint8_t executeCommand(uint8_t cmd,uint8_t requestLength, uint8_t *request, uint8_t *responseLength, uint8_t *response);
chibiegg 11:16e726ca39c6 52
misodengaku 7:9feee88e7cbc 53 uint8_t enqueueTxRaw(uint8_t ch, uint8_t type, uint8_t length, uint8_t *data, uint64_t offset);
chibiegg 11:16e726ca39c6 54
misodengaku 7:9feee88e7cbc 55 public:
misodengaku 7:9feee88e7cbc 56 uint8_t getConnectionStatus();
misodengaku 7:9feee88e7cbc 57 uint8_t getSignalQuarity(); // Deprecated
misodengaku 7:9feee88e7cbc 58 uint8_t getSignalQuality();
misodengaku 7:9feee88e7cbc 59 uint64_t getUnixtime();
misodengaku 7:9feee88e7cbc 60 uint8_t echoback(uint8_t length, uint8_t *data, uint8_t *response);
chibiegg 11:16e726ca39c6 61 uint16_t getADC(uint8_t channel); // Deprecated
misodengaku 7:9feee88e7cbc 62 uint8_t enqueueTx(uint8_t ch, int32_t value, uint64_t offset);
misodengaku 7:9feee88e7cbc 63 uint8_t enqueueTx(uint8_t ch, uint32_t value, uint64_t offset);
misodengaku 7:9feee88e7cbc 64 uint8_t enqueueTx(uint8_t ch, int64_t value, uint64_t offset);
misodengaku 7:9feee88e7cbc 65 uint8_t enqueueTx(uint8_t ch, uint64_t value, uint64_t offset);
misodengaku 7:9feee88e7cbc 66 uint8_t enqueueTx(uint8_t ch, float value, uint64_t offset);
misodengaku 7:9feee88e7cbc 67 uint8_t enqueueTx(uint8_t ch, double value, uint64_t offset);
misodengaku 7:9feee88e7cbc 68 uint8_t enqueueTx(uint8_t ch, uint8_t value[8], uint64_t offset);
misodengaku 7:9feee88e7cbc 69 uint8_t enqueueTx(uint8_t ch, int32_t value);
misodengaku 7:9feee88e7cbc 70 uint8_t enqueueTx(uint8_t ch, uint32_t value);
misodengaku 7:9feee88e7cbc 71 uint8_t enqueueTx(uint8_t ch, int64_t value);
misodengaku 7:9feee88e7cbc 72 uint8_t enqueueTx(uint8_t ch, uint64_t value);
misodengaku 7:9feee88e7cbc 73 uint8_t enqueueTx(uint8_t ch, float value);
misodengaku 7:9feee88e7cbc 74 uint8_t enqueueTx(uint8_t ch, double value);
misodengaku 7:9feee88e7cbc 75 uint8_t enqueueTx(uint8_t ch, uint8_t value[8]);
chibiegg 11:16e726ca39c6 76 uint8_t sendImmediatelyRaw(uint8_t ch, uint8_t type, uint8_t length, uint8_t *data, uint64_t offset);
chibiegg 11:16e726ca39c6 77 uint8_t sendImmediately(uint8_t ch, int32_t value, uint64_t offset);
chibiegg 11:16e726ca39c6 78 uint8_t sendImmediately(uint8_t ch, uint32_t value, uint64_t offset);
chibiegg 11:16e726ca39c6 79 uint8_t sendImmediately(uint8_t ch, int64_t value, uint64_t offset);
chibiegg 11:16e726ca39c6 80 uint8_t sendImmediately(uint8_t ch, uint64_t value, uint64_t offset);
chibiegg 11:16e726ca39c6 81 uint8_t sendImmediately(uint8_t ch, float value, uint64_t offset);
chibiegg 11:16e726ca39c6 82 uint8_t sendImmediately(uint8_t ch, double value, uint64_t offset);
chibiegg 11:16e726ca39c6 83 uint8_t sendImmediately(uint8_t ch, uint8_t value[8], uint64_t offset);
chibiegg 11:16e726ca39c6 84 uint8_t sendImmediately(uint8_t ch, int32_t value);
chibiegg 11:16e726ca39c6 85 uint8_t sendImmediately(uint8_t ch, uint32_t value);
chibiegg 11:16e726ca39c6 86 uint8_t sendImmediately(uint8_t ch, int64_t value);
chibiegg 11:16e726ca39c6 87 uint8_t sendImmediately(uint8_t ch, uint64_t value);
chibiegg 11:16e726ca39c6 88 uint8_t sendImmediately(uint8_t ch, float value);
chibiegg 11:16e726ca39c6 89 uint8_t sendImmediately(uint8_t ch, double value);
chibiegg 11:16e726ca39c6 90 uint8_t sendImmediately(uint8_t ch, uint8_t value[8]);
misodengaku 7:9feee88e7cbc 91 uint8_t getTxQueueLength(uint8_t *available, uint8_t *queued);
misodengaku 7:9feee88e7cbc 92 uint8_t clearTx();
misodengaku 7:9feee88e7cbc 93 uint8_t getTxStatus(uint8_t *queue, uint8_t *immediate);
misodengaku 7:9feee88e7cbc 94 uint8_t send();
misodengaku 7:9feee88e7cbc 95 uint8_t dequeueRx(uint8_t *ch, uint8_t *type, uint8_t *value, int64_t *offset);
misodengaku 7:9feee88e7cbc 96 uint8_t peekRx(uint8_t *ch, uint8_t *type, uint8_t *value, int64_t *offset);
misodengaku 7:9feee88e7cbc 97 uint8_t getRxQueueLength(uint8_t *available, uint8_t *queued);
misodengaku 7:9feee88e7cbc 98 uint8_t clearRx();
chibiegg 11:16e726ca39c6 99 uint8_t startFileDownload(uint16_t fileId);
chibiegg 11:16e726ca39c6 100 uint8_t cancelFileDownload();
chibiegg 11:16e726ca39c6 101 uint8_t getFileMetaData(uint8_t *status, uint32_t *totalSize, uint64_t *timestamp, uint32_t *crc);
chibiegg 11:16e726ca39c6 102 uint8_t getFileDownloadStatus(uint8_t *status, uint32_t *currentSize);
chibiegg 11:16e726ca39c6 103 uint8_t getFileData(uint8_t *size, uint8_t *data);
misodengaku 7:9feee88e7cbc 104 uint16_t getProductID();
misodengaku 7:9feee88e7cbc 105 uint8_t getUniqueID(char *data);
misodengaku 7:9feee88e7cbc 106 uint8_t getFirmwareVersion(char *data);
misodengaku 7:9feee88e7cbc 107 uint8_t unlock();
misodengaku 7:9feee88e7cbc 108 uint8_t updateFirmware();
misodengaku 7:9feee88e7cbc 109 uint8_t getFirmwareUpdateStatus();
misodengaku 7:9feee88e7cbc 110 uint8_t reset();
okuhara 13:a9dbb86be232 111 uint8_t setPowerSaveMode(uint8_t mode);
okuhara 13:a9dbb86be232 112 uint8_t getPowerSaveMode();
misodengaku 7:9feee88e7cbc 113 };
chibiegg 11:16e726ca39c6 114
misodengaku 7:9feee88e7cbc 115 class SakuraIO_SPI : public SakuraIO
misodengaku 7:9feee88e7cbc 116 {
misodengaku 7:9feee88e7cbc 117 protected:
misodengaku 7:9feee88e7cbc 118 SPI &spi;
misodengaku 7:9feee88e7cbc 119 DigitalOut &cs;
misodengaku 7:9feee88e7cbc 120 virtual void begin();
misodengaku 7:9feee88e7cbc 121 virtual void end();
misodengaku 7:9feee88e7cbc 122 virtual void sendByte(uint8_t data);
misodengaku 7:9feee88e7cbc 123 virtual uint8_t receiveByte(bool stop);
misodengaku 7:9feee88e7cbc 124 virtual uint8_t receiveByte();
misodengaku 7:9feee88e7cbc 125 public:
misodengaku 7:9feee88e7cbc 126 SakuraIO_SPI(SPI &_spi, DigitalOut &_cs);
misodengaku 7:9feee88e7cbc 127 };
chibiegg 11:16e726ca39c6 128
misodengaku 7:9feee88e7cbc 129 class SakuraIO_I2C : public SakuraIO
misodengaku 7:9feee88e7cbc 130 {
misodengaku 7:9feee88e7cbc 131 protected:
misodengaku 7:9feee88e7cbc 132 I2C *i2c_p;
misodengaku 7:9feee88e7cbc 133 I2C &i2c;
misodengaku 7:9feee88e7cbc 134 int _length;
chibiegg 11:16e726ca39c6 135
misodengaku 7:9feee88e7cbc 136 virtual void begin();
misodengaku 7:9feee88e7cbc 137 virtual void end();
misodengaku 7:9feee88e7cbc 138 virtual void sendByte(uint8_t data);
misodengaku 7:9feee88e7cbc 139 virtual uint8_t startReceive(uint8_t length);
misodengaku 7:9feee88e7cbc 140 virtual uint8_t receiveByte(bool stop);
misodengaku 7:9feee88e7cbc 141 virtual uint8_t receiveByte();
misodengaku 7:9feee88e7cbc 142 uint8_t mode;
misodengaku 7:9feee88e7cbc 143 public:
misodengaku 7:9feee88e7cbc 144 SakuraIO_I2C (I2C &_i2c);
misodengaku 7:9feee88e7cbc 145 SakuraIO_I2C (PinName sda, PinName scl);
misodengaku 7:9feee88e7cbc 146 };
chibiegg 11:16e726ca39c6 147
misodengaku 7:9feee88e7cbc 148 #endif // _SAKURAIO_H_