added debugging
Fork of BLE_nRF8001 by
BLE_nRF8001/nRF8001.h@2:7805a5595aab, 2014-11-10 (annotated)
- Committer:
- jn80842
- Date:
- Mon Nov 10 01:24:23 2014 +0000
- Revision:
- 2:7805a5595aab
- Parent:
- 0:075ea2812998
just added debugging
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
RedBearLab | 0:075ea2812998 | 1 | #ifndef _NRF_8001_H_ |
RedBearLab | 0:075ea2812998 | 2 | #define _NRF_8001_H_ |
RedBearLab | 0:075ea2812998 | 3 | |
RedBearLab | 0:075ea2812998 | 4 | #include "Arduino.h" |
RedBearLab | 0:075ea2812998 | 5 | |
RedBearLab | 0:075ea2812998 | 6 | #include <utility/lib_aci.h> |
RedBearLab | 0:075ea2812998 | 7 | #include <utility/aci_setup.h> |
RedBearLab | 0:075ea2812998 | 8 | |
RedBearLab | 0:075ea2812998 | 9 | #include "BLEAttribute.h" |
RedBearLab | 0:075ea2812998 | 10 | #include "BLECharacteristic.h" |
RedBearLab | 0:075ea2812998 | 11 | |
RedBearLab | 0:075ea2812998 | 12 | class nRF8001; |
RedBearLab | 0:075ea2812998 | 13 | |
RedBearLab | 0:075ea2812998 | 14 | class nRF8001EventListener |
RedBearLab | 0:075ea2812998 | 15 | { |
RedBearLab | 0:075ea2812998 | 16 | public: |
RedBearLab | 0:075ea2812998 | 17 | virtual void nRF8001Connected(nRF8001& nRF8001, const unsigned char* address) = 0; |
RedBearLab | 0:075ea2812998 | 18 | virtual void nRF8001Disconnected(nRF8001& nRF8001) = 0; |
RedBearLab | 0:075ea2812998 | 19 | |
RedBearLab | 0:075ea2812998 | 20 | virtual void nRF8001CharacteristicValueChanged(nRF8001& nRF8001, BLECharacteristic& characteristic, const unsigned char* value, unsigned char valueLength) = 0; |
RedBearLab | 0:075ea2812998 | 21 | virtual void nRF8001CharacteristicSubscribedChanged(nRF8001& nRF8001, BLECharacteristic& characteristic, bool subscribed) = 0; |
RedBearLab | 0:075ea2812998 | 22 | |
RedBearLab | 0:075ea2812998 | 23 | virtual void nRF8001AddressReceived(nRF8001& nRF8001, const unsigned char* address) = 0; |
RedBearLab | 0:075ea2812998 | 24 | virtual void nRF8001TemperatureReceived(nRF8001& nRF8001, float temperature) = 0; |
RedBearLab | 0:075ea2812998 | 25 | virtual void nRF8001BatteryLevelReceived(nRF8001& nRF8001, float batteryLevel) = 0; |
RedBearLab | 0:075ea2812998 | 26 | }; |
RedBearLab | 0:075ea2812998 | 27 | |
RedBearLab | 0:075ea2812998 | 28 | |
RedBearLab | 0:075ea2812998 | 29 | class nRF8001 |
RedBearLab | 0:075ea2812998 | 30 | { |
RedBearLab | 0:075ea2812998 | 31 | friend class BLEPeripheral; |
RedBearLab | 0:075ea2812998 | 32 | |
RedBearLab | 0:075ea2812998 | 33 | protected: |
RedBearLab | 0:075ea2812998 | 34 | struct pipeInfo { |
RedBearLab | 0:075ea2812998 | 35 | BLECharacteristic* characteristic; |
RedBearLab | 0:075ea2812998 | 36 | |
RedBearLab | 0:075ea2812998 | 37 | unsigned short valueHandle; |
RedBearLab | 0:075ea2812998 | 38 | unsigned short configHandle; |
RedBearLab | 0:075ea2812998 | 39 | |
RedBearLab | 0:075ea2812998 | 40 | unsigned char startPipe; |
RedBearLab | 0:075ea2812998 | 41 | unsigned char txPipe; |
RedBearLab | 0:075ea2812998 | 42 | unsigned char txAckPipe; |
RedBearLab | 0:075ea2812998 | 43 | unsigned char rxPipe; |
RedBearLab | 0:075ea2812998 | 44 | unsigned char rxAckPipe; |
RedBearLab | 0:075ea2812998 | 45 | unsigned char setPipe; |
RedBearLab | 0:075ea2812998 | 46 | |
RedBearLab | 0:075ea2812998 | 47 | bool txPipeOpen; |
RedBearLab | 0:075ea2812998 | 48 | bool txAckPipeOpen; |
RedBearLab | 0:075ea2812998 | 49 | }; |
RedBearLab | 0:075ea2812998 | 50 | |
RedBearLab | 0:075ea2812998 | 51 | nRF8001(DigitalInOut *req, DigitalInOut *rdy, DigitalInOut *rst); |
RedBearLab | 0:075ea2812998 | 52 | |
RedBearLab | 0:075ea2812998 | 53 | virtual ~nRF8001(); |
RedBearLab | 0:075ea2812998 | 54 | |
RedBearLab | 0:075ea2812998 | 55 | void setEventListener(nRF8001EventListener* eventListener); |
RedBearLab | 0:075ea2812998 | 56 | |
RedBearLab | 0:075ea2812998 | 57 | void begin(const unsigned char* advertisementData, |
RedBearLab | 0:075ea2812998 | 58 | unsigned char advertisementDataLength, |
RedBearLab | 0:075ea2812998 | 59 | const unsigned char* scanData, |
RedBearLab | 0:075ea2812998 | 60 | unsigned char scanDataLength, |
RedBearLab | 0:075ea2812998 | 61 | BLEAttribute** attributes, |
RedBearLab | 0:075ea2812998 | 62 | unsigned char numAttributes); |
RedBearLab | 0:075ea2812998 | 63 | |
RedBearLab | 0:075ea2812998 | 64 | void poll(); |
RedBearLab | 0:075ea2812998 | 65 | |
RedBearLab | 0:075ea2812998 | 66 | void disconnect(); |
RedBearLab | 0:075ea2812998 | 67 | |
RedBearLab | 0:075ea2812998 | 68 | bool updateCharacteristicValue(BLECharacteristic& characteristic); |
RedBearLab | 0:075ea2812998 | 69 | bool canNotifyCharacteristic(BLECharacteristic& characteristic); |
RedBearLab | 0:075ea2812998 | 70 | bool canIndicateCharacteristic(BLECharacteristic& characteristic); |
RedBearLab | 0:075ea2812998 | 71 | |
RedBearLab | 0:075ea2812998 | 72 | void requestAddress(); |
RedBearLab | 0:075ea2812998 | 73 | void requestTemperature(); |
RedBearLab | 0:075ea2812998 | 74 | void requestBatteryLevel(); |
RedBearLab | 0:075ea2812998 | 75 | |
RedBearLab | 0:075ea2812998 | 76 | private: |
RedBearLab | 0:075ea2812998 | 77 | void waitForSetupMode(); |
RedBearLab | 0:075ea2812998 | 78 | void sendSetupMessage(hal_aci_data_t* data); |
RedBearLab | 0:075ea2812998 | 79 | void sendCrc(); |
RedBearLab | 0:075ea2812998 | 80 | |
RedBearLab | 0:075ea2812998 | 81 | private: |
RedBearLab | 0:075ea2812998 | 82 | struct aci_state_t _aciState; |
RedBearLab | 0:075ea2812998 | 83 | hal_aci_evt_t _aciData; |
RedBearLab | 0:075ea2812998 | 84 | |
RedBearLab | 0:075ea2812998 | 85 | struct pipeInfo* _pipeInfo; |
RedBearLab | 0:075ea2812998 | 86 | unsigned char _numPipeInfo; |
RedBearLab | 0:075ea2812998 | 87 | |
RedBearLab | 0:075ea2812998 | 88 | unsigned short _crcSeed; |
RedBearLab | 0:075ea2812998 | 89 | |
RedBearLab | 0:075ea2812998 | 90 | nRF8001EventListener* _eventListener; |
RedBearLab | 0:075ea2812998 | 91 | }; |
RedBearLab | 0:075ea2812998 | 92 | |
RedBearLab | 0:075ea2812998 | 93 | #endif |