SAKURA Internet IoT Alpha Communication Module Library for mbed
Dependents: SakuraAlpha_SPI SakuraAlpha_I2C
SakuraAlpha.h@1:b31d9bb6e65f, 2016-06-03 (annotated)
- Committer:
- sakurafan
- Date:
- Fri Jun 03 09:15:25 2016 +0000
- Revision:
- 1:b31d9bb6e65f
- Parent:
- 0:38f4d6047886
bug fix: i2c receive
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
sakurafan | 0:38f4d6047886 | 1 | /* SAKURA Internet IoT Alpha Communication Module Library for mbed |
sakurafan | 0:38f4d6047886 | 2 | * |
sakurafan | 0:38f4d6047886 | 3 | * Copyright (c) SAKURA Internet Inc. |
sakurafan | 0:38f4d6047886 | 4 | * The MIT License (MIT) |
sakurafan | 0:38f4d6047886 | 5 | * https://github.com/sakura-internet/SakuraAlphaArduino |
sakurafan | 0:38f4d6047886 | 6 | * |
sakurafan | 0:38f4d6047886 | 7 | * https://iot.sakura.ad.jp/ |
sakurafan | 0:38f4d6047886 | 8 | * |
sakurafan | 0:38f4d6047886 | 9 | * Porting to mbed by sakurafan. 2016 |
sakurafan | 0:38f4d6047886 | 10 | */ |
sakurafan | 0:38f4d6047886 | 11 | |
sakurafan | 0:38f4d6047886 | 12 | #ifndef _SAKURAALPHA_H_ |
sakurafan | 0:38f4d6047886 | 13 | #define _SAKURAALPHA_H_ |
sakurafan | 0:38f4d6047886 | 14 | |
sakurafan | 0:38f4d6047886 | 15 | #include "mbed.h" |
sakurafan | 0:38f4d6047886 | 16 | |
sakurafan | 0:38f4d6047886 | 17 | #define SAKURACC_SLAVE_ADDR (0x4F << 1) |
sakurafan | 0:38f4d6047886 | 18 | |
sakurafan | 0:38f4d6047886 | 19 | #define CMD_NETWORKSTATUS 0x01 |
sakurafan | 0:38f4d6047886 | 20 | |
sakurafan | 0:38f4d6047886 | 21 | #define CMD_UPDATED 0x10 |
sakurafan | 0:38f4d6047886 | 22 | #define CMD_UNTRANSMITTED 0x11 |
sakurafan | 0:38f4d6047886 | 23 | #define CMD_TXCH_STATUS 0x12 |
sakurafan | 0:38f4d6047886 | 24 | #define CMD_RXCH_STATUS 0x13 |
sakurafan | 0:38f4d6047886 | 25 | |
sakurafan | 0:38f4d6047886 | 26 | #define CMD_READ 0x20 |
sakurafan | 0:38f4d6047886 | 27 | |
sakurafan | 0:38f4d6047886 | 28 | #define CMD_WRITE 0x30 |
sakurafan | 0:38f4d6047886 | 29 | |
sakurafan | 0:38f4d6047886 | 30 | #define CMD_TRANSMIT 0x40 |
sakurafan | 0:38f4d6047886 | 31 | |
sakurafan | 0:38f4d6047886 | 32 | |
sakurafan | 0:38f4d6047886 | 33 | #define TRANSMIT_NONE 0x00 |
sakurafan | 0:38f4d6047886 | 34 | #define TRANSMIT_AUTO 0x01 |
sakurafan | 0:38f4d6047886 | 35 | #define TRANSMIT_ONCE 0x02 |
sakurafan | 0:38f4d6047886 | 36 | |
sakurafan | 0:38f4d6047886 | 37 | #define TYPE_INT32 'i' |
sakurafan | 0:38f4d6047886 | 38 | #define TYPE_UINT32 'I' |
sakurafan | 0:38f4d6047886 | 39 | #define TYPE_INT64 'l' |
sakurafan | 0:38f4d6047886 | 40 | #define TYPE_UINT64 'L' |
sakurafan | 0:38f4d6047886 | 41 | #define TYPE_FLOAT 'f' |
sakurafan | 0:38f4d6047886 | 42 | #define TYPE_DOUBLE 'd' |
sakurafan | 0:38f4d6047886 | 43 | #define TYPE_BYTES 'b' |
sakurafan | 0:38f4d6047886 | 44 | |
sakurafan | 0:38f4d6047886 | 45 | |
sakurafan | 0:38f4d6047886 | 46 | #define CH_SIZE 128 |
sakurafan | 0:38f4d6047886 | 47 | |
sakurafan | 0:38f4d6047886 | 48 | #define TX_STATUS_NONE 0x00 |
sakurafan | 0:38f4d6047886 | 49 | #define TX_STATUS_MODIFIED 0x01 |
sakurafan | 0:38f4d6047886 | 50 | |
sakurafan | 0:38f4d6047886 | 51 | #define RX_STATUS_NONE 0x00 |
sakurafan | 0:38f4d6047886 | 52 | #define RX_STATUS_UPDATED 0x01 |
sakurafan | 0:38f4d6047886 | 53 | |
sakurafan | 0:38f4d6047886 | 54 | #define min(a,b) (a<b?a:b) |
sakurafan | 0:38f4d6047886 | 55 | |
sakurafan | 0:38f4d6047886 | 56 | class SakuraAlpha { |
sakurafan | 0:38f4d6047886 | 57 | protected: |
sakurafan | 0:38f4d6047886 | 58 | |
sakurafan | 0:38f4d6047886 | 59 | virtual void begin(){} |
sakurafan | 0:38f4d6047886 | 60 | virtual void end(){} |
sakurafan | 0:38f4d6047886 | 61 | |
sakurafan | 0:38f4d6047886 | 62 | virtual void sendByte(uint8_t data){} |
sakurafan | 0:38f4d6047886 | 63 | virtual void finishSending(){} |
sakurafan | 0:38f4d6047886 | 64 | |
sakurafan | 0:38f4d6047886 | 65 | virtual void startReceiving(uint16_t num_recieve){} |
sakurafan | 0:38f4d6047886 | 66 | virtual uint8_t receiveByte(){return 0;} |
sakurafan | 0:38f4d6047886 | 67 | virtual void finishReceiving(){} |
sakurafan | 0:38f4d6047886 | 68 | |
sakurafan | 0:38f4d6047886 | 69 | public: |
sakurafan | 0:38f4d6047886 | 70 | |
sakurafan | 0:38f4d6047886 | 71 | void writeChannel(uint8_t ch, int32_t data); |
sakurafan | 0:38f4d6047886 | 72 | void writeChannel(uint8_t ch, uint32_t data); |
sakurafan | 0:38f4d6047886 | 73 | void writeChannel(uint8_t ch, int64_t data); |
sakurafan | 0:38f4d6047886 | 74 | void writeChannel(uint8_t ch, uint64_t data); |
sakurafan | 0:38f4d6047886 | 75 | void writeChannel(uint8_t ch, float data); |
sakurafan | 0:38f4d6047886 | 76 | void writeChannel(uint8_t ch, double data); |
sakurafan | 0:38f4d6047886 | 77 | void writeChannel(uint8_t ch, uint8_t *data); |
sakurafan | 0:38f4d6047886 | 78 | void readChannel(uint8_t ch, char *type, uint8_t *data); |
sakurafan | 0:38f4d6047886 | 79 | |
sakurafan | 0:38f4d6047886 | 80 | void transmit(uint8_t mode); |
sakurafan | 0:38f4d6047886 | 81 | |
sakurafan | 0:38f4d6047886 | 82 | uint8_t getTxChannelStatus(uint8_t ch); |
sakurafan | 0:38f4d6047886 | 83 | uint8_t getRxChannelStatus(uint8_t ch); |
sakurafan | 0:38f4d6047886 | 84 | |
sakurafan | 0:38f4d6047886 | 85 | int getUpdatedChannels(uint8_t *buff, uint8_t len); |
sakurafan | 0:38f4d6047886 | 86 | |
sakurafan | 0:38f4d6047886 | 87 | int getUntransmittedChannels(uint8_t *buff, uint8_t len); |
sakurafan | 0:38f4d6047886 | 88 | |
sakurafan | 0:38f4d6047886 | 89 | uint8_t getNetworkStatus(); |
sakurafan | 0:38f4d6047886 | 90 | |
sakurafan | 0:38f4d6047886 | 91 | }; |
sakurafan | 0:38f4d6047886 | 92 | |
sakurafan | 0:38f4d6047886 | 93 | |
sakurafan | 0:38f4d6047886 | 94 | class SakuraAlphaI2C : public SakuraAlpha { |
sakurafan | 0:38f4d6047886 | 95 | |
sakurafan | 0:38f4d6047886 | 96 | protected: |
sakurafan | 0:38f4d6047886 | 97 | I2C _i2c; |
sakurafan | 1:b31d9bb6e65f | 98 | int _num_recieve; |
sakurafan | 0:38f4d6047886 | 99 | |
sakurafan | 0:38f4d6047886 | 100 | virtual void begin(); |
sakurafan | 0:38f4d6047886 | 101 | virtual void end(); |
sakurafan | 0:38f4d6047886 | 102 | |
sakurafan | 0:38f4d6047886 | 103 | virtual void sendByte(uint8_t data); |
sakurafan | 0:38f4d6047886 | 104 | virtual void finishSending(); |
sakurafan | 0:38f4d6047886 | 105 | |
sakurafan | 0:38f4d6047886 | 106 | virtual void startReceiving(uint16_t num_recieve); |
sakurafan | 0:38f4d6047886 | 107 | virtual uint8_t receiveByte(); |
sakurafan | 0:38f4d6047886 | 108 | virtual void finishReceiving(); |
sakurafan | 0:38f4d6047886 | 109 | |
sakurafan | 0:38f4d6047886 | 110 | public: |
sakurafan | 0:38f4d6047886 | 111 | SakuraAlphaI2C (I2C &i2c); |
sakurafan | 0:38f4d6047886 | 112 | SakuraAlphaI2C (PinName sda, PinName scl); |
sakurafan | 0:38f4d6047886 | 113 | }; |
sakurafan | 0:38f4d6047886 | 114 | |
sakurafan | 0:38f4d6047886 | 115 | |
sakurafan | 0:38f4d6047886 | 116 | class SakuraAlphaSPI : public SakuraAlpha{ |
sakurafan | 0:38f4d6047886 | 117 | |
sakurafan | 0:38f4d6047886 | 118 | protected: |
sakurafan | 0:38f4d6047886 | 119 | SPI _spi; |
sakurafan | 0:38f4d6047886 | 120 | DigitalOut _cs; |
sakurafan | 0:38f4d6047886 | 121 | |
sakurafan | 0:38f4d6047886 | 122 | virtual void begin(); |
sakurafan | 0:38f4d6047886 | 123 | virtual void end(); |
sakurafan | 0:38f4d6047886 | 124 | |
sakurafan | 0:38f4d6047886 | 125 | virtual void sendByte(uint8_t data); |
sakurafan | 0:38f4d6047886 | 126 | virtual void finishSending(); |
sakurafan | 0:38f4d6047886 | 127 | |
sakurafan | 0:38f4d6047886 | 128 | virtual void startReceiving(uint16_t num_recieve); |
sakurafan | 0:38f4d6047886 | 129 | virtual uint8_t receiveByte(); |
sakurafan | 0:38f4d6047886 | 130 | virtual void finishReceiving(); |
sakurafan | 0:38f4d6047886 | 131 | |
sakurafan | 0:38f4d6047886 | 132 | public: |
sakurafan | 0:38f4d6047886 | 133 | SakuraAlphaSPI(SPI &spi, PinName cs); |
sakurafan | 0:38f4d6047886 | 134 | SakuraAlphaSPI(PinName mosi, PinName miso, PinName sck, PinName cs); |
sakurafan | 0:38f4d6047886 | 135 | |
sakurafan | 0:38f4d6047886 | 136 | }; |
sakurafan | 0:38f4d6047886 | 137 | |
sakurafan | 0:38f4d6047886 | 138 | #endif /* _SAKURAALPHA_H_ */ |