Qubit 2020 / presensfirmwareupdate

Dependencies:   mbed

Committer:
whiteheadrf
Date:
Wed Mar 10 21:09:24 2021 +0000
Revision:
1:eac9f7a0488f
Parent:
0:1121a7ef2e36
Child:
2:4603eae79fb6
changed wifi buffer from 1024 to 256; changed message length max

Who changed what in which revision?

UserRevisionLine numberNew contents of line
whiteheadrf 0:1121a7ef2e36 1 #include "mbed.h"
whiteheadrf 0:1121a7ef2e36 2 #include "cisme.h"
whiteheadrf 0:1121a7ef2e36 3 #include "keys.h"
whiteheadrf 0:1121a7ef2e36 4 #include "lcd.h"
whiteheadrf 0:1121a7ef2e36 5 #include "lcd_events.h"
whiteheadrf 0:1121a7ef2e36 6 #include "wifi_events.h"
whiteheadrf 0:1121a7ef2e36 7 #include "wifi.h"
whiteheadrf 0:1121a7ef2e36 8 #include "MSCFileSystem.h"
whiteheadrf 0:1121a7ef2e36 9 #include "debug.h"
whiteheadrf 0:1121a7ef2e36 10 #include "pump.h"
whiteheadrf 0:1121a7ef2e36 11 #include "light.h"
whiteheadrf 0:1121a7ef2e36 12 #include "buzzer.h"
whiteheadrf 0:1121a7ef2e36 13 #include "presens.h"
whiteheadrf 0:1121a7ef2e36 14 #include "adc.h"
whiteheadrf 0:1121a7ef2e36 15 #include "experiments.h"
whiteheadrf 0:1121a7ef2e36 16
whiteheadrf 0:1121a7ef2e36 17 MSCFileSystem msc(FSNAME);
whiteheadrf 0:1121a7ef2e36 18
whiteheadrf 0:1121a7ef2e36 19 int Salinity = 36;
whiteheadrf 0:1121a7ef2e36 20 double PHTEMP = 0.0;
whiteheadrf 0:1121a7ef2e36 21 double pH = 0.0;
whiteheadrf 0:1121a7ef2e36 22 double pHCorrected = 0.0;
whiteheadrf 0:1121a7ef2e36 23 float pHT = 0.0;
whiteheadrf 0:1121a7ef2e36 24 int flowintime = 0;
whiteheadrf 0:1121a7ef2e36 25 int lightintime = 0;
whiteheadrf 0:1121a7ef2e36 26 int minRESP = 0;
whiteheadrf 0:1121a7ef2e36 27 int minPHOTO = 0;
whiteheadrf 0:1121a7ef2e36 28 int MeasurementFlow = 0;
whiteheadrf 0:1121a7ef2e36 29 int MeasurementLight = 0;
whiteheadrf 0:1121a7ef2e36 30 int MeasurementTypeVal = 0;
whiteheadrf 0:1121a7ef2e36 31 int mtimeRemaining = 0;
whiteheadrf 0:1121a7ef2e36 32 // a, b and c variables are used for example in file lcd_events.c in function phCal in fprintf.
whiteheadrf 0:1121a7ef2e36 33 float a = 0.0;
whiteheadrf 0:1121a7ef2e36 34 float b = 2.8;
whiteheadrf 0:1121a7ef2e36 35 float c = 0.0;
whiteheadrf 0:1121a7ef2e36 36 float PresCal = 1.0;
whiteheadrf 0:1121a7ef2e36 37 float PhaseCal2 = 1.0;
whiteheadrf 0:1121a7ef2e36 38 float TempCal2 = 1.0;
whiteheadrf 0:1121a7ef2e36 39 float PhaseCal1 = 1.0;
whiteheadrf 0:1121a7ef2e36 40 float TempCal1 = 1.0;
whiteheadrf 0:1121a7ef2e36 41 float LEDCurrent = 150.0;
whiteheadrf 0:1121a7ef2e36 42 float UNIT = 0;
whiteheadrf 0:1121a7ef2e36 43 float PHBUFFERF = 0.0;
whiteheadrf 0:1121a7ef2e36 44 float PHTEMPF = 0.0;
whiteheadrf 0:1121a7ef2e36 45 float PHTEMPKF = 0.0;
whiteheadrf 0:1121a7ef2e36 46 float PHVOLTSF = 0.0;
whiteheadrf 0:1121a7ef2e36 47 float MSINGLEPT = 0.0;
whiteheadrf 0:1121a7ef2e36 48 float EOSINGLEPT = 0.0;
whiteheadrf 0:1121a7ef2e36 49 int numberofprograms = 0;
whiteheadrf 0:1121a7ef2e36 50 float pHNoGain = 0.0;
whiteheadrf 0:1121a7ef2e36 51 float A = 0.0;
whiteheadrf 0:1121a7ef2e36 52 float B = 0.0;
whiteheadrf 0:1121a7ef2e36 53 float C = 0.0;
whiteheadrf 0:1121a7ef2e36 54 float D = 0.0;
whiteheadrf 0:1121a7ef2e36 55 //float lastPercentPump = 45.0;
whiteheadrf 0:1121a7ef2e36 56
whiteheadrf 0:1121a7ef2e36 57 char instrumentId[INSTRUMENT_ID_LEN] = "C1";
whiteheadrf 0:1121a7ef2e36 58
whiteheadrf 0:1121a7ef2e36 59 DigitalOut L1(LED1);
whiteheadrf 0:1121a7ef2e36 60 DigitalOut L2(LED2);
whiteheadrf 0:1121a7ef2e36 61 DigitalOut L3(LED3);
whiteheadrf 0:1121a7ef2e36 62 DigitalOut L4(LED4);
whiteheadrf 0:1121a7ef2e36 63
whiteheadrf 0:1121a7ef2e36 64 // Configure Analog Input
whiteheadrf 0:1121a7ef2e36 65 DigitalIn SDOFlag(p8);
whiteheadrf 0:1121a7ef2e36 66
whiteheadrf 0:1121a7ef2e36 67
whiteheadrf 0:1121a7ef2e36 68 /******************************************************************************\
whiteheadrf 0:1121a7ef2e36 69 ** main
whiteheadrf 0:1121a7ef2e36 70 \******************************************************************************/
whiteheadrf 0:1121a7ef2e36 71 int main()
whiteheadrf 0:1121a7ef2e36 72 {
whiteheadrf 0:1121a7ef2e36 73 FILE *paramFile;
whiteheadrf 0:1121a7ef2e36 74 FILE *isFetFile;
whiteheadrf 0:1121a7ef2e36 75
whiteheadrf 0:1121a7ef2e36 76 int DebugFlag = 0;
whiteheadrf 0:1121a7ef2e36 77
whiteheadrf 0:1121a7ef2e36 78 debugInit(DEBUG_LEVEL_INFO);
whiteheadrf 0:1121a7ef2e36 79 SDOFlag.mode(OpenDrain);
whiteheadrf 0:1121a7ef2e36 80 buzzerInit();
whiteheadrf 0:1121a7ef2e36 81
whiteheadrf 0:1121a7ef2e36 82 L1 = 0;
whiteheadrf 0:1121a7ef2e36 83 L2 = 0;
whiteheadrf 0:1121a7ef2e36 84 L3 = 0;
whiteheadrf 0:1121a7ef2e36 85 L4 = 0;
whiteheadrf 0:1121a7ef2e36 86
whiteheadrf 0:1121a7ef2e36 87 presensInit();
whiteheadrf 0:1121a7ef2e36 88 lcdInit();
whiteheadrf 0:1121a7ef2e36 89
whiteheadrf 0:1121a7ef2e36 90 lcdEventSplash();
whiteheadrf 0:1121a7ef2e36 91
whiteheadrf 0:1121a7ef2e36 92 opendir("/" FSNAME);
whiteheadrf 0:1121a7ef2e36 93
whiteheadrf 0:1121a7ef2e36 94 isFetFile = fopen("/" FSNAME "/Parameters/isfet.sys","r");
whiteheadrf 0:1121a7ef2e36 95
whiteheadrf 0:1121a7ef2e36 96 if (isFetFile == NULL) {
whiteheadrf 0:1121a7ef2e36 97 lcdClear();
whiteheadrf 0:1121a7ef2e36 98 ERROR("Could not open file for write /" FSNAME "/Parameters/isfet.sys");
whiteheadrf 0:1121a7ef2e36 99 lcdWrite(4, 0, JUSTIFICATION_CENTER, "isfet File Missing");
whiteheadrf 0:1121a7ef2e36 100 ADD_START_ERROR(ERROR_MISSED_ISFET);
whiteheadrf 0:1121a7ef2e36 101 } else {
whiteheadrf 0:1121a7ef2e36 102 fscanf(isFetFile, "%f,%f,%f,%f", &A, &B, &C, &D);
whiteheadrf 0:1121a7ef2e36 103 fclose(isFetFile);
whiteheadrf 0:1121a7ef2e36 104 }
whiteheadrf 0:1121a7ef2e36 105
whiteheadrf 0:1121a7ef2e36 106 // Read default parameters from file
whiteheadrf 0:1121a7ef2e36 107 paramFile = fopen("/" FSNAME "/Parameters/dsparams.sys", "r");
whiteheadrf 0:1121a7ef2e36 108
whiteheadrf 0:1121a7ef2e36 109 if (paramFile == NULL) {
whiteheadrf 0:1121a7ef2e36 110 lcdClear();
whiteheadrf 0:1121a7ef2e36 111 lcdWrite(4, 0, JUSTIFICATION_CENTER, "Dsprams File Missing");
whiteheadrf 0:1121a7ef2e36 112 ERROR("Dsparams file missing.");
whiteheadrf 0:1121a7ef2e36 113 ADD_START_ERROR(ERROR_MISSED_DSPARAMS);
whiteheadrf 0:1121a7ef2e36 114 } else {
whiteheadrf 0:1121a7ef2e36 115 fscanf(paramFile, "%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%f,%d",
whiteheadrf 0:1121a7ef2e36 116 &a, &b, &c, &PresCal, &PhaseCal2, &TempCal2, &PhaseCal1,
whiteheadrf 0:1121a7ef2e36 117 &TempCal1, &LEDCurrent, &PHBUFFERF, &PHTEMPF, &PHTEMPKF,
whiteheadrf 0:1121a7ef2e36 118 &PHVOLTSF, &MSINGLEPT, &EOSINGLEPT, &UNIT, &DebugFlag);
whiteheadrf 0:1121a7ef2e36 119 fclose(paramFile);
whiteheadrf 0:1121a7ef2e36 120 }
whiteheadrf 0:1121a7ef2e36 121
whiteheadrf 0:1121a7ef2e36 122 debugSetLvl(DebugFlag);
whiteheadrf 0:1121a7ef2e36 123 INFO("Debug level set to %s", debugFormatTraceLevel(DebugFlag));
whiteheadrf 0:1121a7ef2e36 124
whiteheadrf 0:1121a7ef2e36 125 DEBUG1("Debug Mode active: A=%F, B=%F, C=%F, D=%F, a=%F, b=%F, c=%F",
whiteheadrf 0:1121a7ef2e36 126 A, B, C, D, a, b, c);
whiteheadrf 0:1121a7ef2e36 127
whiteheadrf 0:1121a7ef2e36 128 readUserPrograms();
whiteheadrf 0:1121a7ef2e36 129
whiteheadrf 0:1121a7ef2e36 130 pumpInit();
whiteheadrf 0:1121a7ef2e36 131 lightInit();
whiteheadrf 0:1121a7ef2e36 132
whiteheadrf 0:1121a7ef2e36 133 L1=1;
whiteheadrf 0:1121a7ef2e36 134
whiteheadrf 0:1121a7ef2e36 135 adcInit();
whiteheadrf 0:1121a7ef2e36 136
whiteheadrf 0:1121a7ef2e36 137 DEBUG2("PHBUFFERF=%2.6f, PHTEMPF=%2.6f, PHTEMPKF=%2.6f, PHVOLTSF=%2.6f, MSINGLEPT=%2.6f, EOSINGLEPT=%2.6f",
whiteheadrf 0:1121a7ef2e36 138 PHBUFFERF, PHTEMPF, PHTEMPKF, PHVOLTSF, MSINGLEPT, EOSINGLEPT);
whiteheadrf 0:1121a7ef2e36 139 DEBUG2("PresCal=%2.6f, PhaseCal2=%2.6f, TempCal2=%2.6f, PhaseCal1=%2.6f, TempCal1=%2.6f, LEDCurrent=%2.6f",
whiteheadrf 0:1121a7ef2e36 140 PresCal, PhaseCal2, TempCal2, PhaseCal1, TempCal1, LEDCurrent);
whiteheadrf 0:1121a7ef2e36 141
whiteheadrf 0:1121a7ef2e36 142 wait(0.3);
whiteheadrf 0:1121a7ef2e36 143
whiteheadrf 0:1121a7ef2e36 144 presensConfig(LEDCurrent);
whiteheadrf 0:1121a7ef2e36 145
whiteheadrf 0:1121a7ef2e36 146 L2=1;
whiteheadrf 0:1121a7ef2e36 147
whiteheadrf 0:1121a7ef2e36 148 MeasurementTypeVal = 1;
whiteheadrf 0:1121a7ef2e36 149 MeasurementFlow = 0;
whiteheadrf 0:1121a7ef2e36 150 MeasurementLight = 0;
whiteheadrf 0:1121a7ef2e36 151
whiteheadrf 0:1121a7ef2e36 152 L3=1;
whiteheadrf 0:1121a7ef2e36 153
whiteheadrf 0:1121a7ef2e36 154 wifiInit();
whiteheadrf 0:1121a7ef2e36 155
whiteheadrf 0:1121a7ef2e36 156 L4=1;
whiteheadrf 0:1121a7ef2e36 157 // L1=0;
whiteheadrf 0:1121a7ef2e36 158 // L2=0;
whiteheadrf 0:1121a7ef2e36 159 // L3=0;
whiteheadrf 0:1121a7ef2e36 160 // wait(0.5);
whiteheadrf 0:1121a7ef2e36 161 // L1=1;
whiteheadrf 0:1121a7ef2e36 162 // L2=1;
whiteheadrf 0:1121a7ef2e36 163 // L3=1;
whiteheadrf 0:1121a7ef2e36 164
whiteheadrf 1:eac9f7a0488f 165 buzzerBeep(0.1);
whiteheadrf 1:eac9f7a0488f 166 wait(0.1);
whiteheadrf 1:eac9f7a0488f 167 buzzerBeep(0.1);
whiteheadrf 1:eac9f7a0488f 168 wait(0.1);
whiteheadrf 1:eac9f7a0488f 169 buzzerBeep(0.1);
whiteheadrf 1:eac9f7a0488f 170 wait(0.1);
whiteheadrf 1:eac9f7a0488f 171 buzzerBeep(0.1);
whiteheadrf 1:eac9f7a0488f 172 wait(0.1);
whiteheadrf 1:eac9f7a0488f 173
whiteheadrf 0:1121a7ef2e36 174 INFO("Done startup. Enter event loop");
whiteheadrf 0:1121a7ef2e36 175
whiteheadrf 0:1121a7ef2e36 176 // Go to main event loop
whiteheadrf 0:1121a7ef2e36 177 lcdEventsStart();
whiteheadrf 0:1121a7ef2e36 178 wifiEventsStart();
whiteheadrf 0:1121a7ef2e36 179 }