- std::string get_name() { return name_; }
- const char* get_cname() { return name_.c_str(); }
- double get_area() { return area_m2_; }
- double get_conversion_efficiency() { return conversion_efficiency_; }
- double get_solar_irradiance() { return solar_irradiance_w_per_m2_; }
- double get_min_power() { return min_power_w_; }
- double get_max_power() { return max_power_w_; }
- double get_power() { return power_w_; }
+ std::string get_name() const { return name_; }
+ const char* get_cname() const { return name_.c_str(); }
+ double get_area() const { return area_m2_; }
+ double get_conversion_efficiency() const { return conversion_efficiency_; }
+ double get_solar_irradiance() const { return solar_irradiance_w_per_m2_; }
+ double get_min_power() const { return min_power_w_; }
+ double get_max_power() const { return max_power_w_; }
+ double get_power() const { return power_w_; }
+
+ /** Add a callback fired after this solar panel power changed. */
+ void on_this_power_change_cb(const std::function<void(SolarPanel*)>& func) { on_this_power_change.connect(func); };
+ /** Add a callback fired after a solar panel power changed.
+ * Triggered after the on_this_power_change function.**/
+ static void on_power_change_cb(const std::function<void(SolarPanel*)>& cb) { on_power_change.connect(cb); }