50 #define EVT_CMD_RESPONSE_MIN_LENGTH 3
52 #define PIPES_ARRAY_SIZE ((ACI_DEVICE_MAX_PIPES + 7)/8)
60 ACI_ASSERT_SIZE(hal_aci_evt_t, 34);
65 aci_pipe_type_t pipe_type;
68 typedef struct aci_setup_info_t
71 uint8_t number_of_pipes;
72 hal_aci_data_t *setup_msgs;
73 uint8_t num_setup_msgs;
89 typedef struct aci_state_t
92 aci_setup_info_t aci_setup_info;
94 uint8_t data_credit_total;
95 aci_device_operation_mode_t device_state;
100 uint8_t data_credit_available;
102 uint16_t connection_interval;
103 uint16_t slave_latency;
104 uint16_t supervision_timeout;
106 uint8_t pipes_open_bitmap[PIPES_ARRAY_SIZE];
107 uint8_t pipes_closed_bitmap[PIPES_ARRAY_SIZE];
108 bool confirmation_pending;
116 #define DISCONNECT_REASON_CX_TIMEOUT 0x08
117 #define DISCONNECT_REASON_CX_CLOSED_BY_PEER_DEVICE 0x13
118 #define DISCONNECT_REASON_POWER_LOSS 0x14
119 #define DISCONNECT_REASON_CX_CLOSED_BY_LOCAL_DEVICE 0x16
120 #define DISCONNECT_REASON_ADVERTISER_TIMEOUT 0x50
264 bool lib_aci_test(aci_test_mode_change_t enter_exit_test_mode);
287 bool lib_aci_bond(uint16_t run_timeout, uint16_t adv_interval);
409 bool lib_aci_change_timing(uint16_t minimun_cx_interval, uint16_t maximum_cx_interval, uint16_t slave_latency, uint16_t timeout);
440 bool lib_aci_send_nack(aci_state_t *aci_stat,
const uint8_t pipe,
const uint8_t error_code);
488 bool lib_aci_set_key(aci_key_type_t key_rsp_type, uint8_t *key, uint8_t len);
bool lib_aci_broadcast(const uint16_t timeout, const uint16_t adv_interval)
Sends Broadcast message to the radio.
Definition: lib_aci.cpp:641
bool lib_aci_get_address(void)
Gets the device address.
Definition: lib_aci.cpp:362
bool lib_aci_change_timing(uint16_t minimun_cx_interval, uint16_t maximum_cx_interval, uint16_t slave_latency, uint16_t timeout)
Sends a L2CAP change connection parameters request.
Definition: lib_aci.cpp:437
bool lib_aci_device_version(void)
Gets the radio's version.
Definition: lib_aci.cpp:277
uint16_t lib_aci_get_cx_interval(aci_state_t *aci_stat)
Gets the connection interval in multiple of 1.25 ms.
Definition: lib_aci.cpp:223
void lib_aci_flush(void)
Flushes the events in the ACI command queues and ACI Event queue.
Definition: lib_aci.cpp:708
uint8_t lib_aci_get_nb_available_credits(aci_state_t *aci_stat)
Gets the number of currently available ACI credits.
Definition: lib_aci.cpp:205
bool lib_aci_bond(uint16_t run_timeout, uint16_t adv_interval)
Tries to bond with a peer device.
Definition: lib_aci.cpp:336
void lib_aci_pin_reset(void)
Function to pin reset the nRF8001.
Definition: lib_aci.cpp:719
bool lib_aci_set_key(aci_key_type_t key_rsp_type, uint8_t *key, uint8_t len)
Set the key requested by the 8001.
Definition: lib_aci.cpp:510
bool lib_aci_event_get(aci_state_t *aci_stat, hal_aci_evt_t *aci_evt)
Gets an ACI event from the ACI Event Queue.
Definition: lib_aci.cpp:551
bool lib_aci_read_dynamic_data(void)
Sends ReadDynamicData command to the host.
Definition: lib_aci.cpp:686
bool lib_aci_event_peek(hal_aci_evt_t *p_aci_evt_data)
Peeks an ACI event from the ACI Event Queue.
Definition: lib_aci.cpp:546
Definitions for the ACI (Application Control Interface) commands.
bool lib_aci_wakeup(void)
Wakes up the radio.
Definition: lib_aci.cpp:346
bool lib_aci_close_remote_pipe(aci_state_t *aci_stat, uint8_t pipe)
Closes a remote pipe.
Definition: lib_aci.cpp:483
uint16_t lib_aci_get_cx_interval_ms(aci_state_t *aci_stat)
Gets the connection interval in milliseconds.
Definition: lib_aci.cpp:210
bool lib_aci_direct_connect(void)
Radio starts directed advertising to bonded device.
Definition: lib_aci.cpp:270
bool lib_aci_command_queue_full(void)
Return full status of Command queue.
Definition: lib_aci.cpp:739
bool lib_aci_send_nack(aci_state_t *aci_stat, const uint8_t pipe, const uint8_t error_code)
Sends negative acknowledgement message to peer.
Definition: lib_aci.cpp:628
bool lib_aci_disconnect(aci_state_t *aci_stat, aci_disconnect_reason_t reason)
Disconnects from peer device.
Definition: lib_aci.cpp:311
bool lib_aci_open_adv_pipes(const uint8_t *const adv_service_data_pipes)
Sends a command to the radio to set the pipes to be placed in Advertisement Service Data...
Definition: lib_aci.cpp:663
bool lib_aci_write_dynamic_data(uint8_t sequence_number, uint8_t *dynamic_data, uint8_t length)
Sends WriteDynamicData command to the host.
Definition: lib_aci.cpp:693
bool lib_aci_connect(uint16_t run_timeout, uint16_t adv_interval)
Tries to connect to a peer device.
Definition: lib_aci.cpp:301
bool lib_aci_dtm_command(uint8_t dtm_command_msbyte, uint8_t dtm_command_lsbyte)
Sends an DTM command.
Definition: lib_aci.cpp:699
bool lib_aci_change_timing_GAP_PPCP(void)
Sends a L2CAP change connection parameters request with the connection predefined preffered connectio...
Definition: lib_aci.cpp:449
bool lib_aci_test(aci_test_mode_change_t enter_exit_test_mode)
Sets the radio in test mode.
Definition: lib_aci.cpp:247
Interface for hal_aci_tl.
bool lib_aci_request_data(aci_state_t *aci_stat, uint8_t pipe)
Requests data from a given pipe.
Definition: lib_aci.cpp:410
bool lib_aci_is_discovery_finished(aci_state_t *aci_stat)
Checks if the discovery operation is finished.
Definition: lib_aci.cpp:96
bool lib_aci_bond_request(void)
Sends a SMP Security Request.
Definition: lib_aci.cpp:540
bool lib_aci_echo_msg(uint8_t message_size, uint8_t *message_data)
Sends an echo message.
Definition: lib_aci.cpp:520
bool lib_aci_radio_reset(void)
Resets the radio.
Definition: lib_aci.cpp:263
bool lib_aci_is_pipe_closed(aci_state_t *aci_stat, uint8_t pipe)
Checks if a given pipe is closed.
Definition: lib_aci.cpp:83
bool lib_aci_is_pipe_available(aci_state_t *aci_stat, uint8_t pipe)
Checks if a given pipe is available.
Definition: lib_aci.cpp:70
bool lib_aci_event_queue_full(void)
Return full status of the Event queue.
Definition: lib_aci.cpp:729
uint16_t lib_aci_get_slave_latency(aci_state_t *aci_stat)
Gets the current slave latency.
Definition: lib_aci.cpp:229
bool lib_aci_event_queue_empty(void)
Return empty status of the Event queue.
Definition: lib_aci.cpp:724
void lib_aci_debug_print(bool enable)
Function to enable printing of all ACI commands sent and ACI events received.
Definition: lib_aci.cpp:713
bool lib_aci_get_battery_level(void)
Gets the battery level.
Definition: lib_aci.cpp:376
bool lib_aci_set_app_latency(uint16_t latency, aci_app_latency_mode_t latency_mode)
Sets a given application latency.
Definition: lib_aci.cpp:235
bool lib_aci_send_ack(aci_state_t *aci_stat, const uint8_t pipe)
Sends acknowledgement message to peer.
Definition: lib_aci.cpp:616
bool lib_aci_set_tx_power(aci_device_output_power_t tx_power)
Sets the radio's TX power.
Definition: lib_aci.cpp:353
bool lib_aci_sleep(void)
Sets the radio in sleep mode.
Definition: lib_aci.cpp:256
bool lib_aci_set_local_data(aci_state_t *aci_stat, uint8_t pipe, uint8_t *value, uint8_t size)
Sets Local Data.
Definition: lib_aci.cpp:284
uint8_t location
Definition: lib_aci.h:64
bool lib_aci_send_data(uint8_t pipe, uint8_t *value, uint8_t size)
Sends data on a given pipe.
Definition: lib_aci.cpp:383
bool lib_aci_open_adv_pipe(const uint8_t pipe)
Sends a command to the radio to set the input pipe to be placed in Advertisement Service Data...
Definition: lib_aci.cpp:676
Structure for the ACI_CMD_SET_LOCAL_DATA ACI command parameters.
Definition: aci.h:271
bool lib_aci_open_remote_pipe(aci_state_t *aci_stat, uint8_t pipe)
Opens a remote pipe.
Definition: lib_aci.cpp:456
Definitions for the ACI (Application Control Interface) events.
void lib_aci_init(aci_state_t *aci_stat, bool debug)
Initialization function.
Definition: lib_aci.cpp:179
bool lib_aci_get_temperature(void)
Gets the temperature.
Definition: lib_aci.cpp:369
bool lib_aci_command_queue_empty(void)
Return empty status of Command queue.
Definition: lib_aci.cpp:734