Main Program
Dependencies: mbed AQM1602 HMC6352 PID
main_processing/setup_command_active/command.cpp@24:9fb74ea3c25d, 2016-01-30 (annotated)
- Committer:
- lilac0112_1
- Date:
- Sat Jan 30 16:05:58 2016 +0000
- Revision:
- 24:9fb74ea3c25d
- Parent:
- 23:d95d8d3e89f3
- Child:
- 26:fbb03281fc7d
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
lilac0112_1 | 19:342da3a5a474 | 1 | #include "mbed.h" |
lilac0112_1 | 19:342da3a5a474 | 2 | #include "extern.h" |
lilac0112_1 | 19:342da3a5a474 | 3 | |
lilac0112_1 | 19:342da3a5a474 | 4 | void CommandLoop(void){ |
lilac0112_1 | 19:342da3a5a474 | 5 | uint8_t SwState,x=0,y=0, z; |
lilac0112_1 | 19:342da3a5a474 | 6 | uint8_t (*Function[STATE_NUM_Y])(uint8_t x) = { |
lilac0112_1 | 19:342da3a5a474 | 7 | LoopFunction0, |
lilac0112_1 | 19:342da3a5a474 | 8 | LoopFunction1, |
lilac0112_1 | 19:342da3a5a474 | 9 | LoopFunction2, |
lilac0112_1 | 19:342da3a5a474 | 10 | LoopFunction3, |
lilac0112_1 | 19:342da3a5a474 | 11 | LoopFunction4, |
lilac0112_1 | 19:342da3a5a474 | 12 | LoopFunction5, |
lilac0112_1 | 19:342da3a5a474 | 13 | LoopFunction6, |
lilac0112_1 | 19:342da3a5a474 | 14 | LoopFunction7, |
lilac0112_1 | 19:342da3a5a474 | 15 | LoopFunction8, |
lilac0112_1 | 19:342da3a5a474 | 16 | LoopFunction9, |
lilac0112_1 | 19:342da3a5a474 | 17 | LoopFunctionA, |
lilac0112_1 | 19:342da3a5a474 | 18 | LoopFunctionB, |
lilac0112_1 | 19:342da3a5a474 | 19 | LoopFunctionC, |
lilac0112_1 | 19:342da3a5a474 | 20 | LoopFunctionD, |
lilac0112_1 | 19:342da3a5a474 | 21 | LoopFunctionE, |
lilac0112_1 | 19:342da3a5a474 | 22 | LoopFunctionF |
lilac0112_1 | 19:342da3a5a474 | 23 | }; |
lilac0112_1 | 19:342da3a5a474 | 24 | data.init_point_flag=0; |
lilac0112_1 | 19:342da3a5a474 | 25 | while(1){ |
lilac0112_1 | 19:342da3a5a474 | 26 | SwState = ReadSw(); |
lilac0112_1 | 19:342da3a5a474 | 27 | if(SwState == NONE){ |
lilac0112_1 | 19:342da3a5a474 | 28 | if(x!=0){ |
lilac0112_1 | 19:342da3a5a474 | 29 | z = (*Function[y])(x); |
lilac0112_1 | 19:342da3a5a474 | 30 | if(z==1){ |
lilac0112_1 | 19:342da3a5a474 | 31 | x=0; |
lilac0112_1 | 19:342da3a5a474 | 32 | Lcd.cls(); |
lilac0112_1 | 19:342da3a5a474 | 33 | Lcd.locate(0, 0); |
lilac0112_1 | 19:342da3a5a474 | 34 | Lcd.print(lcdstr[y][0]); |
lilac0112_1 | 19:342da3a5a474 | 35 | Lcd.locate(7, 0); |
lilac0112_1 | 19:342da3a5a474 | 36 | Lcd.print(">"); |
lilac0112_1 | 19:342da3a5a474 | 37 | Lcd.locate(9, 0); |
lilac0112_1 | 19:342da3a5a474 | 38 | if(x!=0) Lcd.print(lcdstr[y][x]); |
lilac0112_1 | 19:342da3a5a474 | 39 | } |
lilac0112_1 | 19:342da3a5a474 | 40 | //Z==1...Once |
lilac0112_1 | 19:342da3a5a474 | 41 | //Z==0...Endless |
lilac0112_1 | 19:342da3a5a474 | 42 | } |
lilac0112_1 | 19:342da3a5a474 | 43 | continue; |
lilac0112_1 | 19:342da3a5a474 | 44 | } |
lilac0112_1 | 19:342da3a5a474 | 45 | if(SwState == UP){ |
lilac0112_1 | 19:342da3a5a474 | 46 | y += -1 + STATE_NUM_Y; |
lilac0112_1 | 19:342da3a5a474 | 47 | y %= STATE_NUM_Y; |
lilac0112_1 | 19:342da3a5a474 | 48 | x=0; |
lilac0112_1 | 19:342da3a5a474 | 49 | } |
lilac0112_1 | 19:342da3a5a474 | 50 | if(SwState == DOWN){ |
lilac0112_1 | 19:342da3a5a474 | 51 | y++; |
lilac0112_1 | 19:342da3a5a474 | 52 | y %= STATE_NUM_Y; |
lilac0112_1 | 19:342da3a5a474 | 53 | x=0; |
lilac0112_1 | 19:342da3a5a474 | 54 | } |
lilac0112_1 | 19:342da3a5a474 | 55 | if(SwState == RIGHT){ |
lilac0112_1 | 19:342da3a5a474 | 56 | if(lcdstr[y][1][0]==0) x=0; |
lilac0112_1 | 19:342da3a5a474 | 57 | else x++; |
lilac0112_1 | 21:d69a8f3c76e1 | 58 | if(x==STATE_NUM_X) x=0; |
lilac0112_1 | 19:342da3a5a474 | 59 | if(lcdstr[y][x][0]==0) x=0; |
lilac0112_1 | 19:342da3a5a474 | 60 | else x %= STATE_NUM_X; |
lilac0112_1 | 19:342da3a5a474 | 61 | } |
lilac0112_1 | 19:342da3a5a474 | 62 | if(SwState == LEFT){ |
lilac0112_1 | 19:342da3a5a474 | 63 | if((x!=0)&&(data.init_point_flag==1)){ |
lilac0112_1 | 19:342da3a5a474 | 64 | data.init_point_flag=0; |
lilac0112_1 | 19:342da3a5a474 | 65 | y = 1; |
lilac0112_1 | 19:342da3a5a474 | 66 | } |
lilac0112_1 | 19:342da3a5a474 | 67 | x=0; |
lilac0112_1 | 19:342da3a5a474 | 68 | } |
lilac0112_1 | 19:342da3a5a474 | 69 | Lcd.cls(); |
lilac0112_1 | 19:342da3a5a474 | 70 | Lcd.locate(0, 0); |
lilac0112_1 | 19:342da3a5a474 | 71 | Lcd.print(lcdstr[y][0]); |
lilac0112_1 | 19:342da3a5a474 | 72 | Lcd.locate(7, 0); |
lilac0112_1 | 19:342da3a5a474 | 73 | Lcd.print(">"); |
lilac0112_1 | 19:342da3a5a474 | 74 | Lcd.locate(9, 0); |
lilac0112_1 | 19:342da3a5a474 | 75 | if(x!=0) Lcd.print(lcdstr[y][x]); |
lilac0112_1 | 19:342da3a5a474 | 76 | } |
lilac0112_1 | 19:342da3a5a474 | 77 | } |
lilac0112_1 | 19:342da3a5a474 | 78 | uint8_t LoopFunction0(uint8_t x){ |
lilac0112_1 | 19:342da3a5a474 | 79 | char buf[0x10]; |
lilac0112_1 | 23:d95d8d3e89f3 | 80 | sprintf(buf, "Strategy:%2d", data.strategy); |
lilac0112_1 | 22:a95f7c63af3c | 81 | Lcd.locate(0, 1);Lcd.print(buf);wait_ms(50);return 0; |
lilac0112_1 | 19:342da3a5a474 | 82 | } |
lilac0112_1 | 19:342da3a5a474 | 83 | uint8_t LoopFunction1(uint8_t x){ |
lilac0112_1 | 19:342da3a5a474 | 84 | char buf[0x10]; |
lilac0112_1 | 19:342da3a5a474 | 85 | sprintf(buf, "CatPot"); |
lilac0112_1 | 19:342da3a5a474 | 86 | Lcd.locate(0, 1);Lcd.print(buf); |
lilac0112_1 | 19:342da3a5a474 | 87 | ActiveLoop(); |
lilac0112_1 | 19:342da3a5a474 | 88 | return 1; |
lilac0112_1 | 19:342da3a5a474 | 89 | } |
lilac0112_1 | 19:342da3a5a474 | 90 | uint8_t LoopFunction2(uint8_t x){ |
lilac0112_1 | 19:342da3a5a474 | 91 | char buf[0x10]; |
lilac0112_1 | 23:d95d8d3e89f3 | 92 | ReadIr(); |
lilac0112_1 | 23:d95d8d3e89f3 | 93 | |
lilac0112_1 | 23:d95d8d3e89f3 | 94 | if(x==1) sprintf(buf, "SHRT:%2d, LNG:%2d", data.irSpot[0], data.irSpot[1]); |
lilac0112_1 | 23:d95d8d3e89f3 | 95 | if(x==2) sprintf(buf, "NOTE:%2d", data.irNotice); |
lilac0112_1 | 22:a95f7c63af3c | 96 | Lcd.locate(0, 1);Lcd.print(buf);wait_ms(50);return 0; |
lilac0112_1 | 19:342da3a5a474 | 97 | } |
lilac0112_1 | 23:d95d8d3e89f3 | 98 | uint8_t LoopFunction3(uint8_t x){ |
lilac0112_1 | 23:d95d8d3e89f3 | 99 | char buf[0x10]; |
lilac0112_1 | 23:d95d8d3e89f3 | 100 | sprintf(buf, "A:%1d B:%1d C:%1d ", Line[2].read(), Line[1].read(), Line[0].read()); |
lilac0112_1 | 23:d95d8d3e89f3 | 101 | Lcd.locate(0, 1);Lcd.print(buf);wait_ms(50);return 0; |
lilac0112_1 | 23:d95d8d3e89f3 | 102 | } |
lilac0112_1 | 19:342da3a5a474 | 103 | uint8_t LoopFunction4(uint8_t x){ |
lilac0112_1 | 19:342da3a5a474 | 104 | char buf[0x10]; |
lilac0112_1 | 23:d95d8d3e89f3 | 105 | PidUpdate(); |
lilac0112_1 | 24:9fb74ea3c25d | 106 | sprintf(buf, "In:%03.0f Out:%+02d", data.InputPID, data.OutputPID); |
lilac0112_1 | 22:a95f7c63af3c | 107 | Lcd.locate(0, 1);Lcd.print(buf);wait_ms(50);return 0; |
lilac0112_1 | 19:342da3a5a474 | 108 | } |
lilac0112_1 | 22:a95f7c63af3c | 109 | uint8_t LoopFunction5(uint8_t x){ |
lilac0112_1 | 22:a95f7c63af3c | 110 | char buf[0x10]; |
lilac0112_1 | 22:a95f7c63af3c | 111 | sprintf(buf, "Enter"); |
lilac0112_1 | 22:a95f7c63af3c | 112 | Lcd.locate(0, 1);Lcd.print(buf); |
lilac0112_1 | 22:a95f7c63af3c | 113 | hmc.setCalibrationMode(HMC6352_EXIT_CALIB); |
lilac0112_1 | 22:a95f7c63af3c | 114 | return 1; |
lilac0112_1 | 22:a95f7c63af3c | 115 | } |
lilac0112_1 | 22:a95f7c63af3c | 116 | uint8_t LoopFunction6(uint8_t x){ |
lilac0112_1 | 22:a95f7c63af3c | 117 | char buf[0x10]; |
lilac0112_1 | 22:a95f7c63af3c | 118 | sprintf(buf, "Exit"); |
lilac0112_1 | 22:a95f7c63af3c | 119 | Lcd.locate(0, 1);Lcd.print(buf); |
lilac0112_1 | 22:a95f7c63af3c | 120 | hmc.setCalibrationMode(HMC6352_ENTER_CALIB); |
lilac0112_1 | 22:a95f7c63af3c | 121 | return 1; |
lilac0112_1 | 22:a95f7c63af3c | 122 | } |
lilac0112_1 | 19:342da3a5a474 | 123 | uint8_t LoopFunction7(uint8_t x){ return 0; } |
lilac0112_1 | 19:342da3a5a474 | 124 | uint8_t LoopFunction8(uint8_t x){ return 0; } |
lilac0112_1 | 19:342da3a5a474 | 125 | uint8_t LoopFunction9(uint8_t x){ return 0; } |
lilac0112_1 | 19:342da3a5a474 | 126 | uint8_t LoopFunctionA(uint8_t x){ return 0; } |
lilac0112_1 | 22:a95f7c63af3c | 127 | uint8_t LoopFunctionB(uint8_t x){ |
lilac0112_1 | 22:a95f7c63af3c | 128 | char buf[0x10]; |
lilac0112_1 | 22:a95f7c63af3c | 129 | if(x==1) data.strategy = 6; |
lilac0112_1 | 22:a95f7c63af3c | 130 | if(x==2) data.strategy = 7; |
lilac0112_1 | 22:a95f7c63af3c | 131 | if(x==3) data.strategy = 8; |
lilac0112_1 | 22:a95f7c63af3c | 132 | data.init_point_flag=1; |
lilac0112_1 | 22:a95f7c63af3c | 133 | sprintf(buf, "Make a strategy"); |
lilac0112_1 | 22:a95f7c63af3c | 134 | Lcd.locate(0, 1);Lcd.print(buf);return 0; |
lilac0112_1 | 22:a95f7c63af3c | 135 | } |
lilac0112_1 | 22:a95f7c63af3c | 136 | uint8_t LoopFunctionC(uint8_t x){ |
lilac0112_1 | 22:a95f7c63af3c | 137 | char buf[0x10]; |
lilac0112_1 | 22:a95f7c63af3c | 138 | if(x==1) data.strategy = 9; |
lilac0112_1 | 22:a95f7c63af3c | 139 | if(x==2) data.strategy = 10; |
lilac0112_1 | 22:a95f7c63af3c | 140 | if(x==3) data.strategy = 11; |
lilac0112_1 | 22:a95f7c63af3c | 141 | data.init_point_flag=1; |
lilac0112_1 | 22:a95f7c63af3c | 142 | sprintf(buf, "Make a strategy"); |
lilac0112_1 | 22:a95f7c63af3c | 143 | Lcd.locate(0, 1);Lcd.print(buf);return 0; |
lilac0112_1 | 22:a95f7c63af3c | 144 | } |
lilac0112_1 | 19:342da3a5a474 | 145 | uint8_t LoopFunctionD(uint8_t x){ |
lilac0112_1 | 19:342da3a5a474 | 146 | char buf[0x10]; |
lilac0112_1 | 19:342da3a5a474 | 147 | if(x==1) data.strategy = 0; |
lilac0112_1 | 19:342da3a5a474 | 148 | if(x==2) data.strategy = 1; |
lilac0112_1 | 19:342da3a5a474 | 149 | if(x==3) data.strategy = 2; |
lilac0112_1 | 19:342da3a5a474 | 150 | data.init_point_flag=1; |
lilac0112_1 | 19:342da3a5a474 | 151 | sprintf(buf, "Make a strategy"); |
lilac0112_1 | 19:342da3a5a474 | 152 | Lcd.locate(0, 1);Lcd.print(buf);return 0; |
lilac0112_1 | 19:342da3a5a474 | 153 | } |
lilac0112_1 | 19:342da3a5a474 | 154 | uint8_t LoopFunctionE(uint8_t x){ |
lilac0112_1 | 19:342da3a5a474 | 155 | char buf[0x10]; |
lilac0112_1 | 19:342da3a5a474 | 156 | if(x==1) data.strategy = 3; |
lilac0112_1 | 19:342da3a5a474 | 157 | if(x==2) data.strategy = 4; |
lilac0112_1 | 19:342da3a5a474 | 158 | if(x==3) data.strategy = 5; |
lilac0112_1 | 19:342da3a5a474 | 159 | data.init_point_flag=1; |
lilac0112_1 | 19:342da3a5a474 | 160 | sprintf(buf, "Make a strategy"); |
lilac0112_1 | 19:342da3a5a474 | 161 | Lcd.locate(0, 1);Lcd.print(buf);return 0; |
lilac0112_1 | 19:342da3a5a474 | 162 | } |
lilac0112_1 | 19:342da3a5a474 | 163 | uint8_t LoopFunctionF(uint8_t x){ return 0; } |