query_store.hpp 1.93 KB
/*
 * Copyright (c) 2015-2016, Arkadiusz Materek (arekmat@poczta.fm)
 *
 * Licensed under GNU General Public License 3.0 or later.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 */

#ifndef DALI_CONTROLLER_QUERY_HPP_
#define DALI_CONTROLLER_QUERY_HPP_

#include "lamp.hpp"
#include "memory.hpp"

namespace dali {
namespace controller {

class QueryStore {

public:
  explicit QueryStore(Memory* memory, Lamp* lamp);
  virtual ~QueryStore() {};

  Status reset();
  Status storeActualLevelInDtr();
  Status storeDtrAsMaxLevel();
  Status storeDtrAsMinLevel();
  Status storeDtrAsFailureLevel();
  Status storePowerOnLevel();
  Status storeDtrAsFadeTime();
  Status storeDtrAsFadeRate();
  Status storeDtrAsScene(uint8_t scene);
  Status removeFromScene(uint8_t scene);
  Status addToGroup(uint8_t group);
  Status removeFromGroup(uint8_t group);
  Status storeDtrAsShortAddr();
  uint8_t queryStatus();
  bool queryLampFailure();
  bool queryLampPowerOn();
  bool queryLampLimitError();
  bool queryIsFading();
  bool queryResetState();
  bool queryMissingShortAddr();
  bool queryLampPowerSet();
  uint8_t queryActualLevel();
  uint8_t queryMaxLevel();
  uint8_t queryMinLevel();
  uint8_t queryPowerOnLevel();
  uint8_t queryFaliureLevel();
  uint8_t queryFadeRateOrTime();
  uint8_t queryLevelForScene(uint8_t scene);
  uint8_t queryGroupsL();
  uint8_t queryGroupsH();
  uint8_t queryRandomAddrH();
  uint8_t queryRandomAddrM();
  uint8_t queryRandomAddrL();

private:
  bool isMemoryValid();

  QueryStore(const QueryStore& other) = delete;
  QueryStore& operator=(const QueryStore&) = delete;

  Memory* const mMemoryController;
  Lamp* const mLampController;
};

} // namespace controller
} // namespace dali

#endif // DALI_CONTROLLER_QUERY_HPP_