mirror of
https://github.com/meshtastic/firmware.git
synced 2025-12-23 19:20:41 +00:00
wip - make ble come back after sleep
This commit is contained in:
33
lib/BluetoothOTA/src/SimpleAllocator.h
Normal file
33
lib/BluetoothOTA/src/SimpleAllocator.h
Normal file
@@ -0,0 +1,33 @@
|
||||
#pragma once
|
||||
#include <Arduino.h>
|
||||
|
||||
#define POOL_SIZE 32768
|
||||
|
||||
/**
|
||||
* An allocator (and placement new operator) that allocates storage from a fixed sized buffer.
|
||||
* It will panic if that buffer fills up.
|
||||
* If you are _sure_ no outstanding references to blocks in this buffer still exist, you can call
|
||||
* reset() to start from scratch.
|
||||
*
|
||||
* Currently the only usecase for this class is the ESP32 bluetooth stack, where once we've called deinit(false)
|
||||
* we are sure all those bluetooth objects no longer exist, and we'll need to recreate them when we restart bluetooth
|
||||
*/
|
||||
class SimpleAllocator
|
||||
{
|
||||
uint8_t bytes[POOL_SIZE];
|
||||
|
||||
uint32_t nextFree;
|
||||
|
||||
public:
|
||||
SimpleAllocator();
|
||||
|
||||
void *alloc(size_t size);
|
||||
|
||||
/** If you are _sure_ no outstanding references to blocks in this buffer still exist, you can call
|
||||
* reset() to start from scratch.
|
||||
* */
|
||||
void reset();
|
||||
};
|
||||
|
||||
void *operator new(size_t size, SimpleAllocator &p);
|
||||
|
||||
Reference in New Issue
Block a user