Skip to content

Commit

Permalink
Added and tested gcc support. Default board is PCA10040
Browse files Browse the repository at this point in the history
  • Loading branch information
liquitious committed Dec 21, 2015
1 parent f7eeb6a commit 2ae931f
Show file tree
Hide file tree
Showing 12 changed files with 1,266 additions and 87 deletions.
122 changes: 55 additions & 67 deletions ble_lbs.c
Original file line number Diff line number Diff line change
Expand Up @@ -51,27 +51,27 @@ static void on_disconnect(ble_lbs_t * p_lbs, ble_evt_t * p_ble_evt)
*/
static void on_write(ble_lbs_t * p_lbs, ble_evt_t * p_ble_evt)
{
ble_gatts_evt_write_t * p_evt_write = &p_ble_evt->evt.gatts_evt.params.write;
ble_gatts_evt_write_t * p_evt_write = &p_ble_evt->evt.gatts_evt.params.write;

if ((p_evt_write->handle == p_lbs->led_char_handles.value_handle) && (p_evt_write->len == 1)
&& (p_lbs->led_write_handler != NULL))
{
p_lbs->led_write_handler(p_lbs, p_evt_write->data[0]);
}
if ((p_evt_write->handle == p_lbs->led_char_handles.value_handle) && (p_evt_write->len == 1)
&& (p_lbs->led_write_handler != NULL))
{
p_lbs->led_write_handler(p_lbs, p_evt_write->data[0]);
}
}

uint32_t ble_lbs_on_button_change(ble_lbs_t * p_lbs, uint8_t button_state)
{
ble_gatts_hvx_params_t params;
uint16_t len = sizeof(button_state);
ble_gatts_hvx_params_t params;
uint16_t len = sizeof(button_state);

memset(&params, 0, sizeof(params));
params.type = BLE_GATT_HVX_NOTIFICATION;
params.handle = p_lbs->button_char_handles.value_handle;
params.p_data = &button_state;
params.p_len = &len;
memset(&params, 0, sizeof(params));
params.type = BLE_GATT_HVX_NOTIFICATION;
params.handle = p_lbs->button_char_handles.value_handle;
params.p_data = &button_state;
params.p_len = &len;

return sd_ble_gatts_hvx(p_lbs->conn_handle, &params);
return sd_ble_gatts_hvx(p_lbs->conn_handle, &params);
}

void ble_lbs_on_ble_evt(ble_lbs_t * p_lbs, ble_evt_t * p_ble_evt)
Expand Down Expand Up @@ -104,7 +104,6 @@ void ble_lbs_on_ble_evt(ble_lbs_t * p_lbs, ble_evt_t * p_ble_evt)
*/
static uint32_t led_char_add(ble_lbs_t * p_lbs)
{
uint32_t err_code;
ble_gatts_char_md_t char_md;
ble_gatts_attr_t attr_char_value;
ble_uuid_t ble_uuid;
Expand All @@ -122,12 +121,12 @@ static uint32_t led_char_add(ble_lbs_t * p_lbs)
char_md.p_sccd_md = NULL;

ble_uuid.type = p_lbs->uuid_type;
ble_uuid.uuid = LBS_UUID_LED_CHAR;
ble_uuid.uuid = LBS_UUID_LED_CHAR;

memset(&attr_md, 0, sizeof(attr_md));

BLE_GAP_CONN_SEC_MODE_SET_OPEN(&attr_md.read_perm);
BLE_GAP_CONN_SEC_MODE_SET_OPEN(&attr_md.write_perm);
BLE_GAP_CONN_SEC_MODE_SET_OPEN(&attr_md.write_perm);
attr_md.vloc = BLE_GATTS_VLOC_STACK;
attr_md.rd_auth = 0;
attr_md.wr_auth = 0;
Expand All @@ -142,11 +141,6 @@ static uint32_t led_char_add(ble_lbs_t * p_lbs)
attr_char_value.max_len = sizeof(uint8_t);
attr_char_value.p_value = NULL;

if (err_code != NRF_SUCCESS)
{
return err_code;
}

return sd_ble_gatts_characteristic_add(p_lbs->service_handle, &char_md, &attr_char_value, &p_lbs->led_char_handles);
}

Expand All @@ -158,19 +152,18 @@ static uint32_t led_char_add(ble_lbs_t * p_lbs)
*/
static uint32_t button_char_add(ble_lbs_t * p_lbs)
{
uint32_t err_code;
ble_gatts_char_md_t char_md;
ble_gatts_attr_md_t cccd_md;
ble_gatts_attr_t attr_char_value;
ble_uuid_t ble_uuid;
ble_gatts_attr_md_t attr_md;

// Add Button characteristic.
memset(&cccd_md, 0, sizeof(cccd_md));
memset(&cccd_md, 0, sizeof(cccd_md));

BLE_GAP_CONN_SEC_MODE_SET_OPEN(&cccd_md.read_perm);
BLE_GAP_CONN_SEC_MODE_SET_OPEN(&cccd_md.write_perm);
cccd_md.vloc = BLE_GATTS_VLOC_STACK;
BLE_GAP_CONN_SEC_MODE_SET_OPEN(&cccd_md.read_perm);
BLE_GAP_CONN_SEC_MODE_SET_OPEN(&cccd_md.write_perm);
cccd_md.vloc = BLE_GATTS_VLOC_STACK;

memset(&char_md, 0, sizeof(char_md));

Expand All @@ -182,13 +175,13 @@ static uint32_t button_char_add(ble_lbs_t * p_lbs)
char_md.p_cccd_md = &cccd_md;
char_md.p_sccd_md = NULL;

ble_uuid.type = p_lbs->uuid_type;
ble_uuid.uuid = LBS_UUID_BUTTON_CHAR;
ble_uuid.type = p_lbs->uuid_type;
ble_uuid.uuid = LBS_UUID_BUTTON_CHAR;

memset(&attr_md, 0, sizeof(attr_md));

BLE_GAP_CONN_SEC_MODE_SET_OPEN(&attr_md.read_perm);
BLE_GAP_CONN_SEC_MODE_SET_NO_ACCESS(&attr_md.write_perm);
BLE_GAP_CONN_SEC_MODE_SET_NO_ACCESS(&attr_md.write_perm);
attr_md.vloc = BLE_GATTS_VLOC_STACK;
attr_md.rd_auth = 0;
attr_md.wr_auth = 0;
Expand All @@ -203,51 +196,46 @@ static uint32_t button_char_add(ble_lbs_t * p_lbs)
attr_char_value.max_len = sizeof(uint8_t);
attr_char_value.p_value = NULL;

if (err_code != NRF_SUCCESS)
{
return err_code;
}

return sd_ble_gatts_characteristic_add(p_lbs->service_handle, &char_md, &attr_char_value, &p_lbs->button_char_handles);
}

uint32_t ble_lbs_init(ble_lbs_t * p_lbs, const ble_lbs_init_t * p_lbs_init)
{
uint32_t err_code;
ble_uuid128_t base_uuid = LBS_UUID_BASE;
ble_uuid128_t base_uuid = {LBS_UUID_BASE};
ble_uuid_t ble_uuid;

// Initialize service structure.
p_lbs->conn_handle = BLE_CONN_HANDLE_INVALID;
p_lbs->led_write_handler = p_lbs_init->led_write_handler;

err_code = sd_ble_uuid_vs_add(&base_uuid, &p_lbs->uuid_type);
if (err_code != NRF_SUCCESS)
{
return err_code;
}
// Add service.
ble_uuid.type = p_lbs->uuid_type;
ble_uuid.uuid = LBS_UUID_SERVICE;
err_code = sd_ble_gatts_service_add(BLE_GATTS_SRVC_TYPE_PRIMARY, &ble_uuid, &p_lbs->service_handle);
if (err_code != NRF_SUCCESS)
{
return err_code;
}
// Add characteristics.
err_code = button_char_add(p_lbs);
if (err_code != NRF_SUCCESS)
{
return err_code;
}
err_code = led_char_add(p_lbs);
if (err_code != NRF_SUCCESS)
{
return err_code;
}

return NRF_SUCCESS;
p_lbs->led_write_handler = p_lbs_init->led_write_handler;

err_code = sd_ble_uuid_vs_add(&base_uuid, &p_lbs->uuid_type);
if (err_code != NRF_SUCCESS)
{
return err_code;
}

// Add service.
ble_uuid.type = p_lbs->uuid_type;
ble_uuid.uuid = LBS_UUID_SERVICE;

err_code = sd_ble_gatts_service_add(BLE_GATTS_SRVC_TYPE_PRIMARY, &ble_uuid, &p_lbs->service_handle);
if (err_code != NRF_SUCCESS)
{
return err_code;
}

// Add characteristics.
err_code = button_char_add(p_lbs);
if (err_code != NRF_SUCCESS)
{
return err_code;
}
err_code = led_char_add(p_lbs);
if (err_code != NRF_SUCCESS)
{
return err_code;
}

return NRF_SUCCESS;
}
12 changes: 6 additions & 6 deletions ble_lbs.h
Original file line number Diff line number Diff line change
Expand Up @@ -58,12 +58,12 @@ typedef struct
/**@brief LED Button Service structure. This contains various status information for the service. */
struct ble_lbs_s
{
uint16_t service_handle;
ble_gatts_char_handles_t led_char_handles;
ble_gatts_char_handles_t button_char_handles;
uint8_t uuid_type;
uint16_t conn_handle;
ble_lbs_led_write_handler_t led_write_handler;
uint16_t service_handle;
ble_gatts_char_handles_t led_char_handles;
ble_gatts_char_handles_t button_char_handles;
uint8_t uuid_type;
uint16_t conn_handle;
ble_lbs_led_write_handler_t led_write_handler;
};

/**@brief Function for initializing the LED Button Service.
Expand Down
File renamed without changes.
30 changes: 16 additions & 14 deletions pca10036/s132/armgcc/Makefile → pca10040/s132/armgcc/Makefile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
PROJECT_NAME := ble_app_template_s132_pca10036
PROJECT_NAME := ble_app_template_s132_pca10040

export OUTPUT_FILENAME
#MAKEFILE_NAME := $(CURDIR)/$(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST))
Expand All @@ -23,14 +23,14 @@ NO_ECHO := @
endif

# Toolchain commands
CC := '$(GNU_INSTALL_ROOT)/bin/$(GNU_PREFIX)-gcc'
AS := '$(GNU_INSTALL_ROOT)/bin/$(GNU_PREFIX)-as'
AR := '$(GNU_INSTALL_ROOT)/bin/$(GNU_PREFIX)-ar' -r
LD := '$(GNU_INSTALL_ROOT)/bin/$(GNU_PREFIX)-ld'
NM := '$(GNU_INSTALL_ROOT)/bin/$(GNU_PREFIX)-nm'
OBJDUMP := '$(GNU_INSTALL_ROOT)/bin/$(GNU_PREFIX)-objdump'
OBJCOPY := '$(GNU_INSTALL_ROOT)/bin/$(GNU_PREFIX)-objcopy'
SIZE := '$(GNU_INSTALL_ROOT)/bin/$(GNU_PREFIX)-size'
CC := '$(GNU_PREFIX)-gcc'
AS := '$(GNU_PREFIX)-as'
AR := '$(GNU_PREFIX)-ar' -r
LD := '$(GNU_PREFIX)-ld'
NM := '$(GNU_PREFIX)-nm'
OBJDUMP := '$(GNU_PREFIX)-objdump'
OBJCOPY := '$(GNU_PREFIX)-objcopy'
SIZE := '$(GNU_PREFIX)-size'

#function for removing duplicates in a list
remduplicates = $(strip $(if $1,$(firstword $1) $(call remduplicates,$(filter-out $(firstword $1),$1))))
Expand All @@ -53,6 +53,7 @@ C_SOURCE_FILES += \
../../../../../../components/drivers_nrf/pstorage/pstorage.c \
../../../../../bsp/bsp.c \
../../../main.c \
../../../ble_lbs.c \
../../../../../../components/ble/common/ble_advdata.c \
../../../../../../components/ble/ble_advertising/ble_advertising.c \
../../../../../../components/ble/common/ble_conn_params.c \
Expand All @@ -64,7 +65,7 @@ C_SOURCE_FILES += \
ASM_SOURCE_FILES = ../../../../../../components/toolchain/gcc/gcc_startup_nrf52.s

#includes common to all targets
INC_PATHS = -I../../../config
INC_PATHS += -I../../../config
INC_PATHS += -I../../../../../../components/libraries/scheduler
INC_PATHS += -I../../../../../../components/drivers_nrf/config
INC_PATHS += -I../../../../../bsp
Expand All @@ -87,6 +88,7 @@ INC_PATHS += -I../../../../../../components/drivers_nrf/common
INC_PATHS += -I../../../../../../components/ble/ble_advertising
INC_PATHS += -I../../../../../../components/libraries/trace
INC_PATHS += -I../../../../../../components/softdevice/common/softdevice_handler
INC_PATHS += -I../../../../nRF52-ble-app-lbs

OBJECT_DIRECTORY = _build
LISTING_DIRECTORY = $(OBJECT_DIRECTORY)
Expand All @@ -99,7 +101,7 @@ BUILD_DIRECTORIES := $(sort $(OBJECT_DIRECTORY) $(OUTPUT_BINARY_DIRECTORY) $(LIS
CFLAGS = -DSWI_DISABLE0
CFLAGS += -DSOFTDEVICE_PRESENT
CFLAGS += -DNRF52
CFLAGS += -DBOARD_PCA10036
CFLAGS += -DBOARD_PCA10040
CFLAGS += -DCONFIG_GPIO_AS_PINRESET
CFLAGS += -DS132
CFLAGS += -DBLE_STACK_SUPPORT_REQD
Expand All @@ -126,7 +128,7 @@ ASMFLAGS += -x assembler-with-cpp
ASMFLAGS += -DSWI_DISABLE0
ASMFLAGS += -DSOFTDEVICE_PRESENT
ASMFLAGS += -DNRF52
ASMFLAGS += -DBOARD_PCA10036
ASMFLAGS += -DBOARD_PCA10040
ASMFLAGS += -DCONFIG_GPIO_AS_PINRESET
ASMFLAGS += -DS132
ASMFLAGS += -DBLE_STACK_SUPPORT_REQD
Expand Down Expand Up @@ -220,9 +222,9 @@ cleanobj:
$(RM) $(BUILD_DIRECTORIES)/*.o

flash: $(MAKECMDGOALS)
@echo Flashing: $(OUTPUT_BINARY_DIRECTORY)/$<.hex
@echo Flashing: $(OUTPUT_BINARY_DIRECTORY)/nrf52832_xxaa_s132.hex
nrfjprog --erasepage 0x1f000-0x80000 -f nrf52
nrfjprog --program $(OUTPUT_BINARY_DIRECTORY)/$<.hex -f nrf52
nrfjprog --program $(OUTPUT_BINARY_DIRECTORY)/nrf52832_xxaa_s132.hex -f nrf52
nrfjprog --reset

## Flash softdevice
Expand Down
Loading

0 comments on commit 2ae931f

Please sign in to comment.