Used for verbose tracing via printf(..) to the STM32F746 LCD.

Dependents:   GroveStreams-Temp

Committer:
mmills
Date:
Thu Jan 05 18:40:01 2017 +0000
Revision:
0:ecd4f3e81bcf
Initial Revision.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mmills 0:ecd4f3e81bcf 1 /*
mmills 0:ecd4f3e81bcf 2 License:
mmills 0:ecd4f3e81bcf 3 Copyright (C) 2017 GroveStreams LLC.
mmills 0:ecd4f3e81bcf 4 Licensed under the Apache License, Version 2.0 (the "License");
mmills 0:ecd4f3e81bcf 5 you may not use this file except in compliance with the License.
mmills 0:ecd4f3e81bcf 6 You may obtain a copy of the License at: http://www.apache.org/licenses/LICENSE-2.0
mmills 0:ecd4f3e81bcf 7
mmills 0:ecd4f3e81bcf 8 Unless required by applicable law or agreed to in writing, software
mmills 0:ecd4f3e81bcf 9 distributed under the License is distributed on an "AS IS" BASIS,
mmills 0:ecd4f3e81bcf 10 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
mmills 0:ecd4f3e81bcf 11 See the License for the specific language governing permissions and
mmills 0:ecd4f3e81bcf 12 limitations under the License.
mmills 0:ecd4f3e81bcf 13 */
mmills 0:ecd4f3e81bcf 14
mmills 0:ecd4f3e81bcf 15 #include "LcdDiscoF746NgTracer.h"
mmills 0:ecd4f3e81bcf 16
mmills 0:ecd4f3e81bcf 17
mmills 0:ecd4f3e81bcf 18 LcdDiscoF746NgTracer::LcdDiscoF746NgTracer()
mmills 0:ecd4f3e81bcf 19 {
mmills 0:ecd4f3e81bcf 20 _line = 0;
mmills 0:ecd4f3e81bcf 21 _maxLines = 21;
mmills 0:ecd4f3e81bcf 22 _lcd.Clear(LCD_COLOR_GREEN);
mmills 0:ecd4f3e81bcf 23 _lcd.SetBackColor(LCD_COLOR_GREEN);
mmills 0:ecd4f3e81bcf 24 _lcd.SetTextColor(LCD_COLOR_WHITE);
mmills 0:ecd4f3e81bcf 25 _lcd.SetFont(&Font12);
mmills 0:ecd4f3e81bcf 26 }
mmills 0:ecd4f3e81bcf 27
mmills 0:ecd4f3e81bcf 28 void LcdDiscoF746NgTracer::printf(const char* format, ...)
mmills 0:ecd4f3e81bcf 29 {
mmills 0:ecd4f3e81bcf 30 char sbuffer[512] = {0};
mmills 0:ecd4f3e81bcf 31
mmills 0:ecd4f3e81bcf 32 va_list args;
mmills 0:ecd4f3e81bcf 33 va_start(args, format);
mmills 0:ecd4f3e81bcf 34 vsprintf(sbuffer, format, args);
mmills 0:ecd4f3e81bcf 35
mmills 0:ecd4f3e81bcf 36 this->println(sbuffer);
mmills 0:ecd4f3e81bcf 37
mmills 0:ecd4f3e81bcf 38 va_end(args);
mmills 0:ecd4f3e81bcf 39 }
mmills 0:ecd4f3e81bcf 40
mmills 0:ecd4f3e81bcf 41 void LcdDiscoF746NgTracer::println(const char* sbuffer)
mmills 0:ecd4f3e81bcf 42 {
mmills 0:ecd4f3e81bcf 43
mmills 0:ecd4f3e81bcf 44 //LCD can only disply 60 chars at a time
mmills 0:ecd4f3e81bcf 45 int ichar = 0;
mmills 0:ecd4f3e81bcf 46 int charCount = strlen(sbuffer);
mmills 0:ecd4f3e81bcf 47 while (charCount>0) {
mmills 0:ecd4f3e81bcf 48
mmills 0:ecd4f3e81bcf 49 char subbuff[61] = {0}; //Initialize buffer to nulls
mmills 0:ecd4f3e81bcf 50 if (charCount < 60) {
mmills 0:ecd4f3e81bcf 51 memcpy( subbuff, &sbuffer[ichar], charCount);
mmills 0:ecd4f3e81bcf 52 charCount=0;
mmills 0:ecd4f3e81bcf 53 } else {
mmills 0:ecd4f3e81bcf 54 memcpy( subbuff, &sbuffer[ichar], 60);
mmills 0:ecd4f3e81bcf 55 charCount -= 60;
mmills 0:ecd4f3e81bcf 56 }
mmills 0:ecd4f3e81bcf 57
mmills 0:ecd4f3e81bcf 58 _lcd.DisplayStringAtLine(_line, (uint8_t *)subbuff);
mmills 0:ecd4f3e81bcf 59
mmills 0:ecd4f3e81bcf 60 _line++;
mmills 0:ecd4f3e81bcf 61 if (_line == _maxLines) {
mmills 0:ecd4f3e81bcf 62 clear();
mmills 0:ecd4f3e81bcf 63 }
mmills 0:ecd4f3e81bcf 64
mmills 0:ecd4f3e81bcf 65 ichar+=60;
mmills 0:ecd4f3e81bcf 66 }
mmills 0:ecd4f3e81bcf 67 }
mmills 0:ecd4f3e81bcf 68
mmills 0:ecd4f3e81bcf 69 void LcdDiscoF746NgTracer::clear()
mmills 0:ecd4f3e81bcf 70 {
mmills 0:ecd4f3e81bcf 71 _line = 0;
mmills 0:ecd4f3e81bcf 72 _lcd.Clear(LCD_COLOR_GREEN);
mmills 0:ecd4f3e81bcf 73 }
mmills 0:ecd4f3e81bcf 74
mmills 0:ecd4f3e81bcf 75