AnalogIn

Dependencies:   mbed

Committer:
Wizo
Date:
Thu Nov 15 17:22:45 2018 +0000
Revision:
0:077d31186892
AnalogIn

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Wizo 0:077d31186892 1
Wizo 0:077d31186892 2 #ifndef Serial_HL_h
Wizo 0:077d31186892 3 #define Serial_HL_h
Wizo 0:077d31186892 4
Wizo 0:077d31186892 5 #include "platform.h"
Wizo 0:077d31186892 6 // #include "Stream.h"
Wizo 0:077d31186892 7 #include "FunctionPointer.h"
Wizo 0:077d31186892 8 #include "serial_api.h"
Wizo 0:077d31186892 9 #include "SvProtocol.h"
Wizo 0:077d31186892 10
Wizo 0:077d31186892 11 namespace mbed
Wizo 0:077d31186892 12 {
Wizo 0:077d31186892 13
Wizo 0:077d31186892 14 class SerialBLK : public IStreamHL
Wizo 0:077d31186892 15 {
Wizo 0:077d31186892 16 public:
Wizo 0:077d31186892 17 SerialBLK(PinName tx, PinName rx);
Wizo 0:077d31186892 18 void baud(int baudrate);
Wizo 0:077d31186892 19
Wizo 0:077d31186892 20 virtual void PutChar(int aCh);
Wizo 0:077d31186892 21 virtual int GetChar();
Wizo 0:077d31186892 22 virtual void Write(void* aData, uint32_t aLenBytes);
Wizo 0:077d31186892 23 virtual void Read(void* aData, uint32_t aLenBytes);
Wizo 0:077d31186892 24
Wizo 0:077d31186892 25 enum Parity {
Wizo 0:077d31186892 26 None = 0,
Wizo 0:077d31186892 27 Odd,
Wizo 0:077d31186892 28 Even,
Wizo 0:077d31186892 29 Forced1,
Wizo 0:077d31186892 30 Forced0
Wizo 0:077d31186892 31 };
Wizo 0:077d31186892 32 enum IrqType {
Wizo 0:077d31186892 33 RxIrq = 0,
Wizo 0:077d31186892 34 TxIrq
Wizo 0:077d31186892 35 };
Wizo 0:077d31186892 36
Wizo 0:077d31186892 37 void format(int bits=8, Parity parity=SerialBLK::None, int stop_bits=1);
Wizo 0:077d31186892 38
Wizo 0:077d31186892 39 int readable();
Wizo 0:077d31186892 40 int writeable();
Wizo 0:077d31186892 41 int IsDataAvail() {
Wizo 0:077d31186892 42 return readable();
Wizo 0:077d31186892 43 }
Wizo 0:077d31186892 44
Wizo 0:077d31186892 45 // fptr A pointer to a void function, or 0 to set as none
Wizo 0:077d31186892 46 // type Which serial interrupt to attach the member function to (Seriall::RxIrq for receive, TxIrq for transmit buffer empty)
Wizo 0:077d31186892 47 void attach(void (*fptr)(void), IrqType type=RxIrq);
Wizo 0:077d31186892 48
Wizo 0:077d31186892 49 // tptr pointer to the object to call the member function on
Wizo 0:077d31186892 50 // mptr pointer to the member function to be called
Wizo 0:077d31186892 51 // type Which serial interrupt to attach the member function to (Seriall::RxIrq for receive, TxIrq for transmit buffer empty)
Wizo 0:077d31186892 52 template<typename T>
Wizo 0:077d31186892 53 void attach(T* tptr, void (T::*mptr)(void), IrqType type=RxIrq) {
Wizo 0:077d31186892 54 if((mptr != NULL) && (tptr != NULL)) {
Wizo 0:077d31186892 55 _irq[type].attach(tptr, mptr);
Wizo 0:077d31186892 56 serial_irq_set(&_serial, (SerialIrq)type, 1);
Wizo 0:077d31186892 57 }
Wizo 0:077d31186892 58 }
Wizo 0:077d31186892 59
Wizo 0:077d31186892 60 static void _irq_handler(uint32_t id, SerialIrq irq_type);
Wizo 0:077d31186892 61 protected:
Wizo 0:077d31186892 62 serial_t _serial;
Wizo 0:077d31186892 63 FunctionPointer _irq[2];
Wizo 0:077d31186892 64 int _baud;
Wizo 0:077d31186892 65 };
Wizo 0:077d31186892 66
Wizo 0:077d31186892 67 } // namespace mbed
Wizo 0:077d31186892 68
Wizo 0:077d31186892 69 #endif