SAKURA Internet IoT Alpha Communication Module Library for mbed

Dependents:   SakuraAlpha_SPI SakuraAlpha_I2C

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?

UserRevisionLine numberNew 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_ */