diff options
Diffstat (limited to 'chip/nrf51/bluetooth_le.h')
-rw-r--r-- | chip/nrf51/bluetooth_le.h | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/chip/nrf51/bluetooth_le.h b/chip/nrf51/bluetooth_le.h new file mode 100644 index 0000000000..8a746f39d7 --- /dev/null +++ b/chip/nrf51/bluetooth_le.h @@ -0,0 +1,67 @@ +/* Copyright 2016 The Chromium OS Authors. All rights reserved. + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef __NRF51_BLUETOOTH_LE_H +#define __NRF51_BLUETOOTH_LE_H + +#include "common.h" +#include "include/bluetooth_le.h" + +#define NRF51_BLE_LENGTH_BITS 8 +#define NRF51_BLE_S0_BYTES 1 +#define NRF51_BLE_S1_BITS 0 /* no s1 field */ + +#define NRF51_RADIO_PCNF0_ADV NRF51_RADIO_PCNF0_VAL(NRF51_BLE_LENGTH_BITS, \ + NRF51_BLE_S0_BYTES, \ + NRF51_BLE_S1_BITS) + +#define BLE_ACCESS_ADDRESS_BYTES 4 +#define EXTRA_RECEIVE_BYTES 0 +#define BLE_ADV_WHITEN 1 + +#define NRF51_RADIO_PCNF1_ADV \ + NRF51_RADIO_PCNF1_VAL(BLE_MAX_ADV_PAYLOAD_OCTETS, \ + EXTRA_RECEIVE_BYTES, \ + BLE_ACCESS_ADDRESS_BYTES - 1, \ + BLE_ADV_WHITEN) + + +struct nrf51_ble_packet_t { + uint8_t s0; /* First byte */ + uint8_t length; /* Length field */ + uint8_t payload[BLE_MAX_DATA_PAYLOAD_OCTETS]; +} __packed; + +struct nrf51_ble_config_t { + uint8_t channel; + uint8_t address; + uint32_t crc_init; +}; + +/* Initialize the nRF51 radio for BLE */ +int ble_radio_init(void); + +/* Transmit pdu on the radio */ +void ble_tx(struct ble_pdu *pdu); + +/* Receive a packet into pdu if one comes before the timeout */ +int ble_rx(struct ble_pdu *pdu, int timeout, int adv); + +/* White list handling */ + +/* Clear the white list */ +int ble_radio_clear_white_list(void); + +/* Read the size of the white list and assign it to ret_size */ +int ble_radio_read_white_list_size(uint8_t *ret_size); + +/* Add the device with the address specified by addr_ptr and type */ +int ble_radio_add_device_to_white_list(const uint8_t *addr_ptr, uint8_t type); + +/* Remove the device with the address specified by addr_ptr and type */ +int ble_radio_remove_device_from_white_list(const uint8_t *addr_ptr, + uint8_t type); + +#endif /* __NRF51_BLUETOOTH_LE_H */ |