Sets MAC address to a random static value
This commit is contained in:
parent
6ec48b7188
commit
37fd1173ec
5 changed files with 28 additions and 6 deletions
|
|
@ -308,3 +308,7 @@ SDK_CONFIG_FILE := ../config/sdk_config.h
|
||||||
CMSIS_CONFIG_TOOL := $(SDK_ROOT)/external_tools/cmsisconfig/CMSIS_Configuration_Wizard.jar
|
CMSIS_CONFIG_TOOL := $(SDK_ROOT)/external_tools/cmsisconfig/CMSIS_Configuration_Wizard.jar
|
||||||
sdk_config:
|
sdk_config:
|
||||||
java -jar $(CMSIS_CONFIG_TOOL) $(SDK_CONFIG_FILE)
|
java -jar $(CMSIS_CONFIG_TOOL) $(SDK_CONFIG_FILE)
|
||||||
|
|
||||||
|
.PHONY: flash_loop
|
||||||
|
flash_loop:
|
||||||
|
while [ 1 ]; do make flash && break; done
|
||||||
|
|
@ -15,15 +15,18 @@
|
||||||
#define PRST_ADC_DEBUG 0
|
#define PRST_ADC_DEBUG 0
|
||||||
|
|
||||||
// BLE.
|
// BLE.
|
||||||
#define PRST_BLE_ADV_NAME "prst"
|
|
||||||
// Prints out BLE debug info, such as the final encoded advertisement packet.
|
// Prints out BLE debug info, such as the final encoded advertisement packet.
|
||||||
#define PRST_BLE_DEBUG 0
|
#define PRST_BLE_DEBUG 0
|
||||||
|
#define PRST_BLE_MAC_ADDR_LSB0 0xaa
|
||||||
|
#define PRST_BLE_MAC_ADDR_LSB1 0xbb
|
||||||
|
#define PRST_BLE_ADV_TIME_IN_MS 200
|
||||||
|
#define PRST_BLE_ADV_NAME "prst aabb"
|
||||||
|
|
||||||
// PWM.
|
// PWM.
|
||||||
#define PRST_PWM_PIN NRF_GPIO_PIN_MAP(0, 5)
|
#define PRST_PWM_PIN NRF_GPIO_PIN_MAP(0, 5)
|
||||||
#define PRST_FAST_DISCH_PIN NRF_GPIO_PIN_MAP(1, 10)
|
#define PRST_FAST_DISCH_PIN NRF_GPIO_PIN_MAP(1, 10)
|
||||||
|
|
||||||
// SHT3C temp/humidity sensor.
|
// SHT3C temp/humidity sensor.
|
||||||
#define PRST_SHT3C_DEBUG 1
|
#define PRST_SHT3C_DEBUG 0
|
||||||
|
|
||||||
#endif // _PRST_CONFIG_H_
|
#endif // _PRST_CONFIG_H_
|
||||||
|
|
@ -71,7 +71,7 @@ static void rtc_callback() {
|
||||||
temp_humi.humidity, soil_read.relative);
|
temp_humi.humidity, soil_read.relative);
|
||||||
NRF_LOG_FLUSH();
|
NRF_LOG_FLUSH();
|
||||||
prst_adv_start();
|
prst_adv_start();
|
||||||
nrf_delay_ms(200);
|
nrf_delay_ms(PRST_BLE_ADV_TIME_IN_MS);
|
||||||
prst_adv_stop();
|
prst_adv_stop();
|
||||||
nrf_gpio_pin_clear(PRST_LED_PIN);
|
nrf_gpio_pin_clear(PRST_LED_PIN);
|
||||||
NRF_LOG_FLUSH();
|
NRF_LOG_FLUSH();
|
||||||
|
|
|
||||||
|
|
@ -23,7 +23,7 @@
|
||||||
#define NON_CONNECTABLE_ADV_INTERVAL MSEC_TO_UNITS(100, UNIT_0_625_MS)
|
#define NON_CONNECTABLE_ADV_INTERVAL MSEC_TO_UNITS(100, UNIT_0_625_MS)
|
||||||
|
|
||||||
// Sensor data payload that will go into the advertisement message.
|
// Sensor data payload that will go into the advertisement message.
|
||||||
#define SERVICE_DATA_LEN 16
|
#define SERVICE_DATA_LEN 12
|
||||||
static uint8_t service_data[SERVICE_DATA_LEN];
|
static uint8_t service_data[SERVICE_DATA_LEN];
|
||||||
|
|
||||||
// Stores the encoded advertisement data. As per BLE spec, 31 bytes max.
|
// Stores the encoded advertisement data. As per BLE spec, 31 bytes max.
|
||||||
|
|
@ -61,6 +61,17 @@ static uint8_t adv_handle_ = BLE_GAP_ADV_SET_HANDLE_NOT_SET;
|
||||||
// Advertisement parameters.
|
// Advertisement parameters.
|
||||||
static ble_gap_adv_params_t adv_params_;
|
static ble_gap_adv_params_t adv_params_;
|
||||||
|
|
||||||
|
// Stores the MAC address & type.
|
||||||
|
// We're using a random static MAC address, which has the following constraints:
|
||||||
|
// 1. Two most significant bits are set to 1;
|
||||||
|
// 2. The remaining bits should not _all_ be set to 0;
|
||||||
|
// 2. The remaining bits should not _all_ be set to 1;
|
||||||
|
static const ble_gap_addr_t gap_addr_ = {
|
||||||
|
.addr_type = BLE_GAP_ADDR_TYPE_RANDOM_STATIC,
|
||||||
|
// Least significant bytes first.
|
||||||
|
.addr = {PRST_BLE_MAC_ADDR_LSB0, PRST_BLE_MAC_ADDR_LSB1, 0xca, 0xf0, 0xca,
|
||||||
|
0xf0}};
|
||||||
|
|
||||||
static void init_advertisement_data() {
|
static void init_advertisement_data() {
|
||||||
// We'll just broadcast our data, so we disallow connections and scan
|
// We'll just broadcast our data, so we disallow connections and scan
|
||||||
// requests.
|
// requests.
|
||||||
|
|
@ -81,6 +92,8 @@ static void init_advertisement_data() {
|
||||||
uint32_t err_code =
|
uint32_t err_code =
|
||||||
sd_ble_gap_adv_set_configure(&adv_handle_, &gap_adv_data_, &adv_params_);
|
sd_ble_gap_adv_set_configure(&adv_handle_, &gap_adv_data_, &adv_params_);
|
||||||
APP_ERROR_CHECK(err_code);
|
APP_ERROR_CHECK(err_code);
|
||||||
|
|
||||||
|
APP_ERROR_CHECK(sd_ble_gap_addr_set(&gap_addr_));
|
||||||
}
|
}
|
||||||
|
|
||||||
void prst_ble_init() {
|
void prst_ble_init() {
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,8 @@
|
||||||
#include <nrf_log.h>
|
#include <nrf_log.h>
|
||||||
#include <nrf_log_ctrl.h>
|
#include <nrf_log_ctrl.h>
|
||||||
|
|
||||||
|
#include "prst_config.h"
|
||||||
|
|
||||||
static const nrf_drv_twi_t twi_ = NRF_DRV_TWI_INSTANCE(0);
|
static const nrf_drv_twi_t twi_ = NRF_DRV_TWI_INSTANCE(0);
|
||||||
static nrf_drv_twi_config_t twi_config_ = NRF_DRV_TWI_DEFAULT_CONFIG;
|
static nrf_drv_twi_config_t twi_config_ = NRF_DRV_TWI_DEFAULT_CONFIG;
|
||||||
|
|
||||||
|
|
@ -54,9 +56,9 @@ prst_shtc3_read_t prst_shtc3_read() {
|
||||||
.humidity = humi};
|
.humidity = humi};
|
||||||
#if PRST_SHT3C_DEBUG
|
#if PRST_SHT3C_DEBUG
|
||||||
NRF_LOG_INFO("[sht3c] Read temp: " NRF_LOG_FLOAT_MARKER " oC",
|
NRF_LOG_INFO("[sht3c] Read temp: " NRF_LOG_FLOAT_MARKER " oC",
|
||||||
NRF_LOG_FLOAT((float)temp_humi.temp_millicelcius / 1000.0));
|
NRF_LOG_FLOAT((float)ret.temp_millicelcius / 1000.0));
|
||||||
NRF_LOG_INFO("[sht3c] Read humi: " NRF_LOG_FLOAT_MARKER " %%",
|
NRF_LOG_INFO("[sht3c] Read humi: " NRF_LOG_FLOAT_MARKER " %%",
|
||||||
NRF_LOG_FLOAT(100.0 * temp_humi.humidity / (1 << 16)));
|
NRF_LOG_FLOAT(100.0 * ret.humidity / (1 << 16)));
|
||||||
#endif
|
#endif
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
Loading…
Add table
Reference in a new issue