yuhang zhu / Mbed 2 deprecated ADAM_menu

Dependencies:   mbed

Committer:
yuhangzhu
Date:
Sat Jul 13 22:16:27 2013 +0000
Revision:
7:c268547fb6c8
Parent:
6:e510aab8f2ce
Child:
12:5e4cba1182ab
the input check should be ok, need more debugging  0.3

Who changed what in which revision?

UserRevisionLine numberNew contents of line
yuhangzhu 2:45db4f4ca70d 1 #include "parameters.h"
yuhangzhu 2:45db4f4ca70d 2
yuhangzhu 2:45db4f4ca70d 3 void mode_idle_handler(int* state, char sel)
yuhangzhu 2:45db4f4ca70d 4 {
yuhangzhu 3:32e67d121c7f 5 if(sel>='1' && sel<='7')
yuhangzhu 2:45db4f4ca70d 6 *state = sel - '0'; //select a mode
yuhangzhu 2:45db4f4ca70d 7 else
yuhangzhu 2:45db4f4ca70d 8 *state = MODE_IDLE;
yuhangzhu 6:e510aab8f2ce 9 }
yuhangzhu 6:e510aab8f2ce 10
yuhangzhu 6:e510aab8f2ce 11
yuhangzhu 6:e510aab8f2ce 12 int parse_phase(char* line_buf, char* adam_pha)
yuhangzhu 6:e510aab8f2ce 13 {
yuhangzhu 6:e510aab8f2ce 14
yuhangzhu 6:e510aab8f2ce 15 char temp = 0;
yuhangzhu 6:e510aab8f2ce 16
yuhangzhu 6:e510aab8f2ce 17 if(line_buf[3] == LINEBUF_EMPTY)
yuhangzhu 6:e510aab8f2ce 18 return PARSE_EMPTY; //empty line
yuhangzhu 6:e510aab8f2ce 19 if(line_buf[3] == LINEBUF_TOOLONG)
yuhangzhu 6:e510aab8f2ce 20 return PARSE_LONG; //buffer too long
yuhangzhu 6:e510aab8f2ce 21
yuhangzhu 7:c268547fb6c8 22 if(line_buf[0] == '0') //input is 0
yuhangzhu 6:e510aab8f2ce 23 {
yuhangzhu 6:e510aab8f2ce 24 if(line_buf[1] == 255 && line_buf[2] == 255)
yuhangzhu 6:e510aab8f2ce 25 {
yuhangzhu 6:e510aab8f2ce 26 *adam_pha = 0;
yuhangzhu 6:e510aab8f2ce 27 return PARSE_OK;
yuhangzhu 6:e510aab8f2ce 28 }
yuhangzhu 6:e510aab8f2ce 29 else
yuhangzhu 7:c268547fb6c8 30 return PARSE_ERR;
yuhangzhu 6:e510aab8f2ce 31 }
yuhangzhu 6:e510aab8f2ce 32
yuhangzhu 6:e510aab8f2ce 33
yuhangzhu 6:e510aab8f2ce 34
yuhangzhu 6:e510aab8f2ce 35
yuhangzhu 6:e510aab8f2ce 36 if(line_buf[1]>='0' && line_buf[1]<='4' && line_buf[2]>='0'&& line_buf[2]<='9' && line_buf[0] == '-')
yuhangzhu 6:e510aab8f2ce 37 {
yuhangzhu 6:e510aab8f2ce 38 temp = (line_buf[1] - '0')*10;
yuhangzhu 6:e510aab8f2ce 39 temp += line_buf[2] - '0';
yuhangzhu 6:e510aab8f2ce 40 *adam_pha = temp/7;
yuhangzhu 6:e510aab8f2ce 41
yuhangzhu 6:e510aab8f2ce 42 if(temp % 7 == 0)
yuhangzhu 6:e510aab8f2ce 43 return PARSE_OK;
yuhangzhu 6:e510aab8f2ce 44 else
yuhangzhu 6:e510aab8f2ce 45 return PARSE_ROUNDED;
yuhangzhu 6:e510aab8f2ce 46 } //double digit input
yuhangzhu 6:e510aab8f2ce 47 else if(line_buf[2] == 255 && line_buf[1]>='0' && line_buf[1] <= '9' && line_buf[0] == '-')
yuhangzhu 6:e510aab8f2ce 48 {
yuhangzhu 6:e510aab8f2ce 49 temp = line_buf[1] - '0';
yuhangzhu 6:e510aab8f2ce 50 *adam_pha = temp/7;
yuhangzhu 6:e510aab8f2ce 51
yuhangzhu 6:e510aab8f2ce 52 if(temp % 7 == 0)
yuhangzhu 6:e510aab8f2ce 53 return PARSE_OK;
yuhangzhu 6:e510aab8f2ce 54 else
yuhangzhu 6:e510aab8f2ce 55 return PARSE_ROUNDED;
yuhangzhu 6:e510aab8f2ce 56 } //single digit input
yuhangzhu 6:e510aab8f2ce 57 else
yuhangzhu 6:e510aab8f2ce 58 return PARSE_ERR;
yuhangzhu 6:e510aab8f2ce 59 }
yuhangzhu 6:e510aab8f2ce 60
yuhangzhu 6:e510aab8f2ce 61 int parse_amp(char* line_buf, char* adam_amp)
yuhangzhu 6:e510aab8f2ce 62 {
yuhangzhu 6:e510aab8f2ce 63
yuhangzhu 6:e510aab8f2ce 64 char temp = 0;
yuhangzhu 6:e510aab8f2ce 65
yuhangzhu 6:e510aab8f2ce 66 if(line_buf[3] == LINEBUF_EMPTY)
yuhangzhu 6:e510aab8f2ce 67 return PARSE_EMPTY;
yuhangzhu 6:e510aab8f2ce 68 if(line_buf[3] == LINEBUF_TOOLONG)
yuhangzhu 6:e510aab8f2ce 69 return PARSE_LONG;
yuhangzhu 6:e510aab8f2ce 70
yuhangzhu 7:c268547fb6c8 71 if(line_buf[0] == '0') //Input value is 0, both 0 and 0.0 is accpeted
yuhangzhu 6:e510aab8f2ce 72 {
yuhangzhu 6:e510aab8f2ce 73 if((line_buf[1] == 255 && line_buf[2] == 255) ||(line_buf[1] == '.' && line_buf[2] == '0'))
yuhangzhu 6:e510aab8f2ce 74 {
yuhangzhu 6:e510aab8f2ce 75 *adam_amp = 0;
yuhangzhu 6:e510aab8f2ce 76 return PARSE_OK;
yuhangzhu 6:e510aab8f2ce 77 }
yuhangzhu 6:e510aab8f2ce 78 else
yuhangzhu 6:e510aab8f2ce 79 return PARSE_ERR;
yuhangzhu 7:c268547fb6c8 80 }
yuhangzhu 7:c268547fb6c8 81 //single digit input
yuhangzhu 6:e510aab8f2ce 82 if(line_buf[0]>='0' && line_buf[0]<='7' && line_buf[1] == 255 && line_buf[2] == 255)
yuhangzhu 6:e510aab8f2ce 83 {
yuhangzhu 6:e510aab8f2ce 84 temp = (line_buf[0] - '0')*10;
yuhangzhu 6:e510aab8f2ce 85 *adam_amp = temp/5;
yuhangzhu 6:e510aab8f2ce 86 return PARSE_OK;
yuhangzhu 7:c268547fb6c8 87 }
yuhangzhu 7:c268547fb6c8 88 //x.x format input
yuhangzhu 6:e510aab8f2ce 89 else if(line_buf[0]>='0' && line_buf[0]<='7' && line_buf[2]>='0'&& line_buf[2]<='9' && line_buf[1] == '.')
yuhangzhu 6:e510aab8f2ce 90 {
yuhangzhu 6:e510aab8f2ce 91 temp = (line_buf[0] - '0')*10;
yuhangzhu 6:e510aab8f2ce 92 temp += line_buf[2] - '0';
yuhangzhu 6:e510aab8f2ce 93 *adam_amp = temp / 5;
yuhangzhu 6:e510aab8f2ce 94
yuhangzhu 6:e510aab8f2ce 95 if(temp % 5 == 0)
yuhangzhu 6:e510aab8f2ce 96 return PARSE_OK;
yuhangzhu 6:e510aab8f2ce 97 else
yuhangzhu 6:e510aab8f2ce 98 return PARSE_ROUNDED;
yuhangzhu 6:e510aab8f2ce 99 }
yuhangzhu 6:e510aab8f2ce 100 else
yuhangzhu 6:e510aab8f2ce 101 return PARSE_ERR;
yuhangzhu 2:45db4f4ca70d 102 }