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 <stdarg.h>
lolpcc 0:a7af7ec8b12f 3 #include "main.h"
lolpcc 0:a7af7ec8b12f 4 #include "serial.h"
lolpcc 0:a7af7ec8b12f 5 #include "local_defines.h"
lolpcc 0:a7af7ec8b12f 6 #include "useful.h"
lolpcc 0:a7af7ec8b12f 7
lolpcc 0:a7af7ec8b12f 8 extern int var[MAX_VAR];
lolpcc 0:a7af7ec8b12f 9 extern int sys_state;
lolpcc 0:a7af7ec8b12f 10
lolpcc 0:a7af7ec8b12f 11 /* Function: hexview
lolpcc 0:a7af7ec8b12f 12 * Prints an array of char to stdout in hex.
lolpcc 0:a7af7ec8b12f 13 * The data is grouped in two 8 byte groups per line.
lolpcc 0:a7af7ec8b12f 14 * Each byte is displayed as 2 hex digits and every
lolpcc 0:a7af7ec8b12f 15 * line starts with the address of the first byte.
lolpcc 0:a7af7ec8b12f 16 *
lolpcc 0:a7af7ec8b12f 17 * There is no text view of a line.
lolpcc 0:a7af7ec8b12f 18 *
lolpcc 0:a7af7ec8b12f 19 * Variables:
lolpcc 0:a7af7ec8b12f 20 * buffer - The array to display.
lolpcc 0:a7af7ec8b12f 21 * size - The length of buffer.
lolpcc 0:a7af7ec8b12f 22 *
lolpcc 0:a7af7ec8b12f 23 * Author: rmeyer
lolpcc 0:a7af7ec8b12f 24 */
lolpcc 0:a7af7ec8b12f 25 void hexview(char *buffer, unsigned int size) {
lolpcc 0:a7af7ec8b12f 26 printf("\n");
lolpcc 0:a7af7ec8b12f 27 for(int i = 0; i < size; ++i) {
lolpcc 0:a7af7ec8b12f 28 if((i%16)!=0) {
lolpcc 0:a7af7ec8b12f 29 printf(" ");
lolpcc 0:a7af7ec8b12f 30 } else {
lolpcc 0:a7af7ec8b12f 31 printf("%04X: ", (i));
lolpcc 0:a7af7ec8b12f 32 }
lolpcc 0:a7af7ec8b12f 33 printf("%02hhx", buffer[i]);
lolpcc 0:a7af7ec8b12f 34 if((i%16) == 7) {
lolpcc 0:a7af7ec8b12f 35 printf(" ");
lolpcc 0:a7af7ec8b12f 36 }
lolpcc 0:a7af7ec8b12f 37 if((i%16) == 15) {
lolpcc 0:a7af7ec8b12f 38 printf("\n\r");
lolpcc 0:a7af7ec8b12f 39 }
lolpcc 0:a7af7ec8b12f 40 }
lolpcc 0:a7af7ec8b12f 41 printf("\n\r\n\r\n\r");
lolpcc 0:a7af7ec8b12f 42 }
lolpcc 0:a7af7ec8b12f 43
lolpcc 0:a7af7ec8b12f 44 /******************************************/
lolpcc 0:a7af7ec8b12f 45 /* */
lolpcc 0:a7af7ec8b12f 46 /* Lprintf, Bring the printf under our */
lolpcc 0:a7af7ec8b12f 47 /* control, so we can use either rs232 */
lolpcc 0:a7af7ec8b12f 48 /* or the USB-Serial connections as an */
lolpcc 0:a7af7ec8b12f 49 /* I/O channel. */
lolpcc 0:a7af7ec8b12f 50 /* */
lolpcc 0:a7af7ec8b12f 51 /******************************************/
lolpcc 0:a7af7ec8b12f 52
lolpcc 0:a7af7ec8b12f 53 void lprintf(const char* fmt, ...)
lolpcc 0:a7af7ec8b12f 54 {
lolpcc 0:a7af7ec8b12f 55 char str[0x1000];
lolpcc 0:a7af7ec8b12f 56
lolpcc 0:a7af7ec8b12f 57 va_list ap;
lolpcc 0:a7af7ec8b12f 58 va_start(ap, fmt);
lolpcc 0:a7af7ec8b12f 59 vsprintf(str, fmt, ap);
lolpcc 0:a7af7ec8b12f 60 if (sys_state & TO_RS232){
lolpcc 0:a7af7ec8b12f 61 rs232_output_string(str);
lolpcc 0:a7af7ec8b12f 62 } else if (sys_state & TO_USB){
lolpcc 0:a7af7ec8b12f 63 pc_output_string(str);
lolpcc 0:a7af7ec8b12f 64 }
lolpcc 0:a7af7ec8b12f 65 va_end(ap);
lolpcc 0:a7af7ec8b12f 66 }
lolpcc 0:a7af7ec8b12f 67
lolpcc 0:a7af7ec8b12f 68 /******************************************/
lolpcc 0:a7af7ec8b12f 69 /* */
lolpcc 0:a7af7ec8b12f 70 /* Read a value in from a user, workout */
lolpcc 0:a7af7ec8b12f 71 /* if its hex or decimal, and return an */
lolpcc 0:a7af7ec8b12f 72 /* int to the user */
lolpcc 0:a7af7ec8b12f 73 /* */
lolpcc 0:a7af7ec8b12f 74 /******************************************/
lolpcc 0:a7af7ec8b12f 75 int htoi(char *str)
lolpcc 0:a7af7ec8b12f 76 {
lolpcc 0:a7af7ec8b12f 77 if(strlen(str)>=2){
lolpcc 0:a7af7ec8b12f 78 if(str[0]=='v' || str[0]=='V'){
lolpcc 0:a7af7ec8b12f 79 return(var[return_var(str)]);
lolpcc 0:a7af7ec8b12f 80 } else if(str[1]=='x' || str[1]=='X'){
lolpcc 0:a7af7ec8b12f 81 return(strtol(str, NULL, 16));
lolpcc 0:a7af7ec8b12f 82 }
lolpcc 0:a7af7ec8b12f 83 }
lolpcc 0:a7af7ec8b12f 84 return(atoi(str));
lolpcc 0:a7af7ec8b12f 85 }
lolpcc 0:a7af7ec8b12f 86
lolpcc 0:a7af7ec8b12f 87 /******************************************/
lolpcc 0:a7af7ec8b12f 88 /* */
lolpcc 0:a7af7ec8b12f 89 /* Given the input string, return the */
lolpcc 0:a7af7ec8b12f 90 /* number of the variable the user wants */
lolpcc 0:a7af7ec8b12f 91 /* its added to htoi, so all inputs */
lolpcc 0:a7af7ec8b12f 92 /* should get access to the variable data */
lolpcc 0:a7af7ec8b12f 93 /* */
lolpcc 0:a7af7ec8b12f 94 /******************************************/
lolpcc 0:a7af7ec8b12f 95
lolpcc 0:a7af7ec8b12f 96 int return_var(char *str)
lolpcc 0:a7af7ec8b12f 97 {
lolpcc 0:a7af7ec8b12f 98 char buf[0x4];
lolpcc 0:a7af7ec8b12f 99 int a;
lolpcc 0:a7af7ec8b12f 100
lolpcc 0:a7af7ec8b12f 101 buf[0] = str[1];
lolpcc 0:a7af7ec8b12f 102 buf[1] = str[2];
lolpcc 0:a7af7ec8b12f 103 buf[2] = str[3];
lolpcc 0:a7af7ec8b12f 104 buf[3] = str[4];
lolpcc 0:a7af7ec8b12f 105 a = atoi(buf);
lolpcc 0:a7af7ec8b12f 106 if(a > MAX_VAR){
lolpcc 0:a7af7ec8b12f 107 lprintf("In Return_var, var number %d more than MAXVAR %d, returned -1\n",
lolpcc 0:a7af7ec8b12f 108 a,MAX_VAR);
lolpcc 0:a7af7ec8b12f 109 return(-1);
lolpcc 0:a7af7ec8b12f 110 }
lolpcc 0:a7af7ec8b12f 111 return(a);
lolpcc 0:a7af7ec8b12f 112 }