124 lines
3.5 KiB
Arduino
124 lines
3.5 KiB
Arduino
|
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
|