mirror of
https://github.com/Next-Flip/Momentum-Firmware.git
synced 2026-04-29 04:09:58 -07:00
Formatting & New updated IR
This commit is contained in:
@@ -8,15 +8,15 @@
|
||||
#include "app_buffer.h"
|
||||
|
||||
/* Allocate and initialize a samples buffer. */
|
||||
RawSamplesBuffer *raw_samples_alloc(void) {
|
||||
RawSamplesBuffer *buf = malloc(sizeof(*buf));
|
||||
RawSamplesBuffer* raw_samples_alloc(void) {
|
||||
RawSamplesBuffer* buf = malloc(sizeof(*buf));
|
||||
buf->mutex = furi_mutex_alloc(FuriMutexTypeNormal);
|
||||
raw_samples_reset(buf);
|
||||
return buf;
|
||||
}
|
||||
|
||||
/* Free a sample buffer. Should be called when the mutex is released. */
|
||||
void raw_samples_free(RawSamplesBuffer *s) {
|
||||
void raw_samples_free(RawSamplesBuffer* s) {
|
||||
furi_mutex_free(s->mutex);
|
||||
free(s);
|
||||
}
|
||||
@@ -24,36 +24,35 @@ void raw_samples_free(RawSamplesBuffer *s) {
|
||||
/* This just set all the samples to zero and also resets the internal
|
||||
* index. There is no need to call it after raw_samples_alloc(), but only
|
||||
* when one wants to reset the whole buffer of samples. */
|
||||
void raw_samples_reset(RawSamplesBuffer *s) {
|
||||
furi_mutex_acquire(s->mutex,FuriWaitForever);
|
||||
void raw_samples_reset(RawSamplesBuffer* s) {
|
||||
furi_mutex_acquire(s->mutex, FuriWaitForever);
|
||||
s->total = RAW_SAMPLES_NUM;
|
||||
s->idx = 0;
|
||||
s->short_pulse_dur = 0;
|
||||
memset(s->level,0,sizeof(s->level));
|
||||
memset(s->dur,0,sizeof(s->dur));
|
||||
memset(s->level, 0, sizeof(s->level));
|
||||
memset(s->dur, 0, sizeof(s->dur));
|
||||
furi_mutex_release(s->mutex);
|
||||
}
|
||||
|
||||
/* Set the raw sample internal index so that what is currently at
|
||||
* offset 'offset', will appear to be at 0 index. */
|
||||
void raw_samples_center(RawSamplesBuffer *s, uint32_t offset) {
|
||||
s->idx = (s->idx+offset) % RAW_SAMPLES_NUM;
|
||||
void raw_samples_center(RawSamplesBuffer* s, uint32_t offset) {
|
||||
s->idx = (s->idx + offset) % RAW_SAMPLES_NUM;
|
||||
}
|
||||
|
||||
/* Add the specified sample in the circular buffer. */
|
||||
void raw_samples_add(RawSamplesBuffer *s, bool level, uint32_t dur) {
|
||||
furi_mutex_acquire(s->mutex,FuriWaitForever);
|
||||
void raw_samples_add(RawSamplesBuffer* s, bool level, uint32_t dur) {
|
||||
furi_mutex_acquire(s->mutex, FuriWaitForever);
|
||||
s->level[s->idx] = level;
|
||||
s->dur[s->idx] = dur;
|
||||
s->idx = (s->idx+1) % RAW_SAMPLES_NUM;
|
||||
s->idx = (s->idx + 1) % RAW_SAMPLES_NUM;
|
||||
furi_mutex_release(s->mutex);
|
||||
}
|
||||
|
||||
/* Get the sample from the buffer. It is possible to use out of range indexes
|
||||
* as 'idx' because the modulo operation will rewind back from the start. */
|
||||
void raw_samples_get(RawSamplesBuffer *s, uint32_t idx, bool *level, uint32_t *dur)
|
||||
{
|
||||
furi_mutex_acquire(s->mutex,FuriWaitForever);
|
||||
void raw_samples_get(RawSamplesBuffer* s, uint32_t idx, bool* level, uint32_t* dur) {
|
||||
furi_mutex_acquire(s->mutex, FuriWaitForever);
|
||||
idx = (s->idx + idx) % RAW_SAMPLES_NUM;
|
||||
*level = s->level[idx];
|
||||
*dur = s->dur[idx];
|
||||
@@ -61,13 +60,13 @@ void raw_samples_get(RawSamplesBuffer *s, uint32_t idx, bool *level, uint32_t *d
|
||||
}
|
||||
|
||||
/* Copy one buffer to the other, including current index. */
|
||||
void raw_samples_copy(RawSamplesBuffer *dst, RawSamplesBuffer *src) {
|
||||
furi_mutex_acquire(src->mutex,FuriWaitForever);
|
||||
furi_mutex_acquire(dst->mutex,FuriWaitForever);
|
||||
void raw_samples_copy(RawSamplesBuffer* dst, RawSamplesBuffer* src) {
|
||||
furi_mutex_acquire(src->mutex, FuriWaitForever);
|
||||
furi_mutex_acquire(dst->mutex, FuriWaitForever);
|
||||
dst->idx = src->idx;
|
||||
dst->short_pulse_dur = src->short_pulse_dur;
|
||||
memcpy(dst->level,src->level,sizeof(dst->level));
|
||||
memcpy(dst->dur,src->dur,sizeof(dst->dur));
|
||||
memcpy(dst->level, src->level, sizeof(dst->level));
|
||||
memcpy(dst->dur, src->dur, sizeof(dst->dur));
|
||||
furi_mutex_release(src->mutex);
|
||||
furi_mutex_release(dst->mutex);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user