Reiko Randoja
/
ut_bbr_2018
Firmware for UT Robotex 2018 basketball robot
Diff: RFManager/RFManager.h
- Revision:
- 0:ef6268629f0b
diff -r 000000000000 -r ef6268629f0b RFManager/RFManager.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/RFManager/RFManager.h Fri Sep 28 10:46:57 2018 +0000 @@ -0,0 +1,65 @@ +#ifndef RFMANAGER_H +#define RFMANAGER_H + +#include "mbed.h" +#include "CircularBuffer2.h" + +class RFManager { +protected: + FunctionPointer _callback; + +public: + RFManager(PinName txPinName, PinName rxPinName); + + void baud(int baudrate); + + char *read(); + + void send(char *sendData); + + void send(char *sendData, int length); + + void update(); + + void handleMessage(); + + void setShortCommandMode(bool isEnabled); + + bool readable(); + + void attach(void (*function)(void)) { + _callback.attach(function); + } + + template<typename T> + void attach(T *object, void (T::*member)(void)) { + _callback.attach( object, member ); + } + +private: + Serial serial; + + int serialId; + + void rxHandler(void); + + bool messageAvailable; + + void serialWrite(char *sendData, int length); + char serialReadChar(); + + CircularBuffer2<char> buf; + + unsigned int receiveCounter; + char receiveBuffer[16]; + + char receivedMessage[16]; + + bool shortCommandsEnabled; + unsigned int commandLength; + unsigned int shortCommandLength; + unsigned int longCommandLength; +}; + + +#endif //RFManager_H