yuhang zhu / Mbed 2 deprecated ADAM_menu

Dependencies:   mbed

Committer:
yuhangzhu
Date:
Sun Jul 14 22:38:44 2013 +0000
Revision:
12:5e4cba1182ab
Parent:
7:c268547fb6c8
Child:
20:2a5e9d9aadbf
this should be the final version for menu now.. 06

Who changed what in which revision?

UserRevisionLine numberNew contents of line
yuhangzhu 12:5e4cba1182ab 1 //mode_idle_handler converts character inputs to state information, which is used for later stages in main function
yuhangzhu 12:5e4cba1182ab 2 //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 12:5e4cba1182ab 3 //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 7:c268547fb6c8 76 if(line_buf[0] == '0') //Input value is 0, both 0 and 0.0 is accpeted
yuhangzhu 6:e510aab8f2ce 77 {
yuhangzhu 6:e510aab8f2ce 78 if((line_buf[1] == 255 && line_buf[2] == 255) ||(line_buf[1] == '.' && line_buf[2] == '0'))
yuhangzhu 6:e510aab8f2ce 79 {
yuhangzhu 6:e510aab8f2ce 80 *adam_amp = 0;
yuhangzhu 6:e510aab8f2ce 81 return PARSE_OK;
yuhangzhu 6:e510aab8f2ce 82 }
yuhangzhu 6:e510aab8f2ce 83 else
yuhangzhu 6:e510aab8f2ce 84 return PARSE_ERR;
yuhangzhu 7:c268547fb6c8 85 }
yuhangzhu 7:c268547fb6c8 86 //single digit input
yuhangzhu 6:e510aab8f2ce 87 if(line_buf[0]>='0' && line_buf[0]<='7' && line_buf[1] == 255 && line_buf[2] == 255)
yuhangzhu 6:e510aab8f2ce 88 {
yuhangzhu 6:e510aab8f2ce 89 temp = (line_buf[0] - '0')*10;
yuhangzhu 6:e510aab8f2ce 90 *adam_amp = temp/5;
yuhangzhu 6:e510aab8f2ce 91 return PARSE_OK;
yuhangzhu 7:c268547fb6c8 92 }
yuhangzhu 7:c268547fb6c8 93 //x.x format input
yuhangzhu 6:e510aab8f2ce 94 else if(line_buf[0]>='0' && line_buf[0]<='7' && line_buf[2]>='0'&& line_buf[2]<='9' && line_buf[1] == '.')
yuhangzhu 6:e510aab8f2ce 95 {
yuhangzhu 6:e510aab8f2ce 96 temp = (line_buf[0] - '0')*10;
yuhangzhu 6:e510aab8f2ce 97 temp += line_buf[2] - '0';
yuhangzhu 6:e510aab8f2ce 98 *adam_amp = temp / 5;
yuhangzhu 6:e510aab8f2ce 99
yuhangzhu 6:e510aab8f2ce 100 if(temp % 5 == 0)
yuhangzhu 6:e510aab8f2ce 101 return PARSE_OK;
yuhangzhu 6:e510aab8f2ce 102 else
yuhangzhu 6:e510aab8f2ce 103 return PARSE_ROUNDED;
yuhangzhu 6:e510aab8f2ce 104 }
yuhangzhu 6:e510aab8f2ce 105 else
yuhangzhu 6:e510aab8f2ce 106 return PARSE_ERR;
yuhangzhu 2:45db4f4ca70d 107 }