NUCLEO-F401RE + BlueNRG shield client test (TI Sensortag reading)

Dependencies:   mbed-src

Committer:
ostapsky
Date:
Sat Aug 16 11:00:04 2014 +0000
Revision:
0:aa1e012ec210
CLIENT mode first revision

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ostapsky 0:aa1e012ec210 1 #include "mbed.h"
ostapsky 0:aa1e012ec210 2 #include "tag_math.h"
ostapsky 0:aa1e012ec210 3 #include "stm32f4xx_hal.h"
ostapsky 0:aa1e012ec210 4 #include "bluenrg_shield_bsp.h"
ostapsky 0:aa1e012ec210 5 #include "osal.h"
ostapsky 0:aa1e012ec210 6 #include "sample_service.h"
ostapsky 0:aa1e012ec210 7 #include <stdio.h>
ostapsky 0:aa1e012ec210 8
ostapsky 0:aa1e012ec210 9 #define BDADDR_SIZE 6
ostapsky 0:aa1e012ec210 10
ostapsky 0:aa1e012ec210 11 /* SPI handler declaration */
ostapsky 0:aa1e012ec210 12 SPI_HandleTypeDef SpiHandle;
ostapsky 0:aa1e012ec210 13
ostapsky 0:aa1e012ec210 14 Serial pc(SERIAL_TX, SERIAL_RX);
ostapsky 0:aa1e012ec210 15
ostapsky 0:aa1e012ec210 16 extern volatile uint8_t set_connectable;
ostapsky 0:aa1e012ec210 17 extern volatile int connected;
ostapsky 0:aa1e012ec210 18 extern volatile uint8_t notification_enabled;
ostapsky 0:aa1e012ec210 19
ostapsky 0:aa1e012ec210 20 void User_Process(void);
ostapsky 0:aa1e012ec210 21
ostapsky 0:aa1e012ec210 22
ostapsky 0:aa1e012ec210 23 /******************************************************************************/
ostapsky 0:aa1e012ec210 24 /******************************************************************************/
ostapsky 0:aa1e012ec210 25 int main(void)
ostapsky 0:aa1e012ec210 26 {
ostapsky 0:aa1e012ec210 27 tHalUint8 CLIENT_BDADDR[] = {0xbb, 0x00, 0x00, 0xE1, 0x80, 0x02};
ostapsky 0:aa1e012ec210 28
ostapsky 0:aa1e012ec210 29 tHalUint8 bdaddr[BDADDR_SIZE];
ostapsky 0:aa1e012ec210 30
ostapsky 0:aa1e012ec210 31 uint16_t service_handle, dev_name_char_handle, appearance_char_handle;
ostapsky 0:aa1e012ec210 32 int ret;
ostapsky 0:aa1e012ec210 33
ostapsky 0:aa1e012ec210 34 /* Hardware init*/
ostapsky 0:aa1e012ec210 35 HAL_Init();
ostapsky 0:aa1e012ec210 36
ostapsky 0:aa1e012ec210 37 /* Configure the system clock */
ostapsky 0:aa1e012ec210 38 SystemClock_Config();
ostapsky 0:aa1e012ec210 39
ostapsky 0:aa1e012ec210 40 /* Initialize the BlueNRG SPI driver */
ostapsky 0:aa1e012ec210 41 BNRG_SPI_Init();
ostapsky 0:aa1e012ec210 42
ostapsky 0:aa1e012ec210 43 /* Initialize the BlueNRG HCI */
ostapsky 0:aa1e012ec210 44 HCI_Init();
ostapsky 0:aa1e012ec210 45
ostapsky 0:aa1e012ec210 46 /* Reset BlueNRG hardware */
ostapsky 0:aa1e012ec210 47 BlueNRG_RST();
ostapsky 0:aa1e012ec210 48
ostapsky 0:aa1e012ec210 49 Osal_MemCpy(bdaddr, CLIENT_BDADDR, sizeof(CLIENT_BDADDR));
ostapsky 0:aa1e012ec210 50
ostapsky 0:aa1e012ec210 51 ret = aci_hal_write_config_data(CONFIG_DATA_PUBADDR_OFFSET,
ostapsky 0:aa1e012ec210 52 CONFIG_DATA_PUBADDR_LEN,
ostapsky 0:aa1e012ec210 53 bdaddr);
ostapsky 0:aa1e012ec210 54 if(ret){
ostapsky 0:aa1e012ec210 55 pc.printf("Setting BD_ADDR failed.\n");
ostapsky 0:aa1e012ec210 56 }
ostapsky 0:aa1e012ec210 57
ostapsky 0:aa1e012ec210 58 ret = aci_gatt_init();
ostapsky 0:aa1e012ec210 59 if(ret){
ostapsky 0:aa1e012ec210 60 pc.printf("GATT_Init failed.\n");
ostapsky 0:aa1e012ec210 61 }
ostapsky 0:aa1e012ec210 62
ostapsky 0:aa1e012ec210 63 ret = aci_gap_init(GAP_CENTRAL_ROLE, &service_handle, &dev_name_char_handle, &appearance_char_handle);
ostapsky 0:aa1e012ec210 64
ostapsky 0:aa1e012ec210 65 if(ret != BLE_STATUS_SUCCESS){
ostapsky 0:aa1e012ec210 66 pc.printf("GAP_Init failed.\n");
ostapsky 0:aa1e012ec210 67 }
ostapsky 0:aa1e012ec210 68
ostapsky 0:aa1e012ec210 69 ret = aci_gap_set_auth_requirement(MITM_PROTECTION_REQUIRED,
ostapsky 0:aa1e012ec210 70 OOB_AUTH_DATA_ABSENT,
ostapsky 0:aa1e012ec210 71 NULL,
ostapsky 0:aa1e012ec210 72 7,
ostapsky 0:aa1e012ec210 73 16,
ostapsky 0:aa1e012ec210 74 USE_FIXED_PIN_FOR_PAIRING,
ostapsky 0:aa1e012ec210 75 123456,
ostapsky 0:aa1e012ec210 76 BONDING);
ostapsky 0:aa1e012ec210 77
ostapsky 0:aa1e012ec210 78
ostapsky 0:aa1e012ec210 79 if (ret != BLE_STATUS_SUCCESS) {
ostapsky 0:aa1e012ec210 80 pc.printf("BLE Stack Initialization failed.\n");
ostapsky 0:aa1e012ec210 81 }
ostapsky 0:aa1e012ec210 82
ostapsky 0:aa1e012ec210 83 /* Set output power level */
ostapsky 0:aa1e012ec210 84 ret = aci_hal_set_tx_power_level(1,4);
ostapsky 0:aa1e012ec210 85
ostapsky 0:aa1e012ec210 86 /* Infinite loop */
ostapsky 0:aa1e012ec210 87 while (1)
ostapsky 0:aa1e012ec210 88 {
ostapsky 0:aa1e012ec210 89 HCI_Process();
ostapsky 0:aa1e012ec210 90 User_Process();
ostapsky 0:aa1e012ec210 91 }
ostapsky 0:aa1e012ec210 92
ostapsky 0:aa1e012ec210 93 }
ostapsky 0:aa1e012ec210 94
ostapsky 0:aa1e012ec210 95 /******************************************************************************/
ostapsky 0:aa1e012ec210 96 /******************************************************************************/
ostapsky 0:aa1e012ec210 97
ostapsky 0:aa1e012ec210 98 void User_Process(void)
ostapsky 0:aa1e012ec210 99 {
ostapsky 0:aa1e012ec210 100 static uint32_t cnt;
ostapsky 0:aa1e012ec210 101 static uint8_t acc_en_sent = 0;
ostapsky 0:aa1e012ec210 102 tHalUint8 data[2];
ostapsky 0:aa1e012ec210 103 //uint8_t data_length;
ostapsky 0:aa1e012ec210 104
ostapsky 0:aa1e012ec210 105 if(set_connectable){
ostapsky 0:aa1e012ec210 106 Make_Connection();
ostapsky 0:aa1e012ec210 107 set_connectable = FALSE;
ostapsky 0:aa1e012ec210 108 }
ostapsky 0:aa1e012ec210 109
ostapsky 0:aa1e012ec210 110 /*if(connected && !notification_enabled) {
ostapsky 0:aa1e012ec210 111 enableNotification();
ostapsky 0:aa1e012ec210 112 }*/
ostapsky 0:aa1e012ec210 113
ostapsky 0:aa1e012ec210 114 if((connected)&&(!acc_en_sent)){
ostapsky 0:aa1e012ec210 115
ostapsky 0:aa1e012ec210 116 HAL_Delay(100);
ostapsky 0:aa1e012ec210 117 data[0] = 0x01;
ostapsky 0:aa1e012ec210 118 sendData(0x0029, data, 1);
ostapsky 0:aa1e012ec210 119
ostapsky 0:aa1e012ec210 120 HAL_Delay(100);
ostapsky 0:aa1e012ec210 121 data[0] = 0x01;
ostapsky 0:aa1e012ec210 122 sendData(0x0031, data, 1);
ostapsky 0:aa1e012ec210 123
ostapsky 0:aa1e012ec210 124 HAL_Delay(100);
ostapsky 0:aa1e012ec210 125 data[0] = 0x01;
ostapsky 0:aa1e012ec210 126 sendData(0x003C, data, 1);
ostapsky 0:aa1e012ec210 127
ostapsky 0:aa1e012ec210 128 HAL_Delay(100);
ostapsky 0:aa1e012ec210 129 data[0] = 0x10;
ostapsky 0:aa1e012ec210 130 sendData(0x0034, data, 1);
ostapsky 0:aa1e012ec210 131
ostapsky 0:aa1e012ec210 132
ostapsky 0:aa1e012ec210 133 acc_en_sent = 1;
ostapsky 0:aa1e012ec210 134 cnt = HAL_GetTick();
ostapsky 0:aa1e012ec210 135 }
ostapsky 0:aa1e012ec210 136
ostapsky 0:aa1e012ec210 137 if (HAL_GetTick() > (cnt + 2000))
ostapsky 0:aa1e012ec210 138 {
ostapsky 0:aa1e012ec210 139 cnt = HAL_GetTick();
ostapsky 0:aa1e012ec210 140 if (connected && acc_en_sent)
ostapsky 0:aa1e012ec210 141 {
ostapsky 0:aa1e012ec210 142
ostapsky 0:aa1e012ec210 143 pc.printf("T = %f; ", calcTmpTarget(readValue(0x25, NULL)));
ostapsky 0:aa1e012ec210 144 uint8_t* temp = readValue(0x2D, NULL);
ostapsky 0:aa1e012ec210 145 pc.printf("Ax = %d; Ay = %d; Az = %d ", (signed char) temp[0], (signed char) temp[1], (signed char) temp[2]);
ostapsky 0:aa1e012ec210 146 temp = readValue(0x38, NULL);
ostapsky 0:aa1e012ec210 147 pc.printf("H = %f; \r\n", calcHumRel(temp));
ostapsky 0:aa1e012ec210 148
ostapsky 0:aa1e012ec210 149
ostapsky 0:aa1e012ec210 150 //GATT services scan
ostapsky 0:aa1e012ec210 151 /*for (unsigned char j = 1; j < 0x88; j++)
ostapsky 0:aa1e012ec210 152 {
ostapsky 0:aa1e012ec210 153 pc.printf("\n %.2X: ", j);
ostapsky 0:aa1e012ec210 154 uint8_t* temp = readValue(j+1, &data_length);
ostapsky 0:aa1e012ec210 155
ostapsky 0:aa1e012ec210 156
ostapsky 0:aa1e012ec210 157 for(int i = 0; i < data_length; i++) {
ostapsky 0:aa1e012ec210 158 pc.printf("%.2X:", temp[i]);
ostapsky 0:aa1e012ec210 159 }
ostapsky 0:aa1e012ec210 160
ostapsky 0:aa1e012ec210 161 for(int i = 0; i < data_length; i++) {
ostapsky 0:aa1e012ec210 162 pc.printf("%c", temp[i]);
ostapsky 0:aa1e012ec210 163 }
ostapsky 0:aa1e012ec210 164
ostapsky 0:aa1e012ec210 165 }
ostapsky 0:aa1e012ec210 166 */
ostapsky 0:aa1e012ec210 167
ostapsky 0:aa1e012ec210 168 }
ostapsky 0:aa1e012ec210 169 }
ostapsky 0:aa1e012ec210 170
ostapsky 0:aa1e012ec210 171 }
ostapsky 0:aa1e012ec210 172 /******************************************************************************/
ostapsky 0:aa1e012ec210 173 /******************************************************************************/
ostapsky 0:aa1e012ec210 174
ostapsky 0:aa1e012ec210 175 /*********************** END OF FILE ******************************************/