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:
misodengaku
Date:
Thu Sep 07 11:45:06 2017 +0900
Revision:
7:9feee88e7cbc
Parent:
6:34a0233cdf04
Child:
11:16e726ca39c6
fix compile error with mbed library >rev146 and applied mbed IDE formatter.

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_
misodengaku 7:9feee88e7cbc 27
misodengaku 7:9feee88e7cbc 28 #include "mbed.h"
misodengaku 7:9feee88e7cbc 29 #include <SakuraIO/commands.h>
misodengaku 7:9feee88e7cbc 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() {}
misodengaku 7:9feee88e7cbc 36
misodengaku 7:9feee88e7cbc 37 virtual void sendByte(uint8_t data) {}
misodengaku 7:9feee88e7cbc 38 //virtual void finishSending(){}
misodengaku 7:9feee88e7cbc 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(){}
misodengaku 7:9feee88e7cbc 50
misodengaku 7:9feee88e7cbc 51 uint8_t executeCommand(uint8_t cmd,uint8_t requestLength, uint8_t *request, uint8_t *responseLength, uint8_t *response);
misodengaku 7:9feee88e7cbc 52
misodengaku 7:9feee88e7cbc 53 uint8_t enqueueTxRaw(uint8_t ch, uint8_t type, uint8_t length, uint8_t *data, uint64_t offset);
misodengaku 7:9feee88e7cbc 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);
misodengaku 7:9feee88e7cbc 61 uint16_t getADC(uint8_t channel);
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]);
misodengaku 7:9feee88e7cbc 76 uint8_t getTxQueueLength(uint8_t *available, uint8_t *queued);
misodengaku 7:9feee88e7cbc 77 uint8_t clearTx();
misodengaku 7:9feee88e7cbc 78 uint8_t getTxStatus(uint8_t *queue, uint8_t *immediate);
misodengaku 7:9feee88e7cbc 79 uint8_t send();
misodengaku 7:9feee88e7cbc 80 uint8_t dequeueRx(uint8_t *ch, uint8_t *type, uint8_t *value, int64_t *offset);
misodengaku 7:9feee88e7cbc 81 uint8_t peekRx(uint8_t *ch, uint8_t *type, uint8_t *value, int64_t *offset);
misodengaku 7:9feee88e7cbc 82 uint8_t getRxQueueLength(uint8_t *available, uint8_t *queued);
misodengaku 7:9feee88e7cbc 83 uint8_t clearRx();
misodengaku 7:9feee88e7cbc 84 uint16_t getProductID();
misodengaku 7:9feee88e7cbc 85 uint8_t getUniqueID(char *data);
misodengaku 7:9feee88e7cbc 86 uint8_t getFirmwareVersion(char *data);
misodengaku 7:9feee88e7cbc 87 uint8_t unlock();
misodengaku 7:9feee88e7cbc 88 uint8_t updateFirmware();
misodengaku 7:9feee88e7cbc 89 uint8_t getFirmwareUpdateStatus();
misodengaku 7:9feee88e7cbc 90 uint8_t reset();
misodengaku 7:9feee88e7cbc 91 };
misodengaku 7:9feee88e7cbc 92
misodengaku 7:9feee88e7cbc 93 class SakuraIO_SPI : public SakuraIO
misodengaku 7:9feee88e7cbc 94 {
misodengaku 7:9feee88e7cbc 95 protected:
misodengaku 7:9feee88e7cbc 96 SPI &spi;
misodengaku 7:9feee88e7cbc 97 DigitalOut &cs;
misodengaku 7:9feee88e7cbc 98 virtual void begin();
misodengaku 7:9feee88e7cbc 99 virtual void end();
misodengaku 7:9feee88e7cbc 100 virtual void sendByte(uint8_t data);
misodengaku 7:9feee88e7cbc 101 virtual uint8_t receiveByte(bool stop);
misodengaku 7:9feee88e7cbc 102 virtual uint8_t receiveByte();
misodengaku 7:9feee88e7cbc 103 public:
misodengaku 7:9feee88e7cbc 104 SakuraIO_SPI(SPI &_spi, DigitalOut &_cs);
misodengaku 7:9feee88e7cbc 105 };
misodengaku 7:9feee88e7cbc 106
misodengaku 7:9feee88e7cbc 107 class SakuraIO_I2C : public SakuraIO
misodengaku 7:9feee88e7cbc 108 {
misodengaku 7:9feee88e7cbc 109 protected:
misodengaku 7:9feee88e7cbc 110 I2C *i2c_p;
misodengaku 7:9feee88e7cbc 111 I2C &i2c;
misodengaku 7:9feee88e7cbc 112 int _length;
misodengaku 7:9feee88e7cbc 113
misodengaku 7:9feee88e7cbc 114 virtual void begin();
misodengaku 7:9feee88e7cbc 115 virtual void end();
misodengaku 7:9feee88e7cbc 116 virtual void sendByte(uint8_t data);
misodengaku 7:9feee88e7cbc 117 virtual uint8_t startReceive(uint8_t length);
misodengaku 7:9feee88e7cbc 118 virtual uint8_t receiveByte(bool stop);
misodengaku 7:9feee88e7cbc 119 virtual uint8_t receiveByte();
misodengaku 7:9feee88e7cbc 120 uint8_t mode;
misodengaku 7:9feee88e7cbc 121 public:
misodengaku 7:9feee88e7cbc 122 SakuraIO_I2C (I2C &_i2c);
misodengaku 7:9feee88e7cbc 123 SakuraIO_I2C (PinName sda, PinName scl);
misodengaku 7:9feee88e7cbc 124 };
misodengaku 7:9feee88e7cbc 125
misodengaku 7:9feee88e7cbc 126 #endif // _SAKURAIO_H_
misodengaku 7:9feee88e7cbc 127