this->add_module( this->planner = new Planner() );
this->add_module( this->conveyor = new Conveyor() );
this->add_module( this->pauser = new Pauser() );
- this->add_module( this->public_data = new PublicData() );
}
// Add a module to Kernel. We don't actually hold a list of modules, we just tell it where Kernel is
SlowTicker* slow_ticker;
StepTicker* step_ticker;
Adc* adc;
- PublicData* public_data;
bool use_leds;
std::string current_path;
#ifndef PUBLICDATA_H
#define PUBLICDATA_H
-#include "Module.h"
-
-class PublicData : public Module {
+class PublicData {
public:
- bool get_value(uint16_t csa, void **data) { return get_value(csa, 0, 0, data); }
- bool get_value(uint16_t csa, uint16_t csb, void **data) { return get_value(csa, csb, 0, data); }
- bool get_value(uint16_t cs[3], void **data) { return get_value(cs[0], cs[1], cs[2], data); };
- bool get_value(uint16_t csa, uint16_t csb, uint16_t csc, void **data);
+ static bool get_value(uint16_t csa, void **data) { return get_value(csa, 0, 0, data); }
+ static bool get_value(uint16_t csa, uint16_t csb, void **data) { return get_value(csa, csb, 0, data); }
+ static bool get_value(uint16_t cs[3], void **data) { return get_value(cs[0], cs[1], cs[2], data); };
+ static bool get_value(uint16_t csa, uint16_t csb, uint16_t csc, void **data);
- bool set_value(uint16_t csa, void *data) { return set_value(csa, 0, 0, data); }
- bool set_value(uint16_t csa, uint16_t csb, void *data) { return set_value(csa, csb, 0, data); }
- bool set_value(uint16_t cs[3], void *data) { return set_value(cs[0], cs[1], cs[2], data); }
- bool set_value(uint16_t csa, uint16_t csb, uint16_t csc, void *data);
+ static bool set_value(uint16_t csa, void *data) { return set_value(csa, 0, 0, data); }
+ static bool set_value(uint16_t csa, uint16_t csb, void *data) { return set_value(csa, csb, 0, data); }
+ static bool set_value(uint16_t cs[3], void *data) { return set_value(cs[0], cs[1], cs[2], data); }
+ static bool set_value(uint16_t csa, uint16_t csb, uint16_t csc, void *data);
};
#endif
// get the temperature control instance with this pool index
void *returned_data;
- bool ok = THEKERNEL->public_data->get_value( temperature_control_checksum, pool_index_checksum, pool_index, &returned_data );
+ bool ok = PublicData::get_value( temperature_control_checksum, pool_index_checksum, pool_index, &returned_data );
if (ok) {
this->temp_control = *static_cast<TemperatureControl **>(returned_data);
// this is safe as old configs as well as single extruder configs the toolmanager will not be running so will return false
// this will also ignore anything that the tool manager is not controlling and return false, otherwise it returns the active tool
void *returned_data;
- bool ok = THEKERNEL->public_data->get_value( tool_manager_checksum, is_active_tool_checksum, this->name_checksum, &returned_data );
+ bool ok = PublicData::get_value( tool_manager_checksum, is_active_tool_checksum, this->name_checksum, &returned_data );
if (ok) {
uint16_t active_tool_name = *static_cast<uint16_t *>(returned_data);
this->active = (active_tool_name == this->name_checksum);
bool ZProbe::set_trim(float x, float y, float z, StreamOutput *stream)
{
float t[3]{x, y, z};
- bool ok= THEKERNEL->public_data->set_value( endstops_checksum, trim_checksum, t);
+ bool ok= PublicData::set_value( endstops_checksum, trim_checksum, t);
if (ok) {
stream->printf("set trim to X:%f Y:%f Z:%f\n", x, y, z);
bool ZProbe::get_trim(float& x, float& y, float& z)
{
void *returned_data;
- bool ok = THEKERNEL->public_data->get_value( endstops_checksum, trim_checksum, &returned_data );
+ bool ok = PublicData::get_value( endstops_checksum, trim_checksum, &returned_data );
if (ok) {
float *trim = static_cast<float *>(returned_data);
{
void *returned_data;
- bool ok = THEKERNEL->public_data->get_value( player_checksum, is_playing_checksum, &returned_data );
+ bool ok = PublicData::get_value( player_checksum, is_playing_checksum, &returned_data );
if (ok) {
bool b = *static_cast<bool *>(returned_data);
return b;
static float getTargetTemperature(uint16_t heater_cs)
{
void *returned_data;
- bool ok = THEKERNEL->public_data->get_value( temperature_control_checksum, heater_cs, current_temperature_checksum, &returned_data );
+ bool ok = PublicData::get_value( temperature_control_checksum, heater_cs, current_temperature_checksum, &returned_data );
if (ok) {
struct pad_temperature temp = *static_cast<struct pad_temperature *>(returned_data);
for(auto i : modules) {
if (!THEKERNEL->config->value(temperature_control_checksum, i, enable_checksum )->as_bool()) continue;
void *returned_data;
- bool ok = THEKERNEL->public_data->get_value( temperature_control_checksum, i, current_temperature_checksum, &returned_data );
+ bool ok = PublicData::get_value( temperature_control_checksum, i, current_temperature_checksum, &returned_data );
if (!ok) continue;
struct pad_temperature t = *static_cast<struct pad_temperature *>(returned_data);
mvs->addMenuItem(name, // menu name
[i]() -> float { return getTargetTemperature(i); }, // getter
- [i](float t) { THEKERNEL->public_data->set_value( temperature_control_checksum, i, &t ); }, // setter
+ [i](float t) { PublicData::set_value( temperature_control_checksum, i, &t ); }, // setter
1.0F, // increment
0.0F, // Min
500.0F // Max
{
void *returned_data;
- bool ok = THEKERNEL->public_data->get_value( robot_checksum, current_position_checksum, &returned_data );
+ bool ok = PublicData::get_value( robot_checksum, current_position_checksum, &returned_data );
if (ok) {
float *p = static_cast<float *>(returned_data);
cp[0] = p[0];
mvs->addMenuItem("E steps/mm",
// gets steps/mm for currently active extruder
- []() -> float { float *rd; if(THEKERNEL->public_data->get_value( extruder_checksum, (void **)&rd )) return *rd; else return 0.0F; },
+ []() -> float { float *rd; if(PublicData::get_value( extruder_checksum, (void **)&rd )) return *rd; else return 0.0F; },
[this](float v) { send_gcode("M92", 'E', v); },
0.1F,
1.0F
mvs->addMenuItem("Filament diameter",
// gets filament diameter for currently active extruder
- []() -> float { float *rd; if(THEKERNEL->public_data->get_value( extruder_checksum, (void **)&rd )) return *(rd+1); else return 0.0F; },
+ []() -> float { float *rd; if(PublicData::get_value( extruder_checksum, (void **)&rd )) return *(rd+1); else return 0.0F; },
[this](float v) { send_gcode("M200", 'D', v); },
0.01F,
0.0F,
);
mvs->addMenuItem("Z Home Ofs",
- []() -> float { void *rd; THEKERNEL->public_data->get_value( endstops_checksum, home_offset_checksum, &rd ); return rd==nullptr ? 0.0F : ((float*)rd)[2]; },
+ []() -> float { void *rd; PublicData::get_value( endstops_checksum, home_offset_checksum, &rd ); return rd==nullptr ? 0.0F : ((float*)rd)[2]; },
[this](float v) { send_gcode("M206", 'Z', v); },
0.1F
);
void MainMenuScreen::abort_playing()
{
- THEKERNEL->public_data->set_value(player_checksum, abort_play_checksum, NULL);
+ PublicData::set_value(player_checksum, abort_play_checksum, NULL);
THEPANEL->enter_screen(this->watch_screen);
}
void PrepareScreen::preheat()
{
float t = THEPANEL->get_default_hotend_temp();
- THEKERNEL->public_data->set_value( temperature_control_checksum, hotend_checksum, &t );
+ PublicData::set_value( temperature_control_checksum, hotend_checksum, &t );
t = THEPANEL->get_default_bed_temp();
- THEKERNEL->public_data->set_value( temperature_control_checksum, bed_checksum, &t );
+ PublicData::set_value( temperature_control_checksum, bed_checksum, &t );
}
void PrepareScreen::cooldown()
{
float t = 0;
- THEKERNEL->public_data->set_value( temperature_control_checksum, hotend_checksum, &t );
- THEKERNEL->public_data->set_value( temperature_control_checksum, bed_checksum, &t );
+ PublicData::set_value( temperature_control_checksum, hotend_checksum, &t );
+ PublicData::set_value( temperature_control_checksum, bed_checksum, &t );
}
// queuing commands needs to be done from main loop
void *returned_data;
bool ok;
- ok = THEKERNEL->public_data->get_value( temperature_control_checksum, bed_checksum, current_temperature_checksum, &returned_data );
+ ok = PublicData::get_value( temperature_control_checksum, bed_checksum, current_temperature_checksum, &returned_data );
if (ok) {
struct pad_temperature temp = *static_cast<struct pad_temperature *>(returned_data);
this->bedtemp = round(temp.current_temperature);
}
- ok = THEKERNEL->public_data->get_value( temperature_control_checksum, hotend_checksum, current_temperature_checksum, &returned_data );
+ ok = PublicData::get_value( temperature_control_checksum, hotend_checksum, current_temperature_checksum, &returned_data );
if (ok) {
struct pad_temperature temp = *static_cast<struct pad_temperature *>(returned_data);
this->hotendtemp = round(temp.current_temperature);
}
// get fan status
- ok = THEKERNEL->public_data->get_value( switch_checksum, fan_checksum, 0, &returned_data );
+ ok = PublicData::get_value( switch_checksum, fan_checksum, 0, &returned_data );
if (ok) {
struct pad_switch s = *static_cast<struct pad_switch *>(returned_data);
this->fan_state = s.state;
{
void *returned_data;
- bool ok = THEKERNEL->public_data->get_value( robot_checksum, speed_override_percent_checksum, &returned_data );
+ bool ok = PublicData::get_value( robot_checksum, speed_override_percent_checksum, &returned_data );
if (ok) {
float cs = *static_cast<float *>(returned_data);
return cs;
{
void *returned_data;
- bool ok = THEKERNEL->public_data->get_value( robot_checksum, current_position_checksum, &returned_data );
+ bool ok = PublicData::get_value( robot_checksum, current_position_checksum, &returned_data );
if (ok) {
float *p = static_cast<float *>(returned_data);
cp[0] = p[0];
void WatchScreen::get_sd_play_info()
{
void *returned_data;
- bool ok = THEKERNEL->public_data->get_value( player_checksum, get_progress_checksum, &returned_data );
+ bool ok = PublicData::get_value( player_checksum, get_progress_checksum, &returned_data );
if (ok) {
struct pad_progress p = *static_cast<struct pad_progress *>(returned_data);
this->elapsed_time = p.elapsed_secs;
{
void *returned_data;
- bool ok = THEKERNEL->public_data->get_value( network_checksum, get_ip_checksum, &returned_data );
+ bool ok = PublicData::get_value( network_checksum, get_ip_checksum, &returned_data );
if (ok) {
uint8_t *ipaddr = (uint8_t *)returned_data;
char buf[20];
void SimpleShell::net_command( string parameters, StreamOutput *stream)
{
void *returned_data;
- bool ok= THEKERNEL->public_data->get_value( network_checksum, get_ipconfig_checksum, &returned_data );
+ bool ok= PublicData::get_value( network_checksum, get_ipconfig_checksum, &returned_data );
if(ok) {
char *str= (char *)returned_data;
stream->printf("%s\r\n", str);
if (what == "temp") {
string type = shift_parameter( parameters );
- bool ok = THEKERNEL->public_data->get_value( temperature_control_checksum, get_checksum(type), current_temperature_checksum, &returned_data );
+ bool ok = PublicData::get_value( temperature_control_checksum, get_checksum(type), current_temperature_checksum, &returned_data );
if (ok) {
struct pad_temperature temp = *static_cast<struct pad_temperature *>(returned_data);
}
} else if (what == "pos") {
- bool ok = THEKERNEL->public_data->get_value( robot_checksum, current_position_checksum, &returned_data );
+ bool ok = PublicData::get_value( robot_checksum, current_position_checksum, &returned_data );
if (ok) {
float *pos = static_cast<float *>(returned_data);
string type = shift_parameter( parameters );
string temp = shift_parameter( parameters );
float t = temp.empty() ? 0.0 : strtof(temp.c_str(), NULL);
- bool ok = THEKERNEL->public_data->set_value( temperature_control_checksum, get_checksum(type), &t );
+ bool ok = PublicData::set_value( temperature_control_checksum, get_checksum(type), &t );
if (ok) {
stream->printf("%s temp set to: %3.1f\r\n", type.c_str(), t);