Инкапсуляция данных в 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 из любого места в моем коде (также из-за пределов моего компонента), который мне не нравится
Это единственный способ сделать это? Вы знаете о лучшем способе?
Благодарю.