Koyo Takenoshita / EEAB-P1

Dependents:   ina-hack-2nd

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers Eeabp1.h Source File

Eeabp1.h

00001 #if !defined(EEAPP1_H)
00002 #define EEAPP1_H
00003 #include "mbed.h"
00004 #include "types.h"
00005 #include "Sht31.h"
00006 #include "ADXL345_I2C.h"
00007 
00008 typedef enum {
00009     LED_OFF,
00010     LED_ON,
00011     LED_BLINK_FAST,
00012     LED_BLINK_MID,
00013     LED_BLINK_SLOW,
00014 }EeabLedState;
00015 
00016 typedef enum {
00017     GROVE_CH1,
00018     GROVE_CH2,
00019 }EeabGrovePort;
00020 
00021 typedef enum {
00022     GROVE_SIG1,
00023     GROVE_SIG2,
00024 }EeabGroveSig;
00025 
00026 typedef enum {
00027     GROVE_DIO,
00028     GROVE_ANALOG,
00029 }EeabGrovePortType;
00030 
00031 typedef enum {
00032     GROVE_DIO_OUT,
00033     GROVE_DIO_IN,
00034 }EeabGroveDioDirection;
00035 
00036 typedef enum {
00037     GROVE_DIO_LOW = 0,
00038     GROVE_DIO_HIGH = 1,
00039 }EeabGroveDio;
00040 
00041 class Eeabp1
00042 {
00043 public:
00044     Eeabp1();
00045     int setLedState(EeabLedState state);
00046     void loop(void);
00047     int debug(const char * format, ...);
00048     int setLoRaPower(bool on);
00049     int sendLoRaString(const char * format, ...);
00050     int sendLoRaStringAndReceiveResponse(char res[], const char * format, ...);
00051     int sendLoRaBinary(const char *payload, size_t len);
00052     void setGrovePower(bool on);
00053     int setGrovePortType(EeabGrovePort port, EeabGrovePortType type);
00054     int setGroveDioDirection(EeabGrovePort port, EeabGroveDioDirection dir, Callback<void()> func = NULL);
00055     int setGroveDio(EeabGrovePort port, EeabGroveDio val);
00056     int setGroveDio(EeabGrovePort port, EeabGroveSig sig , EeabGroveDio val);
00057     int getGroveDio(EeabGrovePort port, EeabGroveSig sig);
00058     float getGroveAnalog(EeabGrovePort port, EeabGroveSig sig);
00059     int enableTempHumidSensor(void);
00060     float getTemp(void);
00061     float getHumid(void);
00062     int enableAccelerometer(void);
00063     int getAcc(int *x, int *y, int *z);
00064 
00065 private:
00066     DigitalOut pwr_en;
00067     /* state LED */
00068     DigitalOut led;
00069     EeabLedState led_state;
00070     /* LoRa */
00071     RawSerial *serial;
00072     DigitalOut lora_power;
00073     DigitalOut lora_reset;
00074     bool lora_enabled;
00075     /* Grove */
00076     DigitalOut grove_power;
00077     bool grove_enabled;
00078     DigitalOut grv_sel2a;
00079     DigitalOut grv_sel2g;
00080     DigitalOut grv_sel1a;
00081     DigitalOut grv_sel1g;
00082     
00083     DigitalOut *grv_p1s1do; //Port1, Signal1, Digital Out // GP2
00084     DigitalOut *grv_p1s2do; //Port1, Signal2, Digital Out // GP1
00085     InterruptIn *grv_p1s1di; //Port1, Signal1, Digital In // GP2
00086     InterruptIn *grv_p1s2di; //Port1, Signal1, Digital In // GP2
00087     AnalogIn grv_p1s1a; //Port1, Signal1, Analog In // AN2
00088     AnalogIn grv_p1s2a; //Port1, Signal2, Analog In // AN2
00089 
00090     DigitalOut *grv_p2s1do; //Port2, Signal1, Digital Out // GP4
00091     DigitalOut *grv_p2s2do; //Port2, Signal2, Digital Out // GP3
00092     InterruptIn *grv_p2s1di; //Port2, Signal1, Digital In // GP4
00093     InterruptIn *grv_p2s2di; //Port2, Signal2, Digital In // GP3
00094     AnalogIn grv_p2s1a; //Port2, Signal1, Analog In // AN4
00095     AnalogIn grv_p2s2a; //Port2, Signal2, Analog In // AN3
00096 
00097     Sht31 *temp_humid_sensor;
00098     ADXL345_I2C *accelerometer;
00099 
00100     void flushSerial();
00101     ssize_t getline(char *buf, size_t bufsize, int timeout_ms);
00102     int chkSerialChar(const char,uint16_t);
00103     int waitSerialChar(const char,uint16_t);
00104     int chkSerialCharOk();
00105     int chkSerialCharRes(char);
00106     
00107     int getLoraPort(void) {
00108         static int port = 1;
00109 
00110         port += 1;
00111         if (233 < port)
00112             port = 1;
00113 
00114         return port;
00115     }
00116 };
00117 
00118 #endif /* !defined(EEAPP1_H) */