Set write permission for 'write without response' characteristics.
Fork of nRF51822 by
nordic/nrf-sdk/s110/ble_hci.h@56:a1071b629aa3, 2014-09-02 (annotated)
- 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?
User | Revision | Line number | New 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 | /** @} */ |