LineSensTest for Bertl16

Dependencies:   mbed

Fork of B16Test4 by michael hollegha

Committer:
hollegha3
Date:
Wed Sep 26 13:51:22 2018 +0000
Revision:
2:fffc57eb649f
Parent:
1:a2c68aba6d98
xx17

Who changed what in which revision?

UserRevisionLine numberNew 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