~ruther/CTU-FEE-B0B35APO-Semestral-project

0b5a39468c7377737e604dd8b75c041275474d71 — František Boháček 4 years ago 4368d8a
refactor: put all pheripherals to one object
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;
}