annotate FontPack/base_upperRegion.c @ 471:73da921869d9 fix-bat-2

bugfix: implement battery charge percentage in dive header This commit is (much) less trivial than the related 919e5cb51c92. First, rename the CCRmode attribute (corresponding to byte Ox59) of the SLogbookHeaderOSTC3. This byte (according to the hwOS interface document) does not contain any CCR related value, but it contains "battery information". Already since 2017, this byte is used from libdivecomputer to interface the charge percentage. So, its renamed from CCRmode to batteryCharge, to reflect its true purpose. Now, simply add a batteryCharge attribute to the SLogbookHeader (and see below why that is possible, without breaking things). The remaining changes are trivial to implement battery charge percentage in dive header. Caveat: do not get confused by the exact role of the individual logbook header types. SLogbookHeaderOSTC3 is the formal type of the logbook format that the OSTC4 produces. This format is supposed to identical to the format, as is used in hwOS for the series of small OSTCs. Only some values of attributes are different. For example, the OSTC4 supports VPM, so byte 0x79 (deco model used for this dive) also has a value for VPM. But the SLogbookHeader type, despite its name and structure, is *not* a true logbook header, as it includes attributes that are not available in the SLogbookHeaderOSTC3 formal header type. Signed-off-by: Jan Mulder <jan@jlmulder.nl>
author Jan Mulder <jlmulder@xs4all.nl>
date Wed, 22 Apr 2020 13:08:57 +0200
parents a984d87a1ec0
children 0172431fbad9
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
30
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
1 ///////////////////////////////////////////////////////////////////////////////
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
2 /// -*- coding: UTF-8 -*-
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
3 ///
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
4 /// \file FontPack/./base_upperRegion.c
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
5 /// \brief The beginning of it all. main() is part of this.
36
7801c5d8a562 Update author name for release
heinrichsweikamp
parents: 30
diff changeset
6 /// \author heinrichs weikamp gmbh
30
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
7 /// \date 31-August-2015
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
8 ///
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
9 /// $Id$
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
10 ///////////////////////////////////////////////////////////////////////////////
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
11 /// \par Copyright (c) 2014-2018 Heinrichs Weikamp gmbh
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
12 ///
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
13 /// This program is free software: you can redistribute it and/or modify
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
14 /// it under the terms of the GNU General Public License as published by
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
15 /// the Free Software Foundation, either version 3 of the License, or
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
16 /// (at your option) any later version.
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
17 ///
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
18 /// This program is distributed in the hope that it will be useful,
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
19 /// but WITHOUT ANY WARRANTY; without even the implied warranty of
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
20 /// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
21 /// GNU General Public License for more details.
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
22 ///
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
23 /// You should have received a copy of the GNU General Public License
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
24 /// along with this program. If not, see <http://www.gnu.org/licenses/>.
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
25 //////////////////////////////////////////////////////////////////////////////
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
26 /**
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
27 @verbatim
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
28 ==============================================================================
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
29 ##### New characters in fonts #####
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
30 ==============================================================================
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
31 [..] Use font_tmore.c and add line to corresponding font like font_t54c
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
32 Don't forget to adjust the length of the font in the last line starting
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
33 const tFont .....
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
34
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
35 [..] last char vor der gro�en L�cke, Stand 160217
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
36 image_data_FontT24_0x002b[364]
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
37 __attribute__((at( START_T24_FONT + (1647 * 28) ))), START_T24_FONT (0x08142F00 - MINUS_BANK)
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
38
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
39 -> frei ab 0x0814E490
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
40 geht dann weiter mit image_data_ostc_fuer_Tauchcomputer_240px
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
41 sind ca. 120 kByte frei!
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
42
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
43 @endverbatim
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
44 ******************************************************************************
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
45 */
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
46
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
47 /* Includes ------------------------------------------------------------------*/
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
48
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
49 // From Common/Inc:
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
50 #include "FirmwareData.h"
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
51
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
52
123
a984d87a1ec0 Added option to build FontPack as static libary which is linked to the Firmware project (to allow separate build settings)
Ideenmodellierer
parents: 76
diff changeset
53 #ifdef DEBUG
30
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
54 // From AC6 support:
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
55 #include <stdio.h>
76
51e2734895a3 Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents: 36
diff changeset
56 #include <stdint.h>
123
a984d87a1ec0 Added option to build FontPack as static libary which is linked to the Firmware project (to allow separate build settings)
Ideenmodellierer
parents: 76
diff changeset
57 #endif
30
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
58
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
59 //////////////////////////////////////////////////////////////////////////////
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
60
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
61 const SFirmwareData font_FirmwareData __attribute__(( section(".font_firmware_data") )) =
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
62 {
76
51e2734895a3 Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents: 36
diff changeset
63 .versionFirst = 1,
51e2734895a3 Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents: 36
diff changeset
64 .versionSecond = 0,
30
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
65 .versionThird = 0,
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
66 .versionBeta = 0,
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
67
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
68 /* 4 bytes, including trailing 0 */
76
51e2734895a3 Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents: 36
diff changeset
69 .signature = "im",
30
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
70
76
51e2734895a3 Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents: 36
diff changeset
71 .release_year = 18,
51e2734895a3 Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents: 36
diff changeset
72 .release_month = 10,
51e2734895a3 Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents: 36
diff changeset
73 .release_day = 04,
30
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
74 .release_sub = 0,
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
75
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
76 /* max 48, including trailing 0 */
76
51e2734895a3 Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents: 36
diff changeset
77 .release_info ="FontPack extension",
30
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
78
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
79 /* for safety reasons and coming functions */
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
80 .magic[0] = FIRMWARE_MAGIC_FIRST,
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
81 .magic[1] = FIRMWARE_MAGIC_SECOND,
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
82 .magic[2] = FIRMWARE_MAGIC_FONT, /* the magic byte for fonts*/
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
83 .magic[3] = FIRMWARE_MAGIC_END
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
84 };
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
85
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
86 //////////////////////////////////////////////////////////////////////////////
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
87
123
a984d87a1ec0 Added option to build FontPack as static libary which is linked to the Firmware project (to allow separate build settings)
Ideenmodellierer
parents: 76
diff changeset
88 #ifdef BUILD_LIBRARY
30
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
89 /* Fonts fixed in upper region */
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
90 #include "Fonts/font_awe48.h"
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
91 #include "Fonts/font_T24.h"
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
92 #include "Fonts/font_T42.h"
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
93 #include "Fonts/font_T48_plus.h"
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
94 #include "Fonts/font_T54.h"
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
95 #include "Fonts/font_T84.h"
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
96 #include "Fonts/font_T105.h"
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
97 #include "Fonts/font_T144_plus.h"
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
98
123
a984d87a1ec0 Added option to build FontPack as static libary which is linked to the Firmware project (to allow separate build settings)
Ideenmodellierer
parents: 76
diff changeset
99 #include "Fonts/image_ostc.h"
a984d87a1ec0 Added option to build FontPack as static libary which is linked to the Firmware project (to allow separate build settings)
Ideenmodellierer
parents: 76
diff changeset
100 #else
a984d87a1ec0 Added option to build FontPack as static libary which is linked to the Firmware project (to allow separate build settings)
Ideenmodellierer
parents: 76
diff changeset
101 #include "gfx_fonts.h"
a984d87a1ec0 Added option to build FontPack as static libary which is linked to the Firmware project (to allow separate build settings)
Ideenmodellierer
parents: 76
diff changeset
102 #endif
76
51e2734895a3 Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents: 36
diff changeset
103
30
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
104 /* Images fixed in upper region */
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
105 #include "Fonts/image_battery.h"
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
106 #include "Fonts/image_heinrichs_weikamp.h"
123
a984d87a1ec0 Added option to build FontPack as static libary which is linked to the Firmware project (to allow separate build settings)
Ideenmodellierer
parents: 76
diff changeset
107
a984d87a1ec0 Added option to build FontPack as static libary which is linked to the Firmware project (to allow separate build settings)
Ideenmodellierer
parents: 76
diff changeset
108 /////////////////////////////////////////////////////////////////////////////
a984d87a1ec0 Added option to build FontPack as static libary which is linked to the Firmware project (to allow separate build settings)
Ideenmodellierer
parents: 76
diff changeset
109
30
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
110
123
a984d87a1ec0 Added option to build FontPack as static libary which is linked to the Firmware project (to allow separate build settings)
Ideenmodellierer
parents: 76
diff changeset
111 #ifdef DEBUG
a984d87a1ec0 Added option to build FontPack as static libary which is linked to the Firmware project (to allow separate build settings)
Ideenmodellierer
parents: 76
diff changeset
112
a984d87a1ec0 Added option to build FontPack as static libary which is linked to the Firmware project (to allow separate build settings)
Ideenmodellierer
parents: 76
diff changeset
113 #define ASSERT(e) \
a984d87a1ec0 Added option to build FontPack as static libary which is linked to the Firmware project (to allow separate build settings)
Ideenmodellierer
parents: 76
diff changeset
114 do { if( ! (e) ) { ++errors; printf("FAIL at %3d: %s \n", __LINE__, #e); errorflag = 1;} } while(0)
a984d87a1ec0 Added option to build FontPack as static libary which is linked to the Firmware project (to allow separate build settings)
Ideenmodellierer
parents: 76
diff changeset
115
a984d87a1ec0 Added option to build FontPack as static libary which is linked to the Firmware project (to allow separate build settings)
Ideenmodellierer
parents: 76
diff changeset
116 #define ASSERT_RANGE(e, min, max) ASSERT(min <= e); ASSERT( e <= max)
30
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
117
76
51e2734895a3 Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents: 36
diff changeset
118 extern void initialise_monitor_handles(void);
51e2734895a3 Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents: 36
diff changeset
119
30
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
120 static int errors = 0;
76
51e2734895a3 Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents: 36
diff changeset
121 static uint8_t errorflag = 0;
51e2734895a3 Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents: 36
diff changeset
122
30
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
123 int main(void)
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
124 {
123
a984d87a1ec0 Added option to build FontPack as static libary which is linked to the Firmware project (to allow separate build settings)
Ideenmodellierer
parents: 76
diff changeset
125 #if DEBUG_STLINK_V2
76
51e2734895a3 Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents: 36
diff changeset
126 initialise_monitor_handles();
51e2734895a3 Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents: 36
diff changeset
127 #endif
30
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
128 //---- Check the linker puts the directory at the requested address ------
76
51e2734895a3 Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents: 36
diff changeset
129 ASSERT( & Awe48 == (tFont*)0x81DFE00 );
51e2734895a3 Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents: 36
diff changeset
130 ASSERT( & FontT24 == (tFont*)0x81DFE0c );
51e2734895a3 Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents: 36
diff changeset
131 ASSERT( & FontT42 == (tFont*)0x81DFE18 );
51e2734895a3 Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents: 36
diff changeset
132 ASSERT( & FontT48 == (tFont*)0x81DFE24 );
51e2734895a3 Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents: 36
diff changeset
133 ASSERT( & FontT54 == (tFont*)0x81DFE30 );
51e2734895a3 Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents: 36
diff changeset
134 ASSERT( & FontT84 == (tFont*)0x81DFE3c );
51e2734895a3 Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents: 36
diff changeset
135 ASSERT( & FontT105 == (tFont*)0x81DFE48 );
51e2734895a3 Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents: 36
diff changeset
136 ASSERT( & FontT144 == (tFont*)0x81DFE54 );
51e2734895a3 Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents: 36
diff changeset
137
30
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
138 //---- Check the linker puts the font data in the requested section ------
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
139 extern tChar __upper_font_data;
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
140 extern tChar __upper_font_data_end;
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
141 ASSERT( &__upper_font_data == (tChar*)0x08132040 );
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
142 ASSERT_RANGE( (int)&__upper_font_data_end, 0x08132040, 0x081E0000);
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
143
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
144 //---- Walk through the directory data -----------------------------------
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
145 extern const tFont __font_directory;
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
146 extern const tFont __font_directory_end;
76
51e2734895a3 Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents: 36
diff changeset
147
51e2734895a3 Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents: 36
diff changeset
148 ASSERT_RANGE(&ImgOSTC, (tImage*)&__upper_font_data, (tImage*)&__upper_font_data_end);
51e2734895a3 Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents: 36
diff changeset
149
30
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
150 for(const tFont* font = & __font_directory; font < &__font_directory_end; ++font)
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
151 {
76
51e2734895a3 Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents: 36
diff changeset
152 printf("Font: %x\n",font);
30
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
153 // Check END-OF-DIRECTORY magic marker
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
154 if( font->length == (uint32_t)-1 )
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
155 {
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
156 ASSERT( font == &FontT144 + 1 );
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
157 break;
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
158 }
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
159
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
160 // Check font descriptors are inside a safe range.
76
51e2734895a3 Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents: 36
diff changeset
161 ASSERT_RANGE( font->length, 10, 150 ); /* old 103: some fonts meanwhile contain more charactes */
51e2734895a3 Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents: 36
diff changeset
162 ASSERT_RANGE( font->spacesize, 0, 28 ); /* old 18 : Awe40 has some size 28 characters */
30
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
163 ASSERT_RANGE( font->spacesize2Monospaced, 13, 72 );
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
164 ASSERT_RANGE( font->height, 28, 108 );
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
165
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
166 //---- Walk through each char ----------------------------------------
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
167 for(int i = 0; i < font->length; ++i)
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
168 {
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
169 const tChar* c = &font->chars[i];
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
170
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
171 // Check char data is indeed stored in the actual data section
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
172 ASSERT_RANGE( c, &__upper_font_data, &__upper_font_data_end);
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
173
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
174 // Check char data sanity
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
175 ASSERT_RANGE( c->code, 0x0000, 0xF143);
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
176
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
177 // Check image sanity
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
178 const tImage* image = c->image;
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
179 ASSERT_RANGE(image, (tImage*)&__upper_font_data, (tImage*)&__upper_font_data_end);
76
51e2734895a3 Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents: 36
diff changeset
180 #if 0 /* common failure: root cause not clear */
30
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
181 ASSERT_RANGE(image->width, font->spacesize, font->spacesize2Monospaced);
76
51e2734895a3 Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents: 36
diff changeset
182 #endif
30
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
183 ASSERT(image->height == font->height);
76
51e2734895a3 Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents: 36
diff changeset
184 if(errorflag)
51e2734895a3 Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents: 36
diff changeset
185 {
51e2734895a3 Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents: 36
diff changeset
186 printf("image %x: h=%d fonth=%d\n",image,image->height,font->height);
51e2734895a3 Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents: 36
diff changeset
187 errorflag = 0;
51e2734895a3 Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents: 36
diff changeset
188 }
30
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
189 // Uncompress image bytes
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
190 const uint8_t* byte = image->data;
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
191 ASSERT_RANGE(byte, (uint8_t*)&__upper_font_data, (uint8_t*)&__upper_font_data_end);
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
192
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
193 for(int w=0; w <image->width; ++w)
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
194 {
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
195 // Compression: special 0x01 byte at start of column means just skip it.
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
196 if( *byte++ == 0x01 )
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
197 continue;
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
198
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
199 int zeros = (byte[-1] == 0x00) ? 1 : 0;
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
200 for(int h = 1; h < image->height; ++h)
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
201 {
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
202 if( *byte == 0x00 )
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
203 ++zeros;
76
51e2734895a3 Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents: 36
diff changeset
204 #if 0 /* this rule is violated very often but does not seems to have an impact */
30
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
205 // Other bytes cannot have the 0x01 value...
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
206 ASSERT( *byte++ != 0x01 );
76
51e2734895a3 Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents: 36
diff changeset
207 #endif
30
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
208 }
76
51e2734895a3 Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents: 36
diff changeset
209 #if 0 /* just an information, not an error => activate if interested */
30
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
210 if( zeros == image->height )
76
51e2734895a3 Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents: 36
diff changeset
211 printf("Font[%d] char[%d]: could skip column %d \n",
30
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
212 &__font_directory - font, i, w);
76
51e2734895a3 Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents: 36
diff changeset
213 #endif
30
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
214 }
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
215
76
51e2734895a3 Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents: 36
diff changeset
216 #if 0 /* byte usually pints to the next char ==> not sure what the check is about */
30
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
217 // Check the byte stream do not collide with the next char,
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
218 // or with the first tImage struct of the font.
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
219 if( (i+1) < font->length )
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
220 ASSERT( byte < font->chars[i+1].image->data );
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
221 else
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
222 ASSERT( byte < (uint8_t*)font->chars[0].image );
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
223
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
224 // TODO: check image bytes are contiguous between chars.
76
51e2734895a3 Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents: 36
diff changeset
225 #endif
30
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
226 }
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
227 }
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
228
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
229 if( errors )
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
230 {
76
51e2734895a3 Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents: 36
diff changeset
231 printf("Font Check: %d errors.\n", errors);
30
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
232 return -1;
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
233 }
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
234
76
51e2734895a3 Update Fontpack code to support font moved to upper memory
Ideenmodellierer
parents: 36
diff changeset
235 printf("Font Check: no errors.\n");
30
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
236 return 0;
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
237 }
123
a984d87a1ec0 Added option to build FontPack as static libary which is linked to the Firmware project (to allow separate build settings)
Ideenmodellierer
parents: 76
diff changeset
238 /*#endif*/
a984d87a1ec0 Added option to build FontPack as static libary which is linked to the Firmware project (to allow separate build settings)
Ideenmodellierer
parents: 76
diff changeset
239 #else
a984d87a1ec0 Added option to build FontPack as static libary which is linked to the Firmware project (to allow separate build settings)
Ideenmodellierer
parents: 76
diff changeset
240 #define ASSERT(e) \
a984d87a1ec0 Added option to build FontPack as static libary which is linked to the Firmware project (to allow separate build settings)
Ideenmodellierer
parents: 76
diff changeset
241 do { if( ! (e) ) { ++errors; errorflag = 1;} } while(0)
30
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
242
123
a984d87a1ec0 Added option to build FontPack as static libary which is linked to the Firmware project (to allow separate build settings)
Ideenmodellierer
parents: 76
diff changeset
243 #define ASSERT_RANGE(e, min, max) ASSERT(min <= e); ASSERT( e <= max)
a984d87a1ec0 Added option to build FontPack as static libary which is linked to the Firmware project (to allow separate build settings)
Ideenmodellierer
parents: 76
diff changeset
244
a984d87a1ec0 Added option to build FontPack as static libary which is linked to the Firmware project (to allow separate build settings)
Ideenmodellierer
parents: 76
diff changeset
245 uint16_t errors = 1;
a984d87a1ec0 Added option to build FontPack as static libary which is linked to the Firmware project (to allow separate build settings)
Ideenmodellierer
parents: 76
diff changeset
246 static uint8_t errorflag = 0;
a984d87a1ec0 Added option to build FontPack as static libary which is linked to the Firmware project (to allow separate build settings)
Ideenmodellierer
parents: 76
diff changeset
247 uint16_t CheckFontPosition()
a984d87a1ec0 Added option to build FontPack as static libary which is linked to the Firmware project (to allow separate build settings)
Ideenmodellierer
parents: 76
diff changeset
248 {
a984d87a1ec0 Added option to build FontPack as static libary which is linked to the Firmware project (to allow separate build settings)
Ideenmodellierer
parents: 76
diff changeset
249 uint16_t retvalue;
a984d87a1ec0 Added option to build FontPack as static libary which is linked to the Firmware project (to allow separate build settings)
Ideenmodellierer
parents: 76
diff changeset
250 ASSERT( & Awe48 == (tFont*)0x81DFE00 );
a984d87a1ec0 Added option to build FontPack as static libary which is linked to the Firmware project (to allow separate build settings)
Ideenmodellierer
parents: 76
diff changeset
251 ASSERT( & FontT24 == (tFont*)0x81DFE0c );
a984d87a1ec0 Added option to build FontPack as static libary which is linked to the Firmware project (to allow separate build settings)
Ideenmodellierer
parents: 76
diff changeset
252 ASSERT( & FontT42 == (tFont*)0x81DFE18 );
a984d87a1ec0 Added option to build FontPack as static libary which is linked to the Firmware project (to allow separate build settings)
Ideenmodellierer
parents: 76
diff changeset
253 ASSERT( & FontT48 == (tFont*)0x81DFE24 );
a984d87a1ec0 Added option to build FontPack as static libary which is linked to the Firmware project (to allow separate build settings)
Ideenmodellierer
parents: 76
diff changeset
254 ASSERT( & FontT54 == (tFont*)0x81DFE30 );
a984d87a1ec0 Added option to build FontPack as static libary which is linked to the Firmware project (to allow separate build settings)
Ideenmodellierer
parents: 76
diff changeset
255 ASSERT( & FontT84 == (tFont*)0x81DFE3c );
a984d87a1ec0 Added option to build FontPack as static libary which is linked to the Firmware project (to allow separate build settings)
Ideenmodellierer
parents: 76
diff changeset
256 ASSERT( & FontT105 == (tFont*)0x81DFE48 );
a984d87a1ec0 Added option to build FontPack as static libary which is linked to the Firmware project (to allow separate build settings)
Ideenmodellierer
parents: 76
diff changeset
257 ASSERT( & FontT144 == (tFont*)0x81DFE54 );
a984d87a1ec0 Added option to build FontPack as static libary which is linked to the Firmware project (to allow separate build settings)
Ideenmodellierer
parents: 76
diff changeset
258 retvalue = errors;
a984d87a1ec0 Added option to build FontPack as static libary which is linked to the Firmware project (to allow separate build settings)
Ideenmodellierer
parents: 76
diff changeset
259 return retvalue;
a984d87a1ec0 Added option to build FontPack as static libary which is linked to the Firmware project (to allow separate build settings)
Ideenmodellierer
parents: 76
diff changeset
260 }
a984d87a1ec0 Added option to build FontPack as static libary which is linked to the Firmware project (to allow separate build settings)
Ideenmodellierer
parents: 76
diff changeset
261 #endif
30
ea1003f63e44 ADD GPL License ...
jDG
parents: 25
diff changeset
262 /************************ (C) COPYRIGHT heinrichs weikamp *****END OF FILE****/