added debugging

Fork of BLE_nRF8001 by RedBearLab

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?

UserRevisionLine numberNew 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