本文整理汇总了C++中sd_power_system_off函数的典型用法代码示例。如果您正苦于以下问题:C++ sd_power_system_off函数的具体用法?C++ sd_power_system_off怎么用?C++ sd_power_system_off使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了sd_power_system_off函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: sleep_mode_enter
/**@brief Function for putting the chip into sleep mode.
*
* @note This function will not return.
*/
static void sleep_mode_enter(void)
{
uint32_t err_code;
// Prepare wakeup buttons.
debug_printf("Cycle power to restart. Bye. \r\n");
// Go to system-off mode (this function will not return; wakeup will cause a reset).
err_code = sd_power_system_off();
APP_ERROR_CHECK(err_code);
}
开发者ID:stelios26,项目名称:Aphrodite,代码行数:15,代码来源:main.c
示例2: BSP_stop
/**@brief Function for putting the chip into sleep mode.
*
* @note This function will not return.
*/
void BSP_stop() {
uint32_t new_cnf = NRF_GPIO->PIN_CNF[BTN_PIN];
uint32_t new_sense = GPIO_PIN_CNF_SENSE_Low;
new_cnf &= ~GPIO_PIN_CNF_SENSE_Msk;
new_cnf |= (new_sense << GPIO_PIN_CNF_SENSE_Pos);
NRF_GPIO->PIN_CNF[BTN_PIN] = new_cnf;
// Go to system-off mode (this function will not return;
// wakeup will cause a reset).
Q_ALLEGE(sd_power_system_off() == NRF_SUCCESS);
}
开发者ID:henrychoi,项目名称:realtime,代码行数:15,代码来源:qp.c
示例3: sleep_mode_enter
/**@brief Function for putting the chip into sleep mode.
*
* @note This function will not return.
*/
static void sleep_mode_enter(void)
{
uint32_t err_code = bsp_indication_set(BSP_INDICATE_IDLE);
APP_ERROR_CHECK(err_code);
// Prepare wakeup buttons.
err_code = bsp_btn_ble_sleep_mode_prepare();
APP_ERROR_CHECK(err_code);
// Go to system-off mode (this function will not return; wakeup will cause a reset).
(void) sd_power_system_off();
}
开发者ID:lyncxy119,项目名称:Sentry,代码行数:16,代码来源:main.c
示例4: storage_access_complete_handler
/**@brief Handler for doing post actions on storage access complete
*/
static void storage_access_complete_handler(void)
{
uint32_t err_code;
m_storage_in_progress = false;
if (m_sys_off_pending == true)
{
err_code = sd_power_system_off();
APP_ERROR_CHECK(err_code);
}
}
开发者ID:damancusonqn,项目名称:BLE_tests,代码行数:14,代码来源:main.c
示例5: sleep_mode_enter
/**@brief Function for putting the chip into sleep mode.
*
* @note This function will not return.
*/
static void sleep_mode_enter(void)
{
uint32_t err_code = bsp_indication_set(BSP_INDICATE_IDLE);
APP_ERROR_CHECK(err_code);
// Prepare wakeup button.
err_code = bsp_wakeup_buttons_set((1 << WAKEUP_BUTTON_ID));
APP_ERROR_CHECK(err_code);
// Go to system-off mode (this function will not return; wakeup will cause a reset).
err_code = sd_power_system_off();
APP_ERROR_CHECK(err_code);
}
开发者ID:Martinsbl,项目名称:Second-test-nrf5x,代码行数:17,代码来源:main.c
示例6: system_off_mode_enter
/**@brief Function for putting the chip in System OFF Mode
*/
static void system_off_mode_enter(void)
{
uint32_t err_code;
if (m_storage_in_progress)
{
m_sys_off_pending = true;
}
else
{
err_code = sd_power_system_off();
APP_ERROR_CHECK(err_code);
}
}
开发者ID:damancusonqn,项目名称:BLE_tests,代码行数:16,代码来源:main.c
示例7: pmNrfPower
static void pmNrfPower(bool enable)
{
if (!enable) {
//stop NRF
LED_OFF();
nrf_gpio_cfg_input(PM_VBAT_SINK_PIN, NRF_GPIO_PIN_NOPULL);
NRF_POWER->GPREGRET |= 0x01; // Workaround for not being able to determine reset reason...
#ifdef BLE
sd_power_system_off();
#else
NRF_POWER->SYSTEMOFF = 1UL;
#endif
while(1);
}
}
开发者ID:CEDAROAD,项目名称:crazyflie2-nrf-firmware,代码行数:15,代码来源:pm.c
示例8: on_ble_evt
/**@brief Function for the Application's S110 SoftDevice event handler.
*
* @param[in] p_ble_evt S110 SoftDevice event.
*/
static void on_ble_evt(ble_evt_t * p_ble_evt)
{
uint32_t err_code;
switch (p_ble_evt->header.evt_id)
{
case BLE_GAP_EVT_CONNECTED:
nrf_gpio_pin_set(CONNECTED_LED_PIN_NO);
nrf_gpio_pin_clear(ADVERTISING_LED_PIN_NO);
m_conn_handle = p_ble_evt->evt.gap_evt.conn_handle;
break;
case BLE_GAP_EVT_DISCONNECTED:
nrf_gpio_pin_clear(CONNECTED_LED_PIN_NO);
m_conn_handle = BLE_CONN_HANDLE_INVALID;
advertising_start();
break;
case BLE_GAP_EVT_PASSKEY_DISPLAY:
// Don't send delayed Security Request if security procedure is already in progress.
err_code = app_timer_stop(m_sec_req_timer_id);
APP_ERROR_CHECK(err_code);
break;
case BLE_GAP_EVT_TIMEOUT:
if (p_ble_evt->evt.gap_evt.params.timeout.src == BLE_GAP_TIMEOUT_SRC_ADVERTISEMENT)
{
nrf_gpio_pin_clear(ADVERTISING_LED_PIN_NO);
// Configure buttons with sense level low as wakeup source.
nrf_gpio_cfg_sense_input(WAKEUP_BUTTON_PIN,
BUTTON_PULL,
NRF_GPIO_PIN_SENSE_LOW);
// Go to system-off mode (this function will not return; wakeup will cause a reset)
err_code = sd_power_system_off();
APP_ERROR_CHECK(err_code);
}
break;
default:
// No implementation needed.
break;
}
}
开发者ID:chronosfitness,项目名称:nRF51-ble-app-uart-static-passkey,代码行数:52,代码来源:main.c
示例9: on_ble_evt
/**@brief Function for handling the Application's BLE Stack events.
*
* @param[in] p_ble_evt Bluetooth stack event.
*/
static void on_ble_evt(ble_evt_t * p_ble_evt)
{
uint32_t err_code;
switch (p_ble_evt->header.evt_id)
{
case BLE_GAP_EVT_CONNECTED:
nrf_gpio_pin_set(CONNECTED_LED_PIN_NO);
nrf_gpio_pin_clear(ADVERTISING_LED_PIN_NO);
m_conn_handle = p_ble_evt->evt.gap_evt.conn_handle;
break;
case BLE_GAP_EVT_DISCONNECTED:
nrf_gpio_pin_clear(CONNECTED_LED_PIN_NO);
m_conn_handle = BLE_CONN_HANDLE_INVALID;
// Since we are not in a connection and have not started advertising, store bonds.
err_code = ble_bondmngr_bonded_centrals_store();
APP_ERROR_CHECK(err_code);
advertising_start();
break;
case BLE_GAP_EVT_SEC_PARAMS_REQUEST:
err_code = sd_ble_gap_sec_params_reply(m_conn_handle,
BLE_GAP_SEC_STATUS_SUCCESS,
&m_sec_params);
APP_ERROR_CHECK(err_code);
break;
case BLE_GAP_EVT_TIMEOUT:
if (p_ble_evt->evt.gap_evt.params.timeout.src == BLE_GAP_TIMEOUT_SRC_ADVERTISEMENT)
{
nrf_gpio_pin_clear(ADVERTISING_LED_PIN_NO);
// Go to system-off mode (this function will not return; wakeup will cause a reset).
err_code = sd_power_system_off();
APP_ERROR_CHECK(err_code);
}
break;
default:
// No implementation needed.
break;
}
}
开发者ID:huiyue000,项目名称:51822,代码行数:52,代码来源:main.c
示例10: on_ble_evt
/**@brief Function for handling the Application's BLE Stack events.
*
* @param[in] p_ble_evt Bluetooth stack event.
*/
static void on_ble_evt(ble_evt_t * p_ble_evt) {
uint32_t err_code;
switch (p_ble_evt->header.evt_id) {
case BLE_GAP_EVT_CONNECTED:
app.conn_handle = p_ble_evt->evt.gap_evt.conn_handle;
//advertising_stop();
break;
case BLE_GAP_EVT_DISCONNECTED:
app.conn_handle = BLE_CONN_HANDLE_INVALID;
advertising_start();
break;
case BLE_GATTS_EVT_WRITE:
break;
case BLE_GAP_EVT_SEC_PARAMS_REQUEST:
err_code = sd_ble_gap_sec_params_reply(app.conn_handle,
BLE_GAP_SEC_STATUS_SUCCESS, &m_sec_params, NULL);
APP_ERROR_CHECK(err_code);
break;
case BLE_GATTS_EVT_SYS_ATTR_MISSING:
err_code = sd_ble_gatts_sys_attr_set(app.conn_handle, NULL, 0, 0);
APP_ERROR_CHECK(err_code);
break;
case BLE_GAP_EVT_AUTH_STATUS:
break;
case BLE_GAP_EVT_SEC_INFO_REQUEST:
// No keys found for this device.
err_code = sd_ble_gap_sec_info_reply(app.conn_handle, NULL, NULL, NULL);
APP_ERROR_CHECK(err_code);
break;
case BLE_GAP_EVT_TIMEOUT:
if (p_ble_evt->evt.gap_evt.params.timeout.src == BLE_GAP_TIMEOUT_SRC_ADVERTISING) {
err_code = sd_power_system_off();
APP_ERROR_CHECK(err_code);
}
break;
default:
break;
}
}
开发者ID:quanghmfw,项目名称:blees,代码行数:52,代码来源:main.c
示例11: on_ble_evt
/**@brief Function for handling the Application's BLE Stack events.
*
* @param[in] p_ble_evt Bluetooth stack event.
*/
static void on_ble_evt(ble_evt_t * p_ble_evt)
{
uint32_t err_code;
switch (p_ble_evt->header.evt_id)
{
case BLE_GAP_EVT_CONNECTED:
err_code = bsp_indication_set(BSP_INDICATE_CONNECTED);
APP_ERROR_CHECK(err_code);
m_conn_handle = p_ble_evt->evt.gap_evt.conn_handle;
break;
case BLE_GAP_EVT_DISCONNECTED:
err_code = bsp_indication_set(BSP_INDICATE_IDLE);
APP_ERROR_CHECK(err_code);
err_code = bsp_indication_set(BSP_INDICATE_ALERT_OFF);
APP_ERROR_CHECK(err_code);
advertising_start();
break;
case BLE_GAP_EVT_TIMEOUT:
if (p_ble_evt->evt.gap_evt.params.timeout.src == BLE_GAP_TIMEOUT_SRC_ADVERTISING)
{
err_code = bsp_indication_set(BSP_INDICATE_IDLE);
APP_ERROR_CHECK(err_code);
err_code = bsp_indication_set(BSP_INDICATE_ALERT_OFF);
APP_ERROR_CHECK(err_code);
err_code = bsp_buttons_enable(( 1 << WAKEUP_BUTTON_ID));
APP_ERROR_CHECK(err_code);
// Go to system-off mode (this function will not return; wakeup will cause a reset).
err_code = sd_power_system_off();
APP_ERROR_CHECK(err_code);
}
break;
default:
// No implementation needed.
break;
}
}
开发者ID:dhruvkakadiya,项目名称:OpenSJ_Bluz,代码行数:50,代码来源:main.c
示例12: shutdown_process
/**@brief Function runs the shutdown procedure.
*/
static void shutdown_process(void)
{
NRF_LOG_INFO("Shutdown started. Type %d\r\n", m_pwr_mgmt_evt);
// Executing all callbacks.
while (m_next_handler < PWR_MGMT_SECTION_VARS_COUNT)
{
if ((*PWR_MGMT_SECTION_VARS_GET(m_next_handler))(m_pwr_mgmt_evt))
{
NRF_LOG_INFO("SysOff handler 0x%08X => ready\r\n",
(unsigned int)*PWR_MGMT_SECTION_VARS_GET(m_next_handler));
}
else
{
// One of the modules is not ready.
NRF_LOG_INFO("SysOff handler 0x%08X => blocking\r\n",
(unsigned int)*PWR_MGMT_SECTION_VARS_GET(m_next_handler));
return;
}
// Mark handler as executed.
m_next_handler++;
}
#if NRF_PWR_MGMT_CONFIG_CPU_USAGE_MONITOR_ENABLED
NRF_LOG_INFO("Maximum CPU usage: %u%%\r\n", m_max_cpu_usage);
#endif // NRF_PWR_MGMT_CONFIG_CPU_USAGE_MONITOR_ENABLED
NRF_LOG_WARNING("Shutdown\r\n");
NRF_LOG_FINAL_FLUSH();
// Enter System OFF.
#ifdef SOFTDEVICE_PRESENT
ret_code_t ret_code = sd_power_system_off();
if (ret_code == NRF_ERROR_SOFTDEVICE_NOT_ENABLED)
{
NRF_POWER->SYSTEMOFF = POWER_SYSTEMOFF_SYSTEMOFF_Enter;
}
else
{
APP_ERROR_CHECK(ret_code);
}
#else
NRF_POWER->SYSTEMOFF = POWER_SYSTEMOFF_SYSTEMOFF_Enter;
#endif // SOFTDEVICE_PRESENT
}
开发者ID:CWBudde,项目名称:Espruino,代码行数:46,代码来源:nrf_pwr_mgmt.c
示例13: system_off_mode_enter
/**@brief Function for putting the chip in System OFF Mode
*/
static void system_off_mode_enter(void)
{
uint32_t err_code;
uint32_t count;
// Verify if there is any flash access pending, if yes delay starting advertising until
// it's complete.
err_code = pstorage_access_status_get(&count);
APP_ERROR_CHECK(err_code);
if (count != 0)
{
m_memory_access_in_progress = true;
return;
}
err_code = sd_power_system_off();
APP_ERROR_CHECK(err_code);
}
开发者ID:KhaosT,项目名称:AMS-Reference,代码行数:21,代码来源:main.c
示例14: conn_mw_power_system_off
uint32_t conn_mw_power_system_off(uint8_t const * const p_rx_buf,
uint32_t rx_buf_len,
uint8_t * const p_tx_buf,
uint32_t * const p_tx_buf_len)
{
SER_ASSERT_NOT_NULL(p_rx_buf);
SER_ASSERT_NOT_NULL(p_tx_buf);
SER_ASSERT_NOT_NULL(p_tx_buf_len);
uint32_t err_code = NRF_SUCCESS;
err_code = power_system_off_req_dec(p_rx_buf, rx_buf_len);
SER_ASSERT(err_code == NRF_SUCCESS, err_code);
err_code = sd_power_system_off();
/* There should be no return from sd_power_system_off() */
return err_code;
}
开发者ID:DanielOld,项目名称:wlock,代码行数:19,代码来源:conn_mw_nrf_soc.c
示例15: button_event_handler
/**@brief Function for handling button presses.
*/
static void button_event_handler(uint8_t pin_no) {
static uint8_t send_push = 1;
uint32_t err_code;
uart_tx_status_code("event pin #", pin_no, 0);
switch (pin_no) {
case LEDBUTTON_BUTTON_PIN_NO:
err_code = ble_lbs_on_button_change(&m_lbs, send_push);
//err_code = NRF_SUCCESS;
if (err_code != NRF_SUCCESS && err_code != BLE_ERROR_INVALID_CONN_HANDLE
&& err_code != NRF_ERROR_INVALID_STATE) {
uart_tx_status_code("reset @ err. code #:", err_code, 0);
err_code = sd_power_system_off();
APP_ERROR_CHECK(err_code);
}
send_push = !send_push;
break;
default:
break;
}
}
开发者ID:Joisar,项目名称:BLE-NRF51822-LBS-ANDROID,代码行数:22,代码来源:main.c
示例16: on_ble_evt
/**@brief Function for handling the Application's BLE Stack events.
*
* @param[in] p_ble_evt Bluetooth stack event.
*/
static void on_ble_evt(ble_evt_t * p_ble_evt)
{
uint32_t err_code;
switch (p_ble_evt->header.evt_id)
{
case BLE_GAP_EVT_CONNECTED:
nrf_gpio_pin_set(CONNECTED_LED_PIN_NO);
nrf_gpio_pin_clear(ADVERTISING_LED_PIN_NO);
m_conn_handle = p_ble_evt->evt.gap_evt.conn_handle;
// rsc_first_conn_flag = true;
break;
case BLE_GAP_EVT_DISCONNECTED:
nrf_gpio_pin_clear(CONNECTED_LED_PIN_NO);
m_conn_handle = BLE_CONN_HANDLE_INVALID;
m_hts_meas_ind_conf_pending = false;
// rsc_first_conn_flag = true;
advertising_start();
break;
case BLE_GAP_EVT_TIMEOUT:
if (p_ble_evt->evt.gap_evt.params.timeout.src == BLE_GAP_TIMEOUT_SRC_ADVERTISEMENT)
{
nrf_gpio_pin_clear(ADVERTISING_LED_PIN_NO);
xprintf("\r\nBle gap event timeout...\r\n");
// Go to system-off mode (this function will not return; wakeup will cause a reset).
err_code = sd_power_system_off();
APP_ERROR_CHECK(err_code);
}
break;
default:
// No implementation needed.
break;
}
}
开发者ID:CorBiNO,项目名称:Atomwear,代码行数:45,代码来源:main.c
示例17: app_error_handler
/**@brief Function for error handling, which is called when an error has occurred.
*
* @warning This handler is an example only and does not fit a final product. You need to analyze
* how your product is supposed to react in case of error.
*
* @param[in] error_code Error code supplied to the handler.
* @param[in] line_num Line number where the handler is called.
* @param[in] p_file_name Pointer to the file name.
*/
void app_error_handler(uint32_t error_code, uint32_t line_num, const uint8_t * p_file_name)
{
LEDS_ON((LED_ONE | LED_TWO));
APPL_LOG("[** ASSERT **]: Error 0x%08lX, Line %ld, File %s\r\n", \
error_code, line_num, p_file_name);
// Variables used to retain function parameter values when debugging.
static volatile uint8_t s_file_name[MAX_LENGTH_FILENAME];
static volatile uint16_t s_line_num;
static volatile uint32_t s_error_code;
strncpy((char *)s_file_name, (const char *)p_file_name, MAX_LENGTH_FILENAME - 1);
s_file_name[MAX_LENGTH_FILENAME - 1] = '\0';
s_line_num = line_num;
s_error_code = error_code;
UNUSED_VARIABLE(s_file_name);
UNUSED_VARIABLE(s_line_num);
UNUSED_VARIABLE(s_error_code);
#ifdef COMMISSIONING_ENABLED
if (m_power_off_on_failure == true)
{
LEDS_OFF((LED_ONE | LED_TWO));
UNUSED_VARIABLE(sd_power_system_off());
}
else
{
NVIC_SystemReset();
}
#else // COMMISSIONING_ENABLED
//NVIC_SystemReset();
for (;;)
{
}
#endif // COMMISSIONING_ENABLED
}
开发者ID:NordicSemiconductor,项目名称:arduino-primo-iot-examples,代码行数:46,代码来源:main.c
示例18: on_ble_evt
/**@brief Function for handling the Application's BLE Stack events.
*
* @param[in] p_ble_evt Bluetooth stack event.
*/
static void on_ble_evt(ble_evt_t * p_ble_evt)
{
uint32_t err_code = NRF_SUCCESS;
static uint16_t m_conn_handle = BLE_CONN_HANDLE_INVALID;
switch (p_ble_evt->header.evt_id)
{
case BLE_GAP_EVT_CONNECTED:
err_code = bsp_indication_set(BSP_INDICATE_CONNECTED);
APP_ERROR_CHECK(err_code);
err_code = bsp_buttons_enable((1<<DISPLAY_MESSAGE_BUTTON_ID));
APP_ERROR_CHECK(err_code);
m_advertising_mode = BLE_NO_ADVERTISING;
m_conn_handle = p_ble_evt->evt.gap_evt.conn_handle;
break;
case BLE_GAP_EVT_AUTH_STATUS:
apple_notification_setup();
break;
case BLE_GAP_EVT_DISCONNECTED:
err_code = bsp_indication_set(BSP_INDICATE_IDLE);
APP_ERROR_CHECK(err_code);
m_conn_handle = BLE_CONN_HANDLE_INVALID;
// Stop detecting button presses when not connected.
err_code = bsp_buttons_enable(BSP_BUTTONS_NONE);
APP_ERROR_CHECK(err_code);
err_code = ble_ans_c_service_store();
APP_ERROR_CHECK(err_code);
advertising_start();
break;
case BLE_GAP_EVT_TIMEOUT:
if (p_ble_evt->evt.gap_evt.params.timeout.src == BLE_GAP_TIMEOUT_SRC_ADVERTISEMENT)
{
if (m_advertising_mode == BLE_FAST_ADVERTISING)
{
advertising_start();
}
else
{
err_code = bsp_indication_set(BSP_INDICATE_IDLE);
APP_ERROR_CHECK(err_code);
m_advertising_mode = BLE_NO_ADVERTISING;
err_code = bsp_buttons_enable( (1 << BOND_DELETE_ALL_WAKEUP_BUTTON_ID) );
APP_ERROR_CHECK(err_code);
// Go to system-off mode (function will not return; wakeup will cause a reset).
err_code = sd_power_system_off();
APP_ERROR_CHECK(err_code);
}
}
break;
case BLE_GATTC_EVT_TIMEOUT:
case BLE_GATTS_EVT_TIMEOUT:
// Disconnect on GATT Server and Client timeout events.
err_code = sd_ble_gap_disconnect(m_conn_handle,
BLE_HCI_REMOTE_USER_TERMINATED_CONNECTION);
APP_ERROR_CHECK(err_code);
break;
default:
// No implementation needed.
break;
}
APP_ERROR_CHECK(err_code);
}
开发者ID:451506709,项目名称:automated_machine,代码行数:80,代码来源:main.c
示例19: on_ble_evt
/**@brief Function for the Application's S110 SoftDevice event handler.
*
* @param[in] p_ble_evt S110 SoftDevice event.
*/
static void on_ble_evt(ble_evt_t * p_ble_evt)
{
uint32_t err_code;
static ble_gap_sec_keyset_t s_sec_keyset;
ble_gap_enc_info_t * p_enc_info;
switch (p_ble_evt->header.evt_id)
{
case BLE_GAP_EVT_CONNECTED:
err_code = bsp_indication_set(BSP_INDICATE_CONNECTED);
APP_ERROR_CHECK(err_code);
m_conn_handle = p_ble_evt->evt.gap_evt.conn_handle;
break;
case BLE_GAP_EVT_DISCONNECTED:
err_code = bsp_indication_set(BSP_INDICATE_IDLE);
APP_ERROR_CHECK(err_code);
m_conn_handle = BLE_CONN_HANDLE_INVALID;
advertising_start();
break;
case BLE_GAP_EVT_SEC_PARAMS_REQUEST:
s_sec_keyset.keys_periph.p_enc_key = NULL;
err_code = sd_ble_gap_sec_params_reply(m_conn_handle,
BLE_GAP_SEC_STATUS_SUCCESS,
&m_sec_params,
&s_sec_keyset);
APP_ERROR_CHECK(err_code);
break;
case BLE_GATTS_EVT_SYS_ATTR_MISSING:
err_code = sd_ble_gatts_sys_attr_set(m_conn_handle, NULL, 0, 0);
APP_ERROR_CHECK(err_code);
break;
case BLE_GAP_EVT_AUTH_STATUS:
// TODO: Adoptation to s110v8.0.0, is this needed anymore ?
break;
case BLE_GAP_EVT_SEC_INFO_REQUEST:
if (s_sec_keyset.keys_periph.p_enc_key != NULL)
{
p_enc_info = &s_sec_keyset.keys_periph.p_enc_key->enc_info;
err_code = sd_ble_gap_sec_info_reply(m_conn_handle, p_enc_info, NULL, NULL);
APP_ERROR_CHECK(err_code);
}
else
{
// No keys found for this device.
err_code = sd_ble_gap_sec_info_reply(m_conn_handle, NULL, NULL, NULL);
APP_ERROR_CHECK(err_code);
}
break;
case BLE_GAP_EVT_TIMEOUT:
if (p_ble_evt->evt.gap_evt.params.timeout.src == BLE_GAP_TIMEOUT_SRC_ADVERTISING)
{
err_code = bsp_indication_set(BSP_INDICATE_IDLE);
APP_ERROR_CHECK(err_code);
// Configure buttons with sense level low as wakeup source.
err_code = bsp_buttons_enable(1 << WAKEUP_BUTTON_ID);
APP_ERROR_CHECK(err_code);
// Go to system-off mode (this function will not return; wakeup will cause a reset).
err_code = sd_power_system_off();
APP_ERROR_CHECK(err_code);
}
break;
default:
// No implementation needed.
break;
}
}
开发者ID:inamuj,项目名称:ble_app_uart,代码行数:77,代码来源:main.c
示例20: on_ble_evt
/**@brief Function for handling the Application's BLE Stack events.
*
* @param[in] p_ble_evt Bluetooth stack event.
*/
static void on_ble_evt(ble_evt_t * p_ble_evt)
{
uint32_t err_code;
static ble_gap_evt_auth_status_t m_auth_status;
bool master_id_matches;
ble_gap_sec_kdist_t * p_distributed_keys;
ble_gap_enc_info_t * p_enc_info;
ble_gap_irk_t * p_id_info;
ble_gap_sign_info_t * p_sign_info;
static ble_gap_enc_key_t m_enc_key; /**< Encryption Key (Encryption Info and Master ID). */
static ble_gap_id_key_t m_id_key; /**< Identity Key (IRK and address). */
static ble_gap_sign_info_t m_sign_key; /**< Signing Key (Connection Signature Resolving Key). */
static ble_gap_sec_keyset_t m_keys = {.keys_periph = {&m_enc_key, &m_id_key, &m_sign_key}};
switch (p_ble_evt->header.evt_id)
{
case BLE_GAP_EVT_CONNECTED:
err_code = bsp_indication_set(BSP_INDICATE_CONNECTED);
APP_ERROR_CHECK(err_code);
m_conn_handle = p_ble_evt->evt.gap_evt.conn_handle;
/* YOUR_JOB: Uncomment this part if you are using the app_button module to handle button
events (assuming that the button events are only needed in connected
state). If this is uncommented out here,
1. Make sure that app_button_disable() is called when handling
BLE_GAP_EVT_DISCONNECTED below.
2. Make sure the app_button module is initialized.
err_code = app_button_enable();
APP_ERROR_CHECK(err_code);
*/
break;
case BLE_GAP_EVT_DISCONNECTED:
err_code = bsp_indication_set(BSP_INDICATE_IDLE);
APP_ERROR_CHECK(err_code);
m_conn_handle = BLE_CONN_HANDLE_INVALID;
/* YOUR_JOB: Uncomment this part if you are using the app_button module to handle button
events. This should be done to save power when not connected
to a peer.
err_code = app_button_disable();
APP_ERROR_CHECK(err_code);
*/
advertising_start();
break;
case BLE_GAP_EVT_SEC_PARAMS_REQUEST:
err_code = sd_ble_gap_sec_params_reply(m_conn_handle,
BLE_GAP_SEC_STATUS_SUCCESS,
&m_sec_params,
&m_keys);
APP_ERROR_CHECK(err_code);
break;
case BLE_GATTS_EVT_SYS_ATTR_MISSING:
err_code = sd_ble_gatts_sys_attr_set(m_conn_handle,
NULL,
0,
BLE_GATTS_SYS_ATTR_FLAG_SYS_SRVCS | BLE_GATTS_SYS_ATTR_FLAG_USR_SRVCS);
APP_ERROR_CHECK(err_code);
break;
case BLE_GAP_EVT_AUTH_STATUS:
m_auth_status = p_ble_evt->evt.gap_evt.params.auth_status;
break;
case BLE_GAP_EVT_SEC_INFO_REQUEST:
master_id_matches = memcmp(&p_ble_evt->evt.gap_evt.params.sec_info_request.master_id,
&m_enc_key.master_id,
sizeof(ble_gap_master_id_t)) == 0;
p_distributed_keys = &m_auth_status.kdist_periph;
p_enc_info = (p_distributed_keys->enc && master_id_matches) ? &m_enc_key.enc_info : NULL;
p_id_info = (p_distributed_keys->id && master_id_matches) ? &m_id_key.id_info : NULL;
p_sign_info = (p_distributed_keys->sign && master_id_matches) ? &m_sign_key : NULL;
err_code = sd_ble_gap_sec_info_reply(m_conn_handle, p_enc_info, p_id_info, p_sign_info);
APP_ERROR_CHECK(err_code);
break;
case BLE_GAP_EVT_TIMEOUT:
if (p_ble_evt->evt.gap_evt.params.timeout.src == BLE_GAP_TIMEOUT_SRC_ADVERTISING)
{
err_code = bsp_indication_set(BSP_INDICATE_IDLE);
APP_ERROR_CHECK(err_code);
// Configure buttons with sense level low as wakeup source.
err_code = bsp_buttons_enable(1 << WAKEUP_BUTTON_ID);
APP_ERROR_CHECK(err_code);
// Go to system-off mode (this function will not return; wakeup will cause a reset)
err_code = sd_power_system_off();
APP_ERROR_CHECK(err_code);
}
break;
//.........这里部分代码省略.........
开发者ID:eqot,项目名称:ble_app_template,代码行数:101,代码来源:main.c
注:本文中的sd_power_system_off函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论