i should make literal work
[mTask.git] / int / int.c
index 2bf2cef..fd54153 100644 (file)
--- 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<MAXTASKS; ct++)
                if(!tasks_used[ct])
@@ -60,9 +58,9 @@ void read_message(int fd_in, int fd_out)
 
        debug("Receiving input for task %d\n", ct);
        read(fd_in, &c, 1);
-       if((char) c == 's') {
+       if(c == 's') {
                debug("Receiving an sds\n");
-       } else if((char) c == 't'){
+       } else if(c == 't'){
                read(fd_in, &c, 1);
                tasklen = 256*c;
                read(fd_in, &c, 1);
@@ -80,66 +78,19 @@ void read_message(int fd_in, int fd_out)
                debug("Received a task of length %d\n", tasklen);
                tasks_used[ct] = true;
        } else {
-               die("Unknown message: %c?\n", c);
+               debug("Unknown message: %X?\n", c);
        }
 }
 
 void run_task(char *program)
 {
-
-       (void) program;
-}
-
-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);
-                       exit(1);
-               }
-               //Run tasks
-               for(ct = 0; ct<MAXTASKS; ct++){
-                       if(!tasks_used[ct]){
-                               debug("Task %d not implemented\n", ct);
-                               continue;
-                       }
-                       debug("Going to execute task %d\n", ct);
-                       run_task(tasks[ct]);
-               }
-               usleep(10);
-       }
-
-/*     //Read program
-       pc = 0;
-       while ((c = getchar()) != EOF && pc < PROGRAMSIZE)
-               program[pc++] = c;
-       if (pc >= 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<MAXTASKS; ct++){
+                       if(!tasks_used[ct]){
+                               debug("Task %d not implemented\n", ct);
+                               continue;
+                       }
+                       debug("Going to execute task %d\n", ct);
+                       run_task(tasks[ct]);
+                       exit(1);
+               }
+//             exit(1);
+               usleep(10);
+       }
+
+/*     //Read program
+       pc = 0;
+       while ((c = getchar()) != EOF && pc < PROGRAMSIZE)
+               program[pc++] = c;
+       if (pc >= 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;
 }