diff --git a/app/src/main/java/de/ccc/events/badge/card10/common/ConnectionService.kt b/app/src/main/java/de/ccc/events/badge/card10/common/ConnectionService.kt index a5d97c3b4d0bf0979160d021a33605fe7a928bf8..6051251d0ea878658ccea5daf5efd0e7d421c364 100644 --- a/app/src/main/java/de/ccc/events/badge/card10/common/ConnectionService.kt +++ b/app/src/main/java/de/ccc/events/badge/card10/common/ConnectionService.kt @@ -26,8 +26,10 @@ import android.bluetooth.* import android.content.Context import android.util.Log import de.ccc.events.badge.card10.CARD10_BLUETOOTH_MAC_PREFIX +import de.ccc.events.badge.card10.CARD10_SERVICE_UUID import de.ccc.events.badge.card10.R import de.ccc.events.badge.card10.filetransfer.LowEffortService +import de.ccc.events.badge.card10.time.Card10Service import java.lang.IllegalStateException import java.lang.NullPointerException import java.util.* @@ -37,6 +39,7 @@ private const val TAG = "ConnectionService" object ConnectionService { var device: BluetoothDevice? = null var leService: LowEffortService? = null + var card10Service: Card10Service? = null var mtu = 100 private var connection: BluetoothGatt? = null @@ -98,6 +101,8 @@ object ConnectionService { if (service.uuid == fileServiceUuid) { leService = LowEffortService(service) + } else if (service.uuid == CARD10_SERVICE_UUID) { + card10Service = Card10Service(service) } } diff --git a/app/src/main/java/de/ccc/events/badge/card10/time/Card10Service.kt b/app/src/main/java/de/ccc/events/badge/card10/time/Card10Service.kt new file mode 100644 index 0000000000000000000000000000000000000000..ea5aec8d45b6adc5358660285f355be5f8428a93 --- /dev/null +++ b/app/src/main/java/de/ccc/events/badge/card10/time/Card10Service.kt @@ -0,0 +1,47 @@ +/* + * Copyright by the original author or authors. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +package de.ccc.events.badge.card10.time + +import android.bluetooth.BluetoothGattCharacteristic +import android.bluetooth.BluetoothGattService +import de.ccc.events.badge.card10.TIME_CHARACTERISTIC_UUID +import de.ccc.events.badge.card10.common.ConnectionService +import java.nio.ByteBuffer + +class Card10Service( + service: BluetoothGattService +) { + private val timeCharacteristic: BluetoothGattCharacteristic + + init { + timeCharacteristic = service.getCharacteristic(TIME_CHARACTERISTIC_UUID) + timeCharacteristic.writeType = BluetoothGattCharacteristic.WRITE_TYPE_NO_RESPONSE + } + + fun setTime() { + val buffer = ByteBuffer.allocate(8) + buffer.putLong(System.currentTimeMillis()) + timeCharacteristic.value = buffer.array() + ConnectionService.writeCharacteristic(timeCharacteristic) + } +} \ No newline at end of file