For with fix for disconnection notifications

Fork of nRF51822 by Nordic Semiconductor

Committer:
Rohit Grover
Date:
Tue Sep 02 15:50:05 2014 +0100
Revision:
56:a1071b629aa3
Parent:
0:eff01767de02
Release 0.1.0
=============

We've achieved significant gains in power consumption: the BLE_Beacon demo now
runs at around 35uA of average current broadcasting once a second at 0dB; when
not using the radio, this demo consumes around 7uA.

Features
~~~~~~~~

- Replace initialization of high-frequency external crystal clock-source with
the use of low-frequency clock. This brings in significant gains in power
consumption.

- Re-implement the micro-second timer on nRF51 using the app_timer module
(which internally uses RTC). This limits the precision of the us_Timer to
30uS; but brings in significant gains in power consumption.

- Reduce the number of available app_timers and the event depths for app-timer
events; this will reduce memory consumption for zero-initialized data by
around 1K.

- Remove the call to conn_params_init() at startup. This is not mandatory; and
was causing an unnecessary re-negotiation of connection parameters a few
seconds into every connection.

- Reduce default transmission power level to 0dbB (was 4dbB before).

- Reduce min connection interval to 50ms and max to 500ms (previous values
were much larger).

- Replace a few instances of use of wait() with nrf_delay_us().

- onConnection() callback now receives connection-parameters applicable to the
new connection.

- onDataSent() callback now receives a count parameter containing the number of
times notifications were sent out since the last callback.

- A 'reason' parameter has been added to Gap::disconnect() to indicate the
reason for disconnection; and also to the onDisconnection callback to
receive a reason from the remote host.

- disable the app_gpiote module by default.

Bugfixes
~~~~~~~~

- onDataWritten() callback now passes an additional parameter
(GattServer::WriteEventCallback_t) encapsulating the update. This avoids
having to re-fetch the updated characteristic's value attribute. It also
fixes a bug where multiple updates to the characteristic's value-attribute
could get clobbered if they occurred in quick succession before the
callbacks could be processed.


Compatibility
~~~~~~~~~~~~~

Compatible with revision 0.1.0 of the BLE_API.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
bogdanm 0:eff01767de02 1 /*
bogdanm 0:eff01767de02 2 Copyright (c) 2012 Nordic Semiconductor. All Rights Reserved.
bogdanm 0:eff01767de02 3
bogdanm 0:eff01767de02 4 The information contained herein is confidential property of Nordic Semiconductor. The use,
bogdanm 0:eff01767de02 5 copying, transfer or disclosure of such information is prohibited except by express written
bogdanm 0:eff01767de02 6 agreement with Nordic Semiconductor.
bogdanm 0:eff01767de02 7 */
bogdanm 0:eff01767de02 8 /**
Rohit Grover 56:a1071b629aa3 9 @addtogroup BLE_COMMON
bogdanm 0:eff01767de02 10 @{
bogdanm 0:eff01767de02 11 */
bogdanm 0:eff01767de02 12
bogdanm 0:eff01767de02 13
bogdanm 0:eff01767de02 14 #ifndef BLE_HCI_H__
Rohit Grover 56:a1071b629aa3 15 #define BLE_HCI_H__
bogdanm 0:eff01767de02 16
bogdanm 0:eff01767de02 17 /** @defgroup BLE_HCI_STATUS_CODES Bluetooth status codes
bogdanm 0:eff01767de02 18 * @{ */
bogdanm 0:eff01767de02 19
bogdanm 0:eff01767de02 20 #define BLE_HCI_STATUS_CODE_SUCCESS 0x00
bogdanm 0:eff01767de02 21 #define BLE_HCI_STATUS_CODE_UNKNOWN_BTLE_COMMAND 0x01
Rohit Grover 56:a1071b629aa3 22 #define BLE_HCI_STATUS_CODE_UNKNOWN_CONNECTION_IDENTIFIER 0x02
bogdanm 0:eff01767de02 23 /*0x03 Hardware Failure
bogdanm 0:eff01767de02 24 0x04 Page Timeout
bogdanm 0:eff01767de02 25 */
bogdanm 0:eff01767de02 26 #define BLE_HCI_AUTHENTICATION_FAILURE 0x05
bogdanm 0:eff01767de02 27 #define BLE_HCI_STATUS_CODE_PIN_OR_KEY_MISSING 0x06
bogdanm 0:eff01767de02 28 #define BLE_HCI_MEMORY_CAPACITY_EXCEEDED 0x07
bogdanm 0:eff01767de02 29 #define BLE_HCI_CONNECTION_TIMEOUT 0x08
bogdanm 0:eff01767de02 30 /*0x09 Connection Limit Exceeded
bogdanm 0:eff01767de02 31 0x0A Synchronous Connection Limit To A Device Exceeded
bogdanm 0:eff01767de02 32 0x0B ACL Connection Already Exists*/
bogdanm 0:eff01767de02 33 #define BLE_HCI_STATUS_CODE_COMMAND_DISALLOWED 0x0C
bogdanm 0:eff01767de02 34 /*0x0D Connection Rejected due to Limited Resources
bogdanm 0:eff01767de02 35 0x0E Connection Rejected Due To Security Reasons
bogdanm 0:eff01767de02 36 0x0F Connection Rejected due to Unacceptable BD_ADDR
bogdanm 0:eff01767de02 37 0x10 Connection Accept Timeout Exceeded
bogdanm 0:eff01767de02 38 0x11 Unsupported Feature or Parameter Value*/
bogdanm 0:eff01767de02 39 #define BLE_HCI_STATUS_CODE_INVALID_BTLE_COMMAND_PARAMETERS 0x12
bogdanm 0:eff01767de02 40 #define BLE_HCI_REMOTE_USER_TERMINATED_CONNECTION 0x13
bogdanm 0:eff01767de02 41 #define BLE_HCI_REMOTE_DEV_TERMINATION_DUE_TO_LOW_RESOURCES 0x14
bogdanm 0:eff01767de02 42 #define BLE_HCI_REMOTE_DEV_TERMINATION_DUE_TO_POWER_OFF 0x15
bogdanm 0:eff01767de02 43 #define BLE_HCI_LOCAL_HOST_TERMINATED_CONNECTION 0x16
bogdanm 0:eff01767de02 44 /*
bogdanm 0:eff01767de02 45 0x17 Repeated Attempts
bogdanm 0:eff01767de02 46 0x18 Pairing Not Allowed
bogdanm 0:eff01767de02 47 0x19 Unknown LMP PDU
bogdanm 0:eff01767de02 48 */
bogdanm 0:eff01767de02 49 #define BLE_HCI_UNSUPPORTED_REMOTE_FEATURE 0x1A
bogdanm 0:eff01767de02 50 /*
bogdanm 0:eff01767de02 51 0x1B SCO Offset Rejected
bogdanm 0:eff01767de02 52 0x1C SCO Interval Rejected
bogdanm 0:eff01767de02 53 0x1D SCO Air Mode Rejected*/
bogdanm 0:eff01767de02 54 #define BLE_HCI_STATUS_CODE_INVALID_LMP_PARAMETERS 0x1E
bogdanm 0:eff01767de02 55 #define BLE_HCI_STATUS_CODE_UNSPECIFIED_ERROR 0x1F
bogdanm 0:eff01767de02 56 /*0x20 Unsupported LMP Parameter Value
bogdanm 0:eff01767de02 57 0x21 Role Change Not Allowed
bogdanm 0:eff01767de02 58 */
bogdanm 0:eff01767de02 59 #define BLE_HCI_STATUS_CODE_LMP_RESPONSE_TIMEOUT 0x22
bogdanm 0:eff01767de02 60 /*0x23 LMP Error Transaction Collision*/
bogdanm 0:eff01767de02 61 #define BLE_HCI_STATUS_CODE_LMP_PDU_NOT_ALLOWED 0x24
bogdanm 0:eff01767de02 62 /*0x25 Encryption Mode Not Acceptable
bogdanm 0:eff01767de02 63 0x26 Link Key Can Not be Changed
bogdanm 0:eff01767de02 64 0x27 Requested QoS Not Supported
bogdanm 0:eff01767de02 65 */
bogdanm 0:eff01767de02 66 #define BLE_HCI_INSTANT_PASSED 0x28
bogdanm 0:eff01767de02 67 #define BLE_HCI_PAIRING_WITH_UNIT_KEY_UNSUPPORTED 0x29
bogdanm 0:eff01767de02 68 #define BLE_HCI_DIFFERENT_TRANSACTION_COLLISION 0x2A
bogdanm 0:eff01767de02 69 /*
bogdanm 0:eff01767de02 70 0x2B Reserved
bogdanm 0:eff01767de02 71 0x2C QoS Unacceptable Parameter
bogdanm 0:eff01767de02 72 0x2D QoS Rejected
bogdanm 0:eff01767de02 73 0x2E Channel Classification Not Supported
bogdanm 0:eff01767de02 74 0x2F Insufficient Security
bogdanm 0:eff01767de02 75 0x30 Parameter Out Of Mandatory Range
bogdanm 0:eff01767de02 76 0x31 Reserved
bogdanm 0:eff01767de02 77 0x32 Role Switch Pending
bogdanm 0:eff01767de02 78 0x33 Reserved
bogdanm 0:eff01767de02 79 0x34 Reserved Slot Violation
bogdanm 0:eff01767de02 80 0x35 Role Switch Failed
bogdanm 0:eff01767de02 81 0x36 Extended Inquiry Response Too Large
bogdanm 0:eff01767de02 82 0x37 Secure Simple Pairing Not Supported By Host.
bogdanm 0:eff01767de02 83 0x38 Host Busy - Pairing
bogdanm 0:eff01767de02 84 0x39 Connection Rejected due to No Suitable Channel Found*/
bogdanm 0:eff01767de02 85 #define BLE_HCI_CONTROLLER_BUSY 0x3A
bogdanm 0:eff01767de02 86 #define BLE_HCI_CONN_INTERVAL_UNACCEPTABLE 0x3B
bogdanm 0:eff01767de02 87 #define BLE_HCI_DIRECTED_ADVERTISER_TIMEOUT 0x3C
bogdanm 0:eff01767de02 88 #define BLE_HCI_CONN_TERMINATED_DUE_TO_MIC_FAILURE 0x3D
bogdanm 0:eff01767de02 89 #define BLE_HCI_CONN_FAILED_TO_BE_ESTABLISHED 0x3E
bogdanm 0:eff01767de02 90
bogdanm 0:eff01767de02 91 /** @} */
bogdanm 0:eff01767de02 92
bogdanm 0:eff01767de02 93
bogdanm 0:eff01767de02 94 #endif // BLE_HCI_H__
bogdanm 0:eff01767de02 95
bogdanm 0:eff01767de02 96 /** @} */