annotate bwsplash/pbm2c.c @ 303:f76436d19a7a default tip

!GPRS config: fix long-standing AT+COPS chance hanging bug There has been a long-standing bug in FreeCalypso going back years: sometimes in the AT command bring-up sequence of an ACI-only MS, the AT+COPS command would produce only a power scan followed by cessation of protocol stack activity (only L1 ADC traces), instead of the expected network search sequence. This behaviour was seen in different FC firmware versions going back to Citrine, and seemed to follow some law of chance, not reliably repeatable. This bug has been tracked down and found to be specific to !GPRS configuration, stemming from our TCS2/TCS3 hybrid and reconstruction of !GPRS support that was bitrotten in TCS3.2/LoCosto version. ACI module psa_mms.c, needed only for !GPRS, was missing in the TCS3 version and had to be pulled from TCS2 - but as it turns out, there is a new field in the MMR_REG_REQ primitive that needs to be set correctly, and that psa_mms.c module is the place where this initialization needed to be added.
author Mychaela Falconia <falcon@freecalypso.org>
date Thu, 08 Jun 2023 08:23:37 +0000
parents 4d9f24c501f3
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
195
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1 /*
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
2 * This program compiles bwsplash.pbm into a C char array
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
3 * for inclusion into phone UI firmware source.
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
4 */
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
5
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
6 #include <sys/types.h>
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
7 #include <stdio.h>
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
8 #include <stdlib.h>
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
9 #include <string.h>
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
10 #include <strings.h>
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
11
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
12 FILE *inf, *outf;
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
13 char *infname, linebuf[128];
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
14 int lineno;
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
15
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
16 void
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
17 get_input_line()
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
18 {
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
19 char *cp;
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
20
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
21 if (!fgets(linebuf, sizeof linebuf, inf)) {
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
22 fprintf(stderr, "%s: premature EOF\n", infname);
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
23 exit(1);
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
24 }
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
25 lineno++;
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
26 cp = index(linebuf, '\n');
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
27 if (!cp) {
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
28 fprintf(stderr, "%s line %d: too long or missing newline\n",
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
29 infname, lineno);
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
30 exit(1);
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
31 }
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
32 *cp = '\0';
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
33 }
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
34
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
35 void
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
36 parse_pixel_line(outbuf, npix)
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
37 u_char *outbuf;
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
38 unsigned npix;
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
39 {
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
40 char *cp;
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
41 u_char *dp;
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
42 unsigned n;
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
43
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
44 cp = linebuf;
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
45 dp = outbuf;
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
46 for (n = 0; n < npix; n++) {
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
47 if (*cp != '0' && *cp != '1') {
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
48 inv: fprintf(stderr,
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
49 "%s line %d: does not match expected line of %u 0/1 characters\n",
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
50 infname, lineno, npix);
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
51 exit(1);
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
52 }
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
53 *dp++ = *cp++ - '0';
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
54 }
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
55 if (*cp)
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
56 goto inv;
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
57 }
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
58
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
59 void
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
60 pack_pixel_byte(bits)
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
61 u_char *bits;
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
62 {
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
63 unsigned byte, mask, n;
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
64
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
65 byte = 0;
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
66 for (n = 0, mask = 0x80; n < 8; n++, mask >>= 1)
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
67 if (bits[n])
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
68 byte |= mask;
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
69 fprintf(outf, "0x%02X,", byte);
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
70 }
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
71
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
72 main(argc, argv)
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
73 char **argv;
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
74 {
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
75 unsigned nrow, ncol;
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
76 u_char rowbuf[80];
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
77
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
78 if (argc != 3) {
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
79 fprintf(stderr, "usage: %s pbmfile outfile\n", argv[0]);
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
80 exit(1);
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
81 }
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
82 infname = argv[1];
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
83 inf = fopen(infname, "r");
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
84 if (!inf) {
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
85 perror(infname);
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
86 exit(1);
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
87 }
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
88 get_input_line();
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
89 if (strcmp(linebuf, "P1")) {
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
90 fprintf(stderr,
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
91 "error in %s: first line is not the expected \"P1\"\n",
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
92 infname);
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
93 exit(1);
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
94 }
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
95 get_input_line();
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
96 if (strcmp(linebuf, "80 30")) {
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
97 fprintf(stderr,
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
98 "error in %s: second line is not the expected \"80 30\"\n",
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
99 infname);
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
100 exit(1);
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
101 }
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
102 outf = fopen(argv[2], "w");
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
103 if (!outf) {
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
104 perror(argv[2]);
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
105 exit(1);
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
106 }
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
107 for (nrow = 0; nrow < 30; nrow++) {
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
108 get_input_line();
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
109 parse_pixel_line(rowbuf, 80);
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
110 putc('\t', outf);
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
111 for (ncol = 0; ncol < 80; ncol += 8)
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
112 pack_pixel_byte(rowbuf + ncol);
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
113 putc('\n', outf);
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
114 }
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
115 exit(0);
4d9f24c501f3 bwsplash: simple splash screen for FreeCalypso Lite (smallbw)
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
116 }