my fork

Dependencies:   mbed

Committer:
filartrix
Date:
Wed Apr 08 14:17:20 2015 +0000
Revision:
4:987b201ec4b1
Parent:
2:b60cb847489c
first

Who changed what in which revision?

UserRevisionLine numberNew contents of line
filartrix 4:987b201ec4b1 1 #include "mbed.h"
filartrix 4:987b201ec4b1 2 #include "cube_hal.h"
filartrix 4:987b201ec4b1 3
filartrix 4:987b201ec4b1 4 #include "osal.h"
filartrix 4:987b201ec4b1 5 #include "sensor_service.h"
filartrix 4:987b201ec4b1 6 #include "debug.h"
filartrix 4:987b201ec4b1 7 #include "stm32_bluenrg_ble.h"
filartrix 4:987b201ec4b1 8
screamer 0:005629fe3609 9
filartrix 4:987b201ec4b1 10 Serial pc(USBTX, USBRX); // tx, rx
filartrix 4:987b201ec4b1 11 /* Private macro -------------------------------------------------------------*/
filartrix 4:987b201ec4b1 12 #define BDADDR_SIZE 6
screamer 0:005629fe3609 13
filartrix 4:987b201ec4b1 14 /* Private variables ---------------------------------------------------------*/
filartrix 4:987b201ec4b1 15 extern volatile uint8_t set_connectable;
filartrix 4:987b201ec4b1 16 extern volatile int connected;
filartrix 4:987b201ec4b1 17 extern AxesRaw_t axes_data;
filartrix 4:987b201ec4b1 18
filartrix 4:987b201ec4b1 19 /* Private function prototypes -----------------------------------------------*/
filartrix 4:987b201ec4b1 20 void User_Process(AxesRaw_t* p_axes);
filartrix 4:987b201ec4b1 21
filartrix 4:987b201ec4b1 22
filartrix 4:987b201ec4b1 23 float tri;
screamer 0:005629fe3609 24 int main() {
filartrix 4:987b201ec4b1 25 const char *name = "BlueNRG";
filartrix 4:987b201ec4b1 26 uint8_t SERVER_BDADDR[] = {0x12, 0x34, 0x00, 0xE1, 0x80, 0x02};
filartrix 4:987b201ec4b1 27 //uint8_t bdaddr[BDADDR_SIZE];
filartrix 4:987b201ec4b1 28 uint8_t bdaddr[BDADDR_SIZE] = {0x12, 0x34, 0x00, 0xE1, 0x80, 0x02} ;
filartrix 4:987b201ec4b1 29 uint16_t service_handle, dev_name_char_handle, appearance_char_handle;
filartrix 4:987b201ec4b1 30 int ret;
filartrix 4:987b201ec4b1 31
filartrix 4:987b201ec4b1 32 HAL_Init();
filartrix 4:987b201ec4b1 33 /* Configure the User Button in GPIO Mode */
filartrix 4:987b201ec4b1 34 BSP_PB_Init(BUTTON_KEY, BUTTON_MODE_GPIO);
filartrix 4:987b201ec4b1 35 /* Configure the system clock */
filartrix 4:987b201ec4b1 36 // SystemClock_Config();
filartrix 4:987b201ec4b1 37 /* Initialize the BlueNRG SPI driver */
filartrix 4:987b201ec4b1 38 BNRG_SPI_Init();
filartrix 4:987b201ec4b1 39 /* Initialize the BlueNRG HCI */
filartrix 4:987b201ec4b1 40 HCI_Init();
filartrix 4:987b201ec4b1 41 /* Reset BlueNRG hardware */
filartrix 4:987b201ec4b1 42 BlueNRG_RST();
filartrix 4:987b201ec4b1 43 /* The Nucleo board must be configured as SERVER */
filartrix 4:987b201ec4b1 44 //Osal_MemCpy(bdaddr, SERVER_BDADDR, sizeof(SERVER_BDADDR));
filartrix 4:987b201ec4b1 45
filartrix 4:987b201ec4b1 46 ret = aci_hal_write_config_data(CONFIG_DATA_PUBADDR_OFFSET,
filartrix 4:987b201ec4b1 47 CONFIG_DATA_PUBADDR_LEN,
filartrix 4:987b201ec4b1 48 bdaddr);
filartrix 4:987b201ec4b1 49
filartrix 4:987b201ec4b1 50 pc.printf("Hello World!\n");
filartrix 4:987b201ec4b1 51
filartrix 4:987b201ec4b1 52 if(ret){
filartrix 4:987b201ec4b1 53 PRINTF("Setting BD_ADDR failed.\n");
filartrix 4:987b201ec4b1 54 }
filartrix 4:987b201ec4b1 55
filartrix 4:987b201ec4b1 56 ret = aci_gatt_init();
filartrix 4:987b201ec4b1 57 if(ret){
filartrix 4:987b201ec4b1 58 PRINTF("GATT_Init failed.\n");
filartrix 4:987b201ec4b1 59 }
filartrix 4:987b201ec4b1 60
filartrix 4:987b201ec4b1 61 ret = aci_gap_init(GAP_PERIPHERAL_ROLE, &service_handle,
filartrix 4:987b201ec4b1 62 &dev_name_char_handle, &appearance_char_handle);
filartrix 4:987b201ec4b1 63 if(ret != BLE_STATUS_SUCCESS){
filartrix 4:987b201ec4b1 64 PRINTF("GAP_Init failed.\n");
filartrix 4:987b201ec4b1 65 }
filartrix 4:987b201ec4b1 66
filartrix 4:987b201ec4b1 67 ret = aci_gatt_update_char_value(service_handle, dev_name_char_handle, 0,
filartrix 4:987b201ec4b1 68 strlen(name), (uint8_t *)name);
filartrix 4:987b201ec4b1 69
filartrix 4:987b201ec4b1 70 if(ret){
filartrix 4:987b201ec4b1 71 PRINTF("aci_gatt_update_char_value failed.\n");
filartrix 4:987b201ec4b1 72 while(1);
filartrix 4:987b201ec4b1 73 }
filartrix 4:987b201ec4b1 74
filartrix 4:987b201ec4b1 75 ret = aci_gap_set_auth_requirement(MITM_PROTECTION_REQUIRED,
filartrix 4:987b201ec4b1 76 OOB_AUTH_DATA_ABSENT,
filartrix 4:987b201ec4b1 77 NULL,
filartrix 4:987b201ec4b1 78 7,
filartrix 4:987b201ec4b1 79 16,
filartrix 4:987b201ec4b1 80 USE_FIXED_PIN_FOR_PAIRING,
filartrix 4:987b201ec4b1 81 123456,
filartrix 4:987b201ec4b1 82 BONDING);
filartrix 4:987b201ec4b1 83 if (ret == BLE_STATUS_SUCCESS) {
filartrix 4:987b201ec4b1 84 PRINTF("BLE Stack Initialized.\n");
filartrix 4:987b201ec4b1 85 }
filartrix 4:987b201ec4b1 86
filartrix 4:987b201ec4b1 87 PRINTF("SERVER: BLE Stack Initialized\n");
filartrix 4:987b201ec4b1 88
filartrix 4:987b201ec4b1 89 ret = Add_Acc_Service();
filartrix 4:987b201ec4b1 90
filartrix 4:987b201ec4b1 91 if(ret == BLE_STATUS_SUCCESS)
filartrix 4:987b201ec4b1 92 PRINTF("Acc service added successfully.\n");
filartrix 4:987b201ec4b1 93 else
filartrix 4:987b201ec4b1 94 PRINTF("Error while adding Acc service.\n");
filartrix 4:987b201ec4b1 95
filartrix 4:987b201ec4b1 96 ret = Add_Environmental_Sensor_Service();
filartrix 4:987b201ec4b1 97
filartrix 4:987b201ec4b1 98 if(ret == BLE_STATUS_SUCCESS)
filartrix 4:987b201ec4b1 99 PRINTF("Environmental Sensor service added successfully.\n");
filartrix 4:987b201ec4b1 100 else
filartrix 4:987b201ec4b1 101 PRINTF("Error while adding Environmental Sensor service.\n");
filartrix 4:987b201ec4b1 102
filartrix 4:987b201ec4b1 103 /* Set output power level */
filartrix 4:987b201ec4b1 104 ret = aci_hal_set_tx_power_level(1,4);
filartrix 4:987b201ec4b1 105
filartrix 4:987b201ec4b1 106 while(1)
filartrix 4:987b201ec4b1 107 {
filartrix 4:987b201ec4b1 108 HCI_Process();
filartrix 4:987b201ec4b1 109 User_Process(&axes_data);
filartrix 4:987b201ec4b1 110 }
filartrix 4:987b201ec4b1 111 }
filartrix 4:987b201ec4b1 112
filartrix 4:987b201ec4b1 113 void User_Process(AxesRaw_t* p_axes)
filartrix 4:987b201ec4b1 114 {
filartrix 4:987b201ec4b1 115 if(set_connectable){
filartrix 4:987b201ec4b1 116 setConnectable();
filartrix 4:987b201ec4b1 117 set_connectable = FALSE;
filartrix 4:987b201ec4b1 118 }
filartrix 4:987b201ec4b1 119
filartrix 4:987b201ec4b1 120 /* Check if the user has pushed the button */
filartrix 4:987b201ec4b1 121 if(BSP_PB_GetState(BUTTON_KEY) == RESET)
filartrix 4:987b201ec4b1 122 {
filartrix 4:987b201ec4b1 123 while (BSP_PB_GetState(BUTTON_KEY) == RESET);
filartrix 4:987b201ec4b1 124
filartrix 4:987b201ec4b1 125 //BSP_LED_Toggle(LED2); //used for debugging
filartrix 4:987b201ec4b1 126
filartrix 4:987b201ec4b1 127 if(connected){
filartrix 4:987b201ec4b1 128 /* Update acceleration data */
filartrix 4:987b201ec4b1 129 p_axes->AXIS_X += 100;
filartrix 4:987b201ec4b1 130 p_axes->AXIS_Y += 100;
filartrix 4:987b201ec4b1 131 p_axes->AXIS_Z += 100;
filartrix 4:987b201ec4b1 132 //PRINTF("ACC: X=%6d Y=%6d Z=%6d\r\n", p_axes->AXIS_X, p_axes->AXIS_Y, p_axes->AXIS_Z);
filartrix 4:987b201ec4b1 133 Acc_Update(p_axes);
screamer 0:005629fe3609 134 }
filartrix 4:987b201ec4b1 135 }
filartrix 4:987b201ec4b1 136 }