yuhang zhu / Mbed 2 deprecated ADAM_menu

Dependencies:   mbed

Committer:
yuhangzhu
Date:
Sat Jul 20 16:20:14 2013 +0000
Revision:
21:4d6b26eecdac
Parent:
20:2a5e9d9aadbf
Child:
23:0b6901c9302c
This program is made to be more robust, and is good for both putty and Tera Term.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
yuhangzhu 21:4d6b26eecdac 1 //The function mode_idle_handler converts character inputs to state information, which is used for later stages in main function
yuhangzhu 21:4d6b26eecdac 2 //The function parse_phase checks data in the line buffer if it's good write the converted value into address adam_pha otherwise returns error code
yuhangzhu 21:4d6b26eecdac 3 //The function parse_amp checks data in the line buffer if it's good write the converted value into address adam_amp otherwise returns error code
yuhangzhu 12:5e4cba1182ab 4
yuhangzhu 12:5e4cba1182ab 5
yuhangzhu 2:45db4f4ca70d 6 #include "parameters.h"
yuhangzhu 2:45db4f4ca70d 7
yuhangzhu 2:45db4f4ca70d 8 void mode_idle_handler(int* state, char sel)
yuhangzhu 2:45db4f4ca70d 9 {
yuhangzhu 3:32e67d121c7f 10 if(sel>='1' && sel<='7')
yuhangzhu 2:45db4f4ca70d 11 *state = sel - '0'; //select a mode
yuhangzhu 2:45db4f4ca70d 12 else
yuhangzhu 2:45db4f4ca70d 13 *state = MODE_IDLE;
yuhangzhu 6:e510aab8f2ce 14 }
yuhangzhu 6:e510aab8f2ce 15
yuhangzhu 6:e510aab8f2ce 16
yuhangzhu 6:e510aab8f2ce 17 int parse_phase(char* line_buf, char* adam_pha)
yuhangzhu 6:e510aab8f2ce 18 {
yuhangzhu 6:e510aab8f2ce 19
yuhangzhu 6:e510aab8f2ce 20 char temp = 0;
yuhangzhu 6:e510aab8f2ce 21
yuhangzhu 6:e510aab8f2ce 22 if(line_buf[3] == LINEBUF_EMPTY)
yuhangzhu 6:e510aab8f2ce 23 return PARSE_EMPTY; //empty line
yuhangzhu 6:e510aab8f2ce 24 if(line_buf[3] == LINEBUF_TOOLONG)
yuhangzhu 6:e510aab8f2ce 25 return PARSE_LONG; //buffer too long
yuhangzhu 6:e510aab8f2ce 26
yuhangzhu 7:c268547fb6c8 27 if(line_buf[0] == '0') //input is 0
yuhangzhu 6:e510aab8f2ce 28 {
yuhangzhu 6:e510aab8f2ce 29 if(line_buf[1] == 255 && line_buf[2] == 255)
yuhangzhu 6:e510aab8f2ce 30 {
yuhangzhu 6:e510aab8f2ce 31 *adam_pha = 0;
yuhangzhu 6:e510aab8f2ce 32 return PARSE_OK;
yuhangzhu 6:e510aab8f2ce 33 }
yuhangzhu 6:e510aab8f2ce 34 else
yuhangzhu 7:c268547fb6c8 35 return PARSE_ERR;
yuhangzhu 6:e510aab8f2ce 36 }
yuhangzhu 6:e510aab8f2ce 37
yuhangzhu 6:e510aab8f2ce 38
yuhangzhu 6:e510aab8f2ce 39
yuhangzhu 6:e510aab8f2ce 40
yuhangzhu 6:e510aab8f2ce 41 if(line_buf[1]>='0' && line_buf[1]<='4' && line_buf[2]>='0'&& line_buf[2]<='9' && line_buf[0] == '-')
yuhangzhu 6:e510aab8f2ce 42 {
yuhangzhu 6:e510aab8f2ce 43 temp = (line_buf[1] - '0')*10;
yuhangzhu 6:e510aab8f2ce 44 temp += line_buf[2] - '0';
yuhangzhu 6:e510aab8f2ce 45 *adam_pha = temp/7;
yuhangzhu 6:e510aab8f2ce 46
yuhangzhu 6:e510aab8f2ce 47 if(temp % 7 == 0)
yuhangzhu 6:e510aab8f2ce 48 return PARSE_OK;
yuhangzhu 6:e510aab8f2ce 49 else
yuhangzhu 6:e510aab8f2ce 50 return PARSE_ROUNDED;
yuhangzhu 6:e510aab8f2ce 51 } //double digit input
yuhangzhu 6:e510aab8f2ce 52 else if(line_buf[2] == 255 && line_buf[1]>='0' && line_buf[1] <= '9' && line_buf[0] == '-')
yuhangzhu 6:e510aab8f2ce 53 {
yuhangzhu 6:e510aab8f2ce 54 temp = line_buf[1] - '0';
yuhangzhu 6:e510aab8f2ce 55 *adam_pha = temp/7;
yuhangzhu 6:e510aab8f2ce 56
yuhangzhu 6:e510aab8f2ce 57 if(temp % 7 == 0)
yuhangzhu 6:e510aab8f2ce 58 return PARSE_OK;
yuhangzhu 6:e510aab8f2ce 59 else
yuhangzhu 6:e510aab8f2ce 60 return PARSE_ROUNDED;
yuhangzhu 6:e510aab8f2ce 61 } //single digit input
yuhangzhu 6:e510aab8f2ce 62 else
yuhangzhu 6:e510aab8f2ce 63 return PARSE_ERR;
yuhangzhu 6:e510aab8f2ce 64 }
yuhangzhu 6:e510aab8f2ce 65
yuhangzhu 6:e510aab8f2ce 66 int parse_amp(char* line_buf, char* adam_amp)
yuhangzhu 6:e510aab8f2ce 67 {
yuhangzhu 6:e510aab8f2ce 68
yuhangzhu 6:e510aab8f2ce 69 char temp = 0;
yuhangzhu 6:e510aab8f2ce 70
yuhangzhu 6:e510aab8f2ce 71 if(line_buf[3] == LINEBUF_EMPTY)
yuhangzhu 6:e510aab8f2ce 72 return PARSE_EMPTY;
yuhangzhu 6:e510aab8f2ce 73 if(line_buf[3] == LINEBUF_TOOLONG)
yuhangzhu 6:e510aab8f2ce 74 return PARSE_LONG;
yuhangzhu 6:e510aab8f2ce 75
yuhangzhu 20:2a5e9d9aadbf 76 /*if(line_buf[0] == '0') //Input value is 0, or 0.0, or 0.5
yuhangzhu 6:e510aab8f2ce 77 {
yuhangzhu 20:2a5e9d9aadbf 78 if((line_buf[1] == 255 && line_buf[2] == 255) ||(line_buf[1] == '.' && line_buf[2] == '0')) //Input is 0 or 0.0
yuhangzhu 6:e510aab8f2ce 79 {
yuhangzhu 6:e510aab8f2ce 80 *adam_amp = 0;
yuhangzhu 6:e510aab8f2ce 81 return PARSE_OK;
yuhangzhu 6:e510aab8f2ce 82 }
yuhangzhu 20:2a5e9d9aadbf 83 else if(line_buf[1] == '.' && line_buf[2] == '5') //Input is 0.5
yuhangzhu 20:2a5e9d9aadbf 84 {
yuhangzhu 20:2a5e9d9aadbf 85 *adam_amp = 1;
yuhangzhu 20:2a5e9d9aadbf 86 return PARSE_OK;
yuhangzhu 20:2a5e9d9aadbf 87 }
yuhangzhu 6:e510aab8f2ce 88 else
yuhangzhu 6:e510aab8f2ce 89 return PARSE_ERR;
yuhangzhu 20:2a5e9d9aadbf 90 }
yuhangzhu 20:2a5e9d9aadbf 91 */
yuhangzhu 21:4d6b26eecdac 92 //Single digit input. single digit is 0,1,2,3,4,5,6,7
yuhangzhu 6:e510aab8f2ce 93 if(line_buf[0]>='0' && line_buf[0]<='7' && line_buf[1] == 255 && line_buf[2] == 255)
yuhangzhu 6:e510aab8f2ce 94 {
yuhangzhu 6:e510aab8f2ce 95 temp = (line_buf[0] - '0')*10;
yuhangzhu 6:e510aab8f2ce 96 *adam_amp = temp/5;
yuhangzhu 6:e510aab8f2ce 97 return PARSE_OK;
yuhangzhu 7:c268547fb6c8 98 }
yuhangzhu 21:4d6b26eecdac 99 //x.x format input eg. 0.0 0.5 1.5 1.0 7.0 7.5 etc
yuhangzhu 6:e510aab8f2ce 100 else if(line_buf[0]>='0' && line_buf[0]<='7' && line_buf[2]>='0'&& line_buf[2]<='9' && line_buf[1] == '.')
yuhangzhu 6:e510aab8f2ce 101 {
yuhangzhu 6:e510aab8f2ce 102 temp = (line_buf[0] - '0')*10;
yuhangzhu 6:e510aab8f2ce 103 temp += line_buf[2] - '0';
yuhangzhu 6:e510aab8f2ce 104 *adam_amp = temp / 5;
yuhangzhu 6:e510aab8f2ce 105
yuhangzhu 6:e510aab8f2ce 106 if(temp % 5 == 0)
yuhangzhu 6:e510aab8f2ce 107 return PARSE_OK;
yuhangzhu 6:e510aab8f2ce 108 else
yuhangzhu 6:e510aab8f2ce 109 return PARSE_ROUNDED;
yuhangzhu 6:e510aab8f2ce 110 }
yuhangzhu 6:e510aab8f2ce 111 else
yuhangzhu 6:e510aab8f2ce 112 return PARSE_ERR;
yuhangzhu 2:45db4f4ca70d 113 }