| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- /**
- * @file pubsub.h
- * FuriPubSub
- */
- #pragma once
- #ifdef __cplusplus
- extern "C" {
- #endif
- /** FuriPubSub Callback type */
- typedef void (*FuriPubSubCallback)(const void* message, void* context);
- /** FuriPubSub type */
- typedef struct FuriPubSub FuriPubSub;
- /** FuriPubSubSubscription type */
- typedef struct FuriPubSubSubscription FuriPubSubSubscription;
- /** Allocate FuriPubSub
- *
- * Reentrable, Not threadsafe, one owner
- *
- * @return pointer to FuriPubSub instance
- */
- FuriPubSub* furi_pubsub_alloc();
- /** Free FuriPubSub
- *
- * @param pubsub FuriPubSub instance
- */
- void furi_pubsub_free(FuriPubSub* pubsub);
- /** Subscribe to FuriPubSub
- *
- * Threadsafe, Reentrable
- *
- * @param pubsub pointer to FuriPubSub instance
- * @param[in] callback The callback
- * @param callback_context The callback context
- *
- * @return pointer to FuriPubSubSubscription instance
- */
- FuriPubSubSubscription*
- furi_pubsub_subscribe(FuriPubSub* pubsub, FuriPubSubCallback callback, void* callback_context);
- /** Unsubscribe from FuriPubSub
- *
- * No use of `pubsub_subscription` allowed after call of this method
- * Threadsafe, Reentrable.
- *
- * @param pubsub pointer to FuriPubSub instance
- * @param pubsub_subscription pointer to FuriPubSubSubscription instance
- */
- void furi_pubsub_unsubscribe(FuriPubSub* pubsub, FuriPubSubSubscription* pubsub_subscription);
- /** Publish message to FuriPubSub
- *
- * Threadsafe, Reentrable.
- *
- * @param pubsub pointer to FuriPubSub instance
- * @param message message pointer to publish
- */
- void furi_pubsub_publish(FuriPubSub* pubsub, void* message);
- #ifdef __cplusplus
- }
- #endif
|