21.08.2013 Views

A State-Based Programming Model for Wireless Sensor Networks

A State-Based Programming Model for Wireless Sensor Networks

A State-Based Programming Model for Wireless Sensor Networks

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

A.4. Control Flow Mapping–Stage Two (C) 169<br />

459 __STATE_PROG_R[11] = E[68]||(!(E[17])&&E[11]);<br />

460 __STATE_PROG_R[12] = (!(E[17])&&E[19])||(!(E[17])&&E[52]);<br />

461 __STATE_PROG_R[13] = E[75]||E[74]||(!(E[46])&&E[48]);<br />

462 __STATE_PROG_R[14] = !(E[46])&&E[47];<br />

463 __STATE_PROG_R[15] = E[75]||E[74]||(!(E[46])&&E[24]);<br />

464 __STATE_PROG_R[16] = E[9]||(!(E[49])&&E[51]);<br />

465 __STATE_PROG_R[17] = !(E[49])&&E[50];<br />

466 __STATE_PROG_R[18] = E[9]||(!(E[49])&&E[21]);<br />

467 __STATE_PROG_R[19] = E[70]||(!(E[7])&&E[61]);<br />

468 __STATE_PROG_R[20] = !(E[7])&&E[62];<br />

469 __STATE_PROG_R[21] = E[70]||(!(E[7])&&E[6]);<br />

470 __STATE_PROG__reset_input();<br />

471 return E[63];<br />

472 }<br />

473<br />

474 /* AUTOMATON RESET */<br />

475<br />

476 int STATE_PROG_reset () {<br />

477 __STATE_PROG_R[0] = _true;<br />

478 __STATE_PROG_R[1] = _false;<br />

479 __STATE_PROG_R[2] = _false;<br />

415 __STATE_PROG_A2));<br />

416 E[103] = E[31]&&(<br />

417 __STATE_PROG_A1);<br />

418 if (E[103]) {<br />

419 __STATE_PROG_A10;<br />

420 }<br />

421 E[104] = E[96]&&(<br />

422 __STATE_PROG_A2);<br />

423 if (E[104]) {<br />

424 __STATE_PROG_A9;<br />

425 }<br />

426 if (_false) {<br />

427 __STATE_PROG_A10;<br />

428 }<br />

429 if (_false) {<br />

430 __STATE_PROG_A9;<br />

431 }<br />

432 E[31] = E[31]&&!((<br />

433 __STATE_PROG_A1));<br />

434 E[31] = E[31]||E[104]||E[103];<br />

435 E[105] = __STATE_PROG_R[8]&&!(__STATE_PROG_R[0]);<br />

436 E[86] = ((E[2]||E[90]||E[89])&&E[93]&&E[91])||((E[28]||E[85]||E[84])&&<br />

437 E[88]&&E[86])||E[102]||E[105]||E[101]||E[97]||E[99]||E[31];<br />

438 E[63] = ((E[11]||E[57]||E[14])&&E[16]&&E[18])||((E[6]||E[62]||E[61])&&<br />

439 E[65]&&E[63])||E[77]||E[69]||E[70]||((E[75]||E[68])&&E[75]&&E[68]);<br />

440 E[92] = __STATE_PROG_R[1]||__STATE_PROG_R[8]||E[87]||E[92];<br />

441 E[15] = __STATE_PROG_R[9]||E[64]||E[15];<br />

442 E[64] = E[92]||E[15];<br />

443 E[63] = ((E[64]&&!(E[92]))||E[86])&&((E[64]&&!(E[15]))||E[63])&&(E[86]||E[63]);<br />

444 E[96] = E[96];<br />

445 E[86] = E[97];<br />

446 E[95] = E[95];<br />

447 E[15] = _false;<br />

448 __STATE_PROG_R[0] = _false;<br />

449 __STATE_PROG_R[1] = E[102]||E[101];<br />

450 __STATE_PROG_R[2] = E[99]||(!(E[35])&&E[89]);<br />

451 __STATE_PROG_R[3] = !(E[35])&&E[90];<br />

452 __STATE_PROG_R[4] = E[99]||(!(E[35])&&E[2]);<br />

453 __STATE_PROG_R[5] = E[97]||(!(E[30])&&E[84]);<br />

454 __STATE_PROG_R[6] = !(E[30])&&E[85];<br />

455 __STATE_PROG_R[7] = E[97]||(!(E[30])&&E[28]);<br />

[...]<br />

498 __STATE_PROG_R[21] = _false;<br />

499 __STATE_PROG__reset_input();<br />

500 return 0;<br />

501 }<br />

A.4.2 Esterel-Compiler Output Optimized <strong>for</strong><br />

Memory Efficiency<br />

173 /* REGISTER VARIABLES */<br />

174<br />

175 struct REGISTERS {<br />

176 unsigned int R0:1;<br />

177 unsigned int R1:1;<br />

178 unsigned int R2:1;<br />

[...]<br />

197 unsigned int R21:1;<br />

198 } __STATE_PROG_bitR;<br />

199<br />

456 __STATE_PROG_R[8] = E[105]||E[31];<br />

457 __STATE_PROG_R[9] = E[77]||E[69];<br />

458 __STATE_PROG_R[10] = !(E[17])&&E[57];

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!