mirror of
https://github.com/DarkFlippers/unleashed-firmware.git
synced 2025-12-12 20:49:49 +04:00
Reduce expansion control thread stack size, add comments
This commit is contained in:
@@ -11,7 +11,7 @@
|
||||
#define TAG "ExpansionSrv"
|
||||
|
||||
#define EXPANSION_CONTROL_QUEUE_SIZE (8UL)
|
||||
#define EXPANSION_CONTROL_STACK_SIZE (1024UL)
|
||||
#define EXPANSION_CONTROL_STACK_SIZE (768UL)
|
||||
|
||||
typedef enum {
|
||||
ExpansionStateDisabled,
|
||||
|
||||
@@ -367,8 +367,8 @@ static int32_t expansion_worker(void* context) {
|
||||
ExpansionWorker* expansion_worker_alloc(FuriHalSerialId serial_id) {
|
||||
ExpansionWorker* instance = malloc(sizeof(ExpansionWorker));
|
||||
|
||||
instance->thread =
|
||||
furi_thread_alloc_ex(TAG, EXPANSION_WORKER_STACK_SZIE, expansion_worker, instance);
|
||||
instance->thread = furi_thread_alloc_ex(
|
||||
TAG "Worker", EXPANSION_WORKER_STACK_SZIE, expansion_worker, instance);
|
||||
instance->rx_buf = furi_stream_buffer_alloc(EXPANSION_WORKER_BUFFER_SIZE, 1);
|
||||
instance->serial_id = serial_id;
|
||||
|
||||
|
||||
@@ -1,20 +1,78 @@
|
||||
/**
|
||||
* @file expansion_worker.h
|
||||
* @brief Expansion module handling thread wrapper.
|
||||
*
|
||||
* The worker is started each time an expansion module is detected
|
||||
* and handles all of the communication protocols. Likewise, it is stopped
|
||||
* upon module disconnection or communication error.
|
||||
*
|
||||
* @warning This file is a private implementation detail. Please do not attempt to use it in applications.
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
#include <furi_hal_serial_types.h>
|
||||
|
||||
/**
|
||||
* @brief Expansion worker opaque type declaration.
|
||||
*/
|
||||
typedef struct ExpansionWorker ExpansionWorker;
|
||||
|
||||
typedef void (*ExpansionWorkerCallback)(void*);
|
||||
/**
|
||||
* @brief Worker callback type.
|
||||
*
|
||||
* @see expansion_worker_set_callback()
|
||||
*
|
||||
* @param[in,out] context pointer to a user-defined object.
|
||||
*/
|
||||
typedef void (*ExpansionWorkerCallback)(void* context);
|
||||
|
||||
/**
|
||||
* @brief Create an expansion worker instance.
|
||||
*
|
||||
* @param[in] serial_id numerical identifier of the serial to be used by the worker.
|
||||
* @returns pointer to the created instance.
|
||||
*/
|
||||
ExpansionWorker* expansion_worker_alloc(FuriHalSerialId serial_id);
|
||||
|
||||
/**
|
||||
* @brief Delete an expansion worker instance.
|
||||
*
|
||||
* @param[in,out] instance pointer to the instance to be deleted.
|
||||
*/
|
||||
void expansion_worker_free(ExpansionWorker* instance);
|
||||
|
||||
/**
|
||||
* @brief Set the module disconnect callback.
|
||||
*
|
||||
* The callback will be triggered upon worker stop EXCEPT
|
||||
* when it was stopped via an expansion_worker_stop() call.
|
||||
*
|
||||
* In other words, the callback will ONLY be triggered if the worker was
|
||||
* stopped due to the user disconnecting/resetting/powering down the module,
|
||||
* or due to some communication error.
|
||||
*
|
||||
* @param[in,out] instance pointer to the worker instance to be modified.
|
||||
* @param[in] callback pointer to the callback function to be called under the above conditions.
|
||||
* @param[in] context pointer to a user-defined object, will be passed as a parameter to the callback.
|
||||
*/
|
||||
void expansion_worker_set_callback(
|
||||
ExpansionWorker* instance,
|
||||
ExpansionWorkerCallback callback,
|
||||
void* context);
|
||||
|
||||
/**
|
||||
* @brief Start the expansion module worker.
|
||||
*
|
||||
* @param[in,out] instance pointer to the worker instance to be started.
|
||||
*/
|
||||
void expansion_worker_start(ExpansionWorker* instance);
|
||||
|
||||
/**
|
||||
* @brief Stop the expansion module worker.
|
||||
*
|
||||
* If the worker was stopped via this call (and not because of module disconnect/
|
||||
* protocol error), the callback will not be triggered.
|
||||
*
|
||||
* @param[in,out] instance pointer to the worker instance to be stopped.
|
||||
*/
|
||||
void expansion_worker_stop(ExpansionWorker* instance);
|
||||
|
||||
Reference in New Issue
Block a user