fix osem block code generator

This commit is contained in:
Mario Pesch 2022-01-31 16:07:32 +01:00
parent 2cc4d9e84d
commit a5059f9369

View File

@ -44,8 +44,6 @@ Blockly.Arduino.sensebox_osem_connection = function (Block) {
} }
var num_sensors = count; var num_sensors = count;
Blockly.Arduino.libraries_["library_senseBoxIO"] = "#include <senseBoxIO.h>"; Blockly.Arduino.libraries_["library_senseBoxIO"] = "#include <senseBoxIO.h>";
Blockly.Arduino.setupCode_["initBearSSL"] =
"ArduinoBearSSL.onGetTime(getTime);";
Blockly.Arduino.definitions_["num_sensors"] = Blockly.Arduino.definitions_["num_sensors"] =
"static const uint8_t NUM_SENSORS = " + num_sensors + ";"; "static const uint8_t NUM_SENSORS = " + num_sensors + ";";
Blockly.Arduino.definitions_["SenseBoxID"] = Blockly.Arduino.definitions_["SenseBoxID"] =
@ -53,22 +51,6 @@ Blockly.Arduino.sensebox_osem_connection = function (Block) {
Blockly.Arduino.definitions_["host"] = Blockly.Arduino.definitions_["host"] =
'const char server [] PROGMEM ="ingress.opensensemap.org";'; 'const char server [] PROGMEM ="ingress.opensensemap.org";';
if (wifi === true) { if (wifi === true) {
if (ssl === "TRUE") {
Blockly.Arduino.definitions_["WiFiSSLClient"] = "WiFiSSLClient client;";
port = 443;
} else if (ssl === "FALSE") {
Blockly.Arduino.definitions_["WiFiClient"] = "WiFiClient client;";
port = 80;
}
} else if (ethernet === true) {
if (ssl === "TRUE") {
Blockly.Arduino.definitions_["WiFiSSLClient"] = "WiFiSSLClient client;";
port = 443;
} else if (ssl === "FALSE") {
Blockly.Arduino.definitions_["EthernetClient"] = "EthernetClient client;";
port = 80;
}
if (ssl === "TRUE") { if (ssl === "TRUE") {
Blockly.Arduino.libraries_["library_bearSSL"] = Blockly.Arduino.libraries_["library_bearSSL"] =
"#include <ArduinoBearSSL.h>"; "#include <ArduinoBearSSL.h>";
@ -80,31 +62,45 @@ Blockly.Arduino.sensebox_osem_connection = function (Block) {
Blockly.Arduino.functionNames_["getTime"] = `unsigned long getTime() { Blockly.Arduino.functionNames_["getTime"] = `unsigned long getTime() {
return WiFi.getTime(); return WiFi.getTime();
}`; }`;
Blockly.Arduino.setupCode_["initBearSSL"] =
"ArduinoBearSSL.onGetTime(getTime);";
port = 443; port = 443;
} else if (ssl === "FALSE") { } else if (ssl === "FALSE") {
Blockly.Arduino.definitions_["WiFiClient"] = "WiFiClient client;"; Blockly.Arduino.definitions_["WiFiClient"] = "WiFiClient client;";
port = 80; port = 80;
} }
} else if (ethernet === true) {
Blockly.Arduino.definitions_["measurement"] = `typedef struct measurement { if (ssl === "TRUE") {
Blockly.Arduino.libraries_["library_bearSSL"] =
"#include <ArduinoBearSSL.h>";
Blockly.Arduino.libraries_["library_arduinoECC08"] =
"#include <ArduinoECCX08.h>";
Blockly.Arduino.definitions_["WiFiSSLClient"] = "WiFiSSLClient client;";
port = 443;
} else if (ssl === "FALSE") {
Blockly.Arduino.definitions_["EthernetClient"] = "EthernetClient client;";
port = 80;
}
}
Blockly.Arduino.definitions_["measurement"] = `typedef struct measurement {
const char *sensorId; const char *sensorId;
float value; float value;
} measurement;`; } measurement;`;
Blockly.Arduino.definitions_["buffer"] = "char buffer[750];"; Blockly.Arduino.definitions_["buffer"] = "char buffer[750];";
Blockly.Arduino.definitions_[ Blockly.Arduino.definitions_[
"num_measurement" "num_measurement"
] = `measurement measurements[NUM_SENSORS]; ] = `measurement measurements[NUM_SENSORS];
uint8_t num_measurements = 0;`; uint8_t num_measurements = 0;`;
Blockly.Arduino.definitions_["lengthMultiplikator"] = Blockly.Arduino.definitions_["lengthMultiplikator"] =
"const int lengthMultiplikator = 35;"; "const int lengthMultiplikator = 35;";
Blockly.Arduino.functionNames_["addMeasurement"] = ` Blockly.Arduino.functionNames_["addMeasurement"] = `
void addMeasurement(const char *sensorId, float value) { void addMeasurement(const char *sensorId, float value) {
measurements[num_measurements].sensorId = sensorId; measurements[num_measurements].sensorId = sensorId;
measurements[num_measurements].value = value; measurements[num_measurements].value = value;
num_measurements++; num_measurements++;
}`; }`;
if (type === "Stationary") { if (type === "Stationary") {
Blockly.Arduino.functionNames_["writeMeasurementsToClient"] = ` Blockly.Arduino.functionNames_["writeMeasurementsToClient"] = `
void writeMeasurementsToClient() { void writeMeasurementsToClient() {
// iterate throug the measurements array // iterate throug the measurements array
for (uint8_t i = 0; i < num_measurements; i++) { for (uint8_t i = 0; i < num_measurements; i++) {
@ -116,8 +112,8 @@ Blockly.Arduino.sensebox_osem_connection = function (Block) {
// reset num_measurements // reset num_measurements
num_measurements = 0; num_measurements = 0;
}`; }`;
Blockly.Arduino.functionNames_["submitValues"] = Blockly.Arduino.functionNames_["submitValues"] =
` `
void submitValues() { void submitValues() {
if (client.connected()) { if (client.connected()) {
client.stop(); client.stop();
@ -129,8 +125,8 @@ Blockly.Arduino.sensebox_osem_connection = function (Block) {
for (uint8_t timeout = 2; timeout != 0; timeout--) { for (uint8_t timeout = 2; timeout != 0; timeout--) {
Serial.println(F("connecting...")); Serial.println(F("connecting..."));
connected = client.connect(_server, ` + connected = client.connect(_server, ` +
port + port +
`); `);
if (connected == true) { if (connected == true) {
// construct the HTTP POST request: // construct the HTTP POST request:
sprintf_P(buffer, sprintf_P(buffer,
@ -158,33 +154,33 @@ Blockly.Arduino.sensebox_osem_connection = function (Block) {
} }
}`; }`;
var code = ""; var code = "";
code += branch; code += branch;
code += "submitValues();\n"; code += "submitValues();\n";
} else if (type === "Mobile") { } else if (type === "Mobile") {
var lat = Blockly.Arduino.valueToCode( var lat = Blockly.Arduino.valueToCode(
Block, Block,
"lat", "lat",
Blockly.Arduino.ORDER_ATOMIC Blockly.Arduino.ORDER_ATOMIC
); );
var lng = Blockly.Arduino.valueToCode( var lng = Blockly.Arduino.valueToCode(
Block, Block,
"lng", "lng",
Blockly.Arduino.ORDER_ATOMIC Blockly.Arduino.ORDER_ATOMIC
); );
var timestamp = Blockly.Arduino.valueToCode( var timestamp = Blockly.Arduino.valueToCode(
Block, Block,
"timeStamp", "timeStamp",
Blockly.Arduino.ORDER_ATOMIC Blockly.Arduino.ORDER_ATOMIC
); );
var altitude = Blockly.Arduino.valueToCode( var altitude = Blockly.Arduino.valueToCode(
Block, Block,
"altitude", "altitude",
Blockly.Arduino.ORDER_ATOMIC Blockly.Arduino.ORDER_ATOMIC
); );
Blockly.Arduino.definitions_["lengthMultiplikator"] = Blockly.Arduino.definitions_["lengthMultiplikator"] =
"const int lengthMultiplikator = 77;"; "const int lengthMultiplikator = 77;";
Blockly.Arduino.functionNames_["writeMeasurementsToClient"] = ` Blockly.Arduino.functionNames_["writeMeasurementsToClient"] = `
void writeMeasurementsToClient(float lat, float lng, float altitude, char* timeStamp) { void writeMeasurementsToClient(float lat, float lng, float altitude, char* timeStamp) {
// iterate throug the measurements array // iterate throug the measurements array
for (uint8_t i = 0; i < num_measurements; i++) { for (uint8_t i = 0; i < num_measurements; i++) {
@ -196,10 +192,10 @@ Blockly.Arduino.sensebox_osem_connection = function (Block) {
// reset num_measurements // reset num_measurements
num_measurements = 0; num_measurements = 0;
}`; }`;
Blockly.Arduino.variables_["latitude"] = "float latitude;"; Blockly.Arduino.variables_["latitude"] = "float latitude;";
Blockly.Arduino.variables_["longitude"] = "float longitude;"; Blockly.Arduino.variables_["longitude"] = "float longitude;";
Blockly.Arduino.functionNames_["submitValues"] = Blockly.Arduino.functionNames_["submitValues"] =
` `
void submitValues(float lat, float lng, float altitude, char* timeStamp) { void submitValues(float lat, float lng, float altitude, char* timeStamp) {
if (client.connected()) { if (client.connected()) {
client.stop(); client.stop();
@ -211,8 +207,8 @@ Blockly.Arduino.sensebox_osem_connection = function (Block) {
for (uint8_t timeout = 2; timeout != 0; timeout--) { for (uint8_t timeout = 2; timeout != 0; timeout--) {
Serial.println(F("connecting...")); Serial.println(F("connecting..."));
connected = client.connect(_server, ` + connected = client.connect(_server, ` +
port + port +
`); `);
if (connected == true) { if (connected == true) {
// construct the HTTP POST request: // construct the HTTP POST request:
sprintf_P(buffer, sprintf_P(buffer,
@ -240,19 +236,18 @@ Blockly.Arduino.sensebox_osem_connection = function (Block) {
} }
} }
}`; }`;
code = ""; code = "";
code += branch; code += branch;
code += code +=
"submitValues((" + "submitValues((" +
lat + lat +
"/float(10000000)),(" + "/float(10000000)),(" +
lng + lng +
"/float(10000000)),(" + "/float(10000000)),(" +
altitude + altitude +
"/float(100))," + "/float(100))," +
timestamp + timestamp +
");\n"; ");\n";
}
return code;
} }
return code;
}; };