Proximity Monitor Profile.
Copyright (c) 2019 Microchip Technology Inc. and its subsidiaries.
#include <asf.h>
#include "platform.h"
#include "pxp_monitor.h"
#include "ble_manager.h"
#include "link_loss.h"
#include "tx_power.h"
#include "immediate_alert.h"
Functions | |
at_ble_status_t | pxp_disconnect_event_handler (void *params) |
peer device connection terminated More... | |
at_ble_status_t | pxp_monitor_characteristic_found_handler (void *params) |
Handles all Discovered characteristics of a given handler in a connected device. More... | |
at_ble_status_t | pxp_monitor_characteristic_read_response (void *params) |
Handles the read response from the peer/connected device. More... | |
at_ble_status_t | pxp_monitor_connect_request (at_ble_scan_info_t *scan_buffer, uint8_t index) |
Connect to a peer device. More... | |
at_ble_status_t | pxp_monitor_connected_state_handler (void *params) |
Connected event state handle after connection request to peer device. More... | |
at_ble_status_t | pxp_monitor_discovery_complete_handler (void *params) |
Discover all Characteristics supported for Proximity Service of a connected device and handles discovery complete Search will go from start_handle to end_handle, whenever a characteristic is found After search and discovery completes will initialize the alert level and read the tx power value as defined AT_BLE_CHARACTERISTIC_FOUND event is sent and AT_BLE_DISCOVERY_COMPLETE is sent at end of discover operation. More... | |
at_ble_status_t | pxp_monitor_encryption_change_handler (void *params) |
void | pxp_monitor_init (void *param) |
at_ble_status_t | pxp_monitor_pair_done_handler (void *params) |
at_ble_status_t | pxp_monitor_scan_data_handler (at_ble_scan_info_t *scan_info, uint8_t scan_count) |
Search for a given AD type in a buffer, received from advertising packets starts search from the buffer, need to provide required search params. More... | |
at_ble_status_t | pxp_monitor_service_discover (at_ble_handle_t handle) |
Discover all services. More... | |
at_ble_status_t | pxp_monitor_service_found_handler (void *params) |
Discover the Proximity services. More... | |
at_ble_status_t | pxp_monitor_start_scan (void) |
Variables | |
volatile ble_device_ll_state_t | ble_device_current_state |
uint8_t | ias_char_data [MAX_IAS_CHAR_SIZE] |
gatt_ias_char_handler_t | ias_handle |
uint8_t | lls_char_data [MAX_LLS_CHAR_SIZE] |
gatt_lls_char_handler_t | lls_handle |
volatile uint8_t | pxp_connect_request_flag = PXP_DEV_UNCONNECTED |
at_ble_addr_t | pxp_reporter_address |
uint8_t | pxp_supp_scan_index [MAX_SCAN_DEVICE] |
uint8_t | scan_index = 0 |
at_ble_scan_info_t | scan_info [MAX_SCAN_DEVICE] |
volatile uint8_t | scan_response_count |
uint8_t | tx_power_char_data [MAX_TX_POWER_CHAR_SIZE] |
gatt_txps_char_handler_t | txps_handle |
at_ble_status_t pxp_disconnect_event_handler | ( | void * | params | ) |
peer device connection terminated
handler for disconnect notification try to send connect request for previously connect device.
[in] | available | disconnect handler of peer and reason for disconnection |
at_ble_status_t pxp_monitor_characteristic_found_handler | ( | void * | params | ) |
Handles all Discovered characteristics of a given handler in a connected device.
Compare the characteristics UUID with proximity services whenever a characteristics is found if compare stores the characteristics handler of respective service
[in] | characteristic_found | Discovered characteristics params of a connected device |
at_ble_status_t pxp_monitor_characteristic_read_response | ( | void * | params | ) |
Handles the read response from the peer/connected device.
if any read request send, response back event is handle. compare the read response characteristics with available service. and data is handle to the respective service.
at_ble_status_t pxp_monitor_connect_request | ( | at_ble_scan_info_t * | scan_buffer, |
uint8_t | index | ||
) |
Connect to a peer device.
Connecting to a peer device, implicitly starting the necessary scan operation then connecting if a device in the peers list is found.
[in] | scan_buffer | a list of peers that the device will connect to one of them |
[in] | index | index of elements in peers, to initiate the connection |
Referenced by pxp_monitor_scan_data_handler().
at_ble_status_t pxp_monitor_connected_state_handler | ( | void * | params | ) |
Connected event state handle after connection request to peer device.
After connecting to the peer device start the GATT primary discovery
[in] | conn_params | parameters of the established connection |
at_ble_status_t pxp_monitor_discovery_complete_handler | ( | void * | params | ) |
Discover all Characteristics supported for Proximity Service of a connected device and handles discovery complete Search will go from start_handle to end_handle, whenever a characteristic is found After search and discovery completes will initialize the alert level and read the tx power value as defined AT_BLE_CHARACTERISTIC_FOUND event is sent and AT_BLE_DISCOVERY_COMPLETE is sent at end of discover operation.
[in] | discover_status | discovery status of each handle |
at_ble_status_t pxp_monitor_encryption_change_handler | ( | void * | params | ) |
void pxp_monitor_init | ( | void * | param | ) |
Referenced by main().
at_ble_status_t pxp_monitor_pair_done_handler | ( | void * | params | ) |
at_ble_status_t pxp_monitor_scan_data_handler | ( | at_ble_scan_info_t * | scan_info, |
uint8_t | scan_count | ||
) |
Search for a given AD type in a buffer, received from advertising packets starts search from the buffer, need to provide required search params.
Search for a given AD type in a buffer, received from advertising packets.
[in] | scan_buffer | where all received advertising packet are stored |
[in] | scanned_dev_count | elements in scan_buffer |
References AD_TYPE_COMPLETE_LIST_UUID, at_ble_addr_t::addr, AT_BLE_ADV_TYPE_DIRECTED, AT_BLE_ADV_TYPE_UNDIRECTED, AT_BLE_FAILURE, at_ble_scan_stop(), AT_BLE_SUCCESS, AT_BLE_UUID_16, DBG_LOG, DBG_LOG_CONT, at_ble_scan_info_t::dev_addr, gap_dev_scan(), LINK_LOSS_SERVICE_UUID, MAX_SCAN_DEVICE, PXP_ASCII_TO_DECIMAL_VALUE, pxp_monitor_connect_request(), pxp_supp_scan_index, scan_index, scan_info, scan_info_parse(), at_ble_uuid_t::type, and at_ble_uuid_t::uuid.
at_ble_status_t pxp_monitor_service_discover | ( | at_ble_handle_t | handle | ) |
Discover all services.
[in] | connection | handle. |
Referenced by pxp_monitor_app_button_event(), pxp_monitor_encryption_change_handler(), and pxp_monitor_pair_done_handler().
at_ble_status_t pxp_monitor_service_found_handler | ( | void * | params | ) |
Discover the Proximity services.
Search will go from start_handle to end_handle, whenever a service is found and compare with proximity services and stores the respective handlers PXP_MONITOR_CONNECTED_STATE_HANDLER event i.
[in] | at_ble_primary_service_found_t | Primary service parameter |
at_ble_status_t pxp_monitor_start_scan | ( | void | ) |
volatile ble_device_ll_state_t ble_device_current_state |
uint8_t ias_char_data[MAX_IAS_CHAR_SIZE] |
Referenced by pxp_monitor_init().
gatt_ias_char_handler_t ias_handle |
uint8_t lls_char_data[MAX_LLS_CHAR_SIZE] |
Referenced by pxp_monitor_init().
gatt_lls_char_handler_t lls_handle |
volatile uint8_t pxp_connect_request_flag = PXP_DEV_UNCONNECTED |
at_ble_addr_t pxp_reporter_address |
uint8_t pxp_supp_scan_index[MAX_SCAN_DEVICE] |
Referenced by pxp_monitor_scan_data_handler().
uint8_t scan_index = 0 |
Referenced by ble_scan_report_app_event(), and pxp_monitor_scan_data_handler().
at_ble_scan_info_t scan_info[MAX_SCAN_DEVICE] |
Referenced by pxp_monitor_scan_data_handler().
volatile uint8_t scan_response_count |
uint8_t tx_power_char_data[MAX_TX_POWER_CHAR_SIZE] |
Referenced by pxp_monitor_init().
gatt_txps_char_handler_t txps_handle |