void bluetoothCommands(){ if (Serial3.available() > 0) { char command = Serial3.read(); char subCommand = Serial3.read(); if (command == '#') { //1 General Info Command if(subCommand == '1'){ // Get All Drinks char incomingByte = Serial3.read(); // ignore ; } else if(subCommand == '2'){ // Get All filenames char incomingByte = Serial3.read(); // ignore ; //while //filenames_JSON(box,person) } } else if (command == '!') { //2 User Managment Command if(subCommand == '1'){ // Create new User char incomingByte = Serial3.read(); String personName; while (incomingByte != ';'){ personName = String(personName + incomingByte); incomingByte = Serial3.read(); } if(debug)Serial.println(personName); lcd.clear(); lcd.print(personName); if(debug)Serial.println(box->maxID); //lcd.setCursor(0,1); //lcd.print("Fin pls"); int fingerReturn = -1; while (fingerReturn != 0) { fingerReturn = getFingerprintEnroll(box->maxID + 1); } lcd.clear(); lcd.print(personName); lcd.setCursor(0, 1); lcd.print("RFID pls"); zugang = ""; while (zugang == "") { getRFIDEnroll(); } if(debug)Serial.println(zugang); box->maxID++; Person* newPerson = new Person; personName.toCharArray(newPerson->name, personName.length()+1); char tmp[FILE_NAME_LEN + 1]; sprintf(tmp,"p%03d%s",box->maxID,FILE_EXTENSION); strcpy(newPerson->file_name, tmp); zugang.toCharArray(newPerson->rfid_uuid, zugang.length()+1); newPerson->finger_uuid = box->maxID; newPerson->credits_left = 1000; for (int i = 0; i < box->maxDrink; i++) { newPerson->drinks_taken[i]=0; } write_pers_file(newPerson); zugang = ""; // reset here lcd.clear(); lcd.print(personName); lcd.setCursor(0, 1); lcd.print("Sucess!"); delay(1000); //and revert to normal: lcd.clear(); lcd.print("Drink:"); lcd.setCursor(0, 1); lcd.print(box->drinks[currentDrink].name); }//new User else if(subCommand == '2'){ //get user by filename }//get user else if(subCommand == '3'){ //trigger user scan for ID //return filename }//user scan else if(subCommand == '4'){ //revoke user finger by filename }//revoke finger else if(subCommand == '5'){ //revoke user rfid by filename }//revoke rfid else if(subCommand == '6'){ //delete user by filename }//delete user else if(subCommand == '6'){ //set user credits }//set credits else if(subCommand == '6'){ //set name by filename }//set name } // User Managment Command } //BLE available }//end function void filenames_JSON(Beerbox *box, Person *aperson) { int i = 0; sprintf(toprint, "{\"name\": \"%s\",\"filename\":\"%s\",\"creditsleft\":\"%s\",\"drinks\":[", aperson->name, aperson->file_name, aperson->credits_left); Serial.write(toprint); for (i = 0; i < box->maxDrink; i++) { if (aperson->drinks_taken[i] != -1) { if(i=0) sprintf(toprint, "{\"%s\":\"%s\"}", box->drinks[i].name,aperson->drinks_taken[i]); else sprintf(toprint, ",{\"%s\":\"%s\"}", box->drinks[i].name,aperson->drinks_taken[i]); Serial.write(toprint); } } Serial.write("]}"); } // end print JSON