SAKURA Internet IoT Beta Communication Module Library for mbed

Dependents:   SakuraIO_Standard SakuraIO_FirmwareUpdate

Committer:
sakurafan
Date:
Sun Nov 13 06:52:34 2016 +0000
Revision:
0:f3b80b2bdb14
1st ported build;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
sakurafan 0:f3b80b2bdb14 1 /* SAKURA Internet IoT Communication Module Library for mbed
sakurafan 0:f3b80b2bdb14 2 *
sakurafan 0:f3b80b2bdb14 3 * Copyright (c) SAKURA Internet Inc.
sakurafan 0:f3b80b2bdb14 4 * The MIT License (MIT)
sakurafan 0:f3b80b2bdb14 5 * https://github.com/sakura-internet/SakuraIOArduino
sakurafan 0:f3b80b2bdb14 6 *
sakurafan 0:f3b80b2bdb14 7 * https://iot.sakura.ad.jp/
sakurafan 0:f3b80b2bdb14 8 *
sakurafan 0:f3b80b2bdb14 9 * Porting to mbed by sakurafan. 2016
sakurafan 0:f3b80b2bdb14 10 */
sakurafan 0:f3b80b2bdb14 11
sakurafan 0:f3b80b2bdb14 12 #ifndef _SAKURAIO_H_
sakurafan 0:f3b80b2bdb14 13 #define _SAKURAIO_H_
sakurafan 0:f3b80b2bdb14 14
sakurafan 0:f3b80b2bdb14 15 #include "mbed.h"
sakurafan 0:f3b80b2bdb14 16 #include "commands.h"
sakurafan 0:f3b80b2bdb14 17
sakurafan 0:f3b80b2bdb14 18 class SakuraIO
sakurafan 0:f3b80b2bdb14 19 {
sakurafan 0:f3b80b2bdb14 20 protected:
sakurafan 0:f3b80b2bdb14 21 virtual void begin(){}
sakurafan 0:f3b80b2bdb14 22 virtual void end(){}
sakurafan 0:f3b80b2bdb14 23
sakurafan 0:f3b80b2bdb14 24 virtual void sendByte(uint8_t data){}
sakurafan 0:f3b80b2bdb14 25 //virtual void finishSending(){}
sakurafan 0:f3b80b2bdb14 26
sakurafan 0:f3b80b2bdb14 27 virtual uint8_t startReceive(uint8_t length){return length;};
sakurafan 0:f3b80b2bdb14 28 virtual uint8_t receiveByte(){return 0x00;}
sakurafan 0:f3b80b2bdb14 29 virtual uint8_t receiveByte(bool stop){return 0x00;}
sakurafan 0:f3b80b2bdb14 30 //virtual void finishReceiving(){}
sakurafan 0:f3b80b2bdb14 31
sakurafan 0:f3b80b2bdb14 32 uint8_t executeCommand(uint8_t cmd,uint8_t requestLength, uint8_t *request, uint8_t *responseLength, uint8_t *response);
sakurafan 0:f3b80b2bdb14 33
sakurafan 0:f3b80b2bdb14 34 uint8_t enqueueTxRaw(uint8_t ch, uint8_t type, uint8_t length, uint8_t *data, uint64_t offset);
sakurafan 0:f3b80b2bdb14 35
sakurafan 0:f3b80b2bdb14 36 public:
sakurafan 0:f3b80b2bdb14 37 uint8_t getConnectionStatus();
sakurafan 0:f3b80b2bdb14 38 uint8_t getSignalQuarity();
sakurafan 0:f3b80b2bdb14 39 uint64_t getUnixtime();
sakurafan 0:f3b80b2bdb14 40 uint8_t echoback(uint8_t length, uint8_t *data, uint8_t *response);
sakurafan 0:f3b80b2bdb14 41 uint16_t getADC(uint8_t channel);
sakurafan 0:f3b80b2bdb14 42 uint8_t enqueueTx(uint8_t ch, int32_t value, uint64_t offset);
sakurafan 0:f3b80b2bdb14 43 uint8_t enqueueTx(uint8_t ch, uint32_t value, uint64_t offset);
sakurafan 0:f3b80b2bdb14 44 uint8_t enqueueTx(uint8_t ch, int64_t value, uint64_t offset);
sakurafan 0:f3b80b2bdb14 45 uint8_t enqueueTx(uint8_t ch, uint64_t value, uint64_t offset);
sakurafan 0:f3b80b2bdb14 46 uint8_t enqueueTx(uint8_t ch, float value, uint64_t offset);
sakurafan 0:f3b80b2bdb14 47 uint8_t enqueueTx(uint8_t ch, double value, uint64_t offset);
sakurafan 0:f3b80b2bdb14 48 uint8_t enqueueTx(uint8_t ch, uint8_t value[8], uint64_t offset);
sakurafan 0:f3b80b2bdb14 49 uint8_t enqueueTx(uint8_t ch, int32_t value);
sakurafan 0:f3b80b2bdb14 50 uint8_t enqueueTx(uint8_t ch, uint32_t value);
sakurafan 0:f3b80b2bdb14 51 uint8_t enqueueTx(uint8_t ch, int64_t value);
sakurafan 0:f3b80b2bdb14 52 uint8_t enqueueTx(uint8_t ch, uint64_t value);
sakurafan 0:f3b80b2bdb14 53 uint8_t enqueueTx(uint8_t ch, float value);
sakurafan 0:f3b80b2bdb14 54 uint8_t enqueueTx(uint8_t ch, double value);
sakurafan 0:f3b80b2bdb14 55 uint8_t enqueueTx(uint8_t ch, uint8_t value[8]);
sakurafan 0:f3b80b2bdb14 56 uint8_t getTxQueueLength(uint8_t *available, uint8_t *queued);
sakurafan 0:f3b80b2bdb14 57 uint8_t clearTx();
sakurafan 0:f3b80b2bdb14 58 uint8_t getTxStatus(uint8_t *queue, uint8_t *immediate);
sakurafan 0:f3b80b2bdb14 59 uint8_t send();
sakurafan 0:f3b80b2bdb14 60 uint8_t dequeueRx(uint8_t *ch, uint8_t *type, uint8_t *value, int64_t *offset);
sakurafan 0:f3b80b2bdb14 61 uint8_t peekRx(uint8_t *ch, uint8_t *type, uint8_t *value, int64_t *offset);
sakurafan 0:f3b80b2bdb14 62 uint8_t getRxQueueLength(uint8_t *available, uint8_t *queued);
sakurafan 0:f3b80b2bdb14 63 uint8_t clearRx();
sakurafan 0:f3b80b2bdb14 64 uint16_t getProductID();
sakurafan 0:f3b80b2bdb14 65 uint8_t getUniqueID(char *data);
sakurafan 0:f3b80b2bdb14 66 uint8_t getFirmwareVersion(char *data);
sakurafan 0:f3b80b2bdb14 67 uint8_t unlock();
sakurafan 0:f3b80b2bdb14 68 uint8_t updateFirmware();
sakurafan 0:f3b80b2bdb14 69 uint8_t getFirmwareUpdateStatus();
sakurafan 0:f3b80b2bdb14 70 uint8_t reset();
sakurafan 0:f3b80b2bdb14 71 };
sakurafan 0:f3b80b2bdb14 72
sakurafan 0:f3b80b2bdb14 73 class SakuraIO_SPI : public SakuraIO
sakurafan 0:f3b80b2bdb14 74 {
sakurafan 0:f3b80b2bdb14 75 protected:
sakurafan 0:f3b80b2bdb14 76 SPI _spi;
sakurafan 0:f3b80b2bdb14 77 DigitalOut _cs;
sakurafan 0:f3b80b2bdb14 78
sakurafan 0:f3b80b2bdb14 79 virtual void begin();
sakurafan 0:f3b80b2bdb14 80 virtual void end();
sakurafan 0:f3b80b2bdb14 81 virtual void sendByte(uint8_t data);
sakurafan 0:f3b80b2bdb14 82 virtual uint8_t receiveByte(bool stop);
sakurafan 0:f3b80b2bdb14 83 virtual uint8_t receiveByte();
sakurafan 0:f3b80b2bdb14 84 public:
sakurafan 0:f3b80b2bdb14 85 SakuraIO_SPI(SPI &spi, PinName cs);
sakurafan 0:f3b80b2bdb14 86 SakuraIO_SPI(PinName mosi, PinName miso, PinName sck, PinName cs);
sakurafan 0:f3b80b2bdb14 87 };
sakurafan 0:f3b80b2bdb14 88
sakurafan 0:f3b80b2bdb14 89 class SakuraIO_I2C : public SakuraIO
sakurafan 0:f3b80b2bdb14 90 {
sakurafan 0:f3b80b2bdb14 91 protected:
sakurafan 0:f3b80b2bdb14 92 I2C _i2c;
sakurafan 0:f3b80b2bdb14 93 int _length;
sakurafan 0:f3b80b2bdb14 94
sakurafan 0:f3b80b2bdb14 95 virtual void begin();
sakurafan 0:f3b80b2bdb14 96 virtual void end();
sakurafan 0:f3b80b2bdb14 97 virtual void sendByte(uint8_t data);
sakurafan 0:f3b80b2bdb14 98 virtual uint8_t startReceive(uint8_t length);
sakurafan 0:f3b80b2bdb14 99 virtual uint8_t receiveByte(bool stop);
sakurafan 0:f3b80b2bdb14 100 virtual uint8_t receiveByte();
sakurafan 0:f3b80b2bdb14 101 uint8_t mode;
sakurafan 0:f3b80b2bdb14 102 public:
sakurafan 0:f3b80b2bdb14 103 SakuraIO_I2C (I2C &i2c);
sakurafan 0:f3b80b2bdb14 104 SakuraIO_I2C (PinName sda, PinName scl);
sakurafan 0:f3b80b2bdb14 105 };
sakurafan 0:f3b80b2bdb14 106
sakurafan 0:f3b80b2bdb14 107 #endif // _SAKURAIO_H_