Ben Gordon
/
ELEC351_GroupA_alternate
temp
Diff: Terminal.cpp
- Revision:
- 0:2a4af0cb6e8d
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Terminal.cpp Thu Dec 06 15:38:09 2018 +0000 @@ -0,0 +1,89 @@ +/******************************************************************************* +This cpp defines the functions for the terminal class which are used to +control the terminal, it also defines the TerminalThread function which +is ran in its own thread and controls the printing of DATA to the Terminal +*******************************************************************************/ +#include "Terminal.hpp" + +// Thread for handiling the terminal +void TerminalThread(void) +{ + // Create Object PC of class Terminal with Set SERIAL_TX and SERIAL_RX pins + Terminal PC(SERIAL_TX, SERIAL_RX); + PC.init(); + PC.DisplayCellIndex(); + // Enter Forever loop + while(1) + { + // If signal from SD thread recieved print message to terminal + Thread::signal_wait(Signal_UnMount); + PC.PrintMSGS("UNMOUNTED SD"); + } +} + +void Terminal::init(void) +{ + // Set baud rate for serial object pc + pc.baud (115200); + + // Hide cursor, move to x 0 y 0 and change print colour to green + pc.printf("\x1b[?25l"); // Hides cursor + //pc.printf("\x1b[3j"); // Clear screen + Cursor(0,0); + Colour(ColourGREEN); + + // Print DATA table to present data + pc.printf("* ELEC351 : Low Power Enviromental Sensor * Date and Time Here *\n\r" + "*********************************************************************\n\r" + "* TIME * TEMP (C) * PRESSURE (mbar)* LIGHT (LUX) *\n\r" + "*********************************************************************\n\r"); + for(BYTE idx = 0; idx < Rows; idx++) + { + pc.printf("* * * * *\n\r"); + } + pc.printf("*********************************************************************\n\r" + "* Debug * *"); + + // Position cursor in first cell of table + Cursor(3,3); + Colour(ColourRED); +} + +// Move cursor of pc terminal to co-ordinates 'X' and 'Y' (between 0 and 255) +void Terminal::Cursor(BYTE X, BYTE Y) +{ + pc.printf("\x1b[%d;%dH",Y,X); +} + +// Change pc terminal print colour (8 bit colour) to colour defined by "COLOUR" +void Terminal::Colour(BYTE COLOUR) +{ + pc.printf("\x1b[38;5;%dm",COLOUR); +} + +// Prints data(STRING) to cell in table defined by IDX +void Terminal::PrintDATA(BYTE* STRING, BYTE IDX) +{ + BYTE Y = (IDX/4)+5; + BYTE X = ((IDX%4)*17)+3; + Cursor(X,Y); + pc.printf("%s",STRING); +} + +// Prints index of cells into each cell for debug purpose +void Terminal::DisplayCellIndex(void){ + for(BYTE IDX = 0; IDX < MaxDATA; IDX++){ + BYTE Y = (IDX/4)+5; + BYTE X = ((IDX%4)*17)+3; + Cursor(X,Y); + pc.printf("%d",IDX); + } +} + +// Prints MSGS (String) to debug line of terminal +void Terminal::PrintMSGS(BYTE* STRING) +{ + Cursor((11),(Rows+6)); + pc.printf("%s",STRING); +} +