Skip to content

Commit

Permalink
Save more nfca properties
Browse files Browse the repository at this point in the history
  • Loading branch information
andras-adam committed Oct 13, 2022
1 parent 1e47d51 commit 2bc7098
Show file tree
Hide file tree
Showing 5 changed files with 29 additions and 25 deletions.
Original file line number Diff line number Diff line change
@@ -1,12 +1,15 @@
package com.virtualtag.app.data

import android.nfc.tech.MifareClassic
import android.nfc.tech.NfcA
import android.util.Log
import java.io.IOException

class MifareClassicInfo(tag: MifareClassic) {
val timeout: Int
val maxTransceiveLength: Int
val atqa: String
val sak: Int
val size: Int
val type: Int
val sectorCount: Int
Expand All @@ -20,6 +23,11 @@ class MifareClassicInfo(tag: MifareClassic) {
type = tag.type
sectorCount = tag.sectorCount
blockCount = tag.blockCount
// MifareClassic tags are also NfcA tags
val nfca = NfcA.get(tag.tag)
atqa = nfca.atqa.toHex()
sak = nfca.sak.toInt()
// Read memory data
data = readData(tag)
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,19 +1,27 @@
package com.virtualtag.app.data

import android.nfc.tech.MifareUltralight
import android.nfc.tech.NfcA
import android.util.Log
import java.io.IOException

class MifareUltralightInfo(tag: MifareUltralight) {
val type: Int
val timeout: Int
val maxTransceiveLength: Int
val atqa: String
val sak: Int
val data: String

init {
type = tag.type
timeout = tag.timeout
maxTransceiveLength = tag.maxTransceiveLength
// MifareUltralight tags are also NfcA tags
val nfca = NfcA.get(tag.tag)
atqa = nfca.atqa.toHex()
sak = nfca.sak.toInt()
// Read memory data
data = readData(tag)
}

Expand Down
13 changes: 5 additions & 8 deletions app/src/main/java/com/virtualtag/app/db/Card.kt
Original file line number Diff line number Diff line change
Expand Up @@ -16,13 +16,9 @@ data class Card(
val color: String,
val techList: String,

// NfcA properties
val nfcaAtqa: String? = null,
val nfcaSak: Int? = null,
val nfcaTimeout: Int? = null,
val nfcaMaxTransceiveLength: Int? = null,

// MifareClassic properties
val mifareClassicAtqa: String? = null,
val mifareClassicSak: Int? = null,
val mifareClassicTimeout: Int? = null,
val mifareClassicMaxTransceiveLength: Int? = null,
val mifareClassicSize: Int? = null,
Expand All @@ -32,9 +28,10 @@ data class Card(
val mifareClassicData: String? = null,

// MifareUltralight properties
val mifareUltralightType: Int? = null,
val mifareUltralightAtqa: String? = null,
val mifareUltralightSak: Int? = null,
val mifareUltralightTimeout: Int? = null,
val mifareUltralightMaxTransceiveLength: Int? = null,
val mifareUltralightType: Int? = null,
val mifareUltralightData: String? = null,

)
2 changes: 1 addition & 1 deletion app/src/main/java/com/virtualtag/app/db/CardDatabase.kt
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import androidx.room.RoomDatabase

@Database(
entities = [Card::class],
version = 2
version = 3
)
abstract class CardDB : RoomDatabase() {
abstract fun cardDao(): CardDao
Expand Down
23 changes: 7 additions & 16 deletions app/src/main/java/com/virtualtag/app/ui/screens/AddScreen.kt
Original file line number Diff line number Diff line change
@@ -1,9 +1,5 @@
package com.virtualtag.app.ui.screens

import android.nfc.tech.MifareClassic
import android.nfc.tech.MifareUltralight
import android.nfc.tech.NfcA
import android.util.Log
import android.widget.Toast
import androidx.compose.foundation.layout.*
import androidx.compose.material.*
Expand Down Expand Up @@ -46,36 +42,31 @@ fun AddScreen(
var color by remember { mutableStateOf("#fff8f8f8") }

fun addCardToDb() {

// Construct card
val card = Card(
id = scannedTag.value?.id?.toHex() ?: "0",
name = name.text,
color = color,
techList = scannedTag.value?.techList?.joinToString(",") ?: "",
// nfcaAtqa = nfca?.atqa?.toHex(),
// nfcaSak = nfca?.sak?.toInt(),
// nfcaTimeout = nfca?.timeout,
// nfcaMaxTransceiveLength = nfca?.maxTransceiveLength,
// MifareClassic properties
mifareClassicAtqa = mifareClassicInfo.value?.atqa,
mifareClassicSak = mifareClassicInfo.value?.sak,
mifareClassicTimeout = mifareClassicInfo.value?.timeout,
mifareClassicMaxTransceiveLength = mifareClassicInfo.value?.maxTransceiveLength,
mifareClassicSize = mifareClassicInfo.value?.size,
mifareClassicType = mifareClassicInfo.value?.type,
mifareClassicSectorCount = mifareClassicInfo.value?.sectorCount,
mifareClassicBlockCount = mifareClassicInfo.value?.blockCount,
mifareClassicData = mifareClassicInfo.value?.data,
// MifareUltralight properties
mifareUltralightType = mifareUltralightInfo.value?.type,
mifareUltralightTimeout = mifareUltralightInfo.value?.timeout,
mifareUltralightMaxTransceiveLength = mifareUltralightInfo.value?.maxTransceiveLength,
mifareUltralightAtqa = mifareUltralightInfo.value?.atqa,
mifareUltralightSak = mifareUltralightInfo.value?.sak,
mifareUltralightData = mifareUltralightInfo.value?.data,
)

Log.d("ADDING CARD", card.toString())

//
model.addCard(card)
Toast.makeText(context, context.getString(R.string.card_added_success), Toast.LENGTH_SHORT)
.show()
Toast.makeText(context, context.getString(R.string.card_added_success), Toast.LENGTH_SHORT).show()
goHome()
}

Expand Down

0 comments on commit 2bc7098

Please sign in to comment.