ble9  2.0.0.0
Data Structures | Macros | Enumerations | Functions
ble9.h File Reference

This file contains API for BLE 9 Click driver. More...

#include "drv_uart.h"

Go to the source code of this file.

Data Structures

struct  ble9_version_t
 
struct  ble9_timer_t
 
struct  ble9_t
 Click ctx object definition. More...
 
struct  ble9_cfg_t
 Click configuration structure definition. More...
 

Macros

#define BLE9_MAP_MIKROBUS(cfg, mikrobus)
 
#define BLE9_RETVAL   uint8_t
 
#define BLE9_OK   0
 
#define BLE9_ERROR   1
 
#define BLE9_RSP_READY   1
 
#define BLE9_RSP_NOT_READY   0
 
#define BLE9_CMD_SYSTEM_HELLO_ID   0x00010020
 System commands. More...
 
#define BLE9_CMD_SYSTEM_DATA_BUFFER_CLEAR_ID   0x14010020
 
#define BLE9_CMD_SYSTEM_RESET_ID   0x01010020
 
#define BLE9_CMD_SYSTEM_HALT_ID   0x2001010C
 
#define BLE9_CMD_SYSTEM_SET_TX_POWER_ID   0x17010020
 
#define BLE9_CMD_SYSTEM_GET_VERSION_ID   0x1B010020
 
#define BLE9_CMD_SYSTEM_SET_SOFT_TIMER_ID   0x19010020
 
#define BLE9_CMD_SYSTEM_SET_LAZY_SOFT_TIMER_ID   0x1A010020
 
#define BLE9_CMD_SYSTEM_SET_IDENTITY_ADDRESS_ID   0x13010020
 
#define BLE9_CMD_SYSTEM_GET_IDENTITY_ADDRESS_ID   0x15010020
 
#define BLE9_CMD_SYSTEM_DATA_BUFFER_WRITE_ID   0x12010020
 GAP commands. More...
 
#define BLE9_CMD_GAP_SET_PRIVACY_MODE_ID   0x01020020
 
#define BLE9_CMD_GAP_ENABLE_WHITELISTING_ID   0x03020020
 Advertiser commands. More...
 
#define BLE9_CMD_ADVERTISER_CREATE_ID   0x01040020
 
#define BLE9_CMD_ADVERTISER_DELETE_SET_ID   0x02040020
 
#define BLE9_CMD_ADVERTISER_START_ID   0x09040320
 
#define BLE9_CMD_ADVERTISER_STOP_ID   0x0A040020
 
#define BLE9_CMD_ADVERTISER_SET_TIMING_ID   0x03040020
 
#define BLE9_CMD_ADVERTISER_SET_PHY_ID   0x06040020
 
#define BLE9_CMD_ADVERTISER_SET_CHANNEL_MAP_ID   0x04040020
 
#define BLE9_CMD_ADVERTISER_SET_TX_POWER_ID   0x0B040020
 
#define BLE9_CMD_ADVERTISER_SET_REPORT_SCAN_REQUEST_ID   0x05040020
 
#define BLE9_CMD_ADVERTISER_SET_CONFIGURATION_ID   0x07040020
 
#define BLE9_CMD_ADVERTISER_CLEAR_CONFIGURATION_ID   0x08040020
 
#define BLE9_CMD_ADVERTISER_SET_DATA_ID   0x0F040020
 
#define BLE9_CMD_ADVERTISER_SET_LONG_DATA_ID   0x0E040020
 
#define BLE9_CMD_ADVERTISER_START_PERIODIC_ADVERTISING_ID   0x0C040020
 
#define BLE9_CMD_ADVERTISER_STOP_PERIODIC_ADVERTISING_ID   0x0D040020
 
#define BLE9_CMD_NULL   0
 
#define BLE9_SYSTEM_RESUME   0
 
#define BLE9_SYSTEM_HALT   1
 
#define DRV_RX_BUFFER_SIZE   100
 
#define DRV_TX_BUFFER_SIZE   100
 

Enumerations

enum  ble9_dfu_reset_mode_t { BLE9_DFU_RESET_MODE_NORMAL = 0, BLE9_DFU_RESET_MODE_UART, BLE9_DFU_RESET_MODE_OTA }
 
enum  ble9_channel_t {
  BLE9_CHANNEL_37 = 0, BLE9_CHANNEL_38, BLE9_CHANNEL_37_38, BLE9_CHANNEL_39,
  BLE9_CHANNEL_37_39, BLE9_CHANNEL_38_39, BLE9_CHANNEL_ALL
}
 
enum  ble9_phy_type_t { BLE9_PHY_TYPE_1M = 1, BLE9_PHY_TYPE_2M, BLE9_PHY_TYPE_CODED, BLE9_PHY_TYPE_ANY = 0xFF }
 
enum  ble9_package_type_t { BLE9_PACKAGE_TYPE_ADVERTISING = 0, BLE9_PACKAGE_TYPE_SCAN_RESPONSE, BLE9_PACKAGE_TYPE_PERIODIC_ADVERTISING = 8 }
 
enum  ble9_advertiser_mode_discoverable_t {
  BLE9_ADVERTISER_MODE_DISCOVERABLE_NONE = 0, BLE9_ADVERTISER_MODE_DISCOVERABLE_LIMITED, BLE9_ADVERTISER_MODE_DISCOVERABLE_GENERAL, BLE9_ADVERTISER_MODE_DISCOVERABLE_BROADCAST,
  BLE9_ADVERTISER_MODE_DISCOVERABLE_USER_DATA
}
 
enum  ble9_advertiser_mode_connectable_t {
  BLE9_ADVERTISER_MODE_CONNECTABLE_NONE = 0, BLE9_ADVERTISER_MODE_CONNECTABLE_DIRECTED, BLE9_ADVERTISER_MODE_CONNECTABLE_SCANNABLE, BLE9_ADVERTISER_MODE_CONNECTABLE_NONE_CONNECTABLE,
  BLE9_ADVERTISER_MODE_CONNECTABLE_NONE_SCANABLE
}
 

Functions

void ble9_cfg_setup (ble9_cfg_t *cfg)
 Config Object Initialization function. More...
 
BLE9_RETVAL ble9_init (ble9_t *ctx, ble9_cfg_t *cfg)
 Initialization function. More...
 
BLE9_RETVAL ble9_system_hello (ble9_t *ctx)
 Verify whether the communication between the host and the device is functional. More...
 
BLE9_RETVAL ble9_system_get_version (ble9_t *ctx)
 Get the firmware version information. More...
 
void ble9_system_set_identity_address (ble9_t *ctx, uint8_t *address, uint8_t type)
 Set the device's Bluetooth identity address. The address can be a public device address or a static device address. A valid address set with this command will be written into persistent storage using NVM keys. The stack returns an error if the static device address does not conform to the Bluetooth specification. The new address will be effective in the next system reboot. The stack will use the address in the NVM keys when present. Otherwise, it uses the default Bluetooth public device address which is programmed at production. The stack treats 00:00:00:00:00:00 and ff:ff:ff:ff:ff:ff as invalid addresses. Therefore, passing one of them into this command will cause the stack to delete the NVM keys and use the default address in the next system reboot. More...
 
BLE9_RETVAL ble9_system_get_identity_address (ble9_t *ctx, uint8_t *data_buf, uint8_t type)
 Read the Bluetooth identity address used by the device, which can be a public or random static device address. More...
 
void ble9_system_reset (ble9_t *ctx, ble9_dfu_reset_mode_t reset_mode)
 Reset the system. The command does not have a response but it triggers one of the boot events (normal reset or boot to DFU mode) depending on the selected boot mode. More...
 
BLE9_RETVAL ble9_system_halt (ble9_t *ctx, uint8_t halt)
 Force radio to idle state and allow device to sleep. Advertising, scanning, connections, and software timers are halted by this command. Halted operations resume after calling this command with parameter 0. Connections stay alive if the system is resumed before connection supervision timeout. More...
 
void ble9_system_set_tx_power (ble9_t *ctx, int16_t min_power, int16_t max_power)
 Set the global minimum and maximum radiated TX power levels for Bluetooth. This returns selected power levels that are radiated from the antenna at TX. The transmitter power at antenna pin will apply the RF TX path gain to match this setting. RF TX path gain can be set in the Bluetooth configuration. If the GATT server contains a TX power service, the TX Power Level attribute will be updated with the selected maximum power level. A selected power level may be different than the requested value if the device cannot meet the requirement. For Bluetooth connections, the maximum radiated TX power is limited to 10 dBm if Adaptive Frequency Hopping (AFH) is not enabled. The minimum TX power setting is used by LE power control. It has no effect in Bluetooth stack if the LE power control feature is not enabled. However, the application may still use this setting for other purposes, e.g., setting the minimum TX power for DTM transmitter test. The minimum and maximum radiated TX power levels can also be configured in the Bluetooth configuration and passed into the Bluetooth stack initialization. By default, the minimum radiated TX power level is configured to -3 dBm and the maximum radiated TX power level to 8 dBm. More...
 
BLE9_RETVAL ble9_system_data_buffer_write (ble9_t *ctx, size_t data_len, const uint8_t *wr_data)
 Write data into the system data buffer. Data will be appended to the end of existing data. More...
 
BLE9_RETVAL ble9_system_data_buffer_clear (ble9_t *ctx)
 Remove all data from the system data buffer. More...
 
BLE9_RETVAL ble9_system_set_soft_timer (ble9_t *ctx, ble9_timer_t *ble9_timer)
 Start a software timer. Multiple concurrent timers can be running simultaneously. 256 unique timer handles (IDs) are available. The maximum number of concurrent timers is configurable at device initialization. Up to 16 concurrent timers can be configured. The default configuration is 4. As the RAM for storing timer data is pre-allocated at initialization, an application should not configure the amount more than it needs for minimizing RAM usage. More...
 
BLE9_RETVAL ble9_system_set_lazy_soft_timer (ble9_t *ctx, ble9_timer_t *ble9_timer)
 Start a software timer with slack. The slack parameter allows the stack to optimize wakeups and save power. The timer event is triggered between time and time + slack. More...
 
BLE9_RETVAL ble9_gap_set_privacy_mode (ble9_t *ctx, bool privacy, uint8_t interval_in_minutes)
 Enable or disable the privacy feature on all GAP roles. New privacy mode will take effect for advertising next time advertising is enabled, for scanning next time scanning is enabled, and for initiating on the next open connection command. When privacy is enabled and the device is advertising or scanning, the stack will maintain a periodic timer with the specified time interval as a timeout value. At each timeout, the stack will generate a new private resolvable address and use it in advertising data packets and scanning requests. By default, privacy feature is disabled. More...
 
BLE9_RETVAL ble9_gap_enable_whitelisting (ble9_t *ctx, bool enable)
 Enable or disable whitelisting. The setting will be effective the next time that scanning is enabled. More...
 
BLE9_RETVAL ble9_advertiser_create_id (ble9_t *ctx)
 Create an advertising ID. The handle of the created advertising ID is returned in response. More...
 
BLE9_RETVAL ble9_advertiser_delete_id (ble9_t *ctx)
 Delete an advertising ID. More...
 
BLE9_RETVAL ble9_advertiser_set_timing (ble9_t *ctx, uint16_t interval_min, uint16_t interval_max, uint16_t duration, uint8_t maxevents)
 Set the advertising timing parameters of the given advertising set. This setting will take effect next time that advertising is enabled. More...
 
BLE9_RETVAL ble9_advertiser_set_phy (ble9_t *ctx, ble9_phy_type_t primary_phy, ble9_phy_type_t secondary_phy)
 Set advertising PHYs of the given advertising set. This setting will take effect next time that advertising is enabled. The invalid parameter error is returned if a PHY value is invalid or the device does not support a given PHY. More...
 
BLE9_RETVAL ble9_advertiser_set_channel_map (ble9_t *ctx, ble9_channel_t channel_map)
 Set the primary advertising channel map of the given advertising set. This setting will take effect next time that advertising is enabled. More...
 
BLE9_RETVAL ble9_advertiser_set_tx_power (ble9_t *ctx, int16_t power, int16_t *set_power)
 Limit the maximum advertising TX power on the given advertising set. The maximum TX power of legacy advertising is further constrained to be less than +10 dBm. Extended advertising TX power can be +10 dBm and over if Adaptive Frequency Hopping is enabled. This setting will take effect next time advertising is enabled. More...
 
BLE9_RETVAL ble9_advertiser_set_report_scan_request (ble9_t *ctx, bool report_scan_req)
 Enable or disable the scan request notification of a given advertising set. This setting will take effect next time that advertising is enabled. More...
 
BLE9_RETVAL ble9_advertiser_set_configuration (ble9_t *ctx, uint8_t configurations)
 Enable advertising configuration flags on the given advertising set. The configuration change will take effect next time that advertising is enabled. These configuration flags can be disabled using ble9_advertiser_clear_configuration. More...
 
BLE9_RETVAL ble9_advertiser_clear_configuration (ble9_t *ctx, uint8_t configurations)
 Disable advertising configuration flags on the given advertising set. The configuration change will take effect next time that advertising is enabled. These configuration flags can be enabled using ble9_advertiser_set_configuration. More...
 
BLE9_RETVAL ble9_advertiser_set_data (ble9_t *ctx, ble9_package_type_t packet_type, size_t adv_data_len, const uint8_t *adv_data)
 Set user-defined data in advertising packets, scan response packets, or periodic advertising packets. Maximum 31 bytes of data can be set for legacy advertising. Maximum 191 bytes of data can be set for connectable extended advertising. Maximum 253 bytes of data can be set for periodic and non-connectable extended advertising. For setting longer advertising data, use command ble9_advertiser_set_long_data. If advertising mode is currently enabled, the new advertising data will be used immediately. Advertising mode can be enabled using command ble9_advertiser_start. Periodic advertising mode can be enabled using command ble9_advertiser_start_periodic_advertising. The invalid parameter error will be returned in the following situations: Data length is more than 31 bytes but the advertiser can only advertise using legacy advertising PDUs. Data is too long to fit into a single advertisement. Set data of the advertising data packet when the advertiser is advertising in scannable mode using extended advertising PDUs. Set data of the scan response data packet when the advertiser is advertising in connectable mode using extended advertising PDUs. Note that the user-defined data may be overwritten by the system when the advertising is later enabled in a discoverable mode other than user_data. More...
 
BLE9_RETVAL ble9_advertiser_set_long_data (ble9_t *ctx, ble9_package_type_t packet_type)
 Set advertising data for a specified packet type and advertising set. Data currently in the system data buffer will be extracted as the advertising data. The buffer will be emptied after this command regardless of the completion status. Prior to calling this command, add data to the buffer with one or multiple calls to ble9_system_data_buffer_write. Maximum 31 bytes of data can be set for legacy advertising. Maximum 191 bytes of data can be set for connectable extended advertising. Maximum 1650 bytes of data can be set for periodic and non-connectable extended advertising, but advertising parameters may limit the amount of data that can be sent in a single advertisement. See ble9_advertiser_set_data for more details on advertising data. More...
 
BLE9_RETVAL ble9_advertiser_start (ble9_t *ctx, ble9_advertiser_mode_discoverable_t discover, ble9_advertiser_mode_connectable_t connect)
 Start advertising of a given advertising set with specified discoverable and connectable modes. The number of concurrent advertising is limited by MAX_ADVERTISERS configuration. The number of concurrent connectable advertising is also limited by MAX_CONNECTIONS configuration. For example, only one connectable advertising can be enabled if the device has (MAX_CONNECTIONS - 1) connections when this command is called. The limitation does not apply to non-connectable advertising. The default advertising configuration in the stack is set to using legacy advertising PDUs on 1M PHY. More...
 
BLE9_RETVAL ble9_advertiser_stop (ble9_t *ctx)
 Stop the advertising of the given advertising set. Counterpart with ble9_advertiser_start. This command does not affect the enable state of the periodic advertising set, i.e., periodic advertising is not stopped. More...
 
BLE9_RETVAL ble9_advertiser_start_periodic_advertising (ble9_t *ctx, uint16_t interval_min, uint16_t interval_max, uint8_t flags)
 Start periodic advertising on the given advertising set. The stack enables the advertising set automatically if the set was not enabled and the set can advertise using extended advertising PDUs beside the syncInfo, which is needed for the periodic advertising. The invalid parameter error is returned if the application has configured legacy advertising PDUs or anonymous advertising, or the advertising set is enabled using legacy advertising PDUs. To stop periodic advertising, use ble9_advertiser_stop_periodic_advertising command with the handle received in response from this command. More...
 
BLE9_RETVAL ble9_advertiser_stop_periodic_advertising (ble9_t *ctx)
 Stop the periodic advertising on the given advertising set. Counterpart with ble9_advertiser_start_periodic_advertising. This command does not affect the enable state of the advertising set, i.e., legacy or extended advertising is not stopped. More...
 
void ble9_generic_write (ble9_t *ctx, char *data_buf)
 Generic write function. More...
 
int32_t ble9_generic_read (ble9_t *ctx, char *data_buf, uint16_t max_len)
 Generic read function. More...
 
void ble9_send_command (ble9_t *ctx, char *command, uint8_t buf_length)
 Function for transmiting commands. More...
 

Detailed Description

This file contains API for BLE 9 Click driver.