test to establish how we can share the project on MBED

Dependencies:   BME280 BMP280 ELEC350-Coursework-2017 TextLCD

Fork of ELEC350-CWTEMPLATE-2017 by University of Plymouth - Stages 1, 2 and 3

Committer:
bdarling
Date:
Fri Dec 15 12:00:59 2017 +0000
Revision:
12:4af6b1d09c90
Parent:
11:573cf2feced3
Child:
13:aa200749dba6
Modified serial_protocol.cpp, added LOGGING <x>

Who changed what in which revision?

UserRevisionLine numberNew contents of line
bdarling 6:c7220f7c1ae0 1 #include "serial_protocol.hpp"
bdarling 6:c7220f7c1ae0 2 #include "sample_hardware.hpp"
bdarling 6:c7220f7c1ae0 3 #include <string>
bdarling 8:e3aff00ef600 4 #include <ctype.h>
bdarling 6:c7220f7c1ae0 5 Serial pc(SERIAL_TX, SERIAL_RX);
bdarling 6:c7220f7c1ae0 6
bdarling 6:c7220f7c1ae0 7
bdarling 6:c7220f7c1ae0 8 char string1[128];
bdarling 6:c7220f7c1ae0 9 char string2[128];
bdarling 6:c7220f7c1ae0 10
bdarling 6:c7220f7c1ae0 11 char dayStr[3];
bdarling 6:c7220f7c1ae0 12 char monthStr[3];
bdarling 6:c7220f7c1ae0 13 char yearStr[5];
bdarling 9:6fb498cf6156 14 char hourStr[3];
bdarling 9:6fb498cf6156 15 char minuteStr[3];
bdarling 9:6fb498cf6156 16 char secondStr[3];
bdarling 6:c7220f7c1ae0 17 int day;
bdarling 6:c7220f7c1ae0 18 int month;
bdarling 6:c7220f7c1ae0 19 int year;
bdarling 6:c7220f7c1ae0 20
bdarling 6:c7220f7c1ae0 21
bdarling 8:e3aff00ef600 22
bdarling 6:c7220f7c1ae0 23 void getData(){
bdarling 6:c7220f7c1ae0 24 pc.scanf("%s %s", string1, string2);
bdarling 8:e3aff00ef600 25 //pc.printf("%s %s\n",string1, string2); \\for debugging
bdarling 6:c7220f7c1ae0 26 }
bdarling 6:c7220f7c1ae0 27
bdarling 6:c7220f7c1ae0 28 void readSerial(){
bdarling 6:c7220f7c1ae0 29 if((strcmp(string1,"READ")==0) && (strcmp(string2,"ALL")==0)){
bdarling 6:c7220f7c1ae0 30 pc.printf("reading all\n");
bdarling 6:c7220f7c1ae0 31 }
bdarling 6:c7220f7c1ae0 32
bdarling 6:c7220f7c1ae0 33 else if((strcmp(string1,"DELETE")==0) && (strcmp(string2,"ALL")==0)){
bdarling 6:c7220f7c1ae0 34 pc.printf("deleting all\n");
bdarling 6:c7220f7c1ae0 35 }
bdarling 6:c7220f7c1ae0 36
bdarling 6:c7220f7c1ae0 37 else if(strcmp(string1,"READ")==0){
bdarling 8:e3aff00ef600 38 int test=0;
bdarling 8:e3aff00ef600 39 sscanf(string2,"%d",&test);
bdarling 10:47e6166f0797 40
bdarling 8:e3aff00ef600 41 if(test>0){
bdarling 10:47e6166f0797 42 pc.printf("reading <%d>\n",test);
bdarling 6:c7220f7c1ae0 43 }
bdarling 6:c7220f7c1ae0 44 else{
bdarling 10:47e6166f0797 45 pc.printf("invalid value\n");
bdarling 10:47e6166f0797 46 }
bdarling 6:c7220f7c1ae0 47 }
bdarling 6:c7220f7c1ae0 48
bdarling 11:573cf2feced3 49 else if(strcmp(string1,"STATE")==0){
bdarling 11:573cf2feced3 50 if(strcmp(string2,"ON")==0){
bdarling 11:573cf2feced3 51 pc.printf("SAMPLING ON\n");
bdarling 11:573cf2feced3 52 }
bdarling 11:573cf2feced3 53 else if(strcmp(string2,"OFF")==0){
bdarling 11:573cf2feced3 54 pc.printf("SAMPLING OFF\n");
bdarling 11:573cf2feced3 55 }
bdarling 11:573cf2feced3 56 else{
bdarling 11:573cf2feced3 57 pc.printf("INVALID COMMAND\n");
bdarling 11:573cf2feced3 58 }
bdarling 11:573cf2feced3 59 }
bdarling 11:573cf2feced3 60
bdarling 12:4af6b1d09c90 61 else if(strcmp(string1,"LOGGING")==0){
bdarling 12:4af6b1d09c90 62 if(strcmp(string2,"ON")==0){
bdarling 12:4af6b1d09c90 63 pc.printf("LOGGING ON\n");
bdarling 12:4af6b1d09c90 64 }
bdarling 12:4af6b1d09c90 65 else if(strcmp(string2,"OFF")==0){
bdarling 12:4af6b1d09c90 66 pc.printf("LOGGING OFF\n");
bdarling 12:4af6b1d09c90 67 }
bdarling 12:4af6b1d09c90 68 else{
bdarling 12:4af6b1d09c90 69 pc.printf("INVALID COMMAND\n");
bdarling 12:4af6b1d09c90 70 }
bdarling 12:4af6b1d09c90 71 }
bdarling 12:4af6b1d09c90 72
bdarling 10:47e6166f0797 73 else if(strcmp(string1,"SETT")==0){
bdarling 10:47e6166f0797 74 float number=0;
bdarling 10:47e6166f0797 75 sscanf(string2,"%f",&number);
bdarling 10:47e6166f0797 76 if(number>=0.1f && number<=60.0f){
bdarling 10:47e6166f0797 77 pc.printf("sampling period set to %f\n",number);
bdarling 10:47e6166f0797 78 }
bdarling 10:47e6166f0797 79 else{
bdarling 10:47e6166f0797 80 pc.printf("invalid value\n");
bdarling 10:47e6166f0797 81 }
bdarling 10:47e6166f0797 82 }
bdarling 8:e3aff00ef600 83
bdarling 6:c7220f7c1ae0 84 else if(strcmp(string1,"DELETE")==0){
bdarling 8:e3aff00ef600 85 int test=0;
bdarling 8:e3aff00ef600 86 sscanf(string2,"%d",&test);
bdarling 8:e3aff00ef600 87
bdarling 8:e3aff00ef600 88 if(test>0){
bdarling 10:47e6166f0797 89 pc.printf("deleting <%d>\n",test);
bdarling 6:c7220f7c1ae0 90 }
bdarling 6:c7220f7c1ae0 91 else{
bdarling 10:47e6166f0797 92 pc.printf("invalid value\n");
bdarling 10:47e6166f0797 93 }
bdarling 6:c7220f7c1ae0 94 }
bdarling 6:c7220f7c1ae0 95
bdarling 8:e3aff00ef600 96 else if(strcmp(string1,"SETDATE")==0)
bdarling 6:c7220f7c1ae0 97 {
bdarling 8:e3aff00ef600 98 int validDigit=0;
bdarling 8:e3aff00ef600 99 int i;
bdarling 8:e3aff00ef600 100 for(i=0;i<8;i++){ //check first 8 elements of array are digits
bdarling 8:e3aff00ef600 101 if(isdigit(string2[i])){
bdarling 8:e3aff00ef600 102 validDigit++;
bdarling 8:e3aff00ef600 103 }
bdarling 8:e3aff00ef600 104 }
bdarling 8:e3aff00ef600 105 if(string2[8] == NULL){ //check element 8 of array is NULL, where the string terminates
bdarling 8:e3aff00ef600 106 validDigit++;
bdarling 8:e3aff00ef600 107 }
bdarling 8:e3aff00ef600 108
bdarling 10:47e6166f0797 109 if(validDigit==9){
bdarling 6:c7220f7c1ae0 110
bdarling 6:c7220f7c1ae0 111 dayStr[0] = string2[0];
bdarling 6:c7220f7c1ae0 112 dayStr[1] = string2[1];
bdarling 6:c7220f7c1ae0 113 dayStr[2] = NULL;
bdarling 6:c7220f7c1ae0 114 monthStr[0] = string2[2];
bdarling 6:c7220f7c1ae0 115 monthStr[1] = string2[3];
bdarling 6:c7220f7c1ae0 116 monthStr[2] = NULL;
bdarling 6:c7220f7c1ae0 117 yearStr[0] = string2[4];
bdarling 6:c7220f7c1ae0 118 yearStr[1] = string2[5];
bdarling 6:c7220f7c1ae0 119 yearStr[2] = string2[6];
bdarling 6:c7220f7c1ae0 120 yearStr[3] = string2[7];
bdarling 10:47e6166f0797 121 yearStr[4] = NULL;
bdarling 10:47e6166f0797 122 //note if date is required in int form, use atoi() to convert from string to int
bdarling 6:c7220f7c1ae0 123
bdarling 10:47e6166f0797 124 pc.printf("DATE UPDATED TO <%s><%s><%s>\n",dayStr,monthStr,yearStr);
bdarling 10:47e6166f0797 125
bdarling 6:c7220f7c1ae0 126 }
bdarling 6:c7220f7c1ae0 127 else{
bdarling 6:c7220f7c1ae0 128 pc.printf("invalid value\n");
bdarling 8:e3aff00ef600 129 }
bdarling 6:c7220f7c1ae0 130 }
bdarling 9:6fb498cf6156 131
bdarling 9:6fb498cf6156 132 else if(strcmp(string1,"SETTIME")==0)
bdarling 9:6fb498cf6156 133 {
bdarling 9:6fb498cf6156 134 int validDigit=0;
bdarling 9:6fb498cf6156 135 int i;
bdarling 9:6fb498cf6156 136 for(i=0;i<6;i++){ //check first 8 elements of array are digits
bdarling 9:6fb498cf6156 137 if(isdigit(string2[i])){
bdarling 9:6fb498cf6156 138 validDigit++;
bdarling 9:6fb498cf6156 139 }
bdarling 9:6fb498cf6156 140 }
bdarling 9:6fb498cf6156 141 if(string2[6] == NULL){ //check element 8 of array is NULL, where the string terminates
bdarling 9:6fb498cf6156 142 validDigit++;
bdarling 9:6fb498cf6156 143 }
bdarling 9:6fb498cf6156 144
bdarling 9:6fb498cf6156 145 if(validDigit==7){
bdarling 9:6fb498cf6156 146
bdarling 9:6fb498cf6156 147 hourStr[0] = string2[0];
bdarling 9:6fb498cf6156 148 hourStr[1] = string2[1];
bdarling 9:6fb498cf6156 149 hourStr[2] = NULL;
bdarling 9:6fb498cf6156 150 minuteStr[0] = string2[2];
bdarling 9:6fb498cf6156 151 minuteStr[1] = string2[3];
bdarling 9:6fb498cf6156 152 minuteStr[2] = NULL;
bdarling 9:6fb498cf6156 153 secondStr[0] = string2[4];
bdarling 9:6fb498cf6156 154 secondStr[1] = string2[5];
bdarling 10:47e6166f0797 155 secondStr[2] = NULL;
bdarling 9:6fb498cf6156 156
bdarling 10:47e6166f0797 157 pc.printf("TIME UPDATE TO <%s><%s><%s>",hourStr,minuteStr,secondStr);
bdarling 9:6fb498cf6156 158 }
bdarling 9:6fb498cf6156 159 else{
bdarling 9:6fb498cf6156 160 pc.printf("invalid value\n");
bdarling 9:6fb498cf6156 161 }
bdarling 9:6fb498cf6156 162 }
bdarling 6:c7220f7c1ae0 163
bdarling 6:c7220f7c1ae0 164 else{
bdarling 6:c7220f7c1ae0 165 pc.printf("invalid command\n");
bdarling 6:c7220f7c1ae0 166 }
bdarling 6:c7220f7c1ae0 167 }