3bd65fbae5
This was the last class from ubluepy and so that module is now gone. The Device class offers both Peripheral and Central functionality. See the inline docs for more info.
141 lines
5.1 KiB
C
141 lines
5.1 KiB
C
/*
|
|
* This file is part of the MicroPython project, http://micropython.org/
|
|
*
|
|
* The MIT License (MIT)
|
|
*
|
|
* Copyright (c) 2016 Glenn Ruben Bakke
|
|
*
|
|
* 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.
|
|
*/
|
|
|
|
#ifndef BLUETOOTH_LE_DRIVER_H__
|
|
#define BLUETOOTH_LE_DRIVER_H__
|
|
|
|
#if BLUETOOTH_SD
|
|
|
|
#include <stdint.h>
|
|
#include <stdbool.h>
|
|
|
|
#include "shared-module/bleio/AdvertisementData.h"
|
|
#include "shared-module/bleio/Characteristic.h"
|
|
#include "shared-module/bleio/Device.h"
|
|
#include "shared-module/bleio/Scanner.h"
|
|
#include "shared-module/bleio/Service.h"
|
|
|
|
typedef struct {
|
|
uint8_t addr[6];
|
|
uint8_t addr_type;
|
|
} ble_drv_addr_t;
|
|
|
|
typedef struct {
|
|
uint8_t * p_peer_addr;
|
|
uint8_t addr_type;
|
|
bool is_scan_resp;
|
|
int8_t rssi;
|
|
uint8_t data_len;
|
|
uint8_t * p_data;
|
|
uint8_t adv_type;
|
|
} ble_drv_adv_data_t;
|
|
|
|
typedef struct {
|
|
uint16_t uuid;
|
|
uint8_t uuid_type;
|
|
uint16_t start_handle;
|
|
uint16_t end_handle;
|
|
} ble_drv_service_data_t;
|
|
|
|
typedef struct {
|
|
uint16_t uuid;
|
|
uint8_t uuid_type;
|
|
struct {
|
|
bool broadcast : 1;
|
|
bool read : 1;
|
|
bool write_wo_resp : 1;
|
|
bool write : 1;
|
|
bool notify : 1;
|
|
bool indicate : 1;
|
|
} props;
|
|
uint16_t decl_handle;
|
|
uint16_t value_handle;
|
|
} ble_drv_char_data_t;
|
|
|
|
typedef void (*ble_drv_gap_evt_callback_t)(bleio_device_obj_t *device, uint16_t event_id, uint16_t conn_handle, uint16_t length, uint8_t * data);
|
|
typedef void (*ble_drv_gatts_evt_callback_t)(bleio_device_obj_t *device, uint16_t event_id, uint16_t attr_handle, uint16_t length, uint8_t * data);
|
|
typedef void (*ble_drv_gattc_evt_callback_t)(bleio_device_obj_t *device, uint16_t event_id, uint16_t attr_handle, uint16_t length, uint8_t * data);
|
|
typedef void (*ble_drv_adv_evt_callback_t)(bleio_scanner_obj_t *scanner, ble_drv_adv_data_t *data);
|
|
typedef void (*ble_drv_disc_add_service_callback_t)(bleio_device_obj_t *device, ble_drv_service_data_t * p_service_data);
|
|
typedef void (*ble_drv_disc_add_char_callback_t)(bleio_service_obj_t *service, ble_drv_char_data_t * p_desc_data);
|
|
typedef void (*ble_drv_gattc_char_data_callback_t)(bleio_characteristic_obj_t *self, uint16_t length, uint8_t * p_data);
|
|
|
|
uint32_t ble_drv_stack_enable(void);
|
|
|
|
void ble_drv_stack_disable(void);
|
|
|
|
uint8_t ble_drv_stack_enabled(void);
|
|
|
|
void ble_drv_address_get(ble_drv_addr_t * p_addr);
|
|
|
|
bool ble_drv_uuid_add_vs(uint8_t * p_uuid, uint8_t * idx);
|
|
|
|
void ble_drv_service_add(bleio_service_obj_t *service);
|
|
|
|
bool ble_drv_characteristic_add(bleio_characteristic_obj_t *characteristic);
|
|
|
|
bool ble_drv_advertise_data(bleio_advertisement_data_t *p_adv_params);
|
|
|
|
void ble_drv_advertise_stop(void);
|
|
|
|
void ble_drv_gap_event_handler_set(bleio_device_obj_t *device, ble_drv_gap_evt_callback_t evt_handler);
|
|
|
|
void ble_drv_gatts_event_handler_set(bleio_device_obj_t *device, ble_drv_gatts_evt_callback_t evt_handler);
|
|
|
|
void ble_drv_gattc_event_handler_set(bleio_device_obj_t *device, ble_drv_gattc_evt_callback_t evt_handler);
|
|
|
|
void ble_drv_attr_s_read(uint16_t conn_handle, uint16_t handle, uint16_t len, uint8_t * p_data);
|
|
|
|
void ble_drv_attr_c_read(bleio_characteristic_obj_t *characteristic, ble_drv_gattc_char_data_callback_t cb);
|
|
|
|
void ble_drv_attr_s_write(bleio_characteristic_obj_t *characteristic, mp_buffer_info_t *bufinfo);
|
|
|
|
void ble_drv_attr_s_notify(bleio_characteristic_obj_t *characteristic, mp_buffer_info_t *bufinfo);
|
|
|
|
void ble_drv_attr_c_write(bleio_characteristic_obj_t *characteristic, mp_buffer_info_t *bufinfo);
|
|
|
|
void ble_drv_scan_start(uint16_t interval, uint16_t window);
|
|
|
|
void ble_drv_scan_continue(void);
|
|
|
|
void ble_drv_scan_stop(void);
|
|
|
|
void ble_drv_adv_report_handler_set(bleio_scanner_obj_t *self, ble_drv_adv_evt_callback_t evt_handler);
|
|
|
|
void ble_drv_connect(bleio_device_obj_t *device);
|
|
|
|
void ble_drv_disconnect(bleio_device_obj_t *device);
|
|
|
|
bool ble_drv_discover_services(bleio_device_obj_t *device, uint16_t start_handle, ble_drv_disc_add_service_callback_t cb);
|
|
|
|
bool ble_drv_discover_characteristic(bleio_device_obj_t *device, bleio_service_obj_t *service, uint16_t start_handle, ble_drv_disc_add_char_callback_t cb);
|
|
|
|
void ble_drv_discover_descriptors(void);
|
|
|
|
#endif // BLUETOOTH_SD
|
|
|
|
#endif // BLUETOOTH_LE_DRIVER_H__
|