All mbed code for control over dive planes, pump motor, valve motor, BCUs, UART interface, etc.
Dependencies: mbed ESC mbed MODDMA
robotic_fish_6/ButtonBoard.h
- Committer:
- juansal12
- Date:
- 2020-01-14
- Revision:
- 0:c3a329a5b05d
File content as of revision 0:c3a329a5b05d:
// buttons.h #ifndef BUTTONS_H #define BUTTONS_H #include "mbed.h" #define ADDR_BOARD_1 0x40 #define ADDR_BOARD_2 0x40 #define BTTN_COUNT_BOARD_1 6 #define BTTN_COUNT_BOARD_2 6 #define BTTN_COUNT (BTTN_COUNT_BOARD_1 + BTTN_COUNT_BOARD_2) class ButtonBoard { private: I2C _i2c; InterruptIn _int1; InterruptIn _int2; char out_buf[8]; // Callback functions FunctionPointer _callback_table[BTTN_COUNT]; bool _callback_table_valid[BTTN_COUNT]; void (*_callbackFunction)(char buttonMask, bool pressed, char curState); // Interrupt handlers void _int1_handler(); void _int2_handler(); void _fall_handler(char board); // status volatile uint16_t _led_ports; volatile uint8_t _button_state; public: ButtonBoard(PinName sda, PinName scl, PinName int1, PinName int2); ~ButtonBoard(); void registerCallback(uint32_t button, FunctionPointer p); void registerCallback(void (*p)(char buttonMask, bool pressed, char curState)); //void setLED(uint32_t led, bool val); void setLEDs(char mask, bool turnOn, char board = ADDR_BOARD_1); char getLEDs(char ledMask, char board = ADDR_BOARD_1); char getButtons(char buttonMask, char board = ADDR_BOARD_1); //uint16_t readInputs(); }; #endif