/********************************************************************* This is a library for our nRF8001 Bluetooth Low Energy Breakout Pick one up today in the adafruit shop! ------> http://www.adafruit.com/products/1697 These displays use SPI to communicate, 4 or 5 pins are required to interface Adafruit invests time and resources providing this open source code, please support Adafruit and open-source hardware by purchasing products from Adafruit! Written by Kevin Townsend/KTOWN for Adafruit Industries. MIT license, check LICENSE for more information All text above, and the splash screen below must be included in any redistribution *********************************************************************/ #if ARDUINO >= 100 #include "Arduino.h" #else #include "WProgram.h" #endif #ifndef _ADAFRUIT_BLE_UART_H_ #define _ADAFRUIT_BLE_UART_H_ #include "utility/aci_evts.h" #define BLE_RW_DEBUG extern "C" { /* Callback prototypes */ typedef void (*aci_callback)(aci_evt_opcode_t event); typedef void (*rx_callback) (uint8_t *buffer, uint8_t len); } class Adafruit_BLE_UART : public Stream { public: Adafruit_BLE_UART (int8_t req, int8_t rdy, int8_t rst); bool begin ( uint16_t advTimeout = 0, uint16_t advInterval = 80 ); void pollACI ( void ); size_t write ( uint8_t * buffer, uint8_t len ); size_t write ( uint8_t buffer); size_t println(const char * thestr); size_t print(const char * thestr); size_t print(String thestr); size_t print(int theint); size_t print(const __FlashStringHelper *ifsh); void setACIcallback(aci_callback aciEvent = NULL); void setRXcallback(rx_callback rxEvent = NULL); void setDeviceName(const char * deviceName); // Stream compatibility int available(void); int read(void); int peek(void); void flush(void); aci_evt_opcode_t getState(void); private: void defaultACICallback(aci_evt_opcode_t event); void defaultRX(uint8_t *buffer, uint8_t len); // callbacks you can set with setCallback function for user extension aci_callback aci_event; rx_callback rx_event; bool debugMode; uint16_t adv_timeout; uint16_t adv_interval; char device_name[8]; aci_evt_opcode_t currentStatus; // pins usd int8_t _REQ, _RDY, _RST; }; #endif