Master 1 hr . takes input form the serial connection of PC

Dependencies:   mbed

Committer:
manujose
Date:
Sat Dec 04 06:10:16 2010 +0000
Revision:
0:219eacd4c264

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
manujose 0:219eacd4c264 1 #ifndef _PQUEUE_H_
manujose 0:219eacd4c264 2 #define _PQUEUE_H_
manujose 0:219eacd4c264 3
manujose 0:219eacd4c264 4 typedef struct prioQueueEle {
manujose 0:219eacd4c264 5 timeval t;
manujose 0:219eacd4c264 6 void (*foo)(void);
manujose 0:219eacd4c264 7 int sched;
manujose 0:219eacd4c264 8 struct prioQueueEle *next;
manujose 0:219eacd4c264 9 }qEle;
manujose 0:219eacd4c264 10 typedef struct prioQueue {
manujose 0:219eacd4c264 11 int numEle;
manujose 0:219eacd4c264 12 qEle *head;
manujose 0:219eacd4c264 13
manujose 0:219eacd4c264 14 }pQueue;
manujose 0:219eacd4c264 15
manujose 0:219eacd4c264 16
manujose 0:219eacd4c264 17
manujose 0:219eacd4c264 18 int enqueue(pQueue *xP, timeval t, void (*schedFunc)(void)) {
manujose 0:219eacd4c264 19 if (xP->numEle == QUEUE_MAX)
manujose 0:219eacd4c264 20 return 0; //ERROR reached max .
manujose 0:219eacd4c264 21
manujose 0:219eacd4c264 22 xP->numEle++;
manujose 0:219eacd4c264 23 qEle *newEle = (qEle*)malloc(sizeof(qEle));
manujose 0:219eacd4c264 24 newEle->t.tv_sec = t.tv_sec;
manujose 0:219eacd4c264 25 newEle->t.tv_usec = t.tv_usec;
manujose 0:219eacd4c264 26 newEle->foo = schedFunc;
manujose 0:219eacd4c264 27 newEle->sched = 0;
manujose 0:219eacd4c264 28 newEle->next = NULL;
manujose 0:219eacd4c264 29 if (xP->head == NULL) { //first ele;
manujose 0:219eacd4c264 30 xP->head = newEle;
manujose 0:219eacd4c264 31 return 1;
manujose 0:219eacd4c264 32 } else {
manujose 0:219eacd4c264 33 if ((xP->head->t.tv_sec > t.tv_sec) ||
manujose 0:219eacd4c264 34 ((xP->head->t.tv_sec == t.tv_sec ) && (xP->head->t.tv_usec > t.tv_usec)) ) {
manujose 0:219eacd4c264 35 newEle->next = xP->head;
manujose 0:219eacd4c264 36 xP->head = newEle;
manujose 0:219eacd4c264 37
manujose 0:219eacd4c264 38 return 1;
manujose 0:219eacd4c264 39 } else if (xP->head->next == NULL) {
manujose 0:219eacd4c264 40 xP->head->next = newEle;
manujose 0:219eacd4c264 41 return 1;
manujose 0:219eacd4c264 42 }
manujose 0:219eacd4c264 43 }
manujose 0:219eacd4c264 44 qEle *e = xP->head;
manujose 0:219eacd4c264 45 while (e->next->next !=NULL) {
manujose 0:219eacd4c264 46 if ((e->next->t.tv_sec > t.tv_sec) ||
manujose 0:219eacd4c264 47 ((e->next->t.tv_sec == t.tv_sec) && (e->next->t.tv_usec > t.tv_usec)) ) {
manujose 0:219eacd4c264 48 newEle->next = e->next;
manujose 0:219eacd4c264 49 e->next = newEle;
manujose 0:219eacd4c264 50 return 1;
manujose 0:219eacd4c264 51 }
manujose 0:219eacd4c264 52 e= e->next;
manujose 0:219eacd4c264 53 }
manujose 0:219eacd4c264 54 e->next->next = newEle;
manujose 0:219eacd4c264 55 return 1;
manujose 0:219eacd4c264 56 }
manujose 0:219eacd4c264 57
manujose 0:219eacd4c264 58
manujose 0:219eacd4c264 59
manujose 0:219eacd4c264 60
manujose 0:219eacd4c264 61 qEle* pop(pQueue *xP) {
manujose 0:219eacd4c264 62 qEle *p = xP->head;
manujose 0:219eacd4c264 63 xP->head = p->next;
manujose 0:219eacd4c264 64 xP->numEle--;
manujose 0:219eacd4c264 65 return p;
manujose 0:219eacd4c264 66 // free(p);
manujose 0:219eacd4c264 67 }
manujose 0:219eacd4c264 68
manujose 0:219eacd4c264 69 #endif