Red Light Work

Dependencies:   EthernetInterface QEI_hw QEIx4 mbed-rtos mbed realtimeMMLib

Fork of realtimeMM_V3 by Graham Nicholson

Committer:
ChrisAydon
Date:
Thu Feb 15 16:19:18 2018 +0000
Revision:
4:2963fe3ccdfd
Parent:
0:70c9f7c6844b
Red Light Work

Who changed what in which revision?

UserRevisionLine numberNew contents of line
GTNicholson 0:70c9f7c6844b 1 #include "MMiniFileReader.h"
GTNicholson 0:70c9f7c6844b 2 #include <iostream>
GTNicholson 0:70c9f7c6844b 3 #include <fstream>
GTNicholson 0:70c9f7c6844b 4 #include "mbed.h"
GTNicholson 0:70c9f7c6844b 5 #include <sstream>
GTNicholson 0:70c9f7c6844b 6 #include <string>
GTNicholson 0:70c9f7c6844b 7
GTNicholson 0:70c9f7c6844b 8 using namespace std;
GTNicholson 0:70c9f7c6844b 9
GTNicholson 0:70c9f7c6844b 10 iniFileReader::iniFileReader()
GTNicholson 0:70c9f7c6844b 11 {
GTNicholson 0:70c9f7c6844b 12 }
GTNicholson 0:70c9f7c6844b 13
GTNicholson 0:70c9f7c6844b 14
GTNicholson 0:70c9f7c6844b 15 iniFileReader::~iniFileReader()
GTNicholson 0:70c9f7c6844b 16 {
GTNicholson 0:70c9f7c6844b 17 }
GTNicholson 0:70c9f7c6844b 18
GTNicholson 0:70c9f7c6844b 19 iniFile iniFileReader::ReadFile(const char* filePath)
GTNicholson 0:70c9f7c6844b 20 {
GTNicholson 0:70c9f7c6844b 21 iniFile fileConfig;
GTNicholson 0:70c9f7c6844b 22
GTNicholson 0:70c9f7c6844b 23 char line[32];
GTNicholson 0:70c9f7c6844b 24 //std::ifstream myfile(filePath);
GTNicholson 0:70c9f7c6844b 25
GTNicholson 0:70c9f7c6844b 26 //Serial pc(USBTX, USBRX);
GTNicholson 0:70c9f7c6844b 27
GTNicholson 0:70c9f7c6844b 28
GTNicholson 0:70c9f7c6844b 29 //std::ifstream myfile("filePath");
GTNicholson 0:70c9f7c6844b 30
GTNicholson 0:70c9f7c6844b 31 //pc.printf("file=%s \n", filePath);
GTNicholson 0:70c9f7c6844b 32
GTNicholson 0:70c9f7c6844b 33 FILE *File2 = fopen(filePath, "r"); // open file for reading
GTNicholson 0:70c9f7c6844b 34 //fgets(read_string,256,File2); // read first data value
GTNicholson 0:70c9f7c6844b 35 //pc.printf("text data: %s \n", read_string);
GTNicholson 0:70c9f7c6844b 36
GTNicholson 0:70c9f7c6844b 37
GTNicholson 0:70c9f7c6844b 38 if (File2)
GTNicholson 0:70c9f7c6844b 39 {
GTNicholson 0:70c9f7c6844b 40 char section[32];
GTNicholson 0:70c9f7c6844b 41
GTNicholson 0:70c9f7c6844b 42 while (fgets(line, 32, File2))
GTNicholson 0:70c9f7c6844b 43 {
GTNicholson 0:70c9f7c6844b 44
GTNicholson 0:70c9f7c6844b 45 if (IsSection(line))
GTNicholson 0:70c9f7c6844b 46 {
GTNicholson 0:70c9f7c6844b 47 GetSectionName(line, section);
GTNicholson 0:70c9f7c6844b 48 }
GTNicholson 0:70c9f7c6844b 49 else
GTNicholson 0:70c9f7c6844b 50 {
GTNicholson 0:70c9f7c6844b 51
GTNicholson 0:70c9f7c6844b 52 if ( strncmp(section , "Station", 7) == 0)
GTNicholson 0:70c9f7c6844b 53 {
GTNicholson 0:70c9f7c6844b 54 char paramName[32];
GTNicholson 0:70c9f7c6844b 55
GTNicholson 0:70c9f7c6844b 56 GetParamName(line, paramName);
GTNicholson 0:70c9f7c6844b 57
GTNicholson 0:70c9f7c6844b 58 if (strncmp(paramName, "ID", 2) == 0)
GTNicholson 0:70c9f7c6844b 59 GetParamValue(line, fileConfig.Station.ID);
GTNicholson 0:70c9f7c6844b 60
GTNicholson 0:70c9f7c6844b 61 if (strncmp(paramName, "Name", 4) == 0)
GTNicholson 0:70c9f7c6844b 62 GetParamValue(line, fileConfig.Station.Name);
GTNicholson 0:70c9f7c6844b 63
GTNicholson 0:70c9f7c6844b 64 if (strncmp(paramName, "ComsType", 8 ) == 0)
GTNicholson 0:70c9f7c6844b 65 GetParamValue(line, fileConfig.Station.ComsType);
GTNicholson 0:70c9f7c6844b 66
GTNicholson 0:70c9f7c6844b 67 if (strncmp(paramName, "IPAddress",9) == 0)
GTNicholson 0:70c9f7c6844b 68 GetParamValue(line, fileConfig.Station.IPAddress);
GTNicholson 0:70c9f7c6844b 69
GTNicholson 0:70c9f7c6844b 70 if (strncmp(paramName, "NetworkMask", 11) == 0)
GTNicholson 0:70c9f7c6844b 71 GetParamValue(line, fileConfig.Station.NetworkMask);
GTNicholson 0:70c9f7c6844b 72
GTNicholson 0:70c9f7c6844b 73 if (strncmp(paramName, "DefaultGateway", 14) == 0)
GTNicholson 0:70c9f7c6844b 74 GetParamValue(line, fileConfig.Station.DefaultGateway);
GTNicholson 0:70c9f7c6844b 75
GTNicholson 0:70c9f7c6844b 76 if (strncmp(paramName, "DataSendTime", 12) == 0)
GTNicholson 0:70c9f7c6844b 77 GetParamValue(line, fileConfig.Station.DataSendTime);
GTNicholson 0:70c9f7c6844b 78 }
GTNicholson 0:70c9f7c6844b 79
GTNicholson 0:70c9f7c6844b 80
GTNicholson 0:70c9f7c6844b 81 if (strncmp(section, "Server", 6) == 0)
GTNicholson 0:70c9f7c6844b 82 {
GTNicholson 0:70c9f7c6844b 83 char paramName[32];
GTNicholson 0:70c9f7c6844b 84
GTNicholson 0:70c9f7c6844b 85 GetParamName(line, paramName);
GTNicholson 0:70c9f7c6844b 86
GTNicholson 0:70c9f7c6844b 87 if (strncmp(paramName, "IPAddress", 9) == 0)
GTNicholson 0:70c9f7c6844b 88 GetParamValue(line, fileConfig.Server.IPAddress);
GTNicholson 0:70c9f7c6844b 89
GTNicholson 0:70c9f7c6844b 90 if (strncmp(paramName, "Port", 4) == 0)
GTNicholson 0:70c9f7c6844b 91 GetParamValue(line, fileConfig.Server.Port);
GTNicholson 0:70c9f7c6844b 92 }
GTNicholson 0:70c9f7c6844b 93
GTNicholson 0:70c9f7c6844b 94 ReadSensorSection(section, "Sensor1",7, line, &fileConfig.Sensor1);
GTNicholson 0:70c9f7c6844b 95 ReadSensorSection(section, "Sensor2", 7, line, &fileConfig.Sensor2);
GTNicholson 0:70c9f7c6844b 96 ReadSensorSection(section, "Sensor3", 7, line, &fileConfig.Sensor3);
GTNicholson 0:70c9f7c6844b 97 ReadSensorSection(section, "Sensor4", 7, line, &fileConfig.Sensor4);
GTNicholson 0:70c9f7c6844b 98 ReadSensorSection(section, "Sensor5", 7, line, &fileConfig.Sensor5);
GTNicholson 0:70c9f7c6844b 99 ReadSensorSection(section, "Sensor6", 7, line, &fileConfig.Sensor6);
GTNicholson 0:70c9f7c6844b 100 ReadSensorSection(section, "Sensor7", 7, line, &fileConfig.Sensor7);
GTNicholson 0:70c9f7c6844b 101 ReadSensorSection(section, "Sensor8", 7, line, &fileConfig.Sensor8);
GTNicholson 0:70c9f7c6844b 102 ReadSensorSection(section, "Sensor9", 7, line, &fileConfig.Sensor9);
GTNicholson 0:70c9f7c6844b 103 ReadSensorSection(section, "Sensor10", 8, line, &fileConfig.Sensor10);
GTNicholson 0:70c9f7c6844b 104
GTNicholson 0:70c9f7c6844b 105 }
GTNicholson 0:70c9f7c6844b 106
GTNicholson 0:70c9f7c6844b 107
GTNicholson 0:70c9f7c6844b 108 }
GTNicholson 0:70c9f7c6844b 109 fclose(File2);
GTNicholson 0:70c9f7c6844b 110 }
GTNicholson 0:70c9f7c6844b 111
GTNicholson 0:70c9f7c6844b 112 return fileConfig;
GTNicholson 0:70c9f7c6844b 113 }
GTNicholson 0:70c9f7c6844b 114
GTNicholson 0:70c9f7c6844b 115
GTNicholson 0:70c9f7c6844b 116 void iniFileReader::ReadSensorSection(char currentSection[], char section[], int size, char line[], iniSensor *sensor)
GTNicholson 0:70c9f7c6844b 117 {
GTNicholson 0:70c9f7c6844b 118
GTNicholson 0:70c9f7c6844b 119 if (strncmp(currentSection, section, size) == 0)
GTNicholson 0:70c9f7c6844b 120 {
GTNicholson 0:70c9f7c6844b 121 char paramName[32];
GTNicholson 0:70c9f7c6844b 122
GTNicholson 0:70c9f7c6844b 123 GetParamName(line, paramName);
GTNicholson 0:70c9f7c6844b 124
GTNicholson 0:70c9f7c6844b 125 if (strncmp(paramName, "ID", 2) == 0)
GTNicholson 0:70c9f7c6844b 126 GetParamValue(line, (*sensor).ID);
GTNicholson 0:70c9f7c6844b 127
GTNicholson 0:70c9f7c6844b 128 if (strncmp(paramName, "Type",4) == 0)
GTNicholson 0:70c9f7c6844b 129 GetParamValue(line, (*sensor).SensorType);
GTNicholson 0:70c9f7c6844b 130
GTNicholson 0:70c9f7c6844b 131 if (strncmp(paramName, "Enabled", 7) == 0)
GTNicholson 0:70c9f7c6844b 132 GetParamValue(line, (*sensor).Enabled);
GTNicholson 0:70c9f7c6844b 133
GTNicholson 0:70c9f7c6844b 134 if (strncmp(paramName, "SampleTime",10) == 0)
GTNicholson 0:70c9f7c6844b 135 GetParamValue(line, (*sensor).SampleTime);
GTNicholson 0:70c9f7c6844b 136
GTNicholson 0:70c9f7c6844b 137 if (strncmp(paramName, "DataSampleQty",13) ==0 )
GTNicholson 0:70c9f7c6844b 138 GetParamValue(line, (*sensor).DataSampleQty);
GTNicholson 0:70c9f7c6844b 139
GTNicholson 0:70c9f7c6844b 140 if (strncmp(paramName, "Pins", 4) == 0 )
GTNicholson 0:70c9f7c6844b 141 GetParamValue(line, (*sensor).Pins);
GTNicholson 0:70c9f7c6844b 142
GTNicholson 0:70c9f7c6844b 143 if (strncmp(paramName, "SensorOptions", 13) == 0)
GTNicholson 0:70c9f7c6844b 144 GetParamValue(line, (*sensor).SensorOptions);
GTNicholson 0:70c9f7c6844b 145 }
GTNicholson 0:70c9f7c6844b 146
GTNicholson 0:70c9f7c6844b 147 }
GTNicholson 0:70c9f7c6844b 148
GTNicholson 0:70c9f7c6844b 149
GTNicholson 0:70c9f7c6844b 150
GTNicholson 0:70c9f7c6844b 151 bool iniFileReader::IsSection(char line[])
GTNicholson 0:70c9f7c6844b 152 {
GTNicholson 0:70c9f7c6844b 153 if (line[0] == '[')
GTNicholson 0:70c9f7c6844b 154 {
GTNicholson 0:70c9f7c6844b 155 return true;
GTNicholson 0:70c9f7c6844b 156 }
GTNicholson 0:70c9f7c6844b 157
GTNicholson 0:70c9f7c6844b 158 return false;
GTNicholson 0:70c9f7c6844b 159 }
GTNicholson 0:70c9f7c6844b 160
GTNicholson 0:70c9f7c6844b 161 void iniFileReader::GetSectionName(char line[], char* result)
GTNicholson 0:70c9f7c6844b 162 {
GTNicholson 0:70c9f7c6844b 163 int start = 0;
GTNicholson 0:70c9f7c6844b 164
GTNicholson 0:70c9f7c6844b 165 for (int i = 1; i < 32; i++) {
GTNicholson 0:70c9f7c6844b 166 if (line[i] == ']') {
GTNicholson 0:70c9f7c6844b 167 result[start] = '\n';
GTNicholson 0:70c9f7c6844b 168 break;
GTNicholson 0:70c9f7c6844b 169 }
GTNicholson 0:70c9f7c6844b 170
GTNicholson 0:70c9f7c6844b 171
GTNicholson 0:70c9f7c6844b 172 result[start] = line[i];
GTNicholson 0:70c9f7c6844b 173 start++;
GTNicholson 0:70c9f7c6844b 174 }
GTNicholson 0:70c9f7c6844b 175
GTNicholson 0:70c9f7c6844b 176
GTNicholson 0:70c9f7c6844b 177 //int pos = line - 2;
GTNicholson 0:70c9f7c6844b 178 //string sectionName = line.substr(1, pos);
GTNicholson 0:70c9f7c6844b 179
GTNicholson 0:70c9f7c6844b 180 //return sectionName;
GTNicholson 0:70c9f7c6844b 181 }
GTNicholson 0:70c9f7c6844b 182
GTNicholson 0:70c9f7c6844b 183 void iniFileReader::GetParamName(char line[], char* result)
GTNicholson 0:70c9f7c6844b 184 {
GTNicholson 0:70c9f7c6844b 185
GTNicholson 0:70c9f7c6844b 186 for (int i = 0; i < 32; i++) {
GTNicholson 0:70c9f7c6844b 187 if (line[i] == '=')
GTNicholson 0:70c9f7c6844b 188 break;
GTNicholson 0:70c9f7c6844b 189
GTNicholson 0:70c9f7c6844b 190 result[i] = line[i];
GTNicholson 0:70c9f7c6844b 191 }
GTNicholson 0:70c9f7c6844b 192
GTNicholson 0:70c9f7c6844b 193 }
GTNicholson 0:70c9f7c6844b 194
GTNicholson 0:70c9f7c6844b 195 void iniFileReader::GetParamValue(char line[], char* result)
GTNicholson 0:70c9f7c6844b 196 {
GTNicholson 0:70c9f7c6844b 197 bool found = false;
GTNicholson 0:70c9f7c6844b 198 int start = 0;
GTNicholson 0:70c9f7c6844b 199
GTNicholson 0:70c9f7c6844b 200 for (int i = 0; i < 32; i++) {
GTNicholson 0:70c9f7c6844b 201
GTNicholson 0:70c9f7c6844b 202 if (!found) {
GTNicholson 0:70c9f7c6844b 203 if (line[i] == '=')
GTNicholson 0:70c9f7c6844b 204 found = true;
GTNicholson 0:70c9f7c6844b 205 }
GTNicholson 0:70c9f7c6844b 206 else
GTNicholson 0:70c9f7c6844b 207 {
GTNicholson 0:70c9f7c6844b 208 if (line[i] != '\n' && line[i] != NULL)
GTNicholson 0:70c9f7c6844b 209 result[start] = line[i];
GTNicholson 0:70c9f7c6844b 210 else
GTNicholson 0:70c9f7c6844b 211 {
GTNicholson 0:70c9f7c6844b 212 result[start] = '\0';
GTNicholson 0:70c9f7c6844b 213 break;
GTNicholson 0:70c9f7c6844b 214 }
GTNicholson 0:70c9f7c6844b 215
GTNicholson 0:70c9f7c6844b 216 start++;
GTNicholson 0:70c9f7c6844b 217 }
GTNicholson 0:70c9f7c6844b 218 }
GTNicholson 0:70c9f7c6844b 219 }