From c4dd4a06900b5c1bae9f177e3ecc2ea57fb3d0df Mon Sep 17 00:00:00 2001 From: Anton Weber <anton@antweb.me> Date: Thu, 22 Aug 2019 15:03:05 +0200 Subject: [PATCH] Create Card10Service. --- .../badge/card10/common/ConnectionService.kt | 5 ++ .../events/badge/card10/time/Card10Service.kt | 47 +++++++++++++++++++ 2 files changed, 52 insertions(+) create mode 100644 app/src/main/java/de/ccc/events/badge/card10/time/Card10Service.kt 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 a5d97c3..6051251 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 0000000..ea5aec8 --- /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 -- GitLab