michael hollegha
/
LineSensTest_B16
LineSensTest for Bertl16
Fork of B16Test4 by
Serial_HL.cpp@2:fffc57eb649f, 2018-09-26 (annotated)
- Committer:
- hollegha3
- Date:
- Wed Sep 26 13:51:22 2018 +0000
- Revision:
- 2:fffc57eb649f
- Parent:
- 1:a2c68aba6d98
xx17
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
hollegha3 | 1:a2c68aba6d98 | 1 | |
hollegha3 | 1:a2c68aba6d98 | 2 | #include "Serial_HL.h" |
hollegha3 | 1:a2c68aba6d98 | 3 | #include <stdarg.h> |
hollegha3 | 1:a2c68aba6d98 | 4 | #include <stdio.h> |
hollegha3 | 1:a2c68aba6d98 | 5 | |
hollegha3 | 1:a2c68aba6d98 | 6 | namespace mbed { |
hollegha3 | 1:a2c68aba6d98 | 7 | |
hollegha3 | 1:a2c68aba6d98 | 8 | SerialBLK::SerialBLK(PinName tx, PinName rx) { |
hollegha3 | 1:a2c68aba6d98 | 9 | serial_init(&_serial, tx, rx); |
hollegha3 | 1:a2c68aba6d98 | 10 | _baud = 9600; |
hollegha3 | 1:a2c68aba6d98 | 11 | serial_irq_handler(&_serial, SerialBLK::_irq_handler, (uint32_t)this); |
hollegha3 | 1:a2c68aba6d98 | 12 | } |
hollegha3 | 1:a2c68aba6d98 | 13 | |
hollegha3 | 1:a2c68aba6d98 | 14 | void SerialBLK::baud(int baudrate) { |
hollegha3 | 1:a2c68aba6d98 | 15 | serial_baud(&_serial, baudrate); |
hollegha3 | 1:a2c68aba6d98 | 16 | _baud = baudrate; |
hollegha3 | 1:a2c68aba6d98 | 17 | } |
hollegha3 | 1:a2c68aba6d98 | 18 | |
hollegha3 | 1:a2c68aba6d98 | 19 | void SerialBLK::format(int bits, Parity parity, int stop_bits) { |
hollegha3 | 1:a2c68aba6d98 | 20 | serial_format(&_serial, bits, (SerialParity)parity, stop_bits); |
hollegha3 | 1:a2c68aba6d98 | 21 | } |
hollegha3 | 1:a2c68aba6d98 | 22 | |
hollegha3 | 1:a2c68aba6d98 | 23 | int SerialBLK::readable() { |
hollegha3 | 1:a2c68aba6d98 | 24 | return serial_readable(&_serial); |
hollegha3 | 1:a2c68aba6d98 | 25 | } |
hollegha3 | 1:a2c68aba6d98 | 26 | |
hollegha3 | 1:a2c68aba6d98 | 27 | int SerialBLK::writeable() { |
hollegha3 | 1:a2c68aba6d98 | 28 | return serial_writable(&_serial); |
hollegha3 | 1:a2c68aba6d98 | 29 | } |
hollegha3 | 1:a2c68aba6d98 | 30 | |
hollegha3 | 1:a2c68aba6d98 | 31 | void SerialBLK::attach(void (*fptr)(void), IrqType type) { |
hollegha3 | 1:a2c68aba6d98 | 32 | if (fptr) { |
hollegha3 | 1:a2c68aba6d98 | 33 | _irq[type].attach(fptr); |
hollegha3 | 1:a2c68aba6d98 | 34 | serial_irq_set(&_serial, (SerialIrq)type, 1); |
hollegha3 | 1:a2c68aba6d98 | 35 | } else { |
hollegha3 | 1:a2c68aba6d98 | 36 | serial_irq_set(&_serial, (SerialIrq)type, 0); |
hollegha3 | 1:a2c68aba6d98 | 37 | } |
hollegha3 | 1:a2c68aba6d98 | 38 | } |
hollegha3 | 1:a2c68aba6d98 | 39 | |
hollegha3 | 1:a2c68aba6d98 | 40 | void SerialBLK::_irq_handler(uint32_t id, SerialIrq irq_type) { |
hollegha3 | 1:a2c68aba6d98 | 41 | SerialBLK *obj = (SerialBLK*)id; |
hollegha3 | 1:a2c68aba6d98 | 42 | obj->_irq[irq_type].call(); |
hollegha3 | 1:a2c68aba6d98 | 43 | } |
hollegha3 | 1:a2c68aba6d98 | 44 | |
hollegha3 | 1:a2c68aba6d98 | 45 | int SerialBLK::GetChar() { |
hollegha3 | 1:a2c68aba6d98 | 46 | return serial_getc(&_serial); |
hollegha3 | 1:a2c68aba6d98 | 47 | } |
hollegha3 | 1:a2c68aba6d98 | 48 | |
hollegha3 | 1:a2c68aba6d98 | 49 | void SerialBLK::PutChar(int aCh) { |
hollegha3 | 1:a2c68aba6d98 | 50 | serial_putc(&_serial, aCh); |
hollegha3 | 1:a2c68aba6d98 | 51 | } |
hollegha3 | 1:a2c68aba6d98 | 52 | |
hollegha3 | 1:a2c68aba6d98 | 53 | void SerialBLK::Write(void* aData, uint32_t aLenBytes) |
hollegha3 | 1:a2c68aba6d98 | 54 | { |
hollegha3 | 1:a2c68aba6d98 | 55 | uint8_t* ptr = (uint8_t*)aData; |
hollegha3 | 1:a2c68aba6d98 | 56 | for(int i=0; i<aLenBytes; i++) { |
hollegha3 | 1:a2c68aba6d98 | 57 | this->PutChar(*ptr); ptr++; |
hollegha3 | 1:a2c68aba6d98 | 58 | } |
hollegha3 | 1:a2c68aba6d98 | 59 | } |
hollegha3 | 1:a2c68aba6d98 | 60 | |
hollegha3 | 1:a2c68aba6d98 | 61 | void SerialBLK::Read(void* aData, uint32_t aLenBytes) |
hollegha3 | 1:a2c68aba6d98 | 62 | { |
hollegha3 | 1:a2c68aba6d98 | 63 | uint8_t* ptr = (uint8_t*)aData; |
hollegha3 | 1:a2c68aba6d98 | 64 | for(int i=0; i<aLenBytes; i++) { |
hollegha3 | 1:a2c68aba6d98 | 65 | *ptr=this->GetChar(); ptr++; |
hollegha3 | 1:a2c68aba6d98 | 66 | } |
hollegha3 | 1:a2c68aba6d98 | 67 | } |
hollegha3 | 1:a2c68aba6d98 | 68 | |
hollegha3 | 1:a2c68aba6d98 | 69 | |
hollegha3 | 1:a2c68aba6d98 | 70 | |
hollegha3 | 1:a2c68aba6d98 | 71 | |
hollegha3 | 1:a2c68aba6d98 | 72 | void SvProtocol::Puts(char* aCStr) |
hollegha3 | 1:a2c68aba6d98 | 73 | { |
hollegha3 | 1:a2c68aba6d98 | 74 | while( *aCStr != '\0' ) |
hollegha3 | 1:a2c68aba6d98 | 75 | { |
hollegha3 | 1:a2c68aba6d98 | 76 | if( *aCStr=='\n' ) |
hollegha3 | 1:a2c68aba6d98 | 77 | _st->PutChar('\r'); |
hollegha3 | 1:a2c68aba6d98 | 78 | _st->PutChar(*aCStr); |
hollegha3 | 1:a2c68aba6d98 | 79 | aCStr++; |
hollegha3 | 1:a2c68aba6d98 | 80 | } |
hollegha3 | 1:a2c68aba6d98 | 81 | _st->PutChar(0); // terminate with 0 |
hollegha3 | 1:a2c68aba6d98 | 82 | } |
hollegha3 | 1:a2c68aba6d98 | 83 | |
hollegha3 | 1:a2c68aba6d98 | 84 | void SvProtocol::Puts2(char* aCStr, char aEndChar) |
hollegha3 | 1:a2c68aba6d98 | 85 | { |
hollegha3 | 1:a2c68aba6d98 | 86 | while( *aCStr != aEndChar ) |
hollegha3 | 1:a2c68aba6d98 | 87 | { |
hollegha3 | 1:a2c68aba6d98 | 88 | _st->PutChar(*aCStr); |
hollegha3 | 1:a2c68aba6d98 | 89 | aCStr++; |
hollegha3 | 1:a2c68aba6d98 | 90 | } |
hollegha3 | 1:a2c68aba6d98 | 91 | _st->PutChar(aEndChar); // terminate with aEndChar |
hollegha3 | 1:a2c68aba6d98 | 92 | } |
hollegha3 | 1:a2c68aba6d98 | 93 | |
hollegha3 | 1:a2c68aba6d98 | 94 | static char sBuffer[50]; |
hollegha3 | 1:a2c68aba6d98 | 95 | |
hollegha3 | 1:a2c68aba6d98 | 96 | void SvProtocol::Printf(const char *format, ...) |
hollegha3 | 1:a2c68aba6d98 | 97 | { |
hollegha3 | 1:a2c68aba6d98 | 98 | va_list vArgs; |
hollegha3 | 1:a2c68aba6d98 | 99 | va_start(vArgs, format); |
hollegha3 | 1:a2c68aba6d98 | 100 | vsprintf(sBuffer, (char const *)format, vArgs); |
hollegha3 | 1:a2c68aba6d98 | 101 | va_end(vArgs); |
hollegha3 | 1:a2c68aba6d98 | 102 | Puts(sBuffer); |
hollegha3 | 1:a2c68aba6d98 | 103 | } |
hollegha3 | 1:a2c68aba6d98 | 104 | |
hollegha3 | 1:a2c68aba6d98 | 105 | void SvProtocol::SvPrintf(const char *format, ...) |
hollegha3 | 1:a2c68aba6d98 | 106 | { |
hollegha3 | 1:a2c68aba6d98 | 107 | va_list vArgs; |
hollegha3 | 1:a2c68aba6d98 | 108 | va_start(vArgs, format); |
hollegha3 | 1:a2c68aba6d98 | 109 | vsprintf(sBuffer, (char const *)format, vArgs); |
hollegha3 | 1:a2c68aba6d98 | 110 | va_end(vArgs); |
hollegha3 | 1:a2c68aba6d98 | 111 | if( !svMessageON ) return; |
hollegha3 | 1:a2c68aba6d98 | 112 | _st->PutChar(10); |
hollegha3 | 1:a2c68aba6d98 | 113 | Puts(sBuffer); |
hollegha3 | 1:a2c68aba6d98 | 114 | } |
hollegha3 | 1:a2c68aba6d98 | 115 | |
hollegha3 | 1:a2c68aba6d98 | 116 | void SvProtocol::WriteSV3p13(int aId, float aData) { |
hollegha3 | 1:a2c68aba6d98 | 117 | // int16_t val = To3p13(aData); |
hollegha3 | 1:a2c68aba6d98 | 118 | // PutChar(aId); Write(&val,2); |
hollegha3 | 1:a2c68aba6d98 | 119 | } |
hollegha3 | 1:a2c68aba6d98 | 120 | |
hollegha3 | 1:a2c68aba6d98 | 121 | int SvProtocol::GetCommand() |
hollegha3 | 1:a2c68aba6d98 | 122 | { |
hollegha3 | 1:a2c68aba6d98 | 123 | uint8_t cmd = _st->GetChar(); |
hollegha3 | 1:a2c68aba6d98 | 124 | if( cmd==1 ) |
hollegha3 | 1:a2c68aba6d98 | 125 | { |
hollegha3 | 1:a2c68aba6d98 | 126 | this->acqON = _st->GetChar(); |
hollegha3 | 1:a2c68aba6d98 | 127 | if( this->acqON ) |
hollegha3 | 1:a2c68aba6d98 | 128 | this->SvMessage("AcqON"); |
hollegha3 | 1:a2c68aba6d98 | 129 | else |
hollegha3 | 1:a2c68aba6d98 | 130 | this->SvMessage("AcqOFF"); |
hollegha3 | 1:a2c68aba6d98 | 131 | return 0; |
hollegha3 | 1:a2c68aba6d98 | 132 | } |
hollegha3 | 1:a2c68aba6d98 | 133 | return cmd; |
hollegha3 | 1:a2c68aba6d98 | 134 | } |
hollegha3 | 1:a2c68aba6d98 | 135 | |
hollegha3 | 1:a2c68aba6d98 | 136 | void SvProtocol::ReadCString(char* aBuff, char aTermChar) |
hollegha3 | 1:a2c68aba6d98 | 137 | { |
hollegha3 | 1:a2c68aba6d98 | 138 | int ch = _st->GetChar(); |
hollegha3 | 1:a2c68aba6d98 | 139 | char* ptr = aBuff; |
hollegha3 | 1:a2c68aba6d98 | 140 | while( ch!=aTermChar ) |
hollegha3 | 1:a2c68aba6d98 | 141 | { |
hollegha3 | 1:a2c68aba6d98 | 142 | *ptr=ch; ptr++; |
hollegha3 | 1:a2c68aba6d98 | 143 | ch=_st->GetChar(); |
hollegha3 | 1:a2c68aba6d98 | 144 | } |
hollegha3 | 1:a2c68aba6d98 | 145 | *ptr=ch; ptr++; |
hollegha3 | 1:a2c68aba6d98 | 146 | *ptr=0; |
hollegha3 | 1:a2c68aba6d98 | 147 | } |
hollegha3 | 1:a2c68aba6d98 | 148 | |
hollegha3 | 1:a2c68aba6d98 | 149 | } // namespace mbed |
hollegha3 | 1:a2c68aba6d98 | 150 | |
hollegha3 | 1:a2c68aba6d98 | 151 | |
hollegha3 | 1:a2c68aba6d98 | 152 | |
hollegha3 | 1:a2c68aba6d98 | 153 | |
hollegha3 | 1:a2c68aba6d98 | 154 |