emfrp 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 61e335460dfc357d7b07dcffb638789a93033478
4
- data.tar.gz: a8c3b82e4f36de3062ed97f3535cb6a1c5b32cbc
3
+ metadata.gz: 8c76aeb70edc85f68ce0412805037f3edd13f585
4
+ data.tar.gz: b2ea35157930fd7911dfaf3a5ece84ac0dfbe6ad
5
5
  SHA512:
6
- metadata.gz: 106c4bdd43fd5fea6f6f8fc800e25ce1f8b50c34bcec336a0a006bb3517d6c55d94152a530e81e03deb66095927622e1523b5235f6e059c9d5567434d3ba08e0
7
- data.tar.gz: 8791d44c0b27d9097f583b803c39ff7f54abc2334ed3227ed07b17fb79eb1ba6a653d9d770d2f455de9ad0c5c260b51cb02a52ef8cfab1b8ed3106b908308912
6
+ metadata.gz: d43fd34857af5a6a55293fc5b1ccdb699fb468cf1d9b3cbc5b7b39dba9c51a7e077939536c60c621e82b10cff3404780892461cd2f6ed2a08de39b613c0db23f
7
+ data.tar.gz: b1f3486218100ed207900d54c26797ed5d2c17dcadfdf0cc63b4405b65d46b01e3d0f4482bd42faa241e772fcfdabe790414dd068288d6ffb012d4ce88b8503f
data/README.md CHANGED
@@ -24,5 +24,5 @@ $ emfrp <src-file>
24
24
 
25
25
  ## Usage
26
26
 
27
- Here is a (temporary) easy introduction:
27
+ See wiki:
28
28
  https://github.com/sawaken/emfrp/wiki
@@ -0,0 +1,580 @@
1
+ #include "LCDClock.h"
2
+ /* Primitive functions (Macros) */
3
+ #define _anpersand_anpersand(a, b) (a && b)
4
+ #define _eq__eq_(a, b) (a == b)
5
+ #define _exclamation__eq_(a, b) (a != b)
6
+ #define _parcent_(a, b) (a % b)
7
+ #define _plus_(a, b) (a + b)
8
+ #define _lt_(a, b) (a < b)
9
+ #define _slash_(a, b) (a / b)
10
+ #define _at__exclamation_(a) (!a)
11
+ /* Data types */
12
+ struct Time{
13
+ int mark;
14
+ union {
15
+ struct {
16
+ int member0;
17
+ int member1;
18
+ int member2;
19
+ }Time;
20
+ }value;
21
+ };
22
+ struct Tuple3_Int_Int_Int{
23
+ int mark;
24
+ union {
25
+ struct {
26
+ int member0;
27
+ int member1;
28
+ int member2;
29
+ }Tuple3;
30
+ }value;
31
+ };
32
+ struct Tuple3_Bool_Bool_Bool{
33
+ int mark;
34
+ union {
35
+ struct {
36
+ int member0;
37
+ int member1;
38
+ int member2;
39
+ }Tuple3;
40
+ }value;
41
+ };
42
+ /* Global variables */
43
+ int node_memory_btnMode[2];
44
+ int node_memory_btnNext[2];
45
+ int node_memory_btnRotate[2];
46
+ int node_memory_pulse100ms[2];
47
+ int node_memory_counter[2];
48
+ int node_memory_curMode[2];
49
+ int node_memory_curPos[2];
50
+ int node_memory_pulse1s[2];
51
+ int node_memory_flash[2];
52
+ struct Tuple3_Int_Int_Int* node_memory_anonymous69880537178160[2];
53
+ struct Tuple3_Bool_Bool_Bool* node_memory_anonymous69880541228320[2];
54
+ int node_memory_dh[2];
55
+ int node_memory_dm[2];
56
+ int node_memory_ds[2];
57
+ int node_memory_maskHour[2];
58
+ int node_memory_maskMin[2];
59
+ int node_memory_maskSec[2];
60
+ struct Time* node_memory_curTime[2];
61
+ int node_memory_hour[2];
62
+ int node_memory_min[2];
63
+ int node_memory_sec[2];
64
+ struct Time memory_Time[3];
65
+ int size_Time = 3;
66
+ int counter_Time = 0;
67
+ struct Tuple3_Int_Int_Int memory_Tuple3_Int_Int_Int[1];
68
+ int size_Tuple3_Int_Int_Int = 1;
69
+ int counter_Tuple3_Int_Int_Int = 0;
70
+ struct Tuple3_Bool_Bool_Bool memory_Tuple3_Bool_Bool_Bool[1];
71
+ int size_Tuple3_Bool_Bool_Bool = 1;
72
+ int counter_Tuple3_Bool_Bool_Bool = 0;
73
+ int Counter = 1;
74
+ int NodeSize = 17;
75
+ /* Static prototypes */
76
+ static struct Time* Time_0(int, int, int);
77
+ static void mark_Time(struct Time*, int);
78
+ static struct Tuple3_Int_Int_Int* Tuple3_0(int, int, int);
79
+ static void mark_Tuple3_Int_Int_Int(struct Tuple3_Int_Int_Int*, int);
80
+ static struct Tuple3_Bool_Bool_Bool* Tuple3_1(int, int, int);
81
+ static void mark_Tuple3_Bool_Bool_Bool(struct Tuple3_Bool_Bool_Bool*, int);
82
+ static int init_btnMode();
83
+ static int init_btnNext();
84
+ static int init_btnRotate();
85
+ static int node_counter(int, int, int*);
86
+ static int init_counter();
87
+ static int node_curMode(int, int, int, int*);
88
+ static int init_curMode();
89
+ static int node_curPos(int, int, int, int*);
90
+ static int init_curPos();
91
+ static int node_pulse1s(int, int, int*);
92
+ static int node_flash(int, int*);
93
+ static int node_anonymous69880537178160(int, int, int, int, struct Tuple3_Int_Int_Int**);
94
+ static int node_anonymous69880541228320(int, int, int, struct Tuple3_Bool_Bool_Bool**);
95
+ static int node_dh(struct Tuple3_Int_Int_Int*, int*);
96
+ static int node_dm(struct Tuple3_Int_Int_Int*, int*);
97
+ static int node_ds(struct Tuple3_Int_Int_Int*, int*);
98
+ static int node_maskHour(struct Tuple3_Bool_Bool_Bool*, int*);
99
+ static int node_maskMin(struct Tuple3_Bool_Bool_Bool*, int*);
100
+ static int node_maskSec(struct Tuple3_Bool_Bool_Bool*, int*);
101
+ static int node_curTime(int, struct Time*, int, int, int, struct Time**);
102
+ static struct Time* init_curTime();
103
+ static int node_hour(struct Time*, int*);
104
+ static int init_hour();
105
+ static int node_min(struct Time*, int*);
106
+ static int init_min();
107
+ static int node_sec(struct Time*, int*);
108
+ static int init_sec();
109
+ static struct Time* roundingTime_0(struct Time*, int, int, int);
110
+ static struct Time* proceedTime_0(struct Time*);
111
+ static int editable_0(int);
112
+ static int positiveEdge_0(int, int);
113
+ static int nextMode_0(int);
114
+ static int nextPos_0(int);
115
+ static void refreshMark();
116
+ extern void Input(int*, int*, int*, int*);
117
+ extern void Output(int*, int*, int*, int*, int*, int*);
118
+ /* Functions, Constructors, GCMarkers, etc... */
119
+ static struct Time* Time_0(int member0, int member1, int member2) {
120
+ struct Time* x;
121
+ while (1) {
122
+ counter_Time++;
123
+ counter_Time %= size_Time;
124
+ if (memory_Time[counter_Time].mark < Counter) { x = memory_Time + counter_Time; break; }
125
+ }
126
+ x->value.Time.member0 = member0;
127
+ x->value.Time.member1 = member1;
128
+ x->value.Time.member2 = member2;
129
+ return x;
130
+ }
131
+ static void mark_Time(struct Time* x, int mark) {
132
+ x->mark = mark;
133
+ }
134
+ static struct Tuple3_Int_Int_Int* Tuple3_0(int member0, int member1, int member2) {
135
+ struct Tuple3_Int_Int_Int* x;
136
+ while (1) {
137
+ counter_Tuple3_Int_Int_Int++;
138
+ counter_Tuple3_Int_Int_Int %= size_Tuple3_Int_Int_Int;
139
+ if (memory_Tuple3_Int_Int_Int[counter_Tuple3_Int_Int_Int].mark < Counter) { x = memory_Tuple3_Int_Int_Int + counter_Tuple3_Int_Int_Int; break; }
140
+ }
141
+ x->value.Tuple3.member0 = member0;
142
+ x->value.Tuple3.member1 = member1;
143
+ x->value.Tuple3.member2 = member2;
144
+ return x;
145
+ }
146
+ static void mark_Tuple3_Int_Int_Int(struct Tuple3_Int_Int_Int* x, int mark) {
147
+ x->mark = mark;
148
+ }
149
+ static struct Tuple3_Bool_Bool_Bool* Tuple3_1(int member0, int member1, int member2) {
150
+ struct Tuple3_Bool_Bool_Bool* x;
151
+ while (1) {
152
+ counter_Tuple3_Bool_Bool_Bool++;
153
+ counter_Tuple3_Bool_Bool_Bool %= size_Tuple3_Bool_Bool_Bool;
154
+ if (memory_Tuple3_Bool_Bool_Bool[counter_Tuple3_Bool_Bool_Bool].mark < Counter) { x = memory_Tuple3_Bool_Bool_Bool + counter_Tuple3_Bool_Bool_Bool; break; }
155
+ }
156
+ x->value.Tuple3.member0 = member0;
157
+ x->value.Tuple3.member1 = member1;
158
+ x->value.Tuple3.member2 = member2;
159
+ return x;
160
+ }
161
+ static void mark_Tuple3_Bool_Bool_Bool(struct Tuple3_Bool_Bool_Bool* x, int mark) {
162
+ x->mark = mark;
163
+ }
164
+ static int init_btnMode() {
165
+ return 0;
166
+ }
167
+ static int init_btnNext() {
168
+ return 0;
169
+ }
170
+ static int init_btnRotate() {
171
+ return 0;
172
+ }
173
+ static int node_counter(int pulse100ms, int counter_at_last, int* output) {
174
+ int _tmp000;
175
+ if (pulse100ms == 1) {
176
+ _tmp000 = _plus_(counter_at_last, 1);
177
+ }
178
+ else if (pulse100ms == 0) {
179
+ _tmp000 = counter_at_last;
180
+ }
181
+ *output = _parcent_(_tmp000, 10);
182
+ return 1;
183
+ }
184
+ static int init_counter() {
185
+ return 0;
186
+ }
187
+ static int node_curMode(int btnMode_at_last, int btnMode, int curMode_at_last, int* output) {
188
+ int _tmp002;
189
+ int _tmp001;
190
+ _tmp002 = positiveEdge_0(btnMode_at_last, btnMode);
191
+ if (_tmp002 == 1) {
192
+ _tmp001 = nextMode_0(curMode_at_last);
193
+ }
194
+ else if (_tmp002 == 0) {
195
+ _tmp001 = curMode_at_last;
196
+ }
197
+ *output = _tmp001;
198
+ return 1;
199
+ }
200
+ static int init_curMode() {
201
+ return 0;
202
+ }
203
+ static int node_curPos(int btnNext_at_last, int btnNext, int curPos_at_last, int* output) {
204
+ int _tmp004;
205
+ int _tmp003;
206
+ _tmp004 = positiveEdge_0(btnNext_at_last, btnNext);
207
+ if (_tmp004 == 1) {
208
+ _tmp003 = nextPos_0(curPos_at_last);
209
+ }
210
+ else if (_tmp004 == 0) {
211
+ _tmp003 = curPos_at_last;
212
+ }
213
+ *output = _tmp003;
214
+ return 1;
215
+ }
216
+ static int init_curPos() {
217
+ return 0;
218
+ }
219
+ static int node_pulse1s(int counter, int counter_at_last, int* output) {
220
+ *output = _anpersand_anpersand(_eq__eq_(counter, 0), _exclamation__eq_(counter_at_last, 0));
221
+ return 1;
222
+ }
223
+ static int node_flash(int counter, int* output) {
224
+ *output = _lt_(counter, 5);
225
+ return 1;
226
+ }
227
+ static int node_anonymous69880537178160(int curMode, int btnRotate_at_last, int btnRotate, int curPos, struct Tuple3_Int_Int_Int** output) {
228
+ int _tmp006;
229
+ struct Tuple3_Int_Int_Int* _tmp005;
230
+ _tmp006 = _anpersand_anpersand(editable_0(curMode), positiveEdge_0(btnRotate_at_last, btnRotate));
231
+ if (_tmp006 == 1) {
232
+ struct Tuple3_Int_Int_Int* _tmp007;
233
+ if (curPos == 0) {
234
+ _tmp007 = Tuple3_0(1, 0, 0);
235
+ }
236
+ else if (curPos == 1) {
237
+ _tmp007 = Tuple3_0(0, 1, 0);
238
+ }
239
+ else if (curPos == 2) {
240
+ _tmp007 = Tuple3_0(0, 0, 1);
241
+ }
242
+ _tmp005 = _tmp007;
243
+ }
244
+ else if (_tmp006 == 0) {
245
+ _tmp005 = Tuple3_0(0, 0, 0);
246
+ }
247
+ *output = _tmp005;
248
+ return 1;
249
+ }
250
+ static int node_anonymous69880541228320(int curMode, int flash, int curPos, struct Tuple3_Bool_Bool_Bool** output) {
251
+ int _tmp009;
252
+ struct Tuple3_Bool_Bool_Bool* _tmp008;
253
+ _tmp009 = _anpersand_anpersand(editable_0(curMode), flash);
254
+ if (_tmp009 == 1) {
255
+ struct Tuple3_Bool_Bool_Bool* _tmp010;
256
+ if (curPos == 0) {
257
+ _tmp010 = Tuple3_1(1, 0, 0);
258
+ }
259
+ else if (curPos == 1) {
260
+ _tmp010 = Tuple3_1(0, 1, 0);
261
+ }
262
+ else if (curPos == 2) {
263
+ _tmp010 = Tuple3_1(0, 0, 1);
264
+ }
265
+ _tmp008 = _tmp010;
266
+ }
267
+ else if (_tmp009 == 0) {
268
+ _tmp008 = Tuple3_1(0, 0, 0);
269
+ }
270
+ *output = _tmp008;
271
+ return 1;
272
+ }
273
+ static int node_dh(struct Tuple3_Int_Int_Int* anonymous69880537178160, int* output) {
274
+ int _tmp011;
275
+ if (1) {
276
+ int pvar0_dh = anonymous69880537178160->value.Tuple3.member0;
277
+ int pvar0_dm = anonymous69880537178160->value.Tuple3.member1;
278
+ int pvar0_ds = anonymous69880537178160->value.Tuple3.member2;
279
+ _tmp011 = pvar0_dh;
280
+ }
281
+ *output = _tmp011;
282
+ return 1;
283
+ }
284
+ static int node_dm(struct Tuple3_Int_Int_Int* anonymous69880537178160, int* output) {
285
+ int _tmp012;
286
+ if (1) {
287
+ int pvar1_dh = anonymous69880537178160->value.Tuple3.member0;
288
+ int pvar1_dm = anonymous69880537178160->value.Tuple3.member1;
289
+ int pvar1_ds = anonymous69880537178160->value.Tuple3.member2;
290
+ _tmp012 = pvar1_dm;
291
+ }
292
+ *output = _tmp012;
293
+ return 1;
294
+ }
295
+ static int node_ds(struct Tuple3_Int_Int_Int* anonymous69880537178160, int* output) {
296
+ int _tmp013;
297
+ if (1) {
298
+ int pvar2_dh = anonymous69880537178160->value.Tuple3.member0;
299
+ int pvar2_dm = anonymous69880537178160->value.Tuple3.member1;
300
+ int pvar2_ds = anonymous69880537178160->value.Tuple3.member2;
301
+ _tmp013 = pvar2_ds;
302
+ }
303
+ *output = _tmp013;
304
+ return 1;
305
+ }
306
+ static int node_maskHour(struct Tuple3_Bool_Bool_Bool* anonymous69880541228320, int* output) {
307
+ int _tmp014;
308
+ if (1) {
309
+ int pvar3_maskHour = anonymous69880541228320->value.Tuple3.member0;
310
+ int pvar3_maskMin = anonymous69880541228320->value.Tuple3.member1;
311
+ int pvar3_maskSec = anonymous69880541228320->value.Tuple3.member2;
312
+ _tmp014 = pvar3_maskHour;
313
+ }
314
+ *output = _tmp014;
315
+ return 1;
316
+ }
317
+ static int node_maskMin(struct Tuple3_Bool_Bool_Bool* anonymous69880541228320, int* output) {
318
+ int _tmp015;
319
+ if (1) {
320
+ int pvar4_maskHour = anonymous69880541228320->value.Tuple3.member0;
321
+ int pvar4_maskMin = anonymous69880541228320->value.Tuple3.member1;
322
+ int pvar4_maskSec = anonymous69880541228320->value.Tuple3.member2;
323
+ _tmp015 = pvar4_maskMin;
324
+ }
325
+ *output = _tmp015;
326
+ return 1;
327
+ }
328
+ static int node_maskSec(struct Tuple3_Bool_Bool_Bool* anonymous69880541228320, int* output) {
329
+ int _tmp016;
330
+ if (1) {
331
+ int pvar5_maskHour = anonymous69880541228320->value.Tuple3.member0;
332
+ int pvar5_maskMin = anonymous69880541228320->value.Tuple3.member1;
333
+ int pvar5_maskSec = anonymous69880541228320->value.Tuple3.member2;
334
+ _tmp016 = pvar5_maskSec;
335
+ }
336
+ *output = _tmp016;
337
+ return 1;
338
+ }
339
+ static int node_curTime(int pulse1s, struct Time* curTime_at_last, int dh, int dm, int ds, struct Time** output) {
340
+ struct Time* _tmp017;
341
+ if (pulse1s == 1) {
342
+ _tmp017 = roundingTime_0(proceedTime_0(curTime_at_last), dh, dm, ds);
343
+ }
344
+ else if (pulse1s == 0) {
345
+ _tmp017 = roundingTime_0(curTime_at_last, dh, dm, ds);
346
+ }
347
+ *output = _tmp017;
348
+ return 1;
349
+ }
350
+ static struct Time* init_curTime() {
351
+ return Time_0(0, 0, 0);
352
+ }
353
+ static int node_hour(struct Time* curTime, int* output) {
354
+ int _tmp018;
355
+ if (1) {
356
+ struct Time* pvar6_curTime = curTime;
357
+ int pvar6_hour = curTime->value.Time.member0;
358
+ int pvar6_min = curTime->value.Time.member1;
359
+ int pvar6_sec = curTime->value.Time.member2;
360
+ _tmp018 = pvar6_hour;
361
+ }
362
+ *output = _tmp018;
363
+ return 1;
364
+ }
365
+ static int init_hour() {
366
+ struct Time* _tmp020;
367
+ int _tmp019;
368
+ _tmp020 = Time_0(0, 0, 0);
369
+ if (1) {
370
+ struct Time* pvar7_curTime = _tmp020;
371
+ int pvar7_hour = _tmp020->value.Time.member0;
372
+ int pvar7_min = _tmp020->value.Time.member1;
373
+ int pvar7_sec = _tmp020->value.Time.member2;
374
+ _tmp019 = pvar7_hour;
375
+ }
376
+ return _tmp019;
377
+ }
378
+ static int node_min(struct Time* curTime, int* output) {
379
+ int _tmp021;
380
+ if (1) {
381
+ struct Time* pvar8_curTime = curTime;
382
+ int pvar8_hour = curTime->value.Time.member0;
383
+ int pvar8_min = curTime->value.Time.member1;
384
+ int pvar8_sec = curTime->value.Time.member2;
385
+ _tmp021 = pvar8_min;
386
+ }
387
+ *output = _tmp021;
388
+ return 1;
389
+ }
390
+ static int init_min() {
391
+ struct Time* _tmp023;
392
+ int _tmp022;
393
+ _tmp023 = Time_0(0, 0, 0);
394
+ if (1) {
395
+ struct Time* pvar9_curTime = _tmp023;
396
+ int pvar9_hour = _tmp023->value.Time.member0;
397
+ int pvar9_min = _tmp023->value.Time.member1;
398
+ int pvar9_sec = _tmp023->value.Time.member2;
399
+ _tmp022 = pvar9_min;
400
+ }
401
+ return _tmp022;
402
+ }
403
+ static int node_sec(struct Time* curTime, int* output) {
404
+ int _tmp024;
405
+ if (1) {
406
+ struct Time* pvar10_curTime = curTime;
407
+ int pvar10_hour = curTime->value.Time.member0;
408
+ int pvar10_min = curTime->value.Time.member1;
409
+ int pvar10_sec = curTime->value.Time.member2;
410
+ _tmp024 = pvar10_sec;
411
+ }
412
+ *output = _tmp024;
413
+ return 1;
414
+ }
415
+ static int init_sec() {
416
+ struct Time* _tmp026;
417
+ int _tmp025;
418
+ _tmp026 = Time_0(0, 0, 0);
419
+ if (1) {
420
+ struct Time* pvar11_curTime = _tmp026;
421
+ int pvar11_hour = _tmp026->value.Time.member0;
422
+ int pvar11_min = _tmp026->value.Time.member1;
423
+ int pvar11_sec = _tmp026->value.Time.member2;
424
+ _tmp025 = pvar11_sec;
425
+ }
426
+ return _tmp025;
427
+ }
428
+ static struct Time* roundingTime_0(struct Time* t, int dh, int dm, int ds) {
429
+ struct Time* _tmp027;
430
+ if (1) {
431
+ int pvar12_h = t->value.Time.member0;
432
+ int pvar12_m = t->value.Time.member1;
433
+ int pvar12_s = t->value.Time.member2;
434
+ _tmp027 = Time_0(_parcent_(_plus_(pvar12_h, dh), 24), _parcent_(_plus_(pvar12_m, dm), 60), _parcent_(_plus_(pvar12_s, ds), 60));
435
+ }
436
+ return _tmp027;
437
+ }
438
+ static struct Time* proceedTime_0(struct Time* t) {
439
+ struct Time* _tmp028;
440
+ if (1) {
441
+ int _tmp030;
442
+ int pvar13_h = t->value.Time.member0;
443
+ int pvar13_m = t->value.Time.member1;
444
+ int pvar13_s = t->value.Time.member2;
445
+ struct Time* _tmp029;
446
+ _tmp030 = _plus_(pvar13_s, 1);
447
+ if (1) {
448
+ int _tmp032;
449
+ int pvar14_newS = _tmp030;
450
+ struct Time* _tmp031;
451
+ _tmp032 = _plus_(pvar13_m, _slash_(pvar14_newS, 60));
452
+ if (1) {
453
+ int _tmp034;
454
+ int pvar15_newM = _tmp032;
455
+ struct Time* _tmp033;
456
+ _tmp034 = _plus_(pvar13_h, _slash_(pvar15_newM, 60));
457
+ if (1) {
458
+ int pvar16_newH = _tmp034;
459
+ _tmp033 = Time_0(_parcent_(pvar16_newH, 24), _parcent_(pvar15_newM, 60), _parcent_(pvar14_newS, 60));
460
+ }
461
+ _tmp031 = _tmp033;
462
+ }
463
+ _tmp029 = _tmp031;
464
+ }
465
+ _tmp028 = _tmp029;
466
+ }
467
+ return _tmp028;
468
+ }
469
+ static int editable_0(int m) {
470
+ int _tmp035;
471
+ if (m == 0) {
472
+ _tmp035 = 0;
473
+ }
474
+ else if (m == 1) {
475
+ _tmp035 = 1;
476
+ }
477
+ return _tmp035;
478
+ }
479
+ static int positiveEdge_0(int a, int b) {
480
+ return _anpersand_anpersand(_at__exclamation_(a), b);
481
+ }
482
+ static int nextMode_0(int m) {
483
+ int _tmp036;
484
+ if (m == 0) {
485
+ _tmp036 = 1;
486
+ }
487
+ else if (m == 1) {
488
+ _tmp036 = 0;
489
+ }
490
+ return _tmp036;
491
+ }
492
+ static int nextPos_0(int p) {
493
+ int _tmp037;
494
+ if (p == 0) {
495
+ _tmp037 = 1;
496
+ }
497
+ else if (p == 1) {
498
+ _tmp037 = 2;
499
+ }
500
+ else if (p == 2) {
501
+ _tmp037 = 0;
502
+ }
503
+ return _tmp037;
504
+ }
505
+ static void refreshMark() {
506
+ int i;
507
+ for (i = 0; i < size_Time; i++) {
508
+ if (memory_Time[i].mark < Counter) memory_Time[i].mark = 0;
509
+ else memory_Time[i].mark -= Counter - 1;
510
+ }
511
+ for (i = 0; i < size_Tuple3_Int_Int_Int; i++) {
512
+ if (memory_Tuple3_Int_Int_Int[i].mark < Counter) memory_Tuple3_Int_Int_Int[i].mark = 0;
513
+ else memory_Tuple3_Int_Int_Int[i].mark -= Counter - 1;
514
+ }
515
+ for (i = 0; i < size_Tuple3_Bool_Bool_Bool; i++) {
516
+ if (memory_Tuple3_Bool_Bool_Bool[i].mark < Counter) memory_Tuple3_Bool_Bool_Bool[i].mark = 0;
517
+ else memory_Tuple3_Bool_Bool_Bool[i].mark -= Counter - 1;
518
+ }
519
+ }
520
+ void ActivateLCDClock() {
521
+ int current_side = 0, last_side = 1;
522
+ node_memory_btnMode[last_side] = init_btnMode();
523
+ node_memory_btnNext[last_side] = init_btnNext();
524
+ node_memory_btnRotate[last_side] = init_btnRotate();
525
+ node_memory_counter[last_side] = init_counter();
526
+ node_memory_curMode[last_side] = init_curMode();
527
+ node_memory_curPos[last_side] = init_curPos();
528
+ node_memory_curTime[last_side] = init_curTime();
529
+ mark_Time(node_memory_curTime[last_side], 14);
530
+ node_memory_hour[last_side] = init_hour();
531
+ node_memory_min[last_side] = init_min();
532
+ node_memory_sec[last_side] = init_sec();
533
+ Counter = NodeSize + 1;
534
+ refreshMark();
535
+ while (1) {
536
+ Counter = 1;
537
+ Input(&node_memory_btnMode[current_side], &node_memory_btnNext[current_side], &node_memory_btnRotate[current_side], &node_memory_pulse100ms[current_side]);
538
+ node_counter(node_memory_pulse100ms[current_side], node_memory_counter[last_side], &node_memory_counter[current_side]);
539
+ Counter++;
540
+ node_curMode(node_memory_btnMode[last_side], node_memory_btnMode[current_side], node_memory_curMode[last_side], &node_memory_curMode[current_side]);
541
+ Counter++;
542
+ node_curPos(node_memory_btnNext[last_side], node_memory_btnNext[current_side], node_memory_curPos[last_side], &node_memory_curPos[current_side]);
543
+ Counter++;
544
+ node_pulse1s(node_memory_counter[current_side], node_memory_counter[last_side], &node_memory_pulse1s[current_side]);
545
+ Counter++;
546
+ node_flash(node_memory_counter[current_side], &node_memory_flash[current_side]);
547
+ Counter++;
548
+ node_anonymous69880537178160(node_memory_curMode[current_side], node_memory_btnRotate[last_side], node_memory_btnRotate[current_side], node_memory_curPos[current_side], &node_memory_anonymous69880537178160[current_side]);
549
+ mark_Tuple3_Int_Int_Int(node_memory_anonymous69880537178160[current_side], Counter + 4);
550
+ Counter++;
551
+ node_anonymous69880541228320(node_memory_curMode[current_side], node_memory_flash[current_side], node_memory_curPos[current_side], &node_memory_anonymous69880541228320[current_side]);
552
+ mark_Tuple3_Bool_Bool_Bool(node_memory_anonymous69880541228320[current_side], Counter + 6);
553
+ Counter++;
554
+ node_dh(node_memory_anonymous69880537178160[current_side], &node_memory_dh[current_side]);
555
+ Counter++;
556
+ node_dm(node_memory_anonymous69880537178160[current_side], &node_memory_dm[current_side]);
557
+ Counter++;
558
+ node_ds(node_memory_anonymous69880537178160[current_side], &node_memory_ds[current_side]);
559
+ Counter++;
560
+ node_maskHour(node_memory_anonymous69880541228320[current_side], &node_memory_maskHour[current_side]);
561
+ Counter++;
562
+ node_maskMin(node_memory_anonymous69880541228320[current_side], &node_memory_maskMin[current_side]);
563
+ Counter++;
564
+ node_maskSec(node_memory_anonymous69880541228320[current_side], &node_memory_maskSec[current_side]);
565
+ Counter++;
566
+ node_curTime(node_memory_pulse1s[current_side], node_memory_curTime[last_side], node_memory_dh[current_side], node_memory_dm[current_side], node_memory_ds[current_side], &node_memory_curTime[current_side]);
567
+ mark_Time(node_memory_curTime[current_side], Counter + 17);
568
+ Counter++;
569
+ node_hour(node_memory_curTime[current_side], &node_memory_hour[current_side]);
570
+ Counter++;
571
+ node_min(node_memory_curTime[current_side], &node_memory_min[current_side]);
572
+ Counter++;
573
+ node_sec(node_memory_curTime[current_side], &node_memory_sec[current_side]);
574
+ Counter++;
575
+ Output(&node_memory_hour[current_side], &node_memory_min[current_side], &node_memory_sec[current_side], &node_memory_maskHour[current_side], &node_memory_maskMin[current_side], &node_memory_maskSec[current_side]);
576
+ refreshMark();
577
+ current_side ^= 1;
578
+ last_side ^= 1;
579
+ }
580
+ }
@@ -0,0 +1,6 @@
1
+ #ifndef LCDCLOCK_H
2
+ #define LCDCLOCK_H
3
+
4
+ void ActivateLCDClock();
5
+
6
+ #endif /* end of include guard */
@@ -0,0 +1,93 @@
1
+ module LCDClock
2
+ in
3
+ btnMode(False) : Bool, # Is mode-button pushed now?
4
+ btnNext(False) : Bool, # Is next-button pushed now?
5
+ btnRotate(False) : Bool, # Is rotate-button pushed now?
6
+ pulse100ms : Bool # input to be True only once per 100ms
7
+ out
8
+ hour, min, sec, # current time to display
9
+ maskHour, maskMin, maskSec # Is it now needed to display -- instead of two-digits?
10
+ use
11
+ Std
12
+
13
+ # Functions
14
+ # --------------------
15
+
16
+ type Mode = Normal | Edit
17
+ type EditPos = HourPos | MinPos | SecPos
18
+ type Time = Time(Int, Int, Int)
19
+
20
+ func nextMode(m) = m of Normal -> Edit, Edit -> Normal
21
+
22
+ func editable(m) = m of Normal -> False, Edit -> True
23
+
24
+ func nextPos(p) = p of:
25
+ HourPos -> MinPos
26
+ MinPos -> SecPos
27
+ SecPos -> HourPos
28
+
29
+ func positiveEdge(a, b) = !a && b
30
+
31
+ # proceed Time by 1sec
32
+ func proceedTime(t) = {
33
+ Time(h, m, s) = t
34
+ newS = s + 1
35
+ newM = m + (newS / 60)
36
+ newH = h + (newM / 60)
37
+ Time(newH % 24, newM % 60, newS % 60)
38
+ }
39
+
40
+ func roundingTime(t, dh, dm, ds) = {
41
+ Time(h, m, s) = t
42
+ Time((h + dh) % 24, (m + dm) % 60, (s + ds) % 60)
43
+ }
44
+
45
+ # Nodes
46
+ # --------------------
47
+
48
+ # mod-10 counter incremented by every 100ms
49
+ node init[0] counter : Int =
50
+ (if pulse100ms then counter@last + 1 else counter@last) % 10
51
+
52
+ # time-varying value to be True only once per 1sec
53
+ node pulse1s : Bool =
54
+ counter == 0 && counter@last != 0
55
+
56
+ # time-varying value switching True/False by every 500ms
57
+ node flash : Bool =
58
+ counter < 5
59
+
60
+ # time-varying value representing current time-set mode
61
+ node init[Normal] curMode : Mode =
62
+ if btnMode@last `positiveEdge` btnMode then curMode@last.nextMode else curMode@last
63
+
64
+ # time-varying value representing current editing-cursor-position
65
+ node init[HourPos] curPos : EditPos =
66
+ if btnNext@last `positiveEdge` btnNext then curPos@last.nextPos else curPos@last
67
+
68
+ # time-varying value representing diffs to add to current time.
69
+ node (dh, dm, ds) : (Int, Int, Int) =
70
+ if curMode.editable && (btnRotate@last `positiveEdge` btnRotate) then
71
+ curPos of:
72
+ HourPos -> (1, 0, 0)
73
+ MinPos -> (0, 1, 0)
74
+ SecPos -> (0, 0, 1)
75
+ else
76
+ (0, 0, 0)
77
+
78
+ # time-varying value representing current time
79
+ node init[Time(0, 0, 0)] Time(hour, min, sec) as curTime =
80
+ if pulse1s then
81
+ curTime@last.proceedTime.roundingTime(dh, dm, ds)
82
+ else
83
+ curTime@last.roundingTime(dh, dm, ds)
84
+
85
+ # time-varying value representing need of masking
86
+ node (maskHour, maskMin, maskSec) =
87
+ if curMode.editable && flash then
88
+ curPos of:
89
+ HourPos -> (True, False, False)
90
+ MinPos -> (False, True, False)
91
+ SecPos -> (False, False, True)
92
+ else
93
+ (False, False, False)
@@ -0,0 +1,42 @@
1
+ #include "LCDClock.h"
2
+ #include "mbed.h"
3
+ #include "C12832_lcd.h"
4
+
5
+ C12832_LCD lcd;
6
+ Ticker t;
7
+ DigitalIn center(p14), up(p15), right(p16);
8
+ int pulse100_flag = 0;
9
+
10
+ void timer_callback() {
11
+ pulse100_flag = 1;
12
+ }
13
+
14
+ void display(int n, int mask, char c) {
15
+ if (mask) {
16
+ lcd.printf("--%c", c);
17
+ } else {
18
+ lcd.printf("%02d%c", n, c);
19
+ }
20
+ }
21
+
22
+ void Input(int* btnMode, int* btnNext, int* btnRotate, int* pulse100ms) {
23
+ *btnMode = center.read();
24
+ *btnNext = right.read();
25
+ *btnRotate = up.read();
26
+ *pulse100ms = pulse100_flag;
27
+ pulse100_flag = 0;
28
+ }
29
+
30
+ void Output(int* hour, int* min, int* sec, int* maskHour, int* maskMin, int* maskSec) {
31
+ lcd.cls();
32
+ lcd.locate(45, 10);
33
+ display(*hour, *maskHour, ':');
34
+ display(*min, *maskMin, ':');
35
+ display(*sec, *maskSec, '\n');
36
+ wait(0.01);
37
+ }
38
+
39
+ int main() {
40
+ t.attach(&timer_callback, 0.1);
41
+ ActivateLCDClock();
42
+ }
@@ -0,0 +1,24 @@
1
+ # LCD Clock
2
+
3
+ This is a program of the digital clock.
4
+
5
+ ## Functions
6
+ * Center (push) button (of joystick) toggles on-off of time-set mode.
7
+ * Right button moves cursor of time-set targets (hour, minute and second).
8
+ * Up button raises time-set target's value (+1) if time-set mode is on.
9
+
10
+ ## Target device
11
+ mbed LPC1768 with application board
12
+
13
+ ## IO library
14
+ Following libraries are required.
15
+ * Basic IO library `mbed` (official)
16
+ * LCD's manipulation library `C12832_lcd` (third-party)
17
+
18
+ Both they are available from official library repository of *mbed.org*.
19
+
20
+ ## Sample
21
+
22
+ ![Sample Image](https://raw.githubusercontent.com/wiki/sawaken/emfrp/images/LCDClock.jpg)
23
+
24
+ * [Watch on YouTube](https://www.youtube.com/watch?v=Fah2iJAaouo)
@@ -0,0 +1,55 @@
1
+ digraph LCDClock {
2
+ pulse100ms [label = "pulse100ms : Bool", shape = "invhouse"];
3
+ counter [label = "counter : Int"];
4
+ pulse1s [label = "pulse1s : Bool"];
5
+ btnMode [label = "btnMode : Bool", shape = "invhouse"];
6
+ curMode [label = "curMode : Mode"];
7
+ btnRotate [label = "btnRotate : Bool", shape = "invhouse"];
8
+ btnNext [label = "btnNext : Bool", shape = "invhouse"];
9
+ curPos [label = "curPos : TPos"];
10
+ anonymous69998036981860 [label = "anonymous69998036981860 : Tuple3[Int, Int, Int]"];
11
+ dh [label = "dh : Int"];
12
+ dm [label = "dm : Int"];
13
+ ds [label = "ds : Int"];
14
+ curTime [label = "curTime : Time"];
15
+ hour [label = "hour : Int", style = filled, fillcolor = "#e4e4e4"];
16
+ min [label = "min : Int", style = filled, fillcolor = "#e4e4e4"];
17
+ sec [label = "sec : Int", style = filled, fillcolor = "#e4e4e4"];
18
+ flash [label = "flash : Bool"];
19
+ anonymous69998035646520 [label = "anonymous69998035646520 : Tuple3[Bool, Bool, Bool]"];
20
+ maskHour [label = "maskHour : Bool", style = filled, fillcolor = "#e4e4e4"];
21
+ maskMin [label = "maskMin : Bool", style = filled, fillcolor = "#e4e4e4"];
22
+ maskSec [label = "maskSec : Bool", style = filled, fillcolor = "#e4e4e4"];
23
+ curTime -> hour;
24
+ pulse1s -> curTime;
25
+ counter -> pulse1s;
26
+ pulse100ms -> counter;
27
+ counter -> counter [style = dashed];
28
+ counter -> pulse1s [style = dashed];
29
+ curTime -> curTime [style = dashed];
30
+ dh -> curTime;
31
+ anonymous69998036981860 -> dh;
32
+ curMode -> anonymous69998036981860;
33
+ btnMode -> curMode [style = dashed];
34
+ btnMode -> curMode;
35
+ curMode -> curMode [style = dashed];
36
+ btnRotate -> anonymous69998036981860 [style = dashed];
37
+ btnRotate -> anonymous69998036981860;
38
+ curPos -> anonymous69998036981860;
39
+ btnNext -> curPos [style = dashed];
40
+ btnNext -> curPos;
41
+ curPos -> curPos [style = dashed];
42
+ dm -> curTime;
43
+ anonymous69998036981860 -> dm;
44
+ ds -> curTime;
45
+ anonymous69998036981860 -> ds;
46
+ curTime -> min;
47
+ curTime -> sec;
48
+ anonymous69998035646520 -> maskHour;
49
+ curMode -> anonymous69998035646520;
50
+ flash -> anonymous69998035646520;
51
+ counter -> flash;
52
+ curPos -> anonymous69998035646520;
53
+ anonymous69998035646520 -> maskMin;
54
+ anonymous69998035646520 -> maskSec;
55
+ }
@@ -68,7 +68,7 @@ module Emfrp
68
68
  end
69
69
 
70
70
  parser :end_of_def do # -> ()
71
- many(tabspace) > newline > many(ws)
71
+ many(ws_without_newline) > newline > many(ws)
72
72
  end
73
73
 
74
74
  parser :ident_begin_lower do # -> SSymbol
@@ -1,3 +1,3 @@
1
1
  module Emfrp
2
- VERSION = "0.1.1"
2
+ VERSION = "0.1.2"
3
3
  end
@@ -0,0 +1,90 @@
1
+ module LCDClock
2
+ in
3
+ btnMode(False) : Bool, # Is mode-button pushed now?
4
+ btnNext(False) : Bool, # Is next-button pushed now?
5
+ btnRotate(False) : Bool, # Is rotate-button pushed now?
6
+ pulse100ms : Bool # input to be True only once per 100ms
7
+ out
8
+ hour, min, sec, # current time to display
9
+ maskHour, maskMin, maskSec # Is it now needed to display -- instead of two-digits?
10
+ use
11
+ Std
12
+
13
+ # Functions
14
+ # --------------------
15
+
16
+ type Mode = Normal | Edit
17
+ type TPos = HPos | MPos | SPos
18
+ type Time = Time(Int, Int, Int)
19
+
20
+ func nextMode(m) = m of Normal -> Edit, Edit -> Normal
21
+
22
+ func editable(m) = m of Normal -> False, Edit -> True
23
+
24
+ func nextPos(p) = p of HPos -> MPos, MPos -> SPos, SPos -> HPos
25
+
26
+ func positiveEdge(a, b) = !a && b
27
+
28
+ # proceed Time by 1sec
29
+ func proceedTime(t) = {
30
+ Time(h, m, s) = t
31
+ newS = s + 1
32
+ newM = m + (newS / 60)
33
+ newH = h + (newM / 60)
34
+ Time(newH % 24, newM % 60, newS % 60)
35
+ }
36
+
37
+ func roundingTime(t, dh, dm, ds) = {
38
+ Time(h, m, s) = t
39
+ Time((h + dh) % 24, (m + dm) % 60, (s + ds) % 60)
40
+ }
41
+
42
+ # Nodes
43
+ # --------------------
44
+
45
+ # mod-10 counter incremented by every 100ms
46
+ node init[0] counter : Int =
47
+ (if pulse100ms then counter@last + 1 else counter@last) % 10
48
+
49
+ # time-varying value to be True only once per 1sec
50
+ node pulse1s : Bool =
51
+ counter == 0 && counter@last != 0
52
+
53
+ # time-varying value switching True/False by every 500ms
54
+ node flash : Bool =
55
+ counter < 5
56
+
57
+ # time-varying value representing current time-set mode
58
+ node init[Normal] curMode : Mode =
59
+ if btnMode@last `positiveEdge` btnMode then curMode@last.nextMode else curMode@last
60
+
61
+ # time-varying value representing current editing-cursor-position
62
+ node init[HPos] curPos : TPos =
63
+ if btnNext@last `positiveEdge` btnNext then curPos@last.nextPos else curPos@last
64
+
65
+ # time-varying value representing diffs to add to current time.
66
+ node (dh, dm, ds) : (Int, Int, Int) =
67
+ if curMode.editable && (btnRotate@last `positiveEdge` btnRotate) then
68
+ curPos of:
69
+ HPos -> (1, 0, 0)
70
+ MPos -> (0, 1, 0)
71
+ SPos -> (0, 0, 1)
72
+ else
73
+ (0, 0, 0)
74
+
75
+ # time-varying value representing current time
76
+ node init[Time(0, 0, 0)] Time(hour, min, sec) as curTime =
77
+ if pulse1s then
78
+ curTime@last.proceedTime.roundingTime(dh, dm, ds)
79
+ else
80
+ curTime@last.roundingTime(dh, dm, ds)
81
+
82
+ # time-varying value representing need of masking
83
+ node (maskHour, maskMin, maskSec) =
84
+ if curMode.editable && flash then
85
+ curPos of:
86
+ HPos -> (True, False, False)
87
+ MPos -> (False, True, False)
88
+ SPos -> (False, False, True)
89
+ else
90
+ (False, False, False)
@@ -0,0 +1,26 @@
1
+ #include "LCDClock.h"
2
+ #include <stdio.h>
3
+ #include <stdlib.h>
4
+
5
+ void display(int n, int mask, char c) {
6
+ if (mask) {
7
+ printf("--%c", c);
8
+ } else {
9
+ printf("%02d%c", n, c);
10
+ }
11
+ }
12
+
13
+ void Input(int* btnMode, int* btnNext, int* btnRotate, int* pulse100ms) {
14
+ if (scanf("%d %d %d %d", btnMode, btnNext, btnRotate, pulse100ms) == EOF) {
15
+ exit(0);
16
+ }
17
+ }
18
+ void Output(int* hour, int* min, int* sec, int* maskHour, int* maskMin, int* maskSec) {
19
+ display(*hour, *maskHour, ':');
20
+ display(*min, *maskMin, ':');
21
+ display(*sec, *maskSec, '\n');
22
+ }
23
+
24
+ int main() {
25
+ ActivateLCDClock();
26
+ }
@@ -0,0 +1,2 @@
1
+ NAME = "LCDClock"
2
+ load File.expand_path('../../Rakefile.common', __FILE__)
@@ -0,0 +1,60 @@
1
+ 00:00:00
2
+ 00:00:00
3
+ 00:00:00
4
+ 00:00:00
5
+ 00:00:00
6
+ 00:00:00
7
+ --:00:00
8
+ --:00:00
9
+ --:00:00
10
+ 00:00:00
11
+ 00:00:00
12
+ 00:00:00
13
+ 00:00:00
14
+ 00:00:00
15
+ --:00:01
16
+ --:00:01
17
+ --:00:01
18
+ --:00:01
19
+ --:00:01
20
+ 00:00:01
21
+ 00:00:01
22
+ 00:00:01
23
+ 00:00:01
24
+ 00:00:01
25
+ --:00:02
26
+ --:00:02
27
+ --:00:02
28
+ --:00:02
29
+ --:00:02
30
+ 01:00:02
31
+ 01:00:02
32
+ 01:00:02
33
+ 01:00:02
34
+ 01:00:02
35
+ 01:--:03
36
+ 01:--:03
37
+ 01:--:03
38
+ 01:--:03
39
+ 01:--:03
40
+ 01:00:03
41
+ 01:00:03
42
+ 01:00:03
43
+ 01:00:03
44
+ 01:00:03
45
+ 01:00:--
46
+ 01:00:--
47
+ 01:00:--
48
+ 01:00:--
49
+ 01:00:--
50
+ 01:00:04
51
+ 01:00:04
52
+ 01:00:04
53
+ 01:00:04
54
+ 01:00:04
55
+ --:00:05
56
+ --:00:05
57
+ --:00:05
58
+ --:00:05
59
+ --:00:05
60
+ 01:00:05
@@ -0,0 +1,60 @@
1
+ 00:00:00
2
+ 00:00:00
3
+ 00:00:00
4
+ 00:00:00
5
+ 00:00:00
6
+ 00:00:00
7
+ --:00:00
8
+ --:00:00
9
+ --:00:00
10
+ 00:00:00
11
+ 00:00:00
12
+ 00:00:00
13
+ 00:00:00
14
+ 00:00:00
15
+ --:00:01
16
+ --:00:01
17
+ --:00:01
18
+ --:00:01
19
+ --:00:01
20
+ 00:00:01
21
+ 00:00:01
22
+ 00:00:01
23
+ 00:00:01
24
+ 00:00:01
25
+ --:00:02
26
+ --:00:02
27
+ --:00:02
28
+ --:00:02
29
+ --:00:02
30
+ 01:00:02
31
+ 01:00:02
32
+ 01:00:02
33
+ 01:00:02
34
+ 01:00:02
35
+ 01:--:03
36
+ 01:--:03
37
+ 01:--:03
38
+ 01:--:03
39
+ 01:--:03
40
+ 01:00:03
41
+ 01:00:03
42
+ 01:00:03
43
+ 01:00:03
44
+ 01:00:03
45
+ 01:00:--
46
+ 01:00:--
47
+ 01:00:--
48
+ 01:00:--
49
+ 01:00:--
50
+ 01:00:04
51
+ 01:00:04
52
+ 01:00:04
53
+ 01:00:04
54
+ 01:00:04
55
+ --:00:05
56
+ --:00:05
57
+ --:00:05
58
+ --:00:05
59
+ --:00:05
60
+ 01:00:05
@@ -0,0 +1,60 @@
1
+ 0 0 0 0
2
+ 0 0 0 0
3
+ 0 0 0 0
4
+ 0 0 0 0
5
+ 0 0 0 0
6
+ 0 0 0 1
7
+ 1 0 0 1
8
+ 0 0 0 1
9
+ 0 0 0 1
10
+ 0 0 0 1
11
+ 0 0 0 1
12
+ 0 0 0 1
13
+ 0 0 0 1
14
+ 0 0 0 1
15
+ 0 0 0 1
16
+ 0 0 0 1
17
+ 0 0 0 1
18
+ 0 0 0 1
19
+ 0 0 0 1
20
+ 0 0 0 1
21
+ 0 0 0 1
22
+ 0 0 0 1
23
+ 0 0 0 1
24
+ 0 0 0 1
25
+ 0 0 1 1
26
+ 0 0 0 1
27
+ 0 0 0 1
28
+ 0 0 0 1
29
+ 0 0 0 1
30
+ 0 0 0 1
31
+ 0 0 0 1
32
+ 0 0 0 1
33
+ 0 1 0 1
34
+ 0 0 0 1
35
+ 0 0 0 1
36
+ 0 0 0 1
37
+ 0 0 0 1
38
+ 0 0 0 1
39
+ 0 0 0 1
40
+ 0 0 0 1
41
+ 0 0 0 1
42
+ 0 0 0 1
43
+ 0 0 0 1
44
+ 0 1 0 1
45
+ 0 0 0 1
46
+ 0 0 0 1
47
+ 0 0 0 1
48
+ 0 0 0 1
49
+ 0 0 0 1
50
+ 0 0 0 1
51
+ 0 0 0 1
52
+ 0 1 0 1
53
+ 0 0 0 1
54
+ 0 0 0 1
55
+ 0 0 0 1
56
+ 0 0 0 1
57
+ 0 0 0 1
58
+ 0 0 0 1
59
+ 0 0 0 1
60
+ 0 0 0 1
@@ -1,8 +1,8 @@
1
1
  module UseData out x use Std
2
2
 
3
3
 
4
- data one = 1
5
- data two = one + 1
6
- data three = two + 1
4
+ data one = 1 # one
5
+ data two = one + 1 # two
6
+ data three = two + 1 # three
7
7
 
8
8
  node x = three
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: emfrp
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kensuke Sawada
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-01-01 00:00:00.000000000 Z
11
+ date: 2016-01-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: colorize
@@ -83,6 +83,14 @@ files:
83
83
  - bin/emfrp
84
84
  - bin/emfrpi
85
85
  - emfrp.gemspec
86
+ - examples/LCDClock/LCDClock.c
87
+ - examples/LCDClock/LCDClock.h
88
+ - examples/LCDClock/LCDClock.mfrp
89
+ - examples/LCDClock/LCDClockMain.c
90
+ - examples/LCDClock/LCDClock_LPC1768.bin
91
+ - examples/LCDClock/README.md
92
+ - examples/LCDClock/graph.dot
93
+ - examples/LCDClock/graph.png
86
94
  - examples/LCDPositioner/LCDPositioner.c
87
95
  - examples/LCDPositioner/LCDPositioner.h
88
96
  - examples/LCDPositioner/LCDPositioner.mfrp
@@ -137,6 +145,12 @@ files:
137
145
  - tests/compiler/ComplexDataType/expected_out.txt
138
146
  - tests/compiler/ComplexDataType/graph.png
139
147
  - tests/compiler/ComplexDataType/in.txt
148
+ - tests/compiler/LCDClock/LCDClock.mfrp
149
+ - tests/compiler/LCDClock/LCDClockMain.c
150
+ - tests/compiler/LCDClock/Rakefile
151
+ - tests/compiler/LCDClock/actual_out.txt
152
+ - tests/compiler/LCDClock/expected_out.txt
153
+ - tests/compiler/LCDClock/in.txt
140
154
  - tests/compiler/LCDPositioner/LCDPositioner.mfrp
141
155
  - tests/compiler/LCDPositioner/LCDPositionerMain.c
142
156
  - tests/compiler/LCDPositioner/Rakefile