UART Driver to receive asynchronous Serial Comms from a Raspberry Pi and parse the results.
SerialComms.cpp
- Committer:
- sk398
- Date:
- 2016-03-05
- Revision:
- 11:b5f4a9e69d96
- Parent:
- 10:55cb02b00338
File content as of revision 11:b5f4a9e69d96:
/* #####################################################################
SerialComms.cpp
---------------
Surface Ship, Group 5
---------------------
Written by: Steven Kay
Date: February 2016
Function: This
Version: 1.0
Version History
---------------
1.1 rgdfgdfgdfggdfgdg
1.0 gdgddfdddgd
##################################################################### */
#include "mbed.h"
#include "SerialComms.h"
SerialComms::SerialComms(PinName tx,PinName rx)
{
_HLC_Conn = new RawSerial(tx,rx);
_HLC_Conn-> baud(SERIAL_BAUD_RATE);
_HLC_Conn -> format(8,SerialBase::None,1);
_HLC_Conn -> attach(this,&SerialComms::incomingDataISR,RawSerial::RxIrq);
incomingDataUpdate = FALSE;
}
void SerialComms::incomingDataISR()
{
receiverBuffer = _HLC_Conn -> getc();
incomingDataUpdate = TRUE;
}
uint8_t SerialComms::getCommData()
{
if(incomingDataUpdate == TRUE)
{
if( ((receiverBuffer&0x0F)==MOTORS_FORWARD ||
(receiverBuffer&0x0F)==MOTORS_BACKWARD ||
(receiverBuffer&0x0F)==MOTORS_LEFT ||
(receiverBuffer&0x0F)==MOTORS_RIGHT ||
(receiverBuffer&0x0F)==MOTORS_ARM ||
(receiverBuffer&0x0F)==MOTORS_OFF ||
(receiverBuffer>>4)&(0x0F)==MAGNET_ON ||
(receiverBuffer>>4)&(0x0F)==MAGNET_OFF
/* AND BALLAST REQUIREMENTS */ ) )
{
incomingDataUpdate = FALSE;
return receiverBuffer;
}
else
{
incomingDataUpdate = FALSE;
return 0xFF;
}
}
else
{
incomingDataUpdate = FALSE;
return 0xFF;
}
}