X-Git-Url: https://git.martlubbers.net/?a=blobdiff_plain;f=int%2Fint.c;h=fd54153e9fc1e3e2a1443197d64ca5eac81daddd;hb=c884100c832f235445d6a004c39db17ef83bb286;hp=2bf2cef134c8faf1eeb4dbd83add2c2e7b83448b;hpb=ce48250dbf5d93a0617c7683db9959f2fcacacc6;p=mTask.git diff --git a/int/int.c b/int/int.c index 2bf2cef..fd54153 100644 --- a/int/int.c +++ b/int/int.c @@ -39,18 +39,16 @@ bool input_available(int fd){ tv.tv_usec = 0; FD_ZERO(&fds); FD_SET(fd, &fds); - if(select(fd+1, &fds, NULL, NULL, &tv) == -1){ + if (select(fd+1, &fds, NULL, NULL, &tv) == -1) pdie("select"); - } return FD_ISSET(fd, &fds); } void read_message(int fd_in, int fd_out) { //Find next task - uint8_t c; + uint8_t c, ct; uint16_t tasklen; - uint8_t ct; for(ct = 0; ct= PROGRAMSIZE) - die("Max program size: %d\n", PROGRAMSIZE); - pl = pc; - debug("Done reading, program length: %d\n", pl); - - //Evaluate program - //Reset program counter and stack counter - pc = 0; - sp = 0; - while(pc != pl){ + int pc = 0; + int sp = 0; + int plen = strlen(program); + char stack[1024] = {0}; + while(pc != plen){ switch(program[pc++]){ - case BCNOP:; + case BCNOP: break; case BCPUSH: stack[sp++] = program[pc++]; @@ -222,14 +173,73 @@ int main(void) printf("SerialParseInt()\n"); break; case BCANALOGREAD: - printf("AnalogRead()\n"); + printf("AnalogRead(%d)\n", program[pc++]); break; case BCANALOGWRITE: - printf("AnalogWrite()\n"); + printf("AnalogWrite(%d)\n", program[pc++]); + break; + case BCDIGITALREAD: + printf("DigitalRead(%d)\n", program[pc++]); + break; + case BCDIGITALWRITE: + printf("DigitalWrite(%d)\n", program[pc++]); + break; default: - die("Unrecognized command: %X\n", program[--pc]); + die("Unrecognized command: %d\n", program[--pc]); } } +} + +int main(void) +{ + int fd_in, fd_out; + int ct; + + fd_in = fileno(stdin); + fd_out = fileno(stdout); + + //Register signal handler + if(signal(SIGINT, killHandler) == SIG_ERR){ + die("Couldn't register signal handler...\n"); + } + if(signal(SIGTERM, killHandler) == SIG_ERR){ + die("Couldn't register signal handler...\n"); + } + + while(true){ + //Check for new tasks + if(input_available(fd_in)){ + read_message(fd_in, fd_out); + } + //Run tasks + for(ct = 0; ct= PROGRAMSIZE) + die("Max program size: %d\n", PROGRAMSIZE); + pl = pc; + debug("Done reading, program length: %d\n", pl); + + //Evaluate program + //Reset program counter and stack counter + pc = 0; + sp = 0; + while(pc != pl){ + } */ return 0; }