Geodesic Light Dome Controller Program

Dependencies:   mbed

Committer:
lolpcc
Date:
Wed Mar 24 09:06:23 2010 +0000
Revision:
1:dc58f0b0eeec
Parent:
0:a7af7ec8b12f

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
lolpcc 0:a7af7ec8b12f 1 #include "mbed.h"
lolpcc 0:a7af7ec8b12f 2
lolpcc 0:a7af7ec8b12f 3 /*
lolpcc 0:a7af7ec8b12f 4 int breakup(char *, char *[], char);
lolpcc 0:a7af7ec8b12f 5 void breakup_sub(char *, char *,char,char);
lolpcc 0:a7af7ec8b12f 6 */
lolpcc 0:a7af7ec8b12f 7
lolpcc 0:a7af7ec8b12f 8 void breakup_sub(char *line,char *entery_point,char c,char d)
lolpcc 0:a7af7ec8b12f 9 {
lolpcc 0:a7af7ec8b12f 10 char *point,*pt2;
lolpcc 0:a7af7ec8b12f 11
lolpcc 0:a7af7ec8b12f 12 point = entery_point;
lolpcc 0:a7af7ec8b12f 13
lolpcc 0:a7af7ec8b12f 14 point++;
lolpcc 0:a7af7ec8b12f 15 pt2 = point;
lolpcc 0:a7af7ec8b12f 16 point --;
lolpcc 0:a7af7ec8b12f 17 while (*pt2!='\0') {
lolpcc 0:a7af7ec8b12f 18 *point = *pt2;
lolpcc 0:a7af7ec8b12f 19 point ++;
lolpcc 0:a7af7ec8b12f 20 pt2 ++;
lolpcc 0:a7af7ec8b12f 21 }
lolpcc 0:a7af7ec8b12f 22 *point = *pt2;
lolpcc 0:a7af7ec8b12f 23 }
lolpcc 0:a7af7ec8b12f 24
lolpcc 0:a7af7ec8b12f 25 int breakup(char *string,char *p[],char c)
lolpcc 0:a7af7ec8b12f 26 {
lolpcc 0:a7af7ec8b12f 27 char *pt,*pt1;
lolpcc 0:a7af7ec8b12f 28 char cc,ccc;
lolpcc 0:a7af7ec8b12f 29 int cnt = 0;
lolpcc 0:a7af7ec8b12f 30 int number = 0;
lolpcc 0:a7af7ec8b12f 31 int flag = 0;
lolpcc 0:a7af7ec8b12f 32 int last = 0;
lolpcc 0:a7af7ec8b12f 33 int just = 0;
lolpcc 0:a7af7ec8b12f 34 int length = strlen(string);
lolpcc 0:a7af7ec8b12f 35
lolpcc 0:a7af7ec8b12f 36 pt = string;
lolpcc 0:a7af7ec8b12f 37 p[number] = pt;
lolpcc 0:a7af7ec8b12f 38 number++;
lolpcc 0:a7af7ec8b12f 39
lolpcc 0:a7af7ec8b12f 40 while (cnt != length + 1) {
lolpcc 0:a7af7ec8b12f 41 cc = *pt;
lolpcc 0:a7af7ec8b12f 42 if (cc == '\0')
lolpcc 0:a7af7ec8b12f 43 return(number);
lolpcc 0:a7af7ec8b12f 44 /* this section of code will need sorting, so we don't have to use a space
lolpcc 0:a7af7ec8b12f 45 char, we should move the ramainder of the buffer down one charactor
lolpcc 0:a7af7ec8b12f 46 */
lolpcc 0:a7af7ec8b12f 47 if (cc=='\\') {
lolpcc 0:a7af7ec8b12f 48 pt1 = pt; /* save the current pointer */
lolpcc 0:a7af7ec8b12f 49 pt++;
lolpcc 0:a7af7ec8b12f 50 ccc = *pt;
lolpcc 0:a7af7ec8b12f 51 if (ccc=='"') {
lolpcc 0:a7af7ec8b12f 52 pt--;
lolpcc 0:a7af7ec8b12f 53 breakup_sub(string,pt,cc,ccc);
lolpcc 0:a7af7ec8b12f 54 pt = pt1;
lolpcc 0:a7af7ec8b12f 55 } else {
lolpcc 0:a7af7ec8b12f 56 pt--;
lolpcc 0:a7af7ec8b12f 57 pt = pt1; /* restore the current pointer */
lolpcc 0:a7af7ec8b12f 58 }
lolpcc 0:a7af7ec8b12f 59 }
lolpcc 0:a7af7ec8b12f 60 if (flag == 0) {
lolpcc 0:a7af7ec8b12f 61 switch (cc) {
lolpcc 0:a7af7ec8b12f 62 case '"' :
lolpcc 0:a7af7ec8b12f 63 flag = 1;
lolpcc 0:a7af7ec8b12f 64 case '\n' :
lolpcc 0:a7af7ec8b12f 65 case '\t' :
lolpcc 0:a7af7ec8b12f 66 case ' ' :
lolpcc 0:a7af7ec8b12f 67 if (just==1) {
lolpcc 0:a7af7ec8b12f 68 /* move the current pointer along */
lolpcc 0:a7af7ec8b12f 69 pt = pt + 1;
lolpcc 0:a7af7ec8b12f 70 p[number] = pt;
lolpcc 0:a7af7ec8b12f 71 pt = pt - 1;
lolpcc 0:a7af7ec8b12f 72 } else {
lolpcc 0:a7af7ec8b12f 73 /* add the current point to the array */
lolpcc 0:a7af7ec8b12f 74 just = 1;
lolpcc 0:a7af7ec8b12f 75 *pt = '\0';
lolpcc 0:a7af7ec8b12f 76 pt++;
lolpcc 0:a7af7ec8b12f 77 p[number] = pt;
lolpcc 0:a7af7ec8b12f 78 pt--;
lolpcc 0:a7af7ec8b12f 79 }
lolpcc 0:a7af7ec8b12f 80 if (flag == 1) {
lolpcc 0:a7af7ec8b12f 81 number ++;
lolpcc 0:a7af7ec8b12f 82 just = 0;
lolpcc 0:a7af7ec8b12f 83 }
lolpcc 0:a7af7ec8b12f 84 break;
lolpcc 0:a7af7ec8b12f 85 default :
lolpcc 0:a7af7ec8b12f 86 if (just == 1) {
lolpcc 0:a7af7ec8b12f 87 just = 0;
lolpcc 0:a7af7ec8b12f 88 number ++;
lolpcc 0:a7af7ec8b12f 89 }
lolpcc 0:a7af7ec8b12f 90 break;
lolpcc 0:a7af7ec8b12f 91 }
lolpcc 0:a7af7ec8b12f 92 if (cc == c) { /* test for the user defined char */
lolpcc 0:a7af7ec8b12f 93 just = 1;
lolpcc 0:a7af7ec8b12f 94 *pt = '\0';
lolpcc 0:a7af7ec8b12f 95 pt++;
lolpcc 0:a7af7ec8b12f 96 p[number] = pt;
lolpcc 0:a7af7ec8b12f 97 pt--;
lolpcc 0:a7af7ec8b12f 98 }
lolpcc 0:a7af7ec8b12f 99 } else {
lolpcc 0:a7af7ec8b12f 100 if ((last == 0) & (cc =='"')) { /* close of quoate */
lolpcc 0:a7af7ec8b12f 101 flag = 0;
lolpcc 0:a7af7ec8b12f 102 just = 1;
lolpcc 0:a7af7ec8b12f 103 *pt = '\0';
lolpcc 0:a7af7ec8b12f 104 pt++;
lolpcc 0:a7af7ec8b12f 105 p[number] = pt;
lolpcc 0:a7af7ec8b12f 106 pt--;
lolpcc 0:a7af7ec8b12f 107 } else if ((flag == 1) & (last == 1) & (cc!='\\'))
lolpcc 0:a7af7ec8b12f 108 last = 0;
lolpcc 0:a7af7ec8b12f 109 }
lolpcc 0:a7af7ec8b12f 110 pt++;
lolpcc 0:a7af7ec8b12f 111 cnt++;
lolpcc 0:a7af7ec8b12f 112 }
lolpcc 0:a7af7ec8b12f 113 return(-1);
lolpcc 0:a7af7ec8b12f 114 }