blurdroid 0.1.6

Bluetooth lib for Rust using Android's bluedroid
Documentation
#include "bluetooth-characteristic.h"

#include <stdlib.h>
#include <stdio.h>
#include <jni.h>
#include "jni-memory.h"
#include "jni-utils.h"

BluetoothCharacteristic *
bluetooth_characteristic_create_characteristic (BluetoothService *service, int id)
{
    BluetoothCharacteristic *characteristic = jni_calloc (sizeof (*characteristic));

    characteristic->characteristic = jni_create_object_int (service->service, g_ctx.service_get_gatt_characteristic, id);
    characteristic->count = 1;

    return characteristic;
}

const char*
bluetooth_characteristic_get_uuid (BluetoothCharacteristic *characteristic)
{
    return jni_call_str (characteristic->characteristic, g_ctx.characteristic_get_uuid);
}

const char**
bluetooth_characteristic_get_flags (BluetoothCharacteristic *characteristic)
{
    return jni_call_str_array (characteristic->characteristic, g_ctx.characteristic_get_flags, g_ctx.null);
}

int
bluetooth_characteristic_get_flags_size (BluetoothCharacteristic *characteristic)
{
    return jni_call_int (characteristic->characteristic, g_ctx.characteristic_get_flags_size);
}

const int*
bluetooth_characteristic_get_gatt_descriptors (BluetoothCharacteristic *characteristic)
{
    return jni_call_int_array (characteristic->characteristic, g_ctx.characteristic_get_gatt_descriptors, g_ctx.descriptor_get_id);
}

int
bluetooth_characteristic_get_gatt_descriptors_size (BluetoothCharacteristic *characteristic)
{
    return jni_call_int (characteristic->characteristic, g_ctx.characteristic_get_gatt_descriptors_size);
}

const int*
bluetooth_characteristic_get_value (BluetoothCharacteristic *characteristic)
{
    return jni_get_value (characteristic->characteristic, g_ctx.characteristic_get_value, -1);
}

const int
bluetooth_characteristic_get_value_size (BluetoothCharacteristic *characteristic)
{
    return jni_call_int (characteristic->characteristic, g_ctx.characteristic_get_value_size);
}

int
bluetooth_characteristic_read_value (BluetoothCharacteristic *characteristic)
{
    return jni_call_bool (characteristic->characteristic, g_ctx.characteristic_read_value);
}

int
bluetooth_characteristic_write_value (BluetoothCharacteristic *characteristic, const int* values, int length)
{
    return jni_set_value (characteristic->characteristic, g_ctx.characteristic_write_value, values, length);
}

int
bluetooth_characteristic_start_notify (BluetoothCharacteristic *characteristic)
{
    return jni_call_bool (characteristic->characteristic, g_ctx.characteristic_start_notify);
}

int
bluetooth_characteristic_stop_notify (BluetoothCharacteristic *characteristic)
{
    return jni_call_bool (characteristic->characteristic, g_ctx.characteristic_stop_notify);
}

void
bluetooth_characteristic_inc_refcount (BluetoothCharacteristic *characteristic)
{
    characteristic->count = characteristic->count + 1;
}

void
bluetooth_characteristic_dec_refcount (BluetoothCharacteristic *characteristic)
{
    characteristic->count = characteristic->count - 1;
}

void
bluetooth_characteristic_free_characteristic (BluetoothCharacteristic *characteristic) {
    if (characteristic->count <= 0)
    {
        jni_delete_object(characteristic->characteristic);
        jni_free (characteristic);
    }
}