mdot UDK & STMicro MEMS Shield Sensor packet example

Dependencies:   libmDot-mbed5 DOGS102 ISL29011 MMA845x MPL3115A2 NCP5623B X_NUCLEO_IKS01A1 Senet_Packet

Fork of MTDOT-UDKDemo_Senet by canuck lehead

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers board.h Source File

board.h

00001 /***
00002  *       _____                         _   
00003  *      / ____|                       | |  
00004  *     | (___     ___   _ __     ___  | |_ 
00005  *      \___ \   / _ \ | '_ \   / _ \ | __|
00006  *      ____) | |  __/ | | | | |  __/ | |_ 
00007  *     |_____/   \___| |_| |_|  \___|  \__|
00008  *         (C) Senet, Inc                                
00009  *                                         
00010  */
00011 #ifndef BOARD_BOARD_H_
00012 #define BOARD_BOARD_H_
00013 
00014 #include "mbed.h"
00015 #include "mDot.h"
00016 
00017 extern Serial     debugUART;
00018 extern mDot       *mDotPtr;
00019 
00020 enum EBoardState
00021 {
00022     Board_init,
00023     Board_start,
00024     Board_stop,
00025 };
00026 
00027 struct BoardOrientation
00028 {
00029     bool vertical;
00030     bool up;
00031     bool down;
00032     bool right;
00033     bool left;
00034 
00035     void init()
00036     {
00037         vertical = false;
00038         up       = false;
00039         down     = false;
00040         right    = false;
00041         left     = false;
00042     }
00043 
00044     BoardOrientation() { init(); }
00045 };
00046 
00047 /*
00048  * Board sensor data
00049  */
00050 struct BoardSensorData
00051 {
00052     float temperature;
00053     float pressure;
00054     int32_t accel_x;
00055     int32_t accel_y;
00056     int32_t accel_z;
00057     BoardOrientation orientation;
00058 
00059     inline void init()
00060     {
00061         temperature= 0;
00062         pressure = 0;
00063         accel_x = 0;
00064         accel_y = 0;
00065         accel_z = 0;
00066         orientation.init();
00067     }
00068 
00069     BoardSensorData() { init(); }
00070 };
00071 
00072 enum EBoardStatus
00073 {
00074     Board_Ok,
00075     Board_Fail,
00076     Board_Invalid
00077 };
00078 
00079 typedef void (*PB_FUNC)(uint8_t button);
00080 
00081 EBoardStatus BoardInit();
00082 
00083 class CBoard
00084 {
00085     public:
00086 
00087         static EBoardStatus ReadSensors(BoardSensorData  &data ) { return (  ( boardPtr != 0 ) ? boardPtr->readSensors( data ) : Board_Fail ); }
00088         static EBoardStatus Init()                               { return (  ( boardPtr != 0 ) ? boardPtr->init( )  : Board_Fail ); }
00089         static EBoardStatus Start()                              { return (  ( boardPtr != 0 ) ? boardPtr->start( ) : Board_Fail ); }
00090         static EBoardStatus SetLED(uint8_t ledNum, bool on)      { return (  ( boardPtr != 0 ) ? boardPtr->setLED(ledNum, on ) : Board_Fail ); }
00091         static EBoardStatus ToggleLED(uint8_t ledNum)            { return (  ( boardPtr != 0 ) ? boardPtr->toggleLED(ledNum) : Board_Fail ); }
00092         static void         SetButtonCallback(PB_FUNC func)      { buttonCallback =  func; }
00093 
00094     protected:
00095 
00096         virtual EBoardStatus init();
00097         virtual EBoardStatus readSensors ( BoardSensorData &data ) { return Board_Fail; }
00098         virtual EBoardStatus start()                               { return Board_Ok;   }
00099         virtual EBoardStatus setLED(uint8_t ledNum, bool on)       { return Board_Fail; }
00100         virtual EBoardStatus toggleLED(uint8_t ledNum)             { return Board_Fail; }
00101 
00102         static PB_FUNC  buttonCallback;
00103         static CBoard  *boardPtr;
00104 
00105         friend EBoardStatus BoardInit();
00106 
00107 };
00108 
00109 #endif /* BOARD_BOARD_H_ */