implemented delete

implemented namechange
fixed bug in saving credits
added reset all counts!
added less outputmode to print Person JSON
This commit is contained in:
Lukas Bachschwell 2016-07-29 21:32:49 +02:00
parent 1bb6704d6e
commit 0ff99e00f3
3 changed files with 60 additions and 9 deletions

View File

@ -57,6 +57,7 @@ void setup() {
Serial1.begin(9600);
// BLE Com init
//Serial3.begin(115200);
Serial3.begin(115200);
@ -248,7 +249,7 @@ Person read_person(Beerbox *box, char *filename) {
if (aperson.finger_uuid > box->maxID) box->maxID = aperson.finger_uuid;
//if(debug)print_person(box, &aperson,&Serial);
print_person_JSON(box,&aperson,&Serial);
print_person_JSON(box,&aperson,&Serial,false);
read.close();
return aperson;

View File

@ -17,10 +17,21 @@ void bluetoothCommands() {
Serial3.print("{\"persons\":[");
for (int i = 0; i < box->personCount; i++) {
if (i != 0)Serial3.print(",");
print_person_JSON(box, &persons[i], &Serial3);
print_person_JSON(box, &persons[i], &Serial3, true);
print_person_JSON(box, &persons[i], &Serial, false);
delay(100);
}
Serial3.println("]}");
}
else if (subCommand == '3') { //reset all counts
for (int i = 0; i < box->personCount; i++) {
reset_person_drinks(box, &persons[i], i);
print_person_JSON(box, &persons[i], &Serial, false);
}
Serial3.println("{\"Success\"}");
}
} else if (command == '!') { //2 User Managment Command
if (subCommand == '1') { // Create new User
char incomingByte = Serial3.read();
@ -81,7 +92,7 @@ void bluetoothCommands() {
data.toCharArray(filename, data.length() + 1);
if (personExists(filename)) {
Person* aperson = &persons[getFileIndex(filename)];
print_person_JSON(box, aperson, &Serial3);
print_person_JSON(box, aperson, &Serial3, false);
} else {
Serial3.println("{\"Error\":\"no such file\"}");
}
@ -167,7 +178,13 @@ void bluetoothCommands() {
Serial.println(data);
data.toCharArray(filename, data.length() + 1);
if (personExists(filename)) {
Serial3.println("{\"Error\":\"not implemented yet\"}");
//Delete file
SD.remove(filename);
//rescan it!
delete [] persons; // When done, free memory pointed to
persons = NULL;
persons = readAllPersons();
if (debug)Serial.println(sizeof(persons));
} else {
Serial3.println("{\"Error\":\"no such file\"}");
}
@ -190,7 +207,7 @@ void bluetoothCommands() {
Person* setPerson = &persons[lastPersonIndex];
setPerson->credits_left = atoi(credits_string);
update_pers_file();
print_person_JSON(box,setPerson,&Serial3);
print_person_JSON(box, setPerson, &Serial3, false);
} else {
Serial3.println("{\"Error\":\"no such file\"}");
@ -198,11 +215,25 @@ void bluetoothCommands() {
}//set credits
else if (subCommand == '8') { //set name by filename
//TODO: Better namechecking
char filename[data.length() + 1];
Serial.println(data);
data.toCharArray(filename, data.length() + 1);
if (personExists(filename)) {
Serial3.println("{\"Error\":\"not implemented yet\"}");
//Scann second time for newName
char incomingByte = Serial3.read();
String data2;
while (incomingByte != ';') {
data2 = String(data2 + incomingByte);
incomingByte = Serial3.read();
}
char name_string[11];
data2.toCharArray(name_string, data2.length() + 1);
lastPersonIndex = getFileIndex(filename);
Person* setPerson = &persons[lastPersonIndex];
strcpy(setPerson->name, name_string);
update_pers_file();
print_person_JSON(box, setPerson, &Serial3, false);
} else {
Serial3.println("{\"Error\":\"no such file\"}");
}
@ -214,8 +245,13 @@ void bluetoothCommands() {
void print_person_JSON(Beerbox *box, Person *aperson, HardwareSerial* com) {
void print_person_JSON(Beerbox *box, Person *aperson, HardwareSerial* com, bool less) {
if (less) {
sprintf(toprint, "{\"name\": \"%s\",\"filename\":\"%s\"}", aperson->name, aperson->file_name);
com->write(toprint);
} else {
sprintf(toprint, "{\"name\": \"%s\",\"filename\":\"%s\",\"creditsleft\":\"%i\",\"drinks\":[", aperson->name, aperson->file_name, aperson->credits_left);
com->write(toprint);
for (int i = 0; i < box->maxDrink; i++) {
@ -227,6 +263,7 @@ void print_person_JSON(Beerbox *box, Person *aperson, HardwareSerial* com) {
}
com->println("]}");
box->scanning = false;
}
} // end print JSON
void print_drinks_JSON(Beerbox *box, HardwareSerial* com) {
@ -241,3 +278,14 @@ void print_drinks_JSON(Beerbox *box, HardwareSerial* com) {
com->print("]}");
}
void reset_person_drinks(Beerbox *box,Person *aperson,int personIndex){
for (int i = 0; i < box->maxDrink; i++) {
if (box->drinks[i].price != -1) {
aperson->drinks_taken[i] = 0;
lastPersonIndex = personIndex;
update_pers_file();
}
}
}

View File

@ -21,6 +21,8 @@ void checkButton() {
{
//revert save
persons[lastPersonIndex].drinks_taken[currentDrink]--;
persons[personIndex].credits_left = persons[personIndex].credits_left + box->drinks[currentDrink].price;
box->waiting = 0;
lcd.clear();
lcd.print("Abort!");
@ -65,7 +67,7 @@ bool checkFinger() {
if(debug)Serial.print("This is ");
if(debug)Serial.println(persons[getFingerIndex(finger.fingerID)].name);
if(!box->scanning) countUp(getFingerIndex(finger.fingerID), 0);//for finger context
else print_person_JSON(box,&persons[getFingerIndex(finger.fingerID)],&Serial3);
else print_person_JSON(box,&persons[getFingerIndex(finger.fingerID)],&Serial3, false);
}
}
@ -102,7 +104,7 @@ bool checkRFID() {
if(getRFIDIndex( code)!=-1){
if(!box->scanning)
countUp(getRFIDIndex( code), 1); // 1 for rfid context
else print_person_JSON(box,&persons[getRFIDIndex( code)],&Serial3);
else print_person_JSON(box,&persons[getRFIDIndex( code)],&Serial3, false);
}else{
if(debug)Serial.println("Error: Nonexisting Card");
}