B.3 : THE 6 HOUR PROGRAM WITH 1 PPS SIGNAL THE MASTER TO BE CONNECTED TO 11 PIN.

Dependencies:   mbed

Committer:
manujose
Date:
Tue Dec 14 23:26:02 2010 +0000
Revision:
1:9efda6a3f83c
Parent:
0:e6964ff1bbcc
hello

Who changed what in which revision?

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