Qubit 2020 / presensfirmwareupdate

Dependencies:   mbed

Committer:
whiteheadrf
Date:
Tue Mar 09 20:50:11 2021 +0000
Revision:
0:1121a7ef2e36
Child:
1:eac9f7a0488f
eliminating serial buffer. reverting to modified presens.cpp because of new presens firmware that has view0005 to eliminate 02 unit number at start of data stream

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 0:1121a7ef2e36 165 INFO("Done startup. Enter event loop");
whiteheadrf 0:1121a7ef2e36 166
whiteheadrf 0:1121a7ef2e36 167 // Go to main event loop
whiteheadrf 0:1121a7ef2e36 168 lcdEventsStart();
whiteheadrf 0:1121a7ef2e36 169 wifiEventsStart();
whiteheadrf 0:1121a7ef2e36 170 }