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.
CommandLine.c@0:70e79ca6391c, 2011-03-16 (annotated)
- Committer:
- gvloch
- Date:
- Wed Mar 16 10:20:41 2011 +0000
- Revision:
- 0:70e79ca6391c
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| gvloch | 0:70e79ca6391c | 1 | |
| gvloch | 0:70e79ca6391c | 2 | #include "mbed.h" |
| gvloch | 0:70e79ca6391c | 3 | #include <string.h> |
| gvloch | 0:70e79ca6391c | 4 | #include "header.h" |
| gvloch | 0:70e79ca6391c | 5 | #include "SerialRPCInterface.h" |
| gvloch | 0:70e79ca6391c | 6 | |
| gvloch | 0:70e79ca6391c | 7 | |
| gvloch | 0:70e79ca6391c | 8 | extern float InputLightLevel; // in dBm |
| gvloch | 0:70e79ca6391c | 9 | extern float OutputLightLevel; // in dBm |
| gvloch | 0:70e79ca6391c | 10 | extern float ReflectedLightLevel; // in dBm |
| gvloch | 0:70e79ca6391c | 11 | extern float PumpLightLevel1; // in dBm |
| gvloch | 0:70e79ca6391c | 12 | extern float PumpLightLevel2; // in dBm |
| gvloch | 0:70e79ca6391c | 13 | extern float InputLightLevelM; |
| gvloch | 0:70e79ca6391c | 14 | extern float OutputLightLevelM; |
| gvloch | 0:70e79ca6391c | 15 | extern float ReflectedLightLevelM; |
| gvloch | 0:70e79ca6391c | 16 | extern float PumpLightLevel1M; |
| gvloch | 0:70e79ca6391c | 17 | extern float PumpLightLevel2M; |
| gvloch | 0:70e79ca6391c | 18 | extern float AmplifierGain; //in dB |
| gvloch | 0:70e79ca6391c | 19 | extern float AmplifierPower; //in dBm |
| gvloch | 0:70e79ca6391c | 20 | extern char AmplifierMode; // C = Constant Current, G = Constant Gain, P = constant output power |
| gvloch | 0:70e79ca6391c | 21 | extern float PumpCurrent1; // mA |
| gvloch | 0:70e79ca6391c | 22 | extern float PumpCurrent2; // mA |
| gvloch | 0:70e79ca6391c | 23 | extern char SerialControl; |
| gvloch | 0:70e79ca6391c | 24 | extern int DebugLevel; |
| gvloch | 0:70e79ca6391c | 25 | |
| gvloch | 0:70e79ca6391c | 26 | extern char commandstring[16]; |
| gvloch | 0:70e79ca6391c | 27 | extern char commandstringlen; |
| gvloch | 0:70e79ca6391c | 28 | extern "C" void mbed_reset(); |
| gvloch | 0:70e79ca6391c | 29 | |
| gvloch | 0:70e79ca6391c | 30 | |
| gvloch | 0:70e79ca6391c | 31 | |
| gvloch | 0:70e79ca6391c | 32 | |
| gvloch | 0:70e79ca6391c | 33 | void splashscreen(); |
| gvloch | 0:70e79ca6391c | 34 | void commandline(void) |
| gvloch | 0:70e79ca6391c | 35 | { |
| gvloch | 0:70e79ca6391c | 36 | long int templi=0; |
| gvloch | 0:70e79ca6391c | 37 | |
| gvloch | 0:70e79ca6391c | 38 | |
| gvloch | 0:70e79ca6391c | 39 | //pc.scanf("%s",&commandstring); |
| gvloch | 0:70e79ca6391c | 40 | |
| gvloch | 0:70e79ca6391c | 41 | if (commandstring[0] == '*') |
| gvloch | 0:70e79ca6391c | 42 | { |
| gvloch | 0:70e79ca6391c | 43 | printf("Resetting...\n\r"); |
| gvloch | 0:70e79ca6391c | 44 | wait_ms(1000); |
| gvloch | 0:70e79ca6391c | 45 | mbed_reset(); |
| gvloch | 0:70e79ca6391c | 46 | } |
| gvloch | 0:70e79ca6391c | 47 | if (commandstring[0] == 's') |
| gvloch | 0:70e79ca6391c | 48 | { |
| gvloch | 0:70e79ca6391c | 49 | splashscreen(); |
| gvloch | 0:70e79ca6391c | 50 | statusscreen(); |
| gvloch | 0:70e79ca6391c | 51 | } |
| gvloch | 0:70e79ca6391c | 52 | if (commandstring[0] == 'd') |
| gvloch | 0:70e79ca6391c | 53 | { |
| gvloch | 0:70e79ca6391c | 54 | if (commandstring[1]<97) |
| gvloch | 0:70e79ca6391c | 55 | { |
| gvloch | 0:70e79ca6391c | 56 | templi = (commandstring[1]-48)*0x10; |
| gvloch | 0:70e79ca6391c | 57 | }else |
| gvloch | 0:70e79ca6391c | 58 | { |
| gvloch | 0:70e79ca6391c | 59 | templi = (commandstring[1]-97+10)*0x10; |
| gvloch | 0:70e79ca6391c | 60 | } |
| gvloch | 0:70e79ca6391c | 61 | if (commandstring[2]<97) |
| gvloch | 0:70e79ca6391c | 62 | { |
| gvloch | 0:70e79ca6391c | 63 | templi += (commandstring[2]-48); |
| gvloch | 0:70e79ca6391c | 64 | }else |
| gvloch | 0:70e79ca6391c | 65 | { |
| gvloch | 0:70e79ca6391c | 66 | templi += (commandstring[2]-97+10); |
| gvloch | 0:70e79ca6391c | 67 | } |
| gvloch | 0:70e79ca6391c | 68 | printf ("\n\rDAC(%X)\n\r", templi); |
| gvloch | 0:70e79ca6391c | 69 | |
| gvloch | 0:70e79ca6391c | 70 | } |
| gvloch | 0:70e79ca6391c | 71 | |
| gvloch | 0:70e79ca6391c | 72 | |
| gvloch | 0:70e79ca6391c | 73 | if (commandstring[0] == '.') |
| gvloch | 0:70e79ca6391c | 74 | { |
| gvloch | 0:70e79ca6391c | 75 | switch (AmplifierMode) |
| gvloch | 0:70e79ca6391c | 76 | { |
| gvloch | 0:70e79ca6391c | 77 | case 'c': |
| gvloch | 0:70e79ca6391c | 78 | case 'C': |
| gvloch | 0:70e79ca6391c | 79 | PumpCurrent1+=1.0; |
| gvloch | 0:70e79ca6391c | 80 | PumpCurrent2+=1.0; |
| gvloch | 0:70e79ca6391c | 81 | printf ("\n\rPumpCurrent1 %3.1f mA\n\r", PumpCurrent1); |
| gvloch | 0:70e79ca6391c | 82 | printf ("\n\rPumpCurrent2 %3.1f mA\n\r", PumpCurrent2); |
| gvloch | 0:70e79ca6391c | 83 | break; |
| gvloch | 0:70e79ca6391c | 84 | case 'g': |
| gvloch | 0:70e79ca6391c | 85 | case 'G': |
| gvloch | 0:70e79ca6391c | 86 | AmplifierGain+=0.1; |
| gvloch | 0:70e79ca6391c | 87 | printf ("\n\rAmplifierGain %3.1f dBm\n\r", AmplifierGain); |
| gvloch | 0:70e79ca6391c | 88 | break; |
| gvloch | 0:70e79ca6391c | 89 | case 'p': |
| gvloch | 0:70e79ca6391c | 90 | case 'P': |
| gvloch | 0:70e79ca6391c | 91 | AmplifierPower+=0.1; |
| gvloch | 0:70e79ca6391c | 92 | printf ("\n\rAmplifierPower %3.1f dBm\n\r", AmplifierPower); |
| gvloch | 0:70e79ca6391c | 93 | break; |
| gvloch | 0:70e79ca6391c | 94 | } |
| gvloch | 0:70e79ca6391c | 95 | } |
| gvloch | 0:70e79ca6391c | 96 | |
| gvloch | 0:70e79ca6391c | 97 | if (commandstring[0] == ',') |
| gvloch | 0:70e79ca6391c | 98 | { |
| gvloch | 0:70e79ca6391c | 99 | switch (AmplifierMode) |
| gvloch | 0:70e79ca6391c | 100 | { |
| gvloch | 0:70e79ca6391c | 101 | case 'c': |
| gvloch | 0:70e79ca6391c | 102 | case 'C': |
| gvloch | 0:70e79ca6391c | 103 | PumpCurrent1-=1.0; |
| gvloch | 0:70e79ca6391c | 104 | PumpCurrent2-=1.0; |
| gvloch | 0:70e79ca6391c | 105 | printf ("\n\rPumpCurrent1 %3.1f mA\n\r", PumpCurrent1); |
| gvloch | 0:70e79ca6391c | 106 | printf ("\n\rPumpCurrent2 %3.1f mA\n\r", PumpCurrent2); |
| gvloch | 0:70e79ca6391c | 107 | break; |
| gvloch | 0:70e79ca6391c | 108 | case 'g': |
| gvloch | 0:70e79ca6391c | 109 | case 'G': |
| gvloch | 0:70e79ca6391c | 110 | AmplifierGain-=0.1; |
| gvloch | 0:70e79ca6391c | 111 | printf ("\n\rAmplifierGain %3.1f dB\n\r", AmplifierGain); |
| gvloch | 0:70e79ca6391c | 112 | break; |
| gvloch | 0:70e79ca6391c | 113 | case 'p': |
| gvloch | 0:70e79ca6391c | 114 | case 'P': |
| gvloch | 0:70e79ca6391c | 115 | AmplifierPower-=0.1; |
| gvloch | 0:70e79ca6391c | 116 | printf ("\n\rAmplifierPower %3.1f dBm\n\r", AmplifierPower); |
| gvloch | 0:70e79ca6391c | 117 | break; |
| gvloch | 0:70e79ca6391c | 118 | } |
| gvloch | 0:70e79ca6391c | 119 | } |
| gvloch | 0:70e79ca6391c | 120 | if (commandstring[0] == '<') |
| gvloch | 0:70e79ca6391c | 121 | { |
| gvloch | 0:70e79ca6391c | 122 | PumpCurrent1+=1.0; |
| gvloch | 0:70e79ca6391c | 123 | PumpCurrent2-=1.0; |
| gvloch | 0:70e79ca6391c | 124 | printf ("\n\rPumpCurrent1 %3.1f mA\n\r", PumpCurrent1); |
| gvloch | 0:70e79ca6391c | 125 | printf ("\n\rPumpCurrent2 %3.1f mA\n\r", PumpCurrent2); |
| gvloch | 0:70e79ca6391c | 126 | } |
| gvloch | 0:70e79ca6391c | 127 | if (commandstring[0] == '>') |
| gvloch | 0:70e79ca6391c | 128 | { |
| gvloch | 0:70e79ca6391c | 129 | PumpCurrent1-=1.0; |
| gvloch | 0:70e79ca6391c | 130 | PumpCurrent2+=1.0; |
| gvloch | 0:70e79ca6391c | 131 | printf ("\n\rPumpCurrent1 %3.1f mA\n\r", PumpCurrent1); |
| gvloch | 0:70e79ca6391c | 132 | printf ("\n\rPumpCurrent2 %3.1f mA\n\r", PumpCurrent2); |
| gvloch | 0:70e79ca6391c | 133 | } |
| gvloch | 0:70e79ca6391c | 134 | if ((commandstring[0] == 'c')||(commandstring[0] == 'C')) |
| gvloch | 0:70e79ca6391c | 135 | { |
| gvloch | 0:70e79ca6391c | 136 | if ((commandstring[1] == 'c')||(commandstring[1] == 'C')) {AmplifierMode='c'; printf("Amplifier Mode: CONST CURRENT");} |
| gvloch | 0:70e79ca6391c | 137 | if ((commandstring[1] == 'g')||(commandstring[1] == 'G')) {AmplifierMode='g'; printf("Amplifier Mode: CONST GAIN");} |
| gvloch | 0:70e79ca6391c | 138 | if ((commandstring[1] == 'p')||(commandstring[1] == 'P')) {AmplifierMode='p'; printf("Amplifier Mode: CONST POWER");} |
| gvloch | 0:70e79ca6391c | 139 | |
| gvloch | 0:70e79ca6391c | 140 | |
| gvloch | 0:70e79ca6391c | 141 | } |
| gvloch | 0:70e79ca6391c | 142 | if (commandstring[0] == 'r') |
| gvloch | 0:70e79ca6391c | 143 | { |
| gvloch | 0:70e79ca6391c | 144 | if (commandstring[1]<97) |
| gvloch | 0:70e79ca6391c | 145 | { |
| gvloch | 0:70e79ca6391c | 146 | templi = (commandstring[1]-48)*0x10; |
| gvloch | 0:70e79ca6391c | 147 | }else |
| gvloch | 0:70e79ca6391c | 148 | { |
| gvloch | 0:70e79ca6391c | 149 | templi = (commandstring[1]-97+10)*0x10; |
| gvloch | 0:70e79ca6391c | 150 | } |
| gvloch | 0:70e79ca6391c | 151 | if (commandstring[2]<97) |
| gvloch | 0:70e79ca6391c | 152 | { |
| gvloch | 0:70e79ca6391c | 153 | templi += (commandstring[2]-48); |
| gvloch | 0:70e79ca6391c | 154 | }else |
| gvloch | 0:70e79ca6391c | 155 | { |
| gvloch | 0:70e79ca6391c | 156 | templi += (commandstring[2]-97+10); |
| gvloch | 0:70e79ca6391c | 157 | } |
| gvloch | 0:70e79ca6391c | 158 | |
| gvloch | 0:70e79ca6391c | 159 | printf ("\n\r(%X) => \n\r", templi); |
| gvloch | 0:70e79ca6391c | 160 | } |
| gvloch | 0:70e79ca6391c | 161 | if ((commandstring[0] == 'w')&&(commandstringlen == 10)) |
| gvloch | 0:70e79ca6391c | 162 | { |
| gvloch | 0:70e79ca6391c | 163 | if (commandstring[1]<97) |
| gvloch | 0:70e79ca6391c | 164 | { |
| gvloch | 0:70e79ca6391c | 165 | templi = long(commandstring[1]-48)*0x10000000; |
| gvloch | 0:70e79ca6391c | 166 | }else |
| gvloch | 0:70e79ca6391c | 167 | { |
| gvloch | 0:70e79ca6391c | 168 | templi = long(commandstring[1]-97+10)*0x10000000; |
| gvloch | 0:70e79ca6391c | 169 | } |
| gvloch | 0:70e79ca6391c | 170 | if (commandstring[2]<97) |
| gvloch | 0:70e79ca6391c | 171 | { |
| gvloch | 0:70e79ca6391c | 172 | templi += long(commandstring[2]-48)*0x1000000; |
| gvloch | 0:70e79ca6391c | 173 | }else |
| gvloch | 0:70e79ca6391c | 174 | { |
| gvloch | 0:70e79ca6391c | 175 | templi += long(commandstring[2]-97+10)*0x1000000; |
| gvloch | 0:70e79ca6391c | 176 | } |
| gvloch | 0:70e79ca6391c | 177 | if (commandstring[3]<97) |
| gvloch | 0:70e79ca6391c | 178 | { |
| gvloch | 0:70e79ca6391c | 179 | templi += long(commandstring[3]-48)*0x100000; |
| gvloch | 0:70e79ca6391c | 180 | }else |
| gvloch | 0:70e79ca6391c | 181 | { |
| gvloch | 0:70e79ca6391c | 182 | templi += long(commandstring[3]-97+10)*0x100000; |
| gvloch | 0:70e79ca6391c | 183 | } |
| gvloch | 0:70e79ca6391c | 184 | if (commandstring[4]<97) |
| gvloch | 0:70e79ca6391c | 185 | { |
| gvloch | 0:70e79ca6391c | 186 | templi += long(commandstring[4]-48)*0x10000; |
| gvloch | 0:70e79ca6391c | 187 | }else |
| gvloch | 0:70e79ca6391c | 188 | { |
| gvloch | 0:70e79ca6391c | 189 | templi += long(commandstring[4]-97+10)*0x10000; |
| gvloch | 0:70e79ca6391c | 190 | } |
| gvloch | 0:70e79ca6391c | 191 | if (commandstring[5]<97) |
| gvloch | 0:70e79ca6391c | 192 | { |
| gvloch | 0:70e79ca6391c | 193 | templi += long(commandstring[5]-48)*0x1000; |
| gvloch | 0:70e79ca6391c | 194 | }else |
| gvloch | 0:70e79ca6391c | 195 | { |
| gvloch | 0:70e79ca6391c | 196 | templi += long(commandstring[5]-97+10)*0x1000; |
| gvloch | 0:70e79ca6391c | 197 | } |
| gvloch | 0:70e79ca6391c | 198 | if (commandstring[6]<97) |
| gvloch | 0:70e79ca6391c | 199 | { |
| gvloch | 0:70e79ca6391c | 200 | templi += long(commandstring[6]-48)*0x100; |
| gvloch | 0:70e79ca6391c | 201 | }else |
| gvloch | 0:70e79ca6391c | 202 | { |
| gvloch | 0:70e79ca6391c | 203 | templi += long(commandstring[6]-97+10)*0x100; |
| gvloch | 0:70e79ca6391c | 204 | } |
| gvloch | 0:70e79ca6391c | 205 | if (commandstring[7]<97) |
| gvloch | 0:70e79ca6391c | 206 | { |
| gvloch | 0:70e79ca6391c | 207 | templi += long(commandstring[7]-48)*0x10; |
| gvloch | 0:70e79ca6391c | 208 | }else |
| gvloch | 0:70e79ca6391c | 209 | { |
| gvloch | 0:70e79ca6391c | 210 | templi += long(commandstring[7]-97+10)*0x10; |
| gvloch | 0:70e79ca6391c | 211 | } |
| gvloch | 0:70e79ca6391c | 212 | if (commandstring[8]<97) |
| gvloch | 0:70e79ca6391c | 213 | { |
| gvloch | 0:70e79ca6391c | 214 | templi += long(commandstring[8]-48); |
| gvloch | 0:70e79ca6391c | 215 | }else |
| gvloch | 0:70e79ca6391c | 216 | { |
| gvloch | 0:70e79ca6391c | 217 | templi += long(commandstring[8]-97+10); |
| gvloch | 0:70e79ca6391c | 218 | } |
| gvloch | 0:70e79ca6391c | 219 | printf ("\n\r(%X)\n\r", 0); |
| gvloch | 0:70e79ca6391c | 220 | } |
| gvloch | 0:70e79ca6391c | 221 | if (commandstring[0] == '?') |
| gvloch | 0:70e79ca6391c | 222 | { |
| gvloch | 0:70e79ca6391c | 223 | printf("\n\r"); |
| gvloch | 0:70e79ca6391c | 224 | printf("|----------------------------------------------------------------------|\n\r"); |
| gvloch | 0:70e79ca6391c | 225 | printf("| Read command rxx<cr> => r-read xx-address |\n\r"); |
| gvloch | 0:70e79ca6391c | 226 | printf("| Write command wxxyyyyyy<cr> => r-read xx-address yyy-data |\n\r"); |
| gvloch | 0:70e79ca6391c | 227 | printf("| Set DAC command dxx<cr> => d-write to DAC xxx-data |\n\r"); |
| gvloch | 0:70e79ca6391c | 228 | printf("| Set Amplifier mode cx<cr> => x=c,g or p (Const current,gain,power) |\n\r"); |
| gvloch | 0:70e79ca6391c | 229 | printf("| |\n\r"); |
| gvloch | 0:70e79ca6391c | 230 | printf("| Status command: s |\n\r"); |
| gvloch | 0:70e79ca6391c | 231 | printf("| Manual Contol: , Negative step |\n\r"); |
| gvloch | 0:70e79ca6391c | 232 | printf("| Manual Contol: . Positive step |\n\r"); |
| gvloch | 0:70e79ca6391c | 233 | printf("| Pump Balance adjust:< Negative step |\n\r"); |
| gvloch | 0:70e79ca6391c | 234 | printf("| Pump Balance adjust:> Positive step |\n\r"); |
| gvloch | 0:70e79ca6391c | 235 | printf("| RESET Controller: * |\n\r"); |
| gvloch | 0:70e79ca6391c | 236 | printf("|----------------------------------------------------------------------|\n\r"); |
| gvloch | 0:70e79ca6391c | 237 | } |
| gvloch | 0:70e79ca6391c | 238 | printf("\r\n>"); |
| gvloch | 0:70e79ca6391c | 239 | |
| gvloch | 0:70e79ca6391c | 240 | } |
| gvloch | 0:70e79ca6391c | 241 | void statusscreen(void) |
| gvloch | 0:70e79ca6391c | 242 | { |
| gvloch | 0:70e79ca6391c | 243 | printf ("\n\rStatus\n\r"); |
| gvloch | 0:70e79ca6391c | 244 | printf("SystemCoreClock = %.3f MHz\n\r", (float)SystemCoreClock/1000000.0); |
| gvloch | 0:70e79ca6391c | 245 | printf("InputLightLevel = %3.1f dBm\n\r", InputLightLevel); |
| gvloch | 0:70e79ca6391c | 246 | printf("OutputLightLevel = %3.1f dBm\n\r", OutputLightLevel); |
| gvloch | 0:70e79ca6391c | 247 | printf("ReflectedLightLevel = %3.1f dBm\n\r", ReflectedLightLevel); |
| gvloch | 0:70e79ca6391c | 248 | printf("PumpLightLevel1 = %3.1f dBm\n\r", PumpLightLevel1); |
| gvloch | 0:70e79ca6391c | 249 | printf("PumpLightLevel2 = %3.1f dBm\n\r", PumpLightLevel2); |
| gvloch | 0:70e79ca6391c | 250 | switch (AmplifierMode) |
| gvloch | 0:70e79ca6391c | 251 | { |
| gvloch | 0:70e79ca6391c | 252 | case 'c': |
| gvloch | 0:70e79ca6391c | 253 | case 'C': |
| gvloch | 0:70e79ca6391c | 254 | printf("Pump Mode = CONSTANT CURRENT\n\r"); |
| gvloch | 0:70e79ca6391c | 255 | break; |
| gvloch | 0:70e79ca6391c | 256 | case 'g': |
| gvloch | 0:70e79ca6391c | 257 | case 'G': |
| gvloch | 0:70e79ca6391c | 258 | printf("Pump Mode = CONSTANT GAIN\n\r"); |
| gvloch | 0:70e79ca6391c | 259 | break; |
| gvloch | 0:70e79ca6391c | 260 | case 'p': |
| gvloch | 0:70e79ca6391c | 261 | case 'P': |
| gvloch | 0:70e79ca6391c | 262 | printf("Pump Mode = CONSTANT POWER\n\r"); |
| gvloch | 0:70e79ca6391c | 263 | break; |
| gvloch | 0:70e79ca6391c | 264 | } |
| gvloch | 0:70e79ca6391c | 265 | printf("AmplifierGain = %3.1f dBm\n\r", AmplifierGain); |
| gvloch | 0:70e79ca6391c | 266 | printf("PumpCurrent1 = %3.1f mA\n\r", PumpCurrent1); |
| gvloch | 0:70e79ca6391c | 267 | printf("PumpCurrent2 = %3.1f mA\n\r", PumpCurrent2); |
| gvloch | 0:70e79ca6391c | 268 | printf("\n\r>"); |
| gvloch | 0:70e79ca6391c | 269 | |
| gvloch | 0:70e79ca6391c | 270 | } |
| gvloch | 0:70e79ca6391c | 271 | void splashscreen(void) |
| gvloch | 0:70e79ca6391c | 272 | { |
| gvloch | 0:70e79ca6391c | 273 | printf("%c",0x0C); |
| gvloch | 0:70e79ca6391c | 274 | printf("\r\nXtera Amplifier controller Debug Interface v0.01\n\n\r"); |
| gvloch | 0:70e79ca6391c | 275 | printf("Type ?<cr> for help\n\n\r"); |
| gvloch | 0:70e79ca6391c | 276 | } |
| gvloch | 0:70e79ca6391c | 277 |