Инкапсуляция данных в C

В настоящее время я работаю над встроенной системой, и у меня есть компонент на плате, который появляется два раза. Я хотел бы иметь один .c и один .h файл для компонента.

У меня есть следующий код:

typedef struct {
    uint32_t pin_reset;
    uint32_t pin_drdy;
    uint32_t pin_start;
    volatile avr32_spi_t *spi_module;
    uint8_t cs_id;  
} ads1248_options_t;

Это все настройки оборудования. Я создаю два экземпляра этой структуры (по одному для каждой части).

Теперь мне нужно сохранить массив значений в фоновом режиме. Например. Я могу читать значения с этого устройства каждую секунду, и я хочу сохранить последние 100 значений. Я хотел бы, чтобы эти данные были недоступны извне моего компонента (только через специальные функции в моем компоненте).

Я не уверен, как поступить здесь. Мне действительно нужно сделать массив частью моей структуры? То, о чем я думал, будет делать следующее:

int32_t *adc_values; // <-- Add this to struct

int32_t *adc_value_buffer = malloc(sizeof(int32_t) * 100); // <-- Call in initialize function, this will never be freed on purpose

Тем не менее, я смогу получить доступ к моему указателю int32_t из любого места в моем коде (также из-за пределов моего компонента), который мне не нравится

Это единственный способ сделать это? Вы знаете о лучшем способе?

Благодарю.

Ответы на вопрос(5)

Ваш ответ на вопрос