Browse Source

Moved receive and transmit routines.

Thomas Buck 12 years ago
parent
commit
b106b133ae
5 changed files with 715 additions and 634 deletions
  1. 29
    0
      CubeFirmware/header/transmit.h
  2. 1
    176
      CubeFirmware/main.c
  3. 472
    458
      CubeFirmware/main.hex
  4. 1
    0
      CubeFirmware/makefile
  5. 212
    0
      CubeFirmware/transmit.c

+ 29
- 0
CubeFirmware/header/transmit.h View File

@@ -0,0 +1,29 @@
1
+/*
2
+ * transmit.c
3
+ *
4
+ * Copyright 2011 Thomas Buck <xythobuz@me.com>
5
+ * Copyright 2011 Max Nuding <max.nuding@gmail.com>
6
+ * Copyright 2011 Felix Bäder <baeder.felix@gmail.com>
7
+ *
8
+ * This file is part of LED-Cube.
9
+ *
10
+ * LED-Cube is free software: you can redistribute it and/or modify
11
+ * it under the terms of the GNU General Public License as published by
12
+ * the Free Software Foundation, either version 3 of the License, or
13
+ * (at your option) any later version.
14
+ *
15
+ * LED-Cube is distributed in the hope that it will be useful,
16
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
17
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18
+ * GNU General Public License for more details.
19
+ *
20
+ * You should have received a copy of the GNU General Public License
21
+ * along with LED-Cube.  If not, see <http://www.gnu.org/licenses/>.
22
+ */
23
+
24
+void recieveAnimations(void);
25
+void transmitAnimations(void);
26
+
27
+#ifdef DEBUG
28
+void sendAudioData(void);
29
+#endif

+ 1
- 176
CubeFirmware/main.c View File

@@ -46,6 +46,7 @@
46 46
 #include "strings.h"
47 47
 #include "visualizer.h"
48 48
 #include "animations.h"
49
+#include "transmit.h"
49 50
 
50 51
 #define NOERROR 0
51 52
 // Audio does not answer
@@ -61,9 +62,6 @@
61 62
 #define IDLELENGTH 48
62 63
 
63 64
 void serialHandler(char c);
64
-void sendAudioData(void);
65
-void recieveAnimations(void);
66
-void transmitAnimations(void);
67 65
 uint8_t audioModeSelected(void);
68 66
 #ifdef DEBUG
69 67
 void printErrors(uint8_t e);
@@ -512,181 +510,8 @@ void printTime(void) {
512 510
 		serialWrite('\n');
513 511
 	}
514 512
 }
515
-
516
-void sendAudioData(void) {
517
-	uint8_t i;
518
-	uint8_t *audioData = getAudioData();
519
-	if (audioData == NULL) {
520
-		serialWriteString(getString(21));
521
-	} else {
522
-		serialWriteString(getString(22));
523
-		for (i = 0; i < 7; i++) {
524
-			serialWrite(i + '0');
525
-			serialWriteString(": ");
526
-			itoa(audioData[i], buffer, 10);
527
-			serialWriteString(buffer);
528
-			serialWrite('\n');
529
-		}
530
-	}
531
-}
532 513
 #endif
533 514
 
534
-#define TRANSTIMEOUT 10000
535
-
536
-void recieveAnimations() {
537
-	uint8_t animCount, a, frameCount, f, i, c;
538
-	uint16_t completeCount = 0;
539
-	uint8_t *frame = (uint8_t *)malloc(65);
540
-	uint64_t timestamp = getSystemTime();
541
-
542
-	serialWrite(OK); // We are ready...
543
-
544
-	while (!serialHasChar()) { // Wait for answer
545
-		if ((getSystemTime() - timestamp) <= TRANSTIMEOUT) {
546
-			wdt_reset();
547
-		}
548
-	}
549
-	c = serialGet();
550
-	animCount = c; // Got animation count
551
-	serialWrite(OK);
552
-
553
-	for (a = 0; a < animCount; a++) {
554
-		while (!serialHasChar()) { // Wait for answer
555
-			if ((getSystemTime() - timestamp) <= TRANSTIMEOUT) {
556
-				wdt_reset();
557
-			}
558
-		}
559
-		c = serialGet();
560
-		frameCount = c; // Got frame count
561
-		serialWrite(OK);
562
-
563
-		for (f = 0; f < frameCount; f++) {
564
-			while (!serialHasChar()) { // Wait for answer
565
-				if ((getSystemTime() - timestamp) <= TRANSTIMEOUT) {
566
-					wdt_reset();
567
-				}
568
-			}
569
-			c = serialGet();
570
-			frame[64] = c; // Got duration
571
-			serialWrite(OK);
572
-
573
-			for (i = 0; i < 64; i++) {
574
-				while (!serialHasChar()) { // Wait for answer
575
-					if ((getSystemTime() - timestamp) <= TRANSTIMEOUT) {
576
-						wdt_reset();
577
-					}
578
-				}
579
-				c = serialGet();
580
-				frame[i] = c; // Got data byte
581
-			}
582
-			serialWrite(OK);
583
-
584
-			setFrame(completeCount++, frame);
585
-		}
586
-	}
587
-	free(frame);
588
-
589
-	while (!serialHasChar()) { // Wait for answer
590
-		if ((getSystemTime() - timestamp) <= TRANSTIMEOUT) {
591
-			wdt_reset();
592
-		}
593
-	}
594
-	c = serialGet();
595
-	while (!serialHasChar()) { // Wait for answer
596
-		if ((getSystemTime() - timestamp) <= TRANSTIMEOUT) {
597
-			wdt_reset();
598
-		}
599
-	}
600
-	c = serialGet();
601
-	while (!serialHasChar()) { // Wait for answer
602
-		if ((getSystemTime() - timestamp) <= TRANSTIMEOUT) {
603
-			wdt_reset();
604
-		}
605
-	}
606
-	c = serialGet();
607
-	while (!serialHasChar()) { // Wait for answer
608
-		if ((getSystemTime() - timestamp) <= TRANSTIMEOUT) {
609
-			wdt_reset();
610
-		}
611
-	}
612
-	c = serialGet();
613
-
614
-	serialWrite(OK);
615
-
616
-	setAnimationCount(completeCount);
617
-	refreshAnimationCount = 1;
618
-}
619
-
620
-void transmitAnimations() {
621
-	// We store no animation information in here
622
-	// So we have to place all frames in one or more
623
-	// animations... We need 8 animations max...
624
-	uint8_t animationsToGo;
625
-	uint16_t framesToGo = getAnimationCount();
626
-	uint16_t character;
627
-	uint8_t a;
628
-	uint8_t f, fMax, i;
629
-	uint8_t *frame;
630
-
631
-	if ((framesToGo % 255) == 0) {
632
-		animationsToGo = framesToGo / 255;
633
-	} else {
634
-		animationsToGo = (framesToGo / 255) + 1;
635
-	}
636
-
637
-	serialWrite(OK);
638
-	serialWrite(animationsToGo);
639
-	while ((character = serialGet()) & 0xFF00); // Wait for answer
640
-	if ((character & 0x00FF) != OK) { // Error code recieved
641
-		return;
642
-	}
643
-
644
-	for (a = 0; a < animationsToGo; a++) {
645
-		if (framesToGo > 255) {
646
-			fMax = 255;
647
-		} else {
648
-			fMax = framesToGo;
649
-		}
650
-
651
-		serialWrite(fMax); // Number of Frames in current animation
652
-		while ((character = serialGet()) & 0xFF00); // Wait for answer
653
-		if ((character & 0x00FF) != OK) { // Error code recieved
654
-			return;
655
-		}
656
-
657
-		for (f = 0; f < fMax; f++) {
658
-			frame = getFrame(f + (255 * a));
659
-
660
-			serialWrite(frame[64]); // frame duration
661
-			while ((character = serialGet()) & 0xFF00); // Wait for answer
662
-			if ((character & 0x00FF) != OK) { // Error code recieved
663
-				free(frame);
664
-				return;
665
-			}
666
-
667
-			for (i = 0; i < 64; i++) {
668
-				serialWrite(frame[i]);
669
-			}
670
-			while ((character = serialGet()) & 0xFF00); // Wait for answer
671
-			if ((character & 0x00FF) != OK) { // Error code recieved
672
-				free(frame);
673
-				return;
674
-			}
675
-
676
-			free(frame);
677
-		}
678
-		framesToGo -= fMax;
679
-	}
680
-
681
-	serialWrite(OK);
682
-	serialWrite(OK);
683
-	serialWrite(OK);
684
-	serialWrite(OK);
685
-
686
-	while ((character = serialGet()) & 0xFF00); // Wait for answer
687
-	// Error code ignored...
688
-}
689
-
690 515
 uint8_t audioModeSelected(void) {
691 516
 	// Pushbutton: PB0, Low active
692 517
 

+ 472
- 458
CubeFirmware/main.hex View File

@@ -1,7 +1,7 @@
1 1
 :100000000C9441020C945E020C945E020C945E020D
2
-:100010000C945E020C945E020C945E020C94FE0A38
3
-:100020000C945E020C945E020C94FD0C0C945E0227
4
-:100030000C945E020C94B7080C94E5080C945E02D4
2
+:100010000C945E020C945E020C945E020C942F060B
3
+:100020000C945E020C945E020C942E080C945E02FA
4
+:100030000C945E020C94E8030C9416040C945E027B
5 5
 :100040000C945E020C945E020C945E020C945E02B0
6 6
 :100050000C945E0276322E332052656C65617365B6
7 7
 :100060000A00496E697469616C697A65643A2000B6
@@ -71,459 +71,473 @@
71 71
 :10046000038A03A003BA03D903E603F20306045385
72 72
 :100470007472696E67206E6F7420666F756E64218A
73 73
 :100480000A0011241FBECFE5D8E0DEBFCDBF11E0CA
74
-:10049000A0E6B0E0ECEDFFE102C005900D92A237BE
75
-:1004A000B107D9F712E0A2E7B1E001C01D92A6356D
76
-:1004B000B107E1F70E9476070C94EC0F0C94000052
77
-:1004C000B0990AC080917301882321F481E0809360
78
-:1004D000730102C0109273018091730108957F929D
79
-:1004E0008F929F92AF92BF92CF92DF92EF92FF9244
80
-:1004F0000F931F93CF93DF930E948C0D7C016FEFBE
81
-:1005000070E00E94CC0E892B39F4C7016FEF70E0C8
82
-:100510000E94CC0E762E07C0C7016FEF70E00E94DC
83
-:10052000CC0E762E739482E40E94BF09872D0E9420
84
-:10053000BF090E946A0990E08234910509F061C008
85
-:10054000AA24BB244BC08FEFE816F10421F018F069
86
-:1005500088248A9401C08E2C882D0E94BF090E9495
87
-:100560006A0990E08234910509F04BC06501992435
88
-:100570002DC0C6010E94FF0D8C01FC01E05CFF4F05
89
-:1005800080810E94BF090E946A0990E0823491052F
90
-:10059000A9F4C0E0D0E0F801EC0FFD1F80810E94BB
91
-:1005A000BF092196C034D105B1F70E946A0990E0D5
92
-:1005B0000894C11CD11C8234910521F0C8010E940D
93
-:1005C0008D0F1FC0C8010E948D0F9394981488F25C
94
-:1005D000E818F1088FEF90E0A80EB91E8A2D8195DA
95
-:1005E000871508F4B0CF82E40E94BF0982E40E941C
96
-:1005F000BF0982E40E94BF0982E40E94BF090E94F1
97
-:100600006A09DF91CF911F910F91FF90EF90DF90DA
98
-:10061000CF90BF90AF909F908F907F9008952F9232
99
-:100620003F924F925F926F927F928F929F92AF9282
100
-:10063000BF92CF92DF92EF92FF920F931F93DF93BF
101
-:10064000CF93CDB7DEB727970FB6F894DEBF0FBEB6
102
-:10065000CDBF81E490E00E94E00E7C010E946C0D11
103
-:10066000422E332E242E752E662E572E982E892E2E
104
-:1006700082E40E94BF096CC00E946C0D022F041915
105
-:10068000F1E0201708F0F0E0232F2319E1E0321702
106
-:1006900008F0E0E0A22FAF1B31E02A1708F030E0AD
107
-:1006A000E32B242F2219F1E0421708F0F0E0B22FDB
108
-:1006B000BE1B31E02B1708F030E0F32B252F271954
109
-:1006C00041E0521708F040E0E22FEF1B31E02E1717
110
-:1006D00008F030E0432B262F261951E0621708F06E
111
-:1006E00050E0622F641B31E0261708F030E0532BF6
112
-:1006F000272F251941E0721708F040E0322F351BF3
113
-:10070000532F31E0251708F030E0432B282F29190B
114
-:1007100031E0821708F030E0822F841B482F81E0FF
115
-:10072000241708F080E0382B9819931789F4442394
116
-:1007300079F4552369F4662359F4EE2349F4BB2375
117
-:1007400039F4A83228F4A73211F4013108F4A8953D
118
-:100750000E945B09882309F48FCF0E946A098A836B
119
-:1007600082E40E94BF091B82AA24BB24F701E05C3B
120
-:10077000FF4FFD83EC8388C10E946C0D022F04198A
121
-:10078000F1E0201708F0F0E0232F2319E1E0321701
122
-:1007900008F0E0E0A22FAF1B31E02A1708F030E0AC
123
-:1007A000E32B242F2219F1E0421708F0F0E0B22FDA
124
-:1007B000BE1B31E02B1708F030E0F32B252F271953
125
-:1007C00041E0521708F040E0E22FEF1B31E02E1716
126
-:1007D00008F030E0432B262F261951E0621708F06D
127
-:1007E00050E0622F641B31E0261708F030E0532BF5
128
-:1007F000272F251941E0721708F040E0F22FF51B72
129
-:100800005F2F31E02F1708F030E0432B282F2919F4
130
-:1008100031E0821708F030E0822F841B482F81E0FE
131
-:10082000241708F080E0382B9819931789F4442393
132
-:1008300079F4552369F4662359F4EE2349F4BB2374
133
-:1008400039F4A83228F4A73211F4013108F4A8953C
134
-:100850000E945B09882309F48FCF0E946A0989836B
135
-:1008600082E40E94BF09650104C10E946C0D022F41
136
-:100870000419F1E0201708F0F0E0232F2319E1E03C
137
-:10088000321708F0E0E0A22FAF1B31E02A1708F082
138
-:1008900030E0E32B242F2219F1E0421708F0F0E0BA
139
-:1008A000B22FBE1B31E02B1708F030E0F32B252FC1
140
-:1008B000271941E0521708F040E0E22FEF1B31E02A
141
-:1008C0002E1708F030E0432B262F261951E062172F
142
-:1008D00008F050E0622F641B31E0261708F030E08A
143
-:1008E000532B272F251941E0721708F040E0F22F13
144
-:1008F000F51B5F2F31E02F1708F030E0432B282F36
145
-:10090000291931E0821708F030E0822F841B482F2C
146
-:1009100081E0241708F080E0382B9819931789F4A8
147
-:10092000442379F4552369F4662359F4EE2349F4FA
148
-:10093000BB2339F4A83228F4A73211F4013108F4AA
149
-:10094000A8950E945B09882309F48FCF0E946A0949
150
-:10095000EC81FD81808382E40E94BF09FF82EE82E8
151
-:100960006CC00E946C0D022F0419F1E0201708F0F2
152
-:10097000F0E0232F2319E1E0321708F0E0E0A22F86
153
-:10098000AF1B31E02A1708F030E0E32B242F2219A7
154
-:10099000F1E0421708F0F0E0B22FBE1B31E02B1758
155
-:1009A00008F030E0F32B252F271941E0521708F00B
156
-:1009B00040E0E22FEF1B31E02E1708F030E0432B30
157
-:1009C000262F261951E0621708F050E0622F641BB1
158
-:1009D00031E0261708F030E0532B272F251941E08E
159
-:1009E000721708F040E0F22FF51B5F2F31E02F1750
160
-:1009F00008F030E0432B282F291931E0821708F046
161
-:100A000030E0822F841B482F81E0241708F080E01B
162
-:100A1000382B9819931789F4442379F4552369F4F2
163
-:100A2000662359F4EE2349F4BB2339F4A83228F4A1
164
-:100A3000A73211F4013108F4A8950E945B098823BC
165
-:100A400009F48FCF0E946A09EE81FF818193FF83B1
166
-:100A5000EE832C813D81E217F30779F782E40E944F
167
-:100A6000BF0986010F5F1F4FC601B7010E94E80D45
168
-:100A700068018C2D8A193981831708F462CFA30E7F
169
-:100A8000B11C8B818F5F8B839B81EA819E1708F459
170
-:100A9000DFCEC7010E948D0F6CC00E946C0D022F2B
171
-:100AA0000419F1E0201708F0F0E0232F2319E1E00A
172
-:100AB000321708F0E0E0A22FAF1B31E02A1708F050
173
-:100AC00030E0E32B242F2219F1E0421708F0F0E088
174
-:100AD000B22FBE1B31E02B1708F030E0F32B252F8F
175
-:100AE000271941E0521708F040E0E22FEF1B31E0F8
176
-:100AF0002E1708F030E0432B262F261951E06217FD
177
-:100B000008F050E0622F641B31E0261708F030E057
178
-:100B1000532B272F251941E0721708F040E0F22FE0
179
-:100B2000F51B5F2F31E02F1708F030E0432B282F03
180
-:100B3000291931E0821708F030E0822F841B482FFA
181
-:100B400081E0241708F080E0382B9819931789F476
182
-:100B5000442379F4552369F4662359F4EE2349F4C8
183
-:100B6000BB2339F4A83228F4A73211F4013108F478
184
-:100B7000A8950E945B09882309F48FCF0E946A0917
185
-:100B80006CC00E946C0D022F0419F1E0201708F0D0
186
-:100B9000F0E0232F2319E1E0321708F0E0E0A22F64
187
-:100BA000AF1B31E02A1708F030E0E32B242F221985
188
-:100BB000F1E0421708F0F0E0B22FBE1B31E02B1736
189
-:100BC00008F030E0F32B252F271941E0521708F0E9
190
-:100BD00040E0E22FEF1B31E02E1708F030E0432B0E
191
-:100BE000262F261951E0621708F050E0622F641B8F
192
-:100BF00031E0261708F030E0532B272F251941E06C
193
-:100C0000721708F040E0F22FF51B5F2F31E02F172D
194
-:100C100008F030E0432B282F291931E0821708F023
195
-:100C200030E0822F841B482F81E0241708F080E0F9
196
-:100C3000382B9819931789F4442379F4552369F4D0
197
-:100C4000662359F4EE2349F4BB2339F4A83228F47F
198
-:100C5000A73211F4013108F4A8950E945B0988239A
199
-:100C600009F48FCF0E946A096CC00E946C0D022F9C
200
-:100C70000419F1E0201708F0F0E0232F2319E1E038
201
-:100C8000321708F0E0E0A22FAF1B31E02A1708F07E
202
-:100C900030E0E32B242F2219F1E0421708F0F0E0B6
203
-:100CA000B22FBE1B31E02B1708F030E0F32B252FBD
204
-:100CB000271941E0521708F040E0E22FEF1B31E026
205
-:100CC0002E1708F030E0432B262F261951E062172B
206
-:100CD00008F050E0622F641B31E0261708F030E086
207
-:100CE000532B272F251941E0721708F040E0F22F0F
208
-:100CF000F51B5F2F31E02F1708F030E0432B282F32
209
-:100D0000291931E0821708F030E0822F841B482F28
210
-:100D100081E0241708F080E0382B9819931789F4A4
211
-:100D2000442379F4552369F4662359F4EE2349F4F6
212
-:100D3000BB2339F4A83228F4A73211F4013108F4A6
213
-:100D4000A8950E945B09882309F48FCF0E946A0945
214
-:100D50006CC00E946C0D022F0419F1E0201708F0FE
215
-:100D6000F0E0232F2319E1E0321708F0E0E0A22F92
216
-:100D7000AF1B31E02A1708F030E0E32B242F2219B3
217
-:100D8000F1E0421708F0F0E0B22FBE1B31E02B1764
218
-:100D900008F030E0F32B252F271941E0521708F017
219
-:100DA00040E0E22FEF1B31E02E1708F030E0432B3C
220
-:100DB000262F261951E0621708F050E0622F641BBD
221
-:100DC00031E0261708F030E0532B272F251941E09A
222
-:100DD000721708F040E0F22FF51B5F2F31E02F175C
223
-:100DE00008F030E0432B282F291931E0821708F052
224
-:100DF00030E0822F841B482F81E0241708F080E028
225
-:100E0000382B9819931789F4442379F4552369F4FE
226
-:100E1000662359F4EE2349F4BB2339F4A83228F4AD
227
-:100E2000A73211F4013108F4A8950E945B098823C8
228
-:100E300009F48FCF0E946A0982E40E94BF09C501AC
229
-:100E40000E94B70D81E08093600027960FB6F8945A
230
-:100E5000DEBF0FBECDBFCF91DF911F910F91FF90ED
231
-:100E6000EF90DF90CF90BF90AF909F908F907F904A
232
-:100E70006F905F904F903F902F900895863561F16D
233
-:100E8000873580F4873411F1883438F48234E1F006
234
-:100E90008434C1F08F3331F513C0883489F0833541
235
-:100EA00009F517C0883661F0893628F4843651F088
236
-:100EB0008736C1F40BC0833761F0863799F40CC0D4
237
-:100EC00086E00BC00E94C90D82E40DC00E946F0233
238
-:100ED00008950E940F03089580E00E94110E0E9461
239
-:100EE000FC09089583E20E94BF0908954F925F9222
240
-:100EF0006F927F928F929F92AF92BF92CF92DF922A
241
-:100F0000EF92FF920F931F93CF93DF9384B7809359
242
-:100F10008E0114BE98E10FB6F89491BD11BC0FBEBE
243
-:100F20008FEF8ABB8CEF81BB97BB84BB87B3866096
244
-:100F300087BBB8980E94830A89E190E068E040E0AE
245
-:100F400021E00E9427090E94780B0E94F40C7894FB
246
-:100F50002EE088E190E00FB6F894A89581BD0FBE11
247
-:100F600021BD81E690E00E94290A0E946002482E7D
248
-:100F70000E946C0D522E632E742E852E962EA72E57
249
-:100F8000B82EC92E0E948C0DEC01EE24DD24FF2426
250
-:100F900080917201882309F4A895442069F00E9489
251
-:100FA0007F0A882309F463C00E94D50C009709F4D6
252
-:100FB0005EC00E94730E5BC080916000882331F098
253
-:100FC0000E948C0DEC0110926000EE24209709F134
254
-:100FD0000E947F0AD81608F04AC02E2D30E0CE01BC
255
-:100FE00001972817390710F0EE2401C0E3948E2DE5
256
-:100FF00090E00E94FF0D8C01005C1F4FF801D08033
257
-:1010000000541040C8010E94290AC8010E948D0F97
258
-:101010002EC08091740182FD2AC081FF0FC00E9402
259
-:10102000AE0EF81638F41F2D1F5F8F2D0E94B00EE4
260
-:10103000F12E1DC0809174018D7F16C00E947F0A21
261
-:101040008033A8F0EF2DF0E0EE0FFF1FEF59FE4FB9
262
-:10105000808191810E94290AF1E0FF1510F0F3943C
263
-:1010600006C080917401826080937401FF240E9405
264
-:101070005B09882321F00E946A090E943E070E94B2
265
-:101080006C0D122F1519F1E0211708F0F0E0232F55
266
-:101090002619E1E0321708F0E0E0B22FBF1B31E083
267
-:1010A0002B1708F030E0E32B242F2719F1E042172B
268
-:1010B00008F0F0E0A22FAE1B31E02A1708F030E074
269
-:1010C000F32B252F281941E0521708F040E0E22FBA
270
-:1010D000EF1B31E02E1708F030E0432B262F2919A3
271
-:1010E00051E0621708F050E0622F641B31E02617D0
272
-:1010F00008F030E0532B272F2A1941E0721708F02F
273
-:1011000040E0322F351B532F31E0251708F030E037
274
-:10111000432B282F2B1931E0821708F030E0822F63
275
-:10112000841B482F81E0241708F080E0382B9C199D
276
-:10113000931779F4442369F4552359F4662349F449
277
-:10114000EE2339F4AA2329F4BB2319F4173908F440
278
-:101150001FCF0E946002482E0E946C0D522E632EFB
279
-:10116000742E852E962EA72EB82EC92E11CF1F9223
280
-:101170000F920FB60F9211248F939F93EF93FF93CB
281
-:10118000E0917701F09178018CB1E157FE4F8083B7
282
-:1011900080917701909178014F9750F48091770179
283
-:1011A000909178010196909378018093770104C023
284
-:1011B0001092780110927701FF91EF919F918F919A
285
-:1011C0000F900FBE0F901F9018951F920F920FB6A1
286
-:1011D0000F9211242F933F938F939F93EF93FF933D
287
-:1011E0002091790130917A0180917B0190917C016D
288
-:1011F00028173907E9F0E0917901F0917A01E1557A
289
-:10120000FE4F80818CB98091790190917A014F973E
290
-:1012100050F48091790190917A01019690937A012E
291
-:101220008093790109C010927A011092790104C06B
292
-:1012300081E0809367015598FF91EF919F918F9185
293
-:101240003F912F910F900FBE0F901F901895382F40
294
-:10125000433078F5862F8550843058F5822F8150A1
295
-:10126000823038F5442341F080B5806280BD423041
296
-:1012700019F480B5806180BD223019F480B5886092
297
-:1012800080BD653079F0663011F0683018F080B5B7
298
-:10129000826080BD673030F080B5846080BD693089
299
-:1012A00009F4529A90BD39B98AB188698AB980E047
300
-:1012B000089581E008952091750130917601809123
301
-:1012C00077019091780140E02817390709F041E053
302
-:1012D000842F0895209175013091760180917701D6
303
-:1012E000909178012817390711F420E022C0E0918D
304
-:1012F0007501F0917601E157FE4F2081E091750173
305
-:10130000F0917601E157FE4F108280917501909126
306
-:1013100076014F9750F48091750190917601019676
307
-:10132000909376018093750104C01092760110921B
308
-:101330007501822F089580917B0190917C0120910D
309
-:10134000790130917A0101968217930719F481E0AF
310
-:1013500090E008958091790190917A01892B19F09C
311
-:1013600080E090E0089580917B0190917C0120E0E5
312
-:1013700030E04F9711F421E030E0C9010895482F83
313
-:1013800080917B0190917C012091790130917A01CB
314
-:10139000019682179307A1F38091790190917A01C8
315
-:1013A000892B31F480917B0190917C014F9741F31F
316
-:1013B000E0917B01F0917C01E155FE4F40838091EB
317
-:1013C0007B0190917C014F9750F480917B0190912B
318
-:1013D0007C01019690937C0180937B0104C0109264
319
-:1013E0007C0110927B0180916701813021F4109281
320
-:1013F0006701559A5D9A0895CF93DF93EC0103C07E
321
-:1014000021960E94BF0988818823D1F7DF91CF916F
322
-:1014100008951AB810BC10BC19B810927601109239
323
-:10142000750110927A011092790110927801109250
324
-:10143000770110927C0110927B0108952091810127
325
-:10144000309182014091830150918401B901CA0118
326
-:1014500008951F931FB7F89421E020937D01109207
327
-:101460007E0110928001BC0140E050E019C08D91D6
328
-:101470008095F90193E0EE0FFF1F9A95E1F7E40FD5
329
-:10148000F51FE153FE4F80832F5F3F4F283031051A
330
-:1014900071F74F5F5F4F685F7F4F4830510521F014
331
-:1014A000DB0120E030E0E3CF1FBF1F910895682FDC
332
-:1014B0007FB7F89481E080937D0110927E011092B5
333
-:1014C000800120E030E060950FC0FA01E80FF91FBD
334
-:1014D000E153FE4F6083019688309105B1F72F5F8D
335
-:1014E0003F4F2830310549F080E090E0A901E3E06A
336
-:1014F000440F551FEA95E1F7E8CF7FBF089580912B
337
-:101500007E01869508958EB589608EBD82EC92EA43
338
-:101510009BBD8ABD80E189BF80E00E94570A789414
339
-:1015200040E050E091E01EC08FB7F894FB01E20F5D
340
-:10153000F31FE153FE4FA081108290937D01109222
341
-:101540007E01109280018FBF80917E018823E1F39C
342
-:101550002F5F3F4F2830310539F74F5F5F4F4830DD
343
-:10156000510549F020E030E0BA01F3E0660F771F43
344
-:10157000FA95E1F7D9CFF894109281011092820187
345
-:10158000109283011092840110927E0110928001CA
346
-:10159000089589B78F7E89BF0895982F9C7F92BB4D
347
-:1015A00098B3880F880F880F8871977E982B98BB07
348
-:1015B0000895382F85B3837085BB88B3897F88BB36
349
-:1015C000323058F025B381E090E002C0880F991FB7
350
-:1015D0003A95E2F7282B25BB0EC048B3232F30E005
351
-:1015E0002F5F3F4F81E090E002C0880F991F2A953E
352
-:1015F000E2F7482B48BB6BBB000008951F920F9287
353
-:101600000FB60F9211242F933F934F935F936F93D5
354
-:101610007F938F939F93AF93BF93CF93DF93EF937A
355
-:10162000FF938091800180917D01882321F01092A9
356
-:101630007F0110927D0180E00E94CD0AC0E0D0E0E1
357
-:10164000E0917F01F0E0A3E0EE0FFF1FAA95E1F724
358
-:10165000EC0FFD1FE153FE4F60818C2F0E94D90AD1
359
-:101660002196C830D10561F720917F0181E090E09B
360
-:1016700002C0880F991F2A95E2F70E94CD0A809137
361
-:101680007F01873030F480917F018F5F80937F01ED
362
-:1016900007C010927F0180917E018F5F80937E0151
363
-:1016A000109280018091810190918201A09183012B
364
-:1016B000B09184010196A11DB11D80938101909389
365
-:1016C0008201A0938301B0938401FF91EF91DF9198
366
-:1016D000CF91BF91AF919F918F917F916F915F91CA
367
-:1016E0004F913F912F910F900FBE0F901F90189523
368
-:1016F00011B88CE080B90895982F84EA86BF06B6A9
369
-:1017000007FEFDCF81B1887F883021F0803111F054
370
-:1017100081E0089593B984E886BF06B607FEFDCF41
371
-:1017200091B1987F983111F480E0089580E0903471
372
-:1017300009F081E0089544EA34E824E946BF06B69A
373
-:1017400007FEFDCF91B1987F983011F09031B1F73D
374
-:1017500083B936BF06B607FEFDCF91B1987F9032B0
375
-:1017600011F0983529F426BF06B604FCFDCFE6CF6C
376
-:1017700008950E947C0B089584E986BF06B604FC98
377
-:10178000FDCF089583B984E886BF06B607FEFDCF76
378
-:1017900081B190E0887F883209F091E0892F089527
379
-:1017A00084EC86BF06B607FEFDCF83B1089584E8BA
380
-:1017B00086BF06B607FEFDCF83B10895BF92CF92D4
381
-:1017C000DF92EF92FF920F931F93CF93DF937B01F2
382
-:1017D0008C01D42EC52EB22E80E0E81680E0F806EB
383
-:1017E00081E0080780E0180710F082EA01C080EA73
384
-:1017F0000E947C0B882399F40E94C20B8E2D0E94BC
385
-:10180000C20B8D2D9C2D9C01E90110E004C0899133
386
-:101810000E94C20B1F5F1B15D0F30E94BC0BDF910F
387
-:10182000CF911F910F91FF90EF90DF90CF90BF90DD
388
-:101830000895DF92EF92FF920F931F937B018C012B
389
-:10184000D42E80E0E81680E0F80681E0080780E00A
390
-:10185000180710F082EA01C080EA0E947C0B8823FE
391
-:1018600051F40E94C20B8E2D0E94C20B8D2D0E943E
392
-:10187000C20B0E94BC0B1F910F91FF90EF90DF9065
393
-:1018800008956F927F928F929F92AF92BF92CF9264
394
-:10189000DF92FF920F931F93CF93DF934B015C0175
395
-:1018A00080E0881680E0980681E0A80680E0B8060F
396
-:1018B00018F092EAF92E02C080EAF82E642E7724FE
397
-:1018C000C3010E94E00E8C016C01009769F18F2D1D
398
-:1018D0000E947C0B882319F0CC24DD2425C080E0F5
399
-:1018E0000E94C20B882D0E94C20B8F2D81600E9426
400
-:1018F000B90BFF2453010894A108B10806C00E9447
401
-:10190000D00BC00FD11F8883F394CF2DD0E0CA1520
402
-:10191000DB05ACF30E94D70B060D171D01501040DC
403
-:10192000F80180830E94BC0BC601DF91CF911F910B
404
-:101930000F91FF90DF90CF90BF90AF909F908F90CE
405
-:101940007F906F900895DF92EF92FF920F931F9315
406
-:101950007B018C0180E0E81680E0F80681E0080752
407
-:1019600080E0180718F032EAD32E02C020EAD22E07
408
-:101970008D2D0E947C0B882311F010E00FC080E0B9
409
-:101980000E94C20B8E2D0E94C20B8D2D81600E9481
410
-:10199000B90B0E94D70B182F0E94BC0B812F1F91EF
411
-:1019A0000F91FF90EF90DF900895CF93DF9383E442
412
-:1019B0000E947C0B882319F020E030E011C0CFE0BA
413
-:1019C000D2E00E94D00B899382E0C531D807C9F7D5
414
-:1019D0000E94D70B88830E94BC0B9E01265030408A
415
-:1019E000C901DF91CF91089583B78B6083BF8AEFE0
416
-:1019F0008CBF89B7826089BF08951F920F920FB67E
417
-:101A00000F9211241F932F933F934F935F936F93E4
418
-:101A10007F938F939F93AF93BF93EF93FF938091A7
419
-:101A20008601209187013091880140918901609160
420
-:101A30008A01E0918B01A0918C0110918D01B82F4A
421
-:101A4000BF5F91E0B81708F090E0F92FF20F81E046
422
-:101A5000F21708F080E0782F730F81E0731708F019
423
-:101A600080E0582F540F81E0541708F080E0382FA1
424
-:101A7000360F81E0361708F080E0282F2E0F81E026
425
-:101A80002E1708F080E0982F9A0F81E09A1708F03F
426
-:101A900080E0810FB0938601F093870170938801F5
427
-:101AA0005093890130938A0120938B0190938C018C
428
-:101AB00080938D01FF91EF91BF91AF919F918F9195
429
-:101AC0007F916F915F914F913F912F911F910F9057
430
-:101AD0000FBE0F901F9018952091860130918701BD
431
-:101AE000409188015091890160918A0170918B0128
432
-:101AF00080918C0190918D0108958E3110F080E0DD
433
-:101B00000895682F70E06E5F7F4F882777FD80957E
434
-:101B1000982F0E94A30C08951F9360E070E080E06E
435
-:101B200090E00E94A30C182F61E070E080E090E04C
436
-:101B30000E94A30C412F50E0382F20E0422B532B62
437
-:101B400087E0413E580710F040EE57E0CA011F9170
438
-:101B50000895462F8E3150F4682F70E06E5F7F4FEE
439
-:101B6000882777FD8095982F0E94190C08951F9360
440
-:101B7000482F192F60E070E080E090E00E94190C7F
441
-:101B800061E070E080E090E0412F0E94190C1F910D
442
-:101B90000895EF92FF920F931F93EE24FF24870185
443
-:101BA000C801B70140E00E94190C0894E11CF11C27
444
-:101BB000011D111D80E0E81680E0F80682E00807AC
445
-:101BC00080E0180769F71F910F91FF90EF9008953B
446
-:101BD0000F931F93AB018C0126E0000F111F2A9574
447
-:101BE000E1F7080F191F005E1F4F20E030E0C90128
448
-:101BF000B80121E40E94DE0B1F910F9108959C0112
449
-:101C000046E0220F331F4A95E1F7280F391F205E67
450
-:101C10003F4F40E050E0CA01B90141E40E94410C4D
451
-:101C200008958A3248F4E82FF0E0EE0FFF1FE55EDA
452
-:101C3000FB4F6591749104C0EFE6F4E065917491F7
453
-:101C400086E192E00E94E50F86E192E00895E7E0E8
454
-:101C5000F0E0DF01A41BB109E21BF10923E0EE0F64
455
-:101C6000FF1F2A95E1F7AE0FBF1FA80FB91F81E034
456
-:101C700090E002C0880F991F6A95E2F72C91282BFB
457
-:101C80002C930895E7E0F0E0DF01A41BB109E21B0B
458
-:101C9000F10933E0EE0FFF1F3A95E1F7AE0FBF1FDA
459
-:101CA000A80FB91F81E090E002C0880F991F6A95C4
460
-:101CB000E2F780952C9128232C9308950E948D0F94
461
-:101CC000089580E490E00E94E00E9C01009709F4E2
462
-:101CD000FFCFFC01805C9F4F1192E817F907E1F7F5
463
-:101CE000C90108950895BF92CF92DF92EF92FF92BB
464
-:101CF0000F931F93CF93DF936C010E94610E7C01C1
465
-:101D0000C0E0D0E0F601EC0FFD1F80816FE10E9482
466
-:101D1000C00EB82E00E00CC0C7016C2F412F202F41
467
-:101D20000E94270E1F5F1B15BCF30F5F083011F0D8
468
-:101D300010E0F9CF2196C730D10521F7C7010E94E5
469
-:101D4000290AC7010E945E0EDF91CF911F910F916A
470
-:101D5000FF90EF90DF90CF90BF90089582E00895BC
471
-:101D6000823050F4E82FF0E0EE0FFF1FE859FE4FED
472
-:101D70000190F081E02D09950895A89508950895A2
473
-:101D8000991B79E004C0991F961708F0961B881FCD
474
-:101D90007A95C9F780950895AA1BBB1B51E107C02E
475
-:101DA000AA1FBB1FA617B70710F0A61BB70B881FEB
476
-:101DB000991F5A95A9F780959095BC01CD0108957A
477
-:101DC000CF93DF93BC018230910510F462E070E0A4
478
-:101DD000A0915402B0915502ED01E0E0F0E040E046
479
-:101DE00050E021C0888199818617970769F48A811C
480
-:101DF0009B81309719F09383828304C0909355029E
481
-:101E000080935402FE0134C06817790738F44115F5
482
-:101E1000510519F08417950708F4AC01FE018A8179
483
-:101E20009B819C01E9012097E9F641155105A9F133
484
-:101E3000CA01861B970B049708F4BA01E0E0F0E0B2
485
-:101E40002AC08D919C91119784179507F9F4641716
486
-:101E5000750781F412968D919C911397309719F024
487
-:101E60009383828304C09093550280935402FD01B2
488
-:101E700032964FC0CA01861B970BFD01E80FF91F70
489
-:101E80006193719302978D939C9343C0FD0182816E
490
-:101E900093819C01D9011097A1F6809152029091F3
491
-:101EA0005302892B41F480916E0190916F019093C0
492
-:101EB000530280935202409170015091710141157B
493
-:101EC000510541F44DB75EB780916C0190916D0161
494
-:101ED000481B590B209152023091530224173507A9
495
-:101EE000B0F4CA01821B930B8617970780F0AB01F1
496
-:101EF0004E5F5F4F8417950750F0420F531F50936A
497
-:101F0000530240935202F9016193719302C0E0E0E1
498
-:101F1000F0E0CF01DF91CF910895CF93DF93009749
499
-:101F200009F450C0EC0122971B821A82A09154023E
500
-:101F3000B0915502109709F140E050E0AC17BD0791
501
-:101F400008F1BB83AA83FE0121913191E20FF31FB7
502
-:101F5000AE17BF0779F48D919C911197280F391F07
503
-:101F60002E5F3F4F3983288312968D919C91139752
504
-:101F70009B838A834115510571F4D0935502C09318
505
-:101F8000540220C012968D919C911397AD01009739
506
-:101F900011F0DC01D3CFFA01D383C28321913191B7
507
-:101FA000E20FF31FCE17DF0769F488819981280FAC
508
-:101FB000391F2E5F3F4FFA01318320838A819B8135
509
-:101FC00093838283DF91CF910895FB01DC0105901B
510
-:0C1FD0000D920020E1F70895F894FFCF77
511
-:101FDC0001FFFFFFFFFFFFFFFFFF818181818181F7
512
-:101FEC00FFFF818181818181FFFF818181818181DD
513
-:101FFC00FFFF818181818181FFFF818181818181CD
514
-:10200C00FFFF818181818181FFFFFFFFFFFFFFFFC8
515
-:10201C00FFFF010101FF8080FFFF010101FF8080B4
516
-:10202C00FFFF010101FF8080FFFF010101FF8080A4
517
-:10203C00FFFF010101FF8080FFFF010101FF808094
518
-:10204C00FFFF010101FF8080FFFF010101FF808084
519
-:10205C00FF7E818181FF8181817E818181FF8181F0
520
-:10206C00817E818181FF8181817E818181FF81815E
521
-:10207C00817E818181FF8181817E818181FF81814E
522
-:10208C00817E818181FF8181817E818181FF81813E
523
-:10209C00811E2222221E0202021E2222221E020265
524
-:1020AC00021E2222221E0202021E2222221E0202D4
525
-:1020BC00021E2222221E0202021E2222221E0202C4
526
-:1020CC00021E2222221E0202021E2222221E0202B4
527
-:1020DC0002A100E100210101BD0EBF0E200056023D
528
-:0220EC000000F2
74
+:10049000A0E6B0E0E2EBF0E202C005900D92A637D4
75
+:1004A000B107D9F712E0A6E7B1E001C01D92AA3565
76
+:1004B000B107E1F70E94A7020C9457100C940000BA
77
+:1004C000B0990AC080917701882321F481E080935C
78
+:1004D000770102C0109277018091770108958635E7
79
+:1004E00061F1873580F4873411F1883438F482342F
80
+:1004F000E1F08434C1F08F3331F513C0883489F0D2
81
+:10050000833509F517C0883661F0893628F48436BA
82
+:1005100051F08736C1F40BC0833761F0863799F408
83
+:100520000CC086E00BC00E94FA0882E40DC00E9455
84
+:100530002B0A08950E94CB0A089580E00E94420988
85
+:100540000E942D05089583E20E94F00408954F92C1
86
+:100550005F926F927F928F929F92AF92BF92CF9253
87
+:10056000DF92EF92FF920F931F93CF93DF9384B7A5
88
+:100570008093920114BE98E10FB6F89491BD11BC1E
89
+:100580000FBE8FEF8ABB8CEF81BB97BB84BB87B359
90
+:10059000866087BBB8980E94B40589E190E068E066
91
+:1005A00040E021E00E9458040E94A9060E9425080C
92
+:1005B00078942EE088E190E00FB6F894A89581BD7C
93
+:1005C0000FBE21BD81E690E00E945A050E946002A4
94
+:1005D000482E0E949D08522E632E742E852E962E34
95
+:1005E000A72EB82EC92E0E94BD08EC01EE24DD24F2
96
+:1005F000FF2480917601882309F4A895442069F0AE
97
+:100600000E94B005882309F463C00E940608009781
98
+:1006100009F45EC00E94A4095BC080916000882339
99
+:1006200031F00E94BD08EC0110926000EE2420978A
100
+:1006300009F10E94B005D81608F04AC02E2D30E00E
101
+:10064000CE0101972817390710F0EE2401C0E3947A
102
+:100650008E2D90E00E9430098C01005C1F4FF80144
103
+:10066000D08000541040C8010E945A05C8010E9461
104
+:10067000C70F2EC08091780182FD2AC081FF0FC074
105
+:100680000E94DF09F81638F41F2D1F5F8F2D0E947E
106
+:10069000E109F12E1DC0809178018D7F16C00E9466
107
+:1006A000B0058033A8F0EF2DF0E0EE0FFF1FEF59FB
108
+:1006B000FE4F808191810E945A05F1E0FF1510F0F4
109
+:1006C000F39406C080917801826080937801FF24C2
110
+:1006D0000E948C04882321F00E949B040E946F02D8
111
+:1006E0000E949D08122F1519F1E0211708F0F0E083
112
+:1006F000232F2619E1E0321708F0E0E0B22FBF1BEC
113
+:1007000031E02B1708F030E0E32B242F2719F1E01C
114
+:10071000421708F0F0E0A22FAE1B31E02A1708F0D4
115
+:1007200030E0F32B252F281941E0521708F040E064
116
+:10073000E22FEF1B31E02E1708F030E0432B262F7D
117
+:10074000291951E0621708F050E0622F641B31E074
118
+:10075000261708F030E0532B272F2A1941E0721793
119
+:1007600008F040E0322F351B532F31E0251708F0F9
120
+:1007700030E0432B282F2B1931E0821708F030E0AE
121
+:10078000822F841B482F81E0241708F080E0382B4B
122
+:100790009C19931779F4442369F4552359F466237B
123
+:1007A00049F4EE2339F4AA2329F4BB2319F41739A9
124
+:1007B00008F41FCF0E946002482E0E949D08522E0E
125
+:1007C000632E742E852E962EA72EB82EC92E11CFED
126
+:1007D0001F920F920FB60F9211248F939F93EF9356
127
+:1007E000FF93E0917B01F0917C018CB1ED56FE4FBF
128
+:1007F000808380917B0190917C014F9750F4809190
129
+:100800007B0190917C01019690937C0180937B0108
130
+:1008100004C010927C0110927B01FF91EF919F9197
131
+:100820008F910F900FBE0F901F9018951F920F92EF
132
+:100830000FB60F9211242F933F938F939F93EF93B3
133
+:10084000FF9320917D0130917E0180917F019091F5
134
+:10085000800128173907E9F0E0917D01F0917E01D0
135
+:10086000ED54FE4F80818CB980917D0190917E0185
136
+:100870004F9750F480917D0190917E010196909365
137
+:100880007E0180937D0109C010927E0110927D014E
138
+:1008900004C081E0809367015598FF91EF919F918B
139
+:1008A0008F913F912F910F900FBE0F901F90189531
140
+:1008B000382F433078F5862F8550843058F5822FB5
141
+:1008C0008150823038F5442341F080B5806280BD8C
142
+:1008D000423019F480B5806180BD223019F480B5B2
143
+:1008E000886080BD653079F0663011F0683018F0AE
144
+:1008F00080B5826080BD673030F080B5846080BD97
145
+:10090000693009F4529A90BD39B98AB188698AB9B7
146
+:1009100080E0089581E008952091790130917A0175
147
+:1009200080917B0190917C0140E02817390709F004
148
+:1009300041E0842F08952091790130917A018091CE
149
+:100940007B0190917C012817390711F420E022C027
150
+:10095000E0917901F0917A01ED56FE4F2081E0910E
151
+:100960007901F0917A01ED56FE4F10828091790164
152
+:1009700090917A014F9750F48091790190917A018A
153
+:10098000019690937A018093790104C010927A01C4
154
+:1009900010927901822F089580917F0190918001BA
155
+:1009A00020917D0130917E0101968217930719F401
156
+:1009B00081E090E0089580917D0190917E01892BE6
157
+:1009C00019F080E090E0089580917F01909180017E
158
+:1009D00020E030E04F9711F421E030E0C9010895A4
159
+:1009E000482F80917F019091800120917D0130916D
160
+:1009F0007E01019682179307A1F380917D0190916A
161
+:100A00007E01892B31F480917F01909180014F9775
162
+:100A100041F3E0917F01F0918001ED54FE4F40835E
163
+:100A200080917F01909180014F9750F480917F01D8
164
+:100A30009091800101969093800180937F0104C082
165
+:100A40001092800110927F0180916701813021F422
166
+:100A500010926701559A5D9A0895CF93DF93EC0148
167
+:100A600003C021960E94F00488818823D1F7DF918A
168
+:100A7000CF9108951AB810BC10BC19B810927A0121
169
+:100A80001092790110927E0110927D0110927C01EA
170
+:100A900010927B011092800110927F0108952091A5
171
+:100AA0008501309186014091870150918801B901FB
172
+:100AB000CA0108951F931FB7F89421E02093810184
173
+:100AC0001092820110928401BC0140E050E019C0F4
174
+:100AD0008D918095F90193E0EE0FFF1F9A95E1F754
175
+:100AE000E40FF51FED52FE4F80832F5F3F4F2830FC
176
+:100AF000310571F74F5F5F4F685F7F4F4830510599
177
+:100B000021F0DB0120E030E0E3CF1FBF1F9108950B
178
+:100B1000682F7FB7F89481E0809381011092820161
179
+:100B20001092840120E030E060950FC0FA01E80FD8
180
+:100B3000F91FED52FE4F6083019688309105B1F7A1
181
+:100B40002F5F3F4F2830310549F080E090E0A90148
182
+:100B5000E3E0440F551FEA95E1F7E8CF7FBF089522
183
+:100B600080918201869508958EB589608EBD82EC54
184
+:100B700092EA9BBD8ABD80E189BF80E00E94880522
185
+:100B8000789440E050E091E01EC08FB7F894FB01EC
186
+:100B9000E20FF31FED52FE4FA0811082909381016E
187
+:100BA00010928201109284018FBF8091820188236C
188
+:100BB000E1F32F5F3F4F2830310539F74F5F5F4F2B
189
+:100BC0004830510549F020E030E0BA01F3E0660F0B
190
+:100BD000771FFA95E1F7D9CFF8941092850110921A
191
+:100BE0008601109287011092880110928201109262
192
+:100BF0008401089589B78F7E89BF0895982F9C7FBF
193
+:100C000092BB98B3880F880F880F8871977E982BB6
194
+:100C100098BB0895382F85B3837085BB88B3897FCF
195
+:100C200088BB323058F025B381E090E002C0880FD5
196
+:100C3000991F3A95E2F7282B25BB0EC048B3232F06
197
+:100C400030E02F5F3F4F81E090E002C0880F991F96
198
+:100C50002A95E2F7482B48BB6BBB000008951F9212
199
+:100C60000F920FB60F9211242F933F934F935F93E0
200
+:100C70006F937F938F939F93AF93BF93CF93DF93A4
201
+:100C8000EF93FF938091840180918101882321F06B
202
+:100C9000109283011092810180E00E94FE05C0E065
203
+:100CA000D0E0E0918301F0E0A3E0EE0FFF1FAA95F2
204
+:100CB000E1F7EC0FFD1FED52FE4F60818C2F0E947B
205
+:100CC0000A062196C830D10561F72091830181E0A1
206
+:100CD00090E002C0880F991F2A95E2F70E94FE0556
207
+:100CE00080918301873030F4809183018F5F8093FE
208
+:100CF000830107C010928301809182018F5F8093EE
209
+:100D00008201109284018091850190918601A091C9
210
+:100D10008701B09188010196A11DB11D80938501C5
211
+:100D200090938601A0938701B0938801FF91EF9182
212
+:100D3000DF91CF91BF91AF919F918F917F916F91F3
213
+:100D40005F914F913F912F910F900FBE0F901F9089
214
+:100D5000189511B88CE080B90895982F84EA86BF61
215
+:100D600006B607FEFDCF81B1887F883021F0803143
216
+:100D700011F081E0089593B984E886BF06B607FEB6
217
+:100D8000FDCF91B1987F983111F480E0089580E013
218
+:100D9000903409F081E0089544EA34E824E946BF3C
219
+:100DA00006B607FEFDCF91B1987F983011F09031D3
220
+:100DB000B1F783B936BF06B607FEFDCF91B1987F74
221
+:100DC000903211F0983529F426BF06B604FCFDCF09
222
+:100DD000E6CF08950E94AD06089584E986BF06B661
223
+:100DE00004FCFDCF089583B984E886BF06B607FEEC
224
+:100DF000FDCF81B190E0887F883209F091E0892FA2
225
+:100E0000089584EC86BF06B607FEFDCF83B1089532
226
+:100E100084E886BF06B607FEFDCF83B10895BF9272
227
+:100E2000CF92DF92EF92FF920F931F93CF93DF93B6
228
+:100E30007B018C01D42EC52EB22E80E0E81680E016
229
+:100E4000F80681E0080780E0180710F082EA01C088
230
+:100E500080EA0E94AD06882399F40E94F3068E2D45
231
+:100E60000E94F3068D2D9C2D9C01E90110E004C029
232
+:100E700089910E94F3061F5F1B15D0F30E94ED06B7
233
+:100E8000DF91CF911F910F91FF90EF90DF90CF9066
234
+:100E9000BF900895DF92EF92FF920F931F937B0113
235
+:100EA0008C01D42E80E0E81680E0F80681E0080787
236
+:100EB00080E0180710F082EA01C080EA0E94AD06C7
237
+:100EC000882351F40E94F3068E2D0E94F3068D2D87
238
+:100ED0000E94F3060E94ED061F910F91FF90EF9084
239
+:100EE000DF9008956F927F928F929F92AF92BF9200
240
+:100EF000CF92DF92FF920F931F93CF93DF934B011B
241
+:100F00005C0180E0881680E0980681E0A80680E019
242
+:100F1000B80618F092EAF92E02C080EAF82E642E84
243
+:100F20007724C3010E941A0F8C016C01009769F1AC
244
+:100F30008F2D0E94AD06882319F0CC24DD2425C016
245
+:100F400080E00E94F306882D0E94F3068F2D8160B9
246
+:100F50000E94EA06FF2453010894A108B10806C0C4
247
+:100F60000E940107C00FD11F8883F394CF2DD0E0DA
248
+:100F7000CA15DB05ACF30E940807060D171D0150CA
249
+:100F80001040F80180830E94ED06C601DF91CF91E9
250
+:100F90001F910F91FF90DF90CF90BF90AF909F90E7
251
+:100FA0008F907F906F900895DF92EF92FF920F9352
252
+:100FB0001F937B018C0180E0E81680E0F80681E059
253
+:100FC000080780E0180718F032EAD32E02C020EAA2
254
+:100FD000D22E8D2D0E94AD06882311F010E00FC097
255
+:100FE00080E00E94F3068E2D0E94F3068D2D816015
256
+:100FF0000E94EA060E940807182F0E94ED06812F22
257
+:101000001F910F91FF90EF90DF900895CF93DF93A2
258
+:1010100083E40E94AD06882319F020E030E011C07F
259
+:10102000C3E1D2E00E940107899382E0C931D80769
260
+:10103000C9F70E94080788830E94ED069E0126508A
261
+:101040003040C901DF91CF91089583B78B6083BF92
262
+:101050008AEF8CBF89B7826089BF08951F920F9273
263
+:101060000FB60F9211241F932F933F934F935F93CB
264
+:101070006F937F938F939F93AF93BF93EF93FF9360
265
+:1010800080918A0120918B0130918C0140918D01DA
266
+:1010900060918E01E0918F01A091900110919101DA
267
+:1010A000B82FBF5F91E0B81708F090E0F92FF20F6A
268
+:1010B00081E0F21708F080E0782F730F81E073175A
269
+:1010C00008F080E0582F540F81E0541708F080E0BA
270
+:1010D000382F360F81E0361708F080E0282F2E0FCA
271
+:1010E00081E02E1708F080E0982F9A0F81E09A1780
272
+:1010F00008F080E0810FB0938A01F0938B01709328
273
+:101100008C0150938D0130938E0120938F01909329
274
+:10111000900180939101FF91EF91BF91AF919F91C9
275
+:101120008F917F916F915F914F913F912F911F917F
276
+:101130000F900FBE0F901F90189520918A0130914B
277
+:101140008B0140918C0150918D0160918E017091C5
278
+:101150008F01809190019091910108958E3110F04E
279
+:1011600080E00895682F70E06E5F7F4F882777FDDD
280
+:101170008095982F0E94D40708951F9360E070E037
281
+:1011800080E090E00E94D407182F61E070E080E0DA
282
+:1011900090E00E94D407412F50E0382F20E0422BEE
283
+:1011A000532B87E0413E580710F040EE57E0CA014C
284
+:1011B0001F910895462F8E3150F4682F70E06E5FB6
285
+:1011C0007F4F882777FD8095982F0E944A070895C2
286
+:1011D0001F93482F192F60E070E080E090E00E949C
287
+:1011E0004A0761E070E080E090E0412F0E944A07EA
288
+:1011F0001F910895EF92FF920F931F93EE24FF2407
289
+:101200008701C801B70140E00E944A070894E11C29
290
+:10121000F11C011D111D80E0E81680E0F80682E057
291
+:10122000080780E0180769F71F910F91FF90EF9072
292
+:1012300008950F931F93AB018C0126E0000F111F3F
293
+:101240002A95E1F7080F191F005E1F4F20E030E0DC
294
+:10125000C901B80121E40E940F071F910F91089561
295
+:101260009C0146E0220F331F4A95E1F7280F391FF2
296
+:10127000205E3F4F40E050E0CA01B90141E40E94C6
297
+:10128000720708958A3248F4E82FF0E0EE0FFF1F4E
298
+:10129000E55EFB4F6591749104C0EFE6F4E0659163
299
+:1012A00074918AE192E00E941F108AE192E0089511
300
+:1012B000E7E0F0E0DF01A41BB109E21BF10923E044
301
+:1012C000EE0FFF1F2A95E1F7AE0FBF1FA80FB91F42
302
+:1012D00081E090E002C0880F991F6A95E2F72C9197
303
+:1012E000282B2C930895E7E0F0E0DF01A41BB1095F
304
+:1012F000E21BF10933E0EE0FFF1F3A95E1F7AE0F65
305
+:10130000BF1FA80FB91F81E090E002C0880F991F8E
306
+:101310006A95E2F780952C9128232C9308950E94DA
307
+:10132000C70F089580E490E00E941A0F9C01009777
308
+:1013300009F4FFCFFC01805C9F4F1192E817F90779
309
+:10134000E1F7C90108950895BF92CF92DF92EF921D
310
+:10135000FF920F931F93CF93DF936C010E9492092A
311
+:101360007C01C0E0D0E0F601EC0FFD1F80816FE151
312
+:101370000E94FA0EB82E00E00CC0C7016C2F412F5E
313
+:10138000202F0E9458091F5F1B15BCF30F5F083008
314
+:1013900011F010E0F9CF2196C730D10521F7C70130
315
+:1013A0000E945A05C7010E948F09DF91CF911F91BA
316
+:1013B0000F91FF90EF90DF90CF90BF90089582E063
317
+:1013C0000895823050F4E82FF0E0EE0FFF1FE85947
318
+:1013D000FE4F0190F081E02D09950895A89508959C
319
+:1013E00008950F931F93CF93DF930E9406088C01FB
320
+:1013F000009731F485E10E9442090E942D0526C024
321
+:1014000086E10E9442090E942D05C0E0D0E09E01C5
322
+:10141000205D822F0E94F0048CE691E00E942D0551
323
+:10142000F801EC0FFD1F808190E06AE172E04AE074
324
+:1014300050E00E9426108AE192E00E942D058AE089
325
+:101440000E94F0042196C730D10509F7DF91CF91B2
326
+:101450001F910F9108957F928F929F92AF92BF92AA
327
+:10146000CF92DF92EF92FF920F931F93CF93DF9370
328
+:101470000E94BD087C016FEF70E00E94060F892B6F
329
+:1014800039F4C7016FEF70E00E94060F762E07C097
330
+:10149000C7016FEF70E00E94060F762E739482E40E
331
+:1014A0000E94F004872D0E94F0040E949B0490E0AB
332
+:1014B0008234910509F061C0AA24BB244BC08FEF90
333
+:1014C000E816F10421F018F088248A9401C08E2CCB
334
+:1014D000882D0E94F0040E949B0490E082349105C4
335
+:1014E00009F04BC0650199242DC0C6010E94300946
336
+:1014F0008C01FC01E05CFF4F80810E94F0040E949F
337
+:101500009B0490E082349105A9F4C0E0D0E0F8019A
338
+:10151000EC0FFD1F80810E94F0042196C034D1059C
339
+:10152000B1F70E949B0490E00894C11CD11C823446
340
+:10153000910521F0C8010E94C70F1FC0C8010E9479
341
+:10154000C70F9394981488F2E818F1088FEF90E091
342
+:10155000A80EB91E8A2D8195871508F4B0CF82E4B4
343
+:101560000E94F00482E40E94F00482E40E94F004ED
344
+:1015700082E40E94F0040E949B04DF91CF911F91AE
345
+:101580000F91FF90EF90DF90CF90BF90AF909F9022
346
+:101590008F907F9008952F923F924F925F926F921B
347
+:1015A0007F928F929F92AF92BF92CF92DF92EF92F3
348
+:1015B000FF920F931F93DF93CF93CDB7DEB727979B
349
+:1015C0000FB6F894DEBF0FBECDBF81E490E00E945D
350
+:1015D0001A0F7C010E949D08422E332E242E752E58
351
+:1015E000662E572E982E892E82E40E94F0046CC03D
352
+:1015F0000E949D08022F0419F1E0201708F0F0E086
353
+:10160000232F2319E1E0321708F0E0E0A22FAF1BEF
354
+:1016100031E02A1708F030E0E32B242F2219F1E003
355
+:10162000421708F0F0E0B22FBE1B31E02B1708F094
356
+:1016300030E0F32B252F271941E0521708F040E046
357
+:10164000E22FEF1B31E02E1708F030E0432B262F5E
358
+:10165000261951E0621708F050E0622F641B31E058
359
+:10166000261708F030E0532B272F251941E0721779
360
+:1016700008F040E0322F351B532F31E0251708F0DA
361
+:1016800030E0432B282F291931E0821708F030E091
362
+:10169000822F841B482F81E0241708F080E0382B2C
363
+:1016A0009819931789F4442379F4552369F4662330
364
+:1016B00059F4EE2349F4BB2339F4A83228F4A732B5
365
+:1016C00011F4013108F4A8950E948C04882309F4D0
366
+:1016D0008FCF0E949B048A8382E40E94F004AA2494
367
+:1016E000BB241B82F701E05CFF4FFD83EC8388C1C4
368
+:1016F0000E949D08022F0419F1E0201708F0F0E085
369
+:10170000232F2319E1E0321708F0E0E0A22FAF1BEE
370
+:1017100031E02A1708F030E0E32B242F2219F1E002
371
+:10172000421708F0F0E0B22FBE1B31E02B1708F093
372
+:1017300030E0F32B252F271941E0521708F040E045
373
+:10174000E22FEF1B31E02E1708F030E0432B262F5D
374
+:10175000261951E0621708F050E0622F641B31E057
375
+:10176000261708F030E0532B272F251941E0721778
376
+:1017700008F040E0F22FF51B5F2F31E02F1708F043
377
+:1017800030E0432B282F291931E0821708F030E090
378
+:10179000822F841B482F81E0241708F080E0382B2B
379
+:1017A0009819931789F4442379F4552369F466232F
380
+:1017B00059F4EE2349F4BB2339F4A83228F4A732B4
381
+:1017C00011F4013108F4A8950E948C04882309F4CF
382
+:1017D0008FCF0E949B04898382E40E94F0046501FC
383
+:1017E00004C10E949D08022F0419F1E0201708F09F
384
+:1017F000F0E0232F2319E1E0321708F0E0E0A22FF8
385
+:10180000AF1B31E02A1708F030E0E32B242F221918
386
+:10181000F1E0421708F0F0E0B22FBE1B31E02B17C9
387
+:1018200008F030E0F32B252F271941E0521708F07C
388
+:1018300040E0E22FEF1B31E02E1708F030E0432BA1
389
+:10184000262F261951E0621708F050E0622F641B22
390
+:1018500031E0261708F030E0532B272F251941E0FF
391
+:10186000721708F040E0F22FF51B5F2F31E02F17C1
392
+:1018700008F030E0432B282F291931E0821708F0B7
393
+:1018800030E0822F841B482F81E0241708F080E08D
394
+:10189000382B9819931789F4442379F4552369F464
395
+:1018A000662359F4EE2349F4BB2339F4A83228F413
396
+:1018B000A73211F4013108F4A8950E948C04882302
397
+:1018C00009F48FCF0E949B04EC81FD81808382E428
398
+:1018D0000E94F004FF82EE826CC00E949D08022FDD
399
+:1018E0000419F1E0201708F0F0E0232F2319E1E0BC
400
+:1018F000321708F0E0E0A22FAF1B31E02A1708F002
401
+:1019000030E0E32B242F2219F1E0421708F0F0E039
402
+:10191000B22FBE1B31E02B1708F030E0F32B252F40
403
+:10192000271941E0521708F040E0E22FEF1B31E0A9
404
+:101930002E1708F030E0432B262F261951E06217AE
405
+:1019400008F050E0622F641B31E0261708F030E009
406
+:10195000532B272F251941E0721708F040E0F22F92
407
+:10196000F51B5F2F31E02F1708F030E0432B282FB5
408
+:10197000291931E0821708F030E0822F841B482FAC
409
+:1019800081E0241708F080E0382B9819931789F428
410
+:10199000442379F4552369F4662359F4EE2349F47A
411
+:1019A000BB2339F4A83228F4A73211F4013108F42A
412
+:1019B000A8950E948C04882309F48FCF0E949B0471
413
+:1019C000EE81FF818193FF83EE832C813D81E217BD
414
+:1019D000F30779F782E40E94F00486010F5F1F4F3E
415
+:1019E000C601B7010E94190968018C2D8A19398135
416
+:1019F000831708F462CFA30EB11C8B818F5F8B839A
417
+:101A00009B81EA819E1708F4DFCEC7010E94C70FB1
418
+:101A10006CC00E949D08022F0419F1E0201708F005
419
+:101A2000F0E0232F2319E1E0321708F0E0E0A22FC5
420
+:101A3000AF1B31E02A1708F030E0E32B242F2219E6
421
+:101A4000F1E0421708F0F0E0B22FBE1B31E02B1797
422
+:101A500008F030E0F32B252F271941E0521708F04A
423
+:101A600040E0E22FEF1B31E02E1708F030E0432B6F
424
+:101A7000262F261951E0621708F050E0622F641BF0
425
+:101A800031E0261708F030E0532B272F251941E0CD
426
+:101A9000721708F040E0F22FF51B5F2F31E02F178F
427
+:101AA00008F030E0432B282F291931E0821708F085
428
+:101AB00030E0822F841B482F81E0241708F080E05B
429
+:101AC000382B9819931789F4442379F4552369F432
430
+:101AD000662359F4EE2349F4BB2339F4A83228F4E1
431
+:101AE000A73211F4013108F4A8950E948C048823D0
432
+:101AF00009F48FCF0E949B046CC00E949D08022FA6
433
+:101B00000419F1E0201708F0F0E0232F2319E1E099
434
+:101B1000321708F0E0E0A22FAF1B31E02A1708F0DF
435
+:101B200030E0E32B242F2219F1E0421708F0F0E017
436
+:101B3000B22FBE1B31E02B1708F030E0F32B252F1E
437
+:101B4000271941E0521708F040E0E22FEF1B31E087
438
+:101B50002E1708F030E0432B262F261951E062178C
439
+:101B600008F050E0622F641B31E0261708F030E0E7
440
+:101B7000532B272F251941E0721708F040E0F22F70
441
+:101B8000F51B5F2F31E02F1708F030E0432B282F93
442
+:101B9000291931E0821708F030E0822F841B482F8A
443
+:101BA00081E0241708F080E0382B9819931789F406
444
+:101BB000442379F4552369F4662359F4EE2349F458
445
+:101BC000BB2339F4A83228F4A73211F4013108F408
446
+:101BD000A8950E948C04882309F48FCF0E949B044F
447
+:101BE0006CC00E949D08022F0419F1E0201708F034
448
+:101BF000F0E0232F2319E1E0321708F0E0E0A22FF4
449
+:101C0000AF1B31E02A1708F030E0E32B242F221914
450
+:101C1000F1E0421708F0F0E0B22FBE1B31E02B17C5
451
+:101C200008F030E0F32B252F271941E0521708F078
452
+:101C300040E0E22FEF1B31E02E1708F030E0432B9D
453
+:101C4000262F261951E0621708F050E0622F641B1E
454
+:101C500031E0261708F030E0532B272F251941E0FB
455
+:101C6000721708F040E0F22FF51B5F2F31E02F17BD
456
+:101C700008F030E0432B282F291931E0821708F0B3
457
+:101C800030E0822F841B482F81E0241708F080E089
458
+:101C9000382B9819931789F4442379F4552369F460
459
+:101CA000662359F4EE2349F4BB2339F4A83228F40F
460
+:101CB000A73211F4013108F4A8950E948C048823FE
461
+:101CC00009F48FCF0E949B046CC00E949D08022FD4
462
+:101CD0000419F1E0201708F0F0E0232F2319E1E0C8
463
+:101CE000321708F0E0E0A22FAF1B31E02A1708F00E
464
+:101CF00030E0E32B242F2219F1E0421708F0F0E046
465
+:101D0000B22FBE1B31E02B1708F030E0F32B252F4C
466
+:101D1000271941E0521708F040E0E22FEF1B31E0B5
467
+:101D20002E1708F030E0432B262F261951E06217BA
468
+:101D300008F050E0622F641B31E0261708F030E015
469
+:101D4000532B272F251941E0721708F040E0F22F9E
470
+:101D5000F51B5F2F31E02F1708F030E0432B282FC1
471
+:101D6000291931E0821708F030E0822F841B482FB8
472
+:101D700081E0241708F080E0382B9819931789F434
473
+:101D8000442379F4552369F4662359F4EE2349F486
474
+:101D9000BB2339F4A83228F4A73211F4013108F436
475
+:101DA000A8950E948C04882309F48FCF0E949B047D
476
+:101DB00082E40E94F004C5010E94E80881E080935B
477
+:101DC000600027960FB6F894DEBF0FBECDBFCF914F
478
+:101DD000DF911F910F91FF90EF90DF90CF90BF9018
479
+:101DE000AF909F908F907F906F905F904F903F90BB
480
+:101DF0002F900895991B79E004C0991F961708F059
481
+:101E0000961B881F7A95C9F780950895AA1BBB1B5E
482
+:101E100051E107C0AA1FBB1FA617B70710F0A61BEA
483
+:101E2000B70B881F991F5A95A9F780959095BC010B
484
+:101E3000CD010895CF93DF93BC018230910510F45A
485
+:101E400062E070E0A0915802B0915902ED01E0E02B
486
+:101E5000F0E040E050E021C0888199818617970723
487
+:101E600069F48A819B81309719F09383828304C03F
488
+:101E70009093590280935802FE0134C06817790785
489
+:101E800038F44115510519F08417950708F4AC0191
490
+:101E9000FE018A819B819C01E9012097E9F64115A9
491
+:101EA0005105A9F1CA01861B970B049708F4BA01E2
492
+:101EB000E0E0F0E02AC08D919C911197841795077E
493
+:101EC000F9F46417750781F412968D919C9113971C
494
+:101ED000309719F09383828304C0909359028093C2
495
+:101EE0005802FD0132964FC0CA01861B970BFD01B7
496
+:101EF000E80FF91F6193719302978D939C9343C0F0
497
+:101F0000FD01828193819C01D9011097A1F68091F6
498
+:101F1000560290915702892B41F480917101909162
499
+:101F20007201909357028093560240917301509131
500
+:101F300074014115510541F44DB75EB780916F01B1
501
+:101F400090917001481B590B209156023091570215
502
+:101F500024173507B0F4CA01821B930B8617970725
503
+:101F600080F0AB014E5F5F4F8417950750F0420F32
504
+:101F7000531F5093570240935602F9016193719396
505
+:101F800002C0E0E0F0E0CF01DF91CF910895CF9360
506
+:101F9000DF93009709F450C0EC0122971B821A824C
507
+:101FA000A0915802B0915902109709F140E050E019
508
+:101FB000AC17BD0708F1BB83AA83FE0121913191C3
509
+:101FC000E20FF31FAE17BF0779F48D919C91119723
510
+:101FD000280F391F2E5F3F4F3983288312968D912A
511
+:101FE0009C9113979B838A834115510571F4D0937B
512
+:101FF0005902C093580220C012968D919C9113975C
513
+:10200000AD01009711F0DC01D3CFFA01D383C28375
514
+:1020100021913191E20FF31FCE17DF0769F4888118
515
+:102020009981280F391F2E5F3F4FFA01318320839A
516
+:102030008A819B8193838283DF91CF910895FB01F5
517
+:10204000DC0105900D920020E1F70895FB019F014E
518
+:10205000E8944230C4F04532B4F44A3029F497FB96
519
+:102060001EF4909581959F4F642F77270E94060F4D
520
+:10207000805D8A330CF0895D8193CB010097A1F7D5
521
+:1020800016F45DE251931082C9010C944710DC01F3
522
+:10209000FC01672F71917723E1F7329704C07C919F
523
+:1020A0006D9370836291AE17BF07C8F30895F894DB
524
+:0220B000FFCF60
525
+:1020B20001FFFFFFFFFFFFFFFFFF81818181818120
526
+:1020C200FFFF818181818181FFFF81818181818106
527
+:1020D200FFFF818181818181FFFF818181818181F6
528
+:1020E200FFFF818181818181FFFFFFFFFFFFFFFFF2
529
+:1020F200FFFF010101FF8080FFFF010101FF8080DE
530
+:10210200FFFF010101FF8080FFFF010101FF8080CD
531
+:10211200FFFF010101FF8080FFFF010101FF8080BD
532
+:10212200FFFF010101FF8080FFFF010101FF8080AD
533
+:10213200FF7E818181FF8181817E818181FF818119
534
+:10214200817E818181FF8181817E818181FF818187
535
+:10215200817E818181FF8181817E818181FF818177
536
+:10216200817E818181FF8181817E818181FF818167
537
+:10217200811E2222221E0202021E2222221E02028E
538
+:10218200021E2222221E0202021E2222221E0202FD
539
+:10219200021E2222221E0202021E2222221E0202ED
540
+:1021A200021E2222221E0202021E2222221E0202DD
541
+:1021B20002A100E100210101EE09F0093A2000200C
542
+:0621C200005A02000000BB
529 543
 :00000001FF

+ 1
- 0
CubeFirmware/makefile View File

@@ -48,6 +48,7 @@ SRC += strings.c
48 48
 SRC += buffhelp.c
49 49
 SRC += visualizer.c
50 50
 SRC += animations.c
51
+SRC += transmit.c
51 52
 
52 53
 # List Assembler source files here.
53 54
 # Make them always end in a capital .S.  Files ending in a lowercase .s

+ 212
- 0
CubeFirmware/transmit.c View File

@@ -0,0 +1,212 @@
1
+/*
2
+ * transmit.c
3
+ *
4
+ * Copyright 2011 Thomas Buck <xythobuz@me.com>
5
+ * Copyright 2011 Max Nuding <max.nuding@gmail.com>
6
+ * Copyright 2011 Felix Bäder <baeder.felix@gmail.com>
7
+ *
8
+ * This file is part of LED-Cube.
9
+ *
10
+ * LED-Cube is free software: you can redistribute it and/or modify
11
+ * it under the terms of the GNU General Public License as published by
12
+ * the Free Software Foundation, either version 3 of the License, or
13
+ * (at your option) any later version.
14
+ *
15
+ * LED-Cube is distributed in the hope that it will be useful,
16
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
17
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18
+ * GNU General Public License for more details.
19
+ *
20
+ * You should have received a copy of the GNU General Public License
21
+ * along with LED-Cube.  If not, see <http://www.gnu.org/licenses/>.
22
+ */
23
+#include <avr/io.h>
24
+#include <util/delay.h>
25
+#include <stdint.h>
26
+#include <stdlib.h>
27
+#include <avr/wdt.h>
28
+#include "memLayer.h"
29
+#include "serial.h"
30
+#include "time.h"
31
+#include "strings.h"
32
+#include "audio.h"
33
+
34
+#define OK 0x42
35
+#define ERROR 0x23
36
+
37
+#define TRANSTIMEOUT 10000
38
+
39
+// These are global variables from main.c
40
+extern char buffer[11];
41
+extern uint8_t refreshAnimationCount;
42
+
43
+void recieveAnimations(void) {
44
+	uint8_t animCount, a, frameCount, f, i, c;
45
+	uint16_t completeCount = 0;
46
+	uint8_t *frame = (uint8_t *)malloc(65);
47
+	uint64_t timestamp = getSystemTime();
48
+
49
+	serialWrite(OK); // We are ready...
50
+
51
+	while (!serialHasChar()) { // Wait for answer
52
+		if ((getSystemTime() - timestamp) <= TRANSTIMEOUT) {
53
+			wdt_reset();
54
+		}
55
+	}
56
+	c = serialGet();
57
+	animCount = c; // Got animation count
58
+	serialWrite(OK);
59
+
60
+	for (a = 0; a < animCount; a++) {
61
+		while (!serialHasChar()) { // Wait for answer
62
+			if ((getSystemTime() - timestamp) <= TRANSTIMEOUT) {
63
+				wdt_reset();
64
+			}
65
+		}
66
+		c = serialGet();
67
+		frameCount = c; // Got frame count
68
+		serialWrite(OK);
69
+
70
+		for (f = 0; f < frameCount; f++) {
71
+			while (!serialHasChar()) { // Wait for answer
72
+				if ((getSystemTime() - timestamp) <= TRANSTIMEOUT) {
73
+					wdt_reset();
74
+				}
75
+			}
76
+			c = serialGet();
77
+			frame[64] = c; // Got duration
78
+			serialWrite(OK);
79
+
80
+			for (i = 0; i < 64; i++) {
81
+				while (!serialHasChar()) { // Wait for answer
82
+					if ((getSystemTime() - timestamp) <= TRANSTIMEOUT) {
83
+						wdt_reset();
84
+					}
85
+				}
86
+				c = serialGet();
87
+				frame[i] = c; // Got data byte
88
+			}
89
+			serialWrite(OK);
90
+
91
+			setFrame(completeCount++, frame);
92
+		}
93
+	}
94
+	free(frame);
95
+
96
+	while (!serialHasChar()) { // Wait for answer
97
+		if ((getSystemTime() - timestamp) <= TRANSTIMEOUT) {
98
+			wdt_reset();
99
+		}
100
+	}
101
+	c = serialGet();
102
+	while (!serialHasChar()) { // Wait for answer
103
+		if ((getSystemTime() - timestamp) <= TRANSTIMEOUT) {
104
+			wdt_reset();
105
+		}
106
+	}
107
+	c = serialGet();
108
+	while (!serialHasChar()) { // Wait for answer
109
+		if ((getSystemTime() - timestamp) <= TRANSTIMEOUT) {
110
+			wdt_reset();
111
+		}
112
+	}
113
+	c = serialGet();
114
+	while (!serialHasChar()) { // Wait for answer
115
+		if ((getSystemTime() - timestamp) <= TRANSTIMEOUT) {
116
+			wdt_reset();
117
+		}
118
+	}
119
+	c = serialGet();
120
+
121
+	serialWrite(OK);
122
+
123
+	setAnimationCount(completeCount);
124
+	refreshAnimationCount = 1;
125
+}
126
+
127
+void transmitAnimations(void) {
128
+	// We store no animation information in here
129
+	// So we have to place all frames in one or more
130
+	// animations... We need 8 animations max...
131
+	uint8_t animationsToGo;
132
+	uint16_t framesToGo = getAnimationCount();
133
+	uint16_t character;
134
+	uint8_t a;
135
+	uint8_t f, fMax, i;
136
+	uint8_t *frame;
137
+
138
+	if ((framesToGo % 255) == 0) {
139
+		animationsToGo = framesToGo / 255;
140
+	} else {
141
+		animationsToGo = (framesToGo / 255) + 1;
142
+	}
143
+
144
+	serialWrite(OK);
145
+	serialWrite(animationsToGo);
146
+	while ((character = serialGet()) & 0xFF00); // Wait for answer
147
+	if ((character & 0x00FF) != OK) { // Error code recieved
148
+		return;
149
+	}
150
+
151
+	for (a = 0; a < animationsToGo; a++) {
152
+		if (framesToGo > 255) {
153
+			fMax = 255;
154
+		} else {
155
+			fMax = framesToGo;
156
+		}
157
+
158
+		serialWrite(fMax); // Number of Frames in current animation
159
+		while ((character = serialGet()) & 0xFF00); // Wait for answer
160
+		if ((character & 0x00FF) != OK) { // Error code recieved
161
+			return;
162
+		}
163
+
164
+		for (f = 0; f < fMax; f++) {
165
+			frame = getFrame(f + (255 * a));
166
+
167
+			serialWrite(frame[64]); // frame duration
168
+			while ((character = serialGet()) & 0xFF00); // Wait for answer
169
+			if ((character & 0x00FF) != OK) { // Error code recieved
170
+				free(frame);
171
+				return;
172
+			}
173
+
174
+			for (i = 0; i < 64; i++) {
175
+				serialWrite(frame[i]);
176
+			}
177
+			while ((character = serialGet()) & 0xFF00); // Wait for answer
178
+			if ((character & 0x00FF) != OK) { // Error code recieved
179
+				free(frame);
180
+				return;
181
+			}
182
+
183
+			free(frame);
184
+		}
185
+		framesToGo -= fMax;
186
+	}
187
+
188
+	serialWrite(OK);
189
+	serialWrite(OK);
190
+	serialWrite(OK);
191
+	serialWrite(OK);
192
+
193
+	while ((character = serialGet()) & 0xFF00); // Wait for answer
194
+	// Error code ignored...
195
+}
196
+
197
+void sendAudioData(void) {
198
+	uint8_t i;
199
+	uint8_t *audioData = getAudioData();
200
+	if (audioData == NULL) {
201
+		serialWriteString(getString(21));
202
+	} else {
203
+		serialWriteString(getString(22));
204
+		for (i = 0; i < 7; i++) {
205
+			serialWrite(i + '0');
206
+			serialWriteString(": ");
207
+			itoa(audioData[i], buffer, 10);
208
+			serialWriteString(buffer);
209
+			serialWrite('\n');
210
+		}
211
+	}
212
+}

Loading…
Cancel
Save