Flipper Zero Firmware
|
Simple digital signal container for the DigitalSequence library. More...
#include <stdint.h>
#include <stdbool.h>
Go to the source code of this file.
Macros | |
#define | DIGITAL_SIGNAL_MS(x) |
#define | DIGITAL_SIGNAL_US(x) |
#define | DIGITAL_SIGNAL_NS(x) |
#define | DIGITAL_SIGNAL_PS(x) |
Typedefs | |
typedef struct DigitalSignal | DigitalSignal |
Functions | |
DigitalSignal * | digital_signal_alloc (uint32_t max_size) |
Allocate a DigitalSignal instance with a defined maximum size. | |
void | digital_signal_free (DigitalSignal *signal) |
Delete a previously allocated DigitalSignal instance. | |
void | digital_signal_add_period (DigitalSignal *signal, uint32_t ticks) |
Append one period to the end of the DigitalSignal instance. | |
void | digital_signal_add_period_with_level (DigitalSignal *signal, uint32_t ticks, bool level) |
Append one period to the end of the DigitalSignal instance, with the level specified. | |
bool | digital_signal_get_start_level (const DigitalSignal *signal) |
Get the current start level contained in the DigitalSignal instance. | |
void | digital_signal_set_start_level (DigitalSignal *signal, bool level) |
Set the start level contained in the DigitalSignal instance. | |
uint32_t | digital_signal_get_size (const DigitalSignal *signal) |
Get the number of periods currently stored in a DigitalSignal instance. | |
Simple digital signal container for the DigitalSequence library.
Each signal is represented by its start level (high or low) and one or more periods. The output will transition to its inverse value on each period boundary.
Example: A signal with n periods and HIGH start level.
#define DIGITAL_SIGNAL_MS | ( | x | ) |
#define DIGITAL_SIGNAL_NS | ( | x | ) |
#define DIGITAL_SIGNAL_PS | ( | x | ) |
#define DIGITAL_SIGNAL_US | ( | x | ) |
void digital_signal_add_period | ( | DigitalSignal * | signal, |
uint32_t | ticks ) |
Append one period to the end of the DigitalSignal instance.
[in,out] | signal | pointer to a the instance to append to. |
[in] | ticks | the period length, in 10 picosecond units. |
void digital_signal_add_period_with_level | ( | DigitalSignal * | signal, |
uint32_t | ticks, | ||
bool | level ) |
Append one period to the end of the DigitalSignal instance, with the level specified.
If the level is the same as the last level contained in the instance, then it is extened by the given ticks value. Otherwise, the behaviour is identical to digital_signal_add_period().
Example 1: add tc with HIGH level
Example 2: add tc with LOW level
[in,out] | signal | pointer to the instance to append to. |
[in] | ticks | the period length, in 10 picosecond units. |
[in] | level | the level to be set during the period. |
DigitalSignal * digital_signal_alloc | ( | uint32_t | max_size | ) |
Allocate a DigitalSignal instance with a defined maximum size.
[in] | max_size | the maximum number of periods the instance will be able to contain. |
void digital_signal_free | ( | DigitalSignal * | signal | ) |
Delete a previously allocated DigitalSignal instance.
[in,out] | signal | pointer to the instance to be deleted. |
uint32_t digital_signal_get_size | ( | const DigitalSignal * | signal | ) |
Get the number of periods currently stored in a DigitalSignal instance.
[in] | signal | pointer to the instance to be queried. |
bool digital_signal_get_start_level | ( | const DigitalSignal * | signal | ) |
Get the current start level contained in the DigitalSignal instance.
If not explicitly set with digital_signal_set_start_level(), it defaults to false.
[in] | signal | pointer to the instance to be queried. |
void digital_signal_set_start_level | ( | DigitalSignal * | signal, |
bool | level ) |
Set the start level contained in the DigitalSignal instance.
[in,out] | signal | pointer to the instance to be modified. |
[in] | level | signal level to be set as the start level. |