Martin Werluschnig / Mbed 2 deprecated Diplomarbeit_MW_CW

Dependencies:   mbed

Committer:
martwerl
Date:
Thu Nov 15 17:59:08 2018 +0000
Revision:
1:ff38e3bad33a
Parent:
0:afeca64a6543
Diplomarbeit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
martwerl 0:afeca64a6543 1
martwerl 0:afeca64a6543 2 #include "Serial_HL.h"
martwerl 0:afeca64a6543 3 #include <stdarg.h>
martwerl 0:afeca64a6543 4 #include <stdio.h>
martwerl 0:afeca64a6543 5
martwerl 0:afeca64a6543 6 namespace mbed {
martwerl 0:afeca64a6543 7
martwerl 0:afeca64a6543 8 SerialBLK::SerialBLK(PinName tx, PinName rx) {
martwerl 0:afeca64a6543 9 serial_init(&_serial, tx, rx);
martwerl 0:afeca64a6543 10 _baud = 9600;
martwerl 0:afeca64a6543 11 serial_irq_handler(&_serial, SerialBLK::_irq_handler, (uint32_t)this);
martwerl 0:afeca64a6543 12 }
martwerl 0:afeca64a6543 13
martwerl 0:afeca64a6543 14 void SerialBLK::baud(int baudrate) {
martwerl 0:afeca64a6543 15 serial_baud(&_serial, baudrate);
martwerl 0:afeca64a6543 16 _baud = baudrate;
martwerl 0:afeca64a6543 17 }
martwerl 0:afeca64a6543 18
martwerl 0:afeca64a6543 19 void SerialBLK::format(int bits, Parity parity, int stop_bits) {
martwerl 0:afeca64a6543 20 serial_format(&_serial, bits, (SerialParity)parity, stop_bits);
martwerl 0:afeca64a6543 21 }
martwerl 0:afeca64a6543 22
martwerl 0:afeca64a6543 23 int SerialBLK::readable() {
martwerl 0:afeca64a6543 24 return serial_readable(&_serial);
martwerl 0:afeca64a6543 25 }
martwerl 0:afeca64a6543 26
martwerl 0:afeca64a6543 27 int SerialBLK::writeable() {
martwerl 0:afeca64a6543 28 return serial_writable(&_serial);
martwerl 0:afeca64a6543 29 }
martwerl 0:afeca64a6543 30
martwerl 0:afeca64a6543 31 void SerialBLK::attach(void (*fptr)(void), IrqType type) {
martwerl 0:afeca64a6543 32 if (fptr) {
martwerl 0:afeca64a6543 33 _irq[type].attach(fptr);
martwerl 0:afeca64a6543 34 serial_irq_set(&_serial, (SerialIrq)type, 1);
martwerl 0:afeca64a6543 35 } else {
martwerl 0:afeca64a6543 36 serial_irq_set(&_serial, (SerialIrq)type, 0);
martwerl 0:afeca64a6543 37 }
martwerl 0:afeca64a6543 38 }
martwerl 0:afeca64a6543 39
martwerl 0:afeca64a6543 40 void SerialBLK::_irq_handler(uint32_t id, SerialIrq irq_type) {
martwerl 0:afeca64a6543 41 SerialBLK *obj = (SerialBLK*)id;
martwerl 0:afeca64a6543 42 obj->_irq[irq_type].call();
martwerl 0:afeca64a6543 43 }
martwerl 0:afeca64a6543 44
martwerl 0:afeca64a6543 45 int SerialBLK::GetChar() {
martwerl 0:afeca64a6543 46 return serial_getc(&_serial);
martwerl 0:afeca64a6543 47 }
martwerl 0:afeca64a6543 48
martwerl 0:afeca64a6543 49 void SerialBLK::PutChar(int aCh) {
martwerl 0:afeca64a6543 50 serial_putc(&_serial, aCh);
martwerl 0:afeca64a6543 51 }
martwerl 0:afeca64a6543 52
martwerl 0:afeca64a6543 53 void SerialBLK::Write(void* aData, uint32_t aLenBytes)
martwerl 0:afeca64a6543 54 {
martwerl 0:afeca64a6543 55 uint8_t* ptr = (uint8_t*)aData;
martwerl 0:afeca64a6543 56 for(int i=0; i<aLenBytes; i++) {
martwerl 0:afeca64a6543 57 this->PutChar(*ptr); ptr++;
martwerl 0:afeca64a6543 58 }
martwerl 0:afeca64a6543 59 }
martwerl 0:afeca64a6543 60
martwerl 0:afeca64a6543 61 void SerialBLK::Read(void* aData, uint32_t aLenBytes)
martwerl 0:afeca64a6543 62 {
martwerl 0:afeca64a6543 63 uint8_t* ptr = (uint8_t*)aData;
martwerl 0:afeca64a6543 64 for(int i=0; i<aLenBytes; i++) {
martwerl 0:afeca64a6543 65 *ptr=this->GetChar(); ptr++;
martwerl 0:afeca64a6543 66 }
martwerl 0:afeca64a6543 67 }
martwerl 0:afeca64a6543 68
martwerl 0:afeca64a6543 69
martwerl 0:afeca64a6543 70
martwerl 0:afeca64a6543 71
martwerl 0:afeca64a6543 72 void SvProtocol::Puts(char* aCStr)
martwerl 0:afeca64a6543 73 {
martwerl 0:afeca64a6543 74 while( *aCStr != '\0' )
martwerl 0:afeca64a6543 75 {
martwerl 0:afeca64a6543 76 if( *aCStr=='\n' )
martwerl 0:afeca64a6543 77 _st->PutChar('\r');
martwerl 0:afeca64a6543 78 _st->PutChar(*aCStr);
martwerl 0:afeca64a6543 79 aCStr++;
martwerl 0:afeca64a6543 80 }
martwerl 0:afeca64a6543 81 _st->PutChar(0); // terminate with 0
martwerl 0:afeca64a6543 82 }
martwerl 0:afeca64a6543 83
martwerl 0:afeca64a6543 84 static char sBuffer[50];
martwerl 0:afeca64a6543 85
martwerl 0:afeca64a6543 86 void SvProtocol::Printf(const char *format, ...)
martwerl 0:afeca64a6543 87 {
martwerl 0:afeca64a6543 88 va_list vArgs;
martwerl 0:afeca64a6543 89 va_start(vArgs, format);
martwerl 0:afeca64a6543 90 vsprintf(sBuffer, (char const *)format, vArgs);
martwerl 0:afeca64a6543 91 va_end(vArgs);
martwerl 0:afeca64a6543 92 Puts(sBuffer);
martwerl 0:afeca64a6543 93 }
martwerl 0:afeca64a6543 94
martwerl 0:afeca64a6543 95 void SvProtocol::SvPrintf(const char *format, ...)
martwerl 0:afeca64a6543 96 {
martwerl 0:afeca64a6543 97 va_list vArgs;
martwerl 0:afeca64a6543 98 va_start(vArgs, format);
martwerl 0:afeca64a6543 99 vsprintf(sBuffer, (char const *)format, vArgs);
martwerl 0:afeca64a6543 100 va_end(vArgs);
martwerl 0:afeca64a6543 101 if( !svMessageON ) return;
martwerl 0:afeca64a6543 102 _st->PutChar(10);
martwerl 0:afeca64a6543 103 Puts(sBuffer);
martwerl 0:afeca64a6543 104 }
martwerl 0:afeca64a6543 105
martwerl 0:afeca64a6543 106 void SvProtocol::WriteSV3p13(int aId, float aData) {
martwerl 0:afeca64a6543 107 // int16_t val = To3p13(aData);
martwerl 0:afeca64a6543 108 // PutChar(aId); Write(&val,2);
martwerl 0:afeca64a6543 109 }
martwerl 0:afeca64a6543 110
martwerl 0:afeca64a6543 111 int SvProtocol::GetCommand()
martwerl 0:afeca64a6543 112 {
martwerl 0:afeca64a6543 113 uint8_t cmd = _st->GetChar();
martwerl 0:afeca64a6543 114 if( cmd==1 )
martwerl 0:afeca64a6543 115 {
martwerl 0:afeca64a6543 116 this->acqON = _st->GetChar();
martwerl 0:afeca64a6543 117 if( this->acqON )
martwerl 0:afeca64a6543 118 this->SvMessage("AcqON");
martwerl 0:afeca64a6543 119 else
martwerl 0:afeca64a6543 120 this->SvMessage("AcqOFF");
martwerl 0:afeca64a6543 121 return 0;
martwerl 0:afeca64a6543 122 }
martwerl 0:afeca64a6543 123 return cmd;
martwerl 0:afeca64a6543 124 }
martwerl 0:afeca64a6543 125
martwerl 0:afeca64a6543 126 } // namespace mbed
martwerl 0:afeca64a6543 127
martwerl 0:afeca64a6543 128
martwerl 0:afeca64a6543 129
martwerl 0:afeca64a6543 130
martwerl 0:afeca64a6543 131