Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
handlers.cpp@7:c268547fb6c8, 2013-07-13 (annotated)
- 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?
User | Revision | Line number | New 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 | } |