Refactoring and other updates

Dependencies:   BLE_API mbed nRF51822

Fork of nRF51822_SimpleChat by Cristi Stoican

BTDevice.hpp

Committer:
carbune92
Date:
2017-05-10
Revision:
7:806b08205b25
Parent:
5:fca87573ed92

File content as of revision 7:806b08205b25:

#ifndef _BTdevice_
#define _BTdevice_

#include <Gap.h>
#include "ble/BLE.h"
#include "Controller.hpp"
#include "ControllerParams.hpp"
#include "ControllerFactory.hpp"
#include "CmdEnums.hpp"
#include "mbed.h"

#define TXRX_BUF_LEN	20

static const uint8_t uart_base_uuid[] = 	 {0x71, 0x3D, 0, 0, 0x50, 0x3E, 0x4C, 0x75, 0xBA, 0x94, 0x31, 0x48, 0xF1, 0x8D, 0x94, 0x1E};
static const uint8_t uart_tx_uuid[]   = 	 {0x71, 0x3D, 0, 3, 0x50, 0x3E, 0x4C, 0x75, 0xBA, 0x94, 0x31, 0x48, 0xF1, 0x8D, 0x94, 0x1E};
static const uint8_t uart_rx_uuid[]   = 	 {0x71, 0x3D, 0, 2, 0x50, 0x3E, 0x4C, 0x75, 0xBA, 0x94, 0x31, 0x48, 0xF1, 0x8D, 0x94, 0x1E};
static const uint8_t uart_base_uuid_rev[] =  {0x1E, 0x94, 0x8D, 0xF1, 0x48, 0x31, 0x94, 0xBA, 0x75, 0x4C, 0x3E, 0x50, 0, 0, 0x3D, 0x71};

class BTDevice {
	
	public:
		BTDevice();
		void init();
		bool isInit();
		void waitForEvent();
		void getPayload(uint8_t *);
		void sentMsg(uint8_t *);
		
		bool ctrlExists(); 
		Controller* getCtrl();
		void attachController(Controller *c);
		void setCtrlRef(float);
		void setCtrlParams(ControllerParams &cp);
		void updateOut(float);

		//void interpretCmd(uint8_t cmd[TXRX_BUF_LEN]);
		~BTDevice();
		

	//friend void getTokens(uint8_t cmd[TXRX_BUF_LEN], BTDevice&, SysObj&, SysObjTypes&, Actions&, uint8_t actionParams[TXRX_BUF_LEN]);
	
	
	private:
		GattCharacteristic txCharacteristic;
		GattCharacteristic rxCharacteristic;
		GattCharacteristic* uartChars[2];
		GattService uartService;
		Serial pc;
	
		BLE ble;
		uint8_t txPayload[TXRX_BUF_LEN];
		uint8_t rxPayload[TXRX_BUF_LEN];
		uint8_t rx_buf[TXRX_BUF_LEN];
		uint8_t rx_len;
		
		Controller* ctrl;
		float out;
		
		void initCallback(BLE::InitializationCompleteCallbackContext *);
		// void connectionCallback(const BLE::ConnectionCompleteCallbackContext *params) {} //TODO if needed	
		void disconnectionCallback(const Gap::DisconnectionCallbackParams_t *); //TODO if needed	
		void dataWriteCallback(const GattWriteCallbackParams *);
		void uartCallback(void);
		
};

#endif