Gerhard van Lochem / Mbed 2 deprecated AmpCon
Committer:
gvloch
Date:
Wed Mar 16 10:20:41 2011 +0000
Revision:
0:70e79ca6391c

        

Who changed what in which revision?

UserRevisionLine numberNew 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