/* * Heap error handler, called when heap problem is detected. * Function is for-ever loop. */ static void mesh_system_heap_error_handler(heap_fail_t event) { MBED_ERROR1(MBED_MAKE_ERROR(MBED_MODULE_NETWORK_STACK, MBED_ERROR_CODE_OUT_OF_MEMORY), "Heap error, mesh_system_heap_error_handler()", event); }
void sleep_manager_unlock_deep_sleep_internal(void) { if (core_util_atomic_decr_u16(&deep_sleep_lock, 1) == 0xFFFF) { MBED_ERROR1(MBED_MAKE_ERROR(MBED_MODULE_HAL, MBED_ERROR_CODE_UNDERFLOW), "DeepSleepLock underflow (< 0)", deep_sleep_lock); } }
void BLE::stack_setup() { MBED_ASSERT(_hci_driver != NULL); wsfHandlerId_t handlerId; buf_pool_desc_t buf_pool_desc = _hci_driver->get_buffer_pool_description(); // use the buffer for the WSF heap SystemHeapStart = buf_pool_desc.buffer_memory; SystemHeapSize = buf_pool_desc.buffer_size; // Initialize buffers with the ones provided by the HCI driver uint16_t bytes_used = WsfBufInit(buf_pool_desc.pool_count, (wsfBufPoolDesc_t*)buf_pool_desc.pool_description); // Raise assert if not enough memory was allocated MBED_ASSERT(bytes_used != 0); SystemHeapStart += bytes_used; SystemHeapSize -= bytes_used; // This warning will be raised if we've allocated too much memory if(bytes_used < buf_pool_desc.buffer_size) { MBED_WARNING1(MBED_MAKE_ERROR(MBED_MODULE_BLE, MBED_ERROR_CODE_INVALID_SIZE), "Too much memory allocated for Cordio memory pool, reduce buf_pool_desc.buffer_size by value below.", buf_pool_desc.buffer_size - bytes_used); } WsfTimerInit(); // Note: SecInit required for RandInit. SecInit(); SecRandInit(); #if BLE_FEATURE_SECURITY SecAesInit(); SecCmacInit(); SecEccInit(); #endif handlerId = WsfOsSetNextHandler(HciHandler); HciHandlerInit(handlerId); handlerId = WsfOsSetNextHandler(DmHandler); #if BLE_ROLE_BROADCASTER DmAdvInit(); #endif #if BLE_ROLE_OBSERVER DmScanInit(); #endif #if BLE_FEATURE_CONNECTABLE DmConnInit(); #endif #if BLE_ROLE_CENTRAL DmConnMasterInit(); #endif #if BLE_ROLE_PERIPHERAL DmConnSlaveInit(); #endif #if BLE_FEATURE_SECURITY DmSecInit(); #endif #if BLE_FEATURE_PHY_MANAGEMENT DmPhyInit(); #endif #if BLE_FEATURE_SECURE_CONNECTIONS DmSecLescInit(); #endif #if BLE_FEATURE_PRIVACY DmPrivInit(); #endif DmHandlerInit(handlerId); #if BLE_ROLE_PERIPHERAL handlerId = WsfOsSetNextHandler(L2cSlaveHandler); L2cSlaveHandlerInit(handlerId); #endif #if BLE_FEATURE_CONNECTABLE L2cInit(); #endif #if BLE_ROLE_PERIPHERAL L2cSlaveInit(); #endif #if BLE_ROLE_CENTRAL L2cMasterInit(); #endif #if BLE_FEATURE_ATT handlerId = WsfOsSetNextHandler(AttHandler); AttHandlerInit(handlerId); #if BLE_FEATURE_GATT_SERVER AttsInit(); AttsIndInit(); #if BLE_FEATURE_SECURITY AttsAuthorRegister(GattServer::atts_auth_cb); #endif #if BLE_FEATURE_SIGNING AttsSignInit(); #endif #endif // BLE_FEATURE_GATT_SERVER #if BLE_FEATURE_GATT_CLIENT AttcInit(); #if BLE_FEATURE_SIGNING AttcSignInit(); #endif #endif // BLE_FEATURE_GATT_CLIENT #endif // BLE_FEATURE_ATT #if BLE_FEATURE_SECURITY handlerId = WsfOsSetNextHandler(SmpHandler); SmpHandlerInit(handlerId); #if BLE_ROLE_PERIPHERAL SmprInit(); #if BLE_FEATURE_SECURE_CONNECTIONS SmprScInit(); #endif #endif #if BLE_ROLE_CENTRAL SmpiInit(); #if BLE_FEATURE_SECURE_CONNECTIONS SmpiScInit(); #endif #endif // BLE_ROLE_CENTRAL #endif // BLE_FEATURE_SECURITY stack_handler_id = WsfOsSetNextHandler(&BLE::stack_handler); HciSetMaxRxAclLen(100); DmRegister(BLE::device_manager_cb); #if BLE_FEATURE_CONNECTABLE DmConnRegister(DM_CLIENT_ID_APP, BLE::device_manager_cb); #endif #if BLE_FEATURE_GATT_SERVER AttConnRegister(BLE::connection_handler); #endif #if BLE_FEATURE_ATT #if BLE_FEATURE_GATT_CLIENT AttRegister((attCback_t) ble::pal::vendor::cordio::CordioAttClient::att_client_handler); #else AttRegister((attCback_t) ble::vendor::cordio::GattServer::att_cb); #endif // BLE_FEATURE_GATT_CLIENT #endif }
void sleep_manager_lock_deep_sleep_internal(void) { if (core_util_atomic_incr_u16(&deep_sleep_lock, 1) == 0) { MBED_ERROR1(MBED_MAKE_ERROR(MBED_MODULE_HAL, MBED_ERROR_CODE_OVERFLOW), "DeepSleepLock overflow (> 0xFFFF)", deep_sleep_lock); } }