Fixed RFID scanning and implemented calling actions on Player.

This commit is contained in:
2019-08-08 06:49:35 +02:00
parent 1bf2b04303
commit 8feb1ec760
4 changed files with 37 additions and 13 deletions

View File

@ -21,16 +21,37 @@ void Controller::loop() {
_check_serial();
}
void Controller::_check_rfid() {
uint32_t Controller::_get_rfid_card_uid() {
SPIMaster::enable(PIN_RC522_CS);
if (!_rfid->PICC_IsNewCardPresent()) {
return;
}
if (!_rfid->PICC_ReadCardSerial()) {
return;
if (!_rfid->PICC_IsNewCardPresent()) {
return 0;
}
if (!_rfid->PICC_ReadCardSerial()) {
return 0;
}
}
_rfid->PICC_DumpToSerial(&(_rfid->uid));
uint32_t uid = _rfid->uid.uidByte[0]<<24 | _rfid->uid.uidByte[1]<<16 | _rfid->uid.uidByte[2]<<8 | _rfid->uid.uidByte[3];
SPIMaster::disable();
return uid;
}
void Controller::_check_rfid() {
uint32_t uid = _get_rfid_card_uid();
//Serial.printf("Found card: %08x\n", uid);
if (uid != _last_rfid_card_uid) {
if (uid > 0) {
Serial.printf("New RFID card uid: %08x\n", uid);
// Play
String s_uid = String(uid, HEX);
_player->play_album(s_uid);
} else {
Serial.println("No more RFID card.");
// Stop
_player->stop();
}
_last_rfid_card_uid = uid;
}
}
void Controller::_check_serial() {