sakura fan / SakuraAlpha

Dependents:   SakuraAlpha_SPI SakuraAlpha_I2C

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers SakuraAlpha.h Source File

SakuraAlpha.h

00001 /* SAKURA Internet IoT Alpha Communication Module Library for mbed
00002  *
00003  * Copyright (c) SAKURA Internet Inc.
00004  *   The MIT License (MIT)
00005  *   https://github.com/sakura-internet/SakuraAlphaArduino
00006  *
00007  * https://iot.sakura.ad.jp/
00008  *
00009  * Porting to mbed by sakurafan. 2016
00010  */
00011 
00012 #ifndef _SAKURAALPHA_H_
00013 #define _SAKURAALPHA_H_
00014 
00015 #include "mbed.h"
00016 
00017 #define SAKURACC_SLAVE_ADDR (0x4F << 1)
00018 
00019 #define CMD_NETWORKSTATUS  0x01
00020 
00021 #define CMD_UPDATED     0x10
00022 #define CMD_UNTRANSMITTED 0x11
00023 #define CMD_TXCH_STATUS    0x12
00024 #define CMD_RXCH_STATUS   0x13
00025 
00026 #define CMD_READ      0x20
00027 
00028 #define CMD_WRITE     0x30
00029 
00030 #define CMD_TRANSMIT    0x40
00031 
00032 
00033 #define TRANSMIT_NONE   0x00
00034 #define TRANSMIT_AUTO   0x01
00035 #define TRANSMIT_ONCE   0x02
00036 
00037 #define TYPE_INT32      'i'
00038 #define TYPE_UINT32     'I'
00039 #define TYPE_INT64      'l'
00040 #define TYPE_UINT64     'L'
00041 #define TYPE_FLOAT      'f'
00042 #define TYPE_DOUBLE     'd'
00043 #define TYPE_BYTES      'b'
00044 
00045 
00046 #define CH_SIZE 128
00047 
00048 #define TX_STATUS_NONE    0x00
00049 #define TX_STATUS_MODIFIED  0x01
00050 
00051 #define RX_STATUS_NONE    0x00
00052 #define RX_STATUS_UPDATED 0x01
00053 
00054 #define min(a,b) (a<b?a:b)
00055 
00056 class SakuraAlpha {
00057 protected:
00058 
00059     virtual void begin(){}
00060     virtual void end(){}
00061 
00062     virtual void sendByte(uint8_t data){}
00063     virtual void finishSending(){}
00064 
00065     virtual void startReceiving(uint16_t num_recieve){}
00066     virtual uint8_t receiveByte(){return 0;}
00067     virtual void finishReceiving(){}
00068 
00069 public:
00070 
00071     void writeChannel(uint8_t ch, int32_t data);
00072     void writeChannel(uint8_t ch, uint32_t data);
00073     void writeChannel(uint8_t ch, int64_t data);
00074     void writeChannel(uint8_t ch, uint64_t data);
00075     void writeChannel(uint8_t ch, float data);
00076     void writeChannel(uint8_t ch, double data);
00077     void writeChannel(uint8_t ch, uint8_t *data);
00078     void readChannel(uint8_t ch, char *type, uint8_t *data);
00079 
00080     void transmit(uint8_t mode);
00081 
00082     uint8_t getTxChannelStatus(uint8_t ch);
00083     uint8_t getRxChannelStatus(uint8_t ch);
00084 
00085     int getUpdatedChannels(uint8_t *buff, uint8_t len);
00086 
00087     int getUntransmittedChannels(uint8_t *buff, uint8_t len);
00088     
00089     uint8_t getNetworkStatus();
00090 
00091 };
00092 
00093 
00094 class SakuraAlphaI2C : public SakuraAlpha {
00095 
00096 protected:
00097     I2C _i2c;
00098     int _num_recieve;
00099 
00100     virtual void begin();
00101     virtual void end();
00102 
00103     virtual void sendByte(uint8_t data);
00104     virtual void finishSending();
00105 
00106     virtual void startReceiving(uint16_t num_recieve);
00107     virtual uint8_t receiveByte();
00108     virtual void finishReceiving();
00109 
00110 public:
00111     SakuraAlphaI2C (I2C &i2c);
00112     SakuraAlphaI2C (PinName sda, PinName scl);
00113 };
00114 
00115 
00116 class SakuraAlphaSPI : public SakuraAlpha{
00117 
00118 protected:
00119     SPI _spi;
00120     DigitalOut _cs;
00121 
00122     virtual void begin();
00123     virtual void end();
00124 
00125     virtual void sendByte(uint8_t data);
00126     virtual void finishSending();
00127 
00128     virtual void startReceiving(uint16_t num_recieve);
00129     virtual uint8_t receiveByte();
00130     virtual void finishReceiving();
00131 
00132 public:
00133     SakuraAlphaSPI(SPI &spi, PinName cs);
00134     SakuraAlphaSPI(PinName mosi, PinName miso, PinName sck, PinName cs);
00135 
00136 };
00137 
00138 #endif /* _SAKURAALPHA_H_ */