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 #include "main.h"
lolpcc 0:a7af7ec8b12f 3 #include "cmd.h"
lolpcc 0:a7af7ec8b12f 4 #include "i2c.h"
lolpcc 0:a7af7ec8b12f 5 #include "serial.h"
lolpcc 0:a7af7ec8b12f 6 #include "scripting.h"
lolpcc 0:a7af7ec8b12f 7 #include "breakup.h"
lolpcc 0:a7af7ec8b12f 8 #include "local_defines.h"
lolpcc 0:a7af7ec8b12f 9
lolpcc 0:a7af7ec8b12f 10 Serial pc(USBTX, USBRX); // tx, rx
lolpcc 0:a7af7ec8b12f 11
lolpcc 0:a7af7ec8b12f 12 int sys_state = 0;
lolpcc 0:a7af7ec8b12f 13 int var[MAX_VAR];
lolpcc 0:a7af7ec8b12f 14
lolpcc 0:a7af7ec8b12f 15 int main()
lolpcc 0:a7af7ec8b12f 16 {
lolpcc 0:a7af7ec8b12f 17 char buf[0x20]; /* input buffer */
lolpcc 0:a7af7ec8b12f 18 int r; /* general int */
lolpcc 0:a7af7ec8b12f 19
lolpcc 0:a7af7ec8b12f 20 sys_state = TO_RS232;
lolpcc 0:a7af7ec8b12f 21
lolpcc 0:a7af7ec8b12f 22 exec_profile();
lolpcc 0:a7af7ec8b12f 23
lolpcc 0:a7af7ec8b12f 24 // relay_operate(0);
lolpcc 0:a7af7ec8b12f 25 // init_pca9685(0xb8);
lolpcc 0:a7af7ec8b12f 26 // init_pca9685(0xba);
lolpcc 0:a7af7ec8b12f 27
lolpcc 0:a7af7ec8b12f 28 pc.printf("\n\rDome Controler\n\n\r\r");
lolpcc 0:a7af7ec8b12f 29 rs232_opener();
lolpcc 0:a7af7ec8b12f 30 pc.printf("\n\rCMD > ");
lolpcc 0:a7af7ec8b12f 31 while(1){ /* Command Loop */
lolpcc 0:a7af7ec8b12f 32 r = 0;
lolpcc 0:a7af7ec8b12f 33 while(r==0){
lolpcc 0:a7af7ec8b12f 34 if(pc.readable()){
lolpcc 0:a7af7ec8b12f 35 sys_state = TO_USB;
lolpcc 0:a7af7ec8b12f 36 r = usb_gets(buf,sizeof(buf));
lolpcc 0:a7af7ec8b12f 37 } else if(rs232_readable()){
lolpcc 0:a7af7ec8b12f 38 sys_state = TO_RS232;
lolpcc 0:a7af7ec8b12f 39 r = rs232_gets(buf,sizeof(buf));
lolpcc 0:a7af7ec8b12f 40 }
lolpcc 0:a7af7ec8b12f 41 }
lolpcc 0:a7af7ec8b12f 42 if(r>2){
lolpcc 0:a7af7ec8b12f 43 find_cmd(buf);
lolpcc 0:a7af7ec8b12f 44 }
lolpcc 0:a7af7ec8b12f 45 if (sys_state & TO_USB)
lolpcc 0:a7af7ec8b12f 46 pc_output_string("\n\rCMD > ");
lolpcc 0:a7af7ec8b12f 47 if (sys_state & TO_RS232)
lolpcc 0:a7af7ec8b12f 48 rs232_output_string("\n\rCMD > ");
lolpcc 0:a7af7ec8b12f 49 sys_state = 0;
lolpcc 0:a7af7ec8b12f 50 }
lolpcc 0:a7af7ec8b12f 51 }
lolpcc 0:a7af7ec8b12f 52
lolpcc 0:a7af7ec8b12f 53 int usb_gets(char *s,int len)
lolpcc 0:a7af7ec8b12f 54 {
lolpcc 0:a7af7ec8b12f 55 char c;
lolpcc 0:a7af7ec8b12f 56 int cnt=0;
lolpcc 0:a7af7ec8b12f 57
lolpcc 0:a7af7ec8b12f 58 while ((c = pc.getc()) != 0) {
lolpcc 0:a7af7ec8b12f 59 if ((c == 0x0a) || (c==0x0d)) {
lolpcc 0:a7af7ec8b12f 60 pc.printf("\n\r");
lolpcc 0:a7af7ec8b12f 61 *s++ = '\0';
lolpcc 0:a7af7ec8b12f 62 return(cnt); /* Return length */
lolpcc 0:a7af7ec8b12f 63 } else if (c==0x7f) { /* Delete */
lolpcc 0:a7af7ec8b12f 64 pc.putc(0x08);
lolpcc 0:a7af7ec8b12f 65 pc.putc(0x20);
lolpcc 0:a7af7ec8b12f 66 pc.putc(0x08);
lolpcc 0:a7af7ec8b12f 67 cnt--;
lolpcc 0:a7af7ec8b12f 68 *s--;
lolpcc 0:a7af7ec8b12f 69 } else if (c==0x08) { /* BS */
lolpcc 0:a7af7ec8b12f 70 pc.putc(0x08);
lolpcc 0:a7af7ec8b12f 71 pc.putc(0x20);
lolpcc 0:a7af7ec8b12f 72 pc.putc(0x08);
lolpcc 0:a7af7ec8b12f 73 cnt--;
lolpcc 0:a7af7ec8b12f 74 *s--;
lolpcc 0:a7af7ec8b12f 75 } else if (c==025) { /* CTRL-U */
lolpcc 0:a7af7ec8b12f 76 while (cnt!=0) {
lolpcc 0:a7af7ec8b12f 77 pc.putc(0x08);
lolpcc 0:a7af7ec8b12f 78 pc.putc(0x20);
lolpcc 0:a7af7ec8b12f 79 pc.putc(0x08);
lolpcc 0:a7af7ec8b12f 80 cnt--;
lolpcc 0:a7af7ec8b12f 81 *s--;
lolpcc 0:a7af7ec8b12f 82 }
lolpcc 0:a7af7ec8b12f 83 } else {
lolpcc 0:a7af7ec8b12f 84 *s++ = c;
lolpcc 0:a7af7ec8b12f 85 pc.putc(c);
lolpcc 0:a7af7ec8b12f 86 cnt++;
lolpcc 0:a7af7ec8b12f 87 }
lolpcc 0:a7af7ec8b12f 88 }
lolpcc 0:a7af7ec8b12f 89 return(cnt);
lolpcc 0:a7af7ec8b12f 90 }
lolpcc 0:a7af7ec8b12f 91
lolpcc 0:a7af7ec8b12f 92 void pc_output_string(char *buf)
lolpcc 0:a7af7ec8b12f 93 {
lolpcc 0:a7af7ec8b12f 94 int a = 0;
lolpcc 0:a7af7ec8b12f 95 while(a != strlen(buf)){
lolpcc 0:a7af7ec8b12f 96 pc.putc(buf[a]);
lolpcc 0:a7af7ec8b12f 97 if(buf[a]=='\n')
lolpcc 0:a7af7ec8b12f 98 pc.putc('\r');
lolpcc 0:a7af7ec8b12f 99 a++;
lolpcc 0:a7af7ec8b12f 100 }
lolpcc 0:a7af7ec8b12f 101 }
lolpcc 0:a7af7ec8b12f 102
lolpcc 0:a7af7ec8b12f 103 void exec_profile(void)
lolpcc 0:a7af7ec8b12f 104 {
lolpcc 0:a7af7ec8b12f 105 char *a[2] = {"exec","profile.cmd"};
lolpcc 0:a7af7ec8b12f 106 exec_file(2,a);
lolpcc 0:a7af7ec8b12f 107 }
lolpcc 0:a7af7ec8b12f 108