annotate Discovery/Src/tInfoLogger.c @ 1036:5865f0aeb438 Puls_Integration

Radio data integration: Added functionality for displaying radio data as debug message. The USART3 has been configurated for receiption and a function for the visualization of the data has been added to the demo unit (draft implementation). For activation the radio as well as the logger functionality needs to be activated via compile switch. Note that at the moment bluetooth and radio DMA may not be operated in parallel.
author Ideenmodellierer
date Sun, 10 Aug 2025 15:28:59 +0200
parents 5b913cdaa9dc
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1031
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
1 ///////////////////////////////////////////////////////////////////////////////
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
2 /// -*- coding: UTF-8 -*-
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
3 ///
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
4 /// \file Discovery/Src/tInfoLogger.c
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
5 /// \brief Show data which is received / send through UART interface
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
6 /// \author heinrichs weikamp gmbh
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
7 /// \date 23-Feb-2015
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
8 ///
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
9 /// \details
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
10 ///
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
11 /// $Id$
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
12 ///////////////////////////////////////////////////////////////////////////////
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
13 /// \par Copyright (c) 2014-2018 Heinrichs Weikamp gmbh
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
14 ///
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
15 /// This program is free software: you can redistribute it and/or modify
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
16 /// it under the terms of the GNU General Public License as published by
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
17 /// the Free Software Foundation, either version 3 of the License, or
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
18 /// (at your option) any later version.
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
19 ///
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
20 /// This program is distributed in the hope that it will be useful,
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
21 /// but WITHOUT ANY WARRANTY; without even the implied warranty of
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
22 /// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
23 /// GNU General Public License for more details.
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
24 ///
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
25 /// You should have received a copy of the GNU General Public License
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
26 /// along with this program. If not, see <http://www.gnu.org/licenses/>.
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
27 //////////////////////////////////////////////////////////////////////////////
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
28
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
29 /* Includes ------------------------------------------------------------------*/
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
30
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
31 #include "gfx_engine.h"
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
32 #include "gfx_fonts.h"
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
33 #include "tHome.h"
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
34 #include "tInfo.h"
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
35 #include "tInfoLogger.h"
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
36 #include "tMenuEdit.h"
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
37 #include "data_exchange_main.h"
1036
5865f0aeb438 Radio data integration:
Ideenmodellierer
parents: 1035
diff changeset
38 #include "t7.h"
1031
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
39
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
40 #include <string.h>
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
41 #include <inttypes.h>
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
42
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
43
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
44 /* Private variables ---------------------------------------------------------*/
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
45 static uint8_t lines[MAX_LOGGER_LINES][MAX_CHAR_PER_LINE + LINE_HEADER_BYTES];
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
46 static uint8_t lineWriteIndex = 0;
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
47 static uint8_t lineReadIndex = 0;
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
48 static uint32_t receivedLinesCount = 0;
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
49
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
50 static uint32_t loggerUpdateTime = 0;
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
51 static uint32_t previousGlobalState = 0;
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
52
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
53 /* Exported functions --------------------------------------------------------*/
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
54
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
55
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
56 void InfoLogger_writeLine(uint8_t* pLine,uint8_t lineLength,uint8_t direction)
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
57 {
1035
5b913cdaa9dc Degub message logger:
Ideenmodellierer
parents: 1034
diff changeset
58 #ifdef ENABLE_LOGGER_WINDOW
1031
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
59 uint8_t LogIndex = 0;
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
60
1035
5b913cdaa9dc Degub message logger:
Ideenmodellierer
parents: 1034
diff changeset
61 if(!t7_customview_disabled(CVIEW_Logger))
1031
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
62 {
1035
5b913cdaa9dc Degub message logger:
Ideenmodellierer
parents: 1034
diff changeset
63 if(lineLength <= MAX_CHAR_PER_LINE)
1031
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
64 {
1035
5b913cdaa9dc Degub message logger:
Ideenmodellierer
parents: 1034
diff changeset
65 memset(&lines[lineWriteIndex][0],0, (MAX_CHAR_PER_LINE + LINE_HEADER_BYTES));
5b913cdaa9dc Degub message logger:
Ideenmodellierer
parents: 1034
diff changeset
66 if(direction == LOG_TX_LINE)
5b913cdaa9dc Degub message logger:
Ideenmodellierer
parents: 1034
diff changeset
67 {
5b913cdaa9dc Degub message logger:
Ideenmodellierer
parents: 1034
diff changeset
68 lines[lineWriteIndex][LogIndex] = '\002'; /* align right */
5b913cdaa9dc Degub message logger:
Ideenmodellierer
parents: 1034
diff changeset
69 LogIndex++;
5b913cdaa9dc Degub message logger:
Ideenmodellierer
parents: 1034
diff changeset
70 }
5b913cdaa9dc Degub message logger:
Ideenmodellierer
parents: 1034
diff changeset
71 memcpy(&lines[lineWriteIndex][LogIndex],pLine,lineLength);
5b913cdaa9dc Degub message logger:
Ideenmodellierer
parents: 1034
diff changeset
72 lineWriteIndex++;
5b913cdaa9dc Degub message logger:
Ideenmodellierer
parents: 1034
diff changeset
73 if(lineWriteIndex == MAX_LOGGER_LINES)
5b913cdaa9dc Degub message logger:
Ideenmodellierer
parents: 1034
diff changeset
74 {
5b913cdaa9dc Degub message logger:
Ideenmodellierer
parents: 1034
diff changeset
75 lineWriteIndex = 0;
5b913cdaa9dc Degub message logger:
Ideenmodellierer
parents: 1034
diff changeset
76 }
5b913cdaa9dc Degub message logger:
Ideenmodellierer
parents: 1034
diff changeset
77 receivedLinesCount++;
1031
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
78 }
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
79 }
1035
5b913cdaa9dc Degub message logger:
Ideenmodellierer
parents: 1034
diff changeset
80 #endif
1031
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
81 }
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
82
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
83 uint8_t InfoLogger_isUpdated()
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
84 {
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
85 uint8_t ret = 0;
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
86 if(lineReadIndex != lineWriteIndex)
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
87 {
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
88 ret = 1;
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
89 }
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
90 return ret;
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
91 }
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
92
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
93 void openInfo_Logger()
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
94 {
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
95 previousGlobalState = get_globalState();
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
96 set_globalState(StILOGGER);
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
97
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
98 loggerUpdateTime = HAL_GetTick();
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
99 }
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
100
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
101 void refreshInfo_Logger(GFX_DrawCfgScreen s)
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
102 {
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
103 uint8_t index = 0;
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
104 char text[31];
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
105 uint8_t displayLine = 0;
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
106 uint8_t color = CLUT_Font020;
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
107
1035
5b913cdaa9dc Degub message logger:
Ideenmodellierer
parents: 1034
diff changeset
108 sprintf(text,"\001%c%c", TXT_2BYTE, TXT2BYTE_Logger);
1031
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
109
1035
5b913cdaa9dc Degub message logger:
Ideenmodellierer
parents: 1034
diff changeset
110 tInfo_write_content_simple( 30, 770, ME_Y_LINE_BASE, &FontT48, text, CLUT_InfoSurface);
1031
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
111
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
112
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
113 if(InfoLogger_isUpdated())
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
114 {
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
115 loggerUpdateTime = HAL_GetTick();
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
116 }
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
117 if(receivedLinesCount > MAX_LOGGER_LINES)
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
118 {
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
119 displayLine = MAX_LOGGER_LINES-1;
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
120 }
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
121 else
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
122 {
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
123 displayLine = lineWriteIndex;
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
124 }
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
125
1033
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1031
diff changeset
126 if(lineReadIndex != lineWriteIndex) /* needed for isUpdated function */
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1031
diff changeset
127 {
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1031
diff changeset
128 lineReadIndex++;
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1031
diff changeset
129 if(lineReadIndex == MAX_LOGGER_LINES)
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1031
diff changeset
130 {
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1031
diff changeset
131 lineReadIndex = 0;
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1031
diff changeset
132 }
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1031
diff changeset
133 }
1031
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
134 while (index < displayLine)
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
135 {
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
136 color = CLUT_Font020;
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
137 if(lines[index][0] == '\002')
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
138 {
1033
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1031
diff changeset
139 color = CLUT_NiceGreen;
1031
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
140 }
1033
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1031
diff changeset
141 if(lineReadIndex == index)
1031
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
142 {
1033
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1031
diff changeset
143 color = CLUT_NiceBlue;
1031
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
144 }
1033
5f66e44d69f0 Added functionality needed for subscription of standard Bluetooth pulse service notifications
Ideenmodellierer
parents: 1031
diff changeset
145 tInfo_write_content_simple( 30, 770, 60 + (index * 30), &FontT24, (char*)lines[index], color);
1031
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
146
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
147 if(lineReadIndex != lineWriteIndex) /* needed for isUpdated function */
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
148 {
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
149 lineReadIndex++;
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
150 if(lineReadIndex == MAX_LOGGER_LINES)
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
151 {
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
152 lineReadIndex = 0;
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
153 }
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
154 }
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
155 index++;
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
156 }
1035
5b913cdaa9dc Degub message logger:
Ideenmodellierer
parents: 1034
diff changeset
157 if((time_elapsed_ms(loggerUpdateTime, HAL_GetTick()) > 10000))
1031
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
158 {
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
159 set_globalState(previousGlobalState); /* restore state which was active before log data was received */
1035
5b913cdaa9dc Degub message logger:
Ideenmodellierer
parents: 1034
diff changeset
160 exitInfo();
1031
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
161 }
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
162 }
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
163
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
164 void sendActionToInfoLogger(uint8_t sendAction)
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
165 {
1035
5b913cdaa9dc Degub message logger:
Ideenmodellierer
parents: 1034
diff changeset
166 /* TODO: at the moment a generic return to home is used because the logger window could be opened from everywhere => implement context based return from view */
5b913cdaa9dc Degub message logger:
Ideenmodellierer
parents: 1034
diff changeset
167 set_globalState(previousGlobalState); /* restore state which was active before log data was received */
5b913cdaa9dc Degub message logger:
Ideenmodellierer
parents: 1034
diff changeset
168 exitInfoSilent();
1031
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
169 }
cd4561c33758 New Logger View:
Ideenmodellierer
parents:
diff changeset
170