M lib-pheripherals/include/mzapo_pheripherals.h => lib-pheripherals/include/mzapo_pheripherals.h +11 -0
@@ 10,6 10,12 @@
#ifdef __cplusplus
extern "C" {
#endif
+ typedef struct {
+ display_t *display;
+ mzapo_rgb_led_t *rgb_leds;
+ mzapo_ledstrip_t *ledstrip;
+ void **knobs;
+ } mzapo_pheripherals_t;
mzapo_ledstrip_t mzapo_create_ledstrip();
mzapo_rgb_led_t mzapo_create_rgb_led();
@@ 17,6 23,11 @@ extern "C" {
void *mzapo_get_knobs_address();
+ mzapo_pheripherals_t mzapo_pheripherals_create(mzapo_ledstrip_t *ledstrip, mzapo_rgb_led_t *rgb_led, display_t *display, void **mzapo_knobs_address);
+ bool mzapo_check_pheripherals(mzapo_ledstrip_t *ledstrip,
+ mzapo_rgb_led_t *rgb_led, display_t *display,
+ void **mzapo_knobs_address);
+
#ifdef __cplusplus
} /* extern "C"*/
#endif
M lib-pheripherals/src/mzapo_pheripherals.c => lib-pheripherals/src/mzapo_pheripherals.c +39 -0
@@ 47,3 47,42 @@ void *mzapo_get_knobs_address() {
return pheripherals_base;
}
+
+mzapo_pheripherals_t mzapo_pheripherals_create(mzapo_ledstrip_t *ledstrip,
+ mzapo_rgb_led_t *rgb_led, display_t *display,
+ void **mzapo_knobs_address) {
+ mzapo_pheripherals_t pheripherals = {
+ .display = display,
+ .rgb_leds = rgb_led,
+ .ledstrip = ledstrip,
+ .knobs = mzapo_knobs_address
+ };
+
+ return pheripherals;
+}
+
+bool mzapo_check_pheripherals(mzapo_ledstrip_t *ledstrip,
+ mzapo_rgb_led_t *rgb_led, display_t *display,
+ void **mzapo_knobs_address) {
+ #ifdef COMPUTER
+ return true;
+ #endif
+
+ if (ledstrip != NULL && ledstrip->mem_base == NULL) {
+ return false;
+ }
+
+ if (rgb_led != NULL && rgb_led->mem_base == NULL) {
+ return false;
+ }
+
+ if (display != NULL && display->data.base_address == NULL) {
+ return false;
+ }
+
+ if (mzapo_knobs_address != NULL && *mzapo_knobs_address == NULL) {
+ return false;
+ }
+
+ return true;
+}