my fork
main.cpp@4:987b201ec4b1, 2015-04-08 (annotated)
- Committer:
- filartrix
- Date:
- Wed Apr 08 14:17:20 2015 +0000
- Revision:
- 4:987b201ec4b1
- Parent:
- 2:b60cb847489c
first
Who changed what in which revision?
User | Revision | Line number | New 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 | } |