uplink works

This commit is contained in:
2023-01-26 11:26:36 +01:00
parent 4b119a7666
commit 8be1bae1e5
2 changed files with 51 additions and 10 deletions

View File

@ -89,12 +89,13 @@ static void prepareTxFrame( uint8_t port )
struct {
uint16_t status;
uint64_t addrs[NUM_OF_SENSORS];
} msg;
} __attribute__((packed)) msg;
msg.status = ERR_START_UP;
for (uint8_t i = 0; i < NUM_OF_SENSORS; i++) {
msg.addrs[i] = sensors[i].addr;
}
appDataSize = sizeof(msg);
Serial.printf("appDataSize: %ld\n\r", appDataSize);
memcpy(&appData, (void*)&msg, appDataSize);
display.drawString(1, 0, "Start up");
Serial.println("Start up message send");
@ -106,19 +107,22 @@ static void prepareTxFrame( uint8_t port )
struct {
uint64_t addr;
int32_t value;
} sensors[NUM_OF_SENSORS];
} msg;
} __attribute__((packed)) sensors[NUM_OF_SENSORS];
} __attribute__((packed)) msg;
msg.status = (DS18B20.getDS18Count() == NUM_OF_SENSORS) ? errorCode : errorCode | ERR_SENSOR_LOST;
DS18B20.requestTemperatures();
for (uint8_t i = 0; i < NUM_OF_SENSORS; i++) {
msg.sensors[i].addr = sensors[i].addr;
msg.sensors[i].value = DS18B20.getTemp((const uint8_t*)&(sensors[i].addr));
Serial.printf("%d: %s: %016llx\n\r", i, sensors[i].label, sensors[i].addr);
msg.sensors[i].value = DS18B20.getTemp(((const uint8_t*)(&(sensors[i].addr))));
Serial.printf("v: %08x\n\r", msg.sensors[i].value);
float tempC = ((float)msg.sensors[i].value) / 128;
Serial.printf("f: %.2f\n\r", tempC);
char dispbuf[128];
sprintf(dispbuf, "%s: %.2f °C", sensors[i].label, tempC);
display.drawString(1, i * 17, dispbuf);
Serial.printf("%d, %08x, %s, %.2f\n\r", sensors[i].index, sensors[i].addr, sensors[i].label, tempC);
display.drawString(1, i * 16, dispbuf);
Serial.printf("%d, %016llx, %s, %.2f\n\r", sensors[i].index, sensors[i].addr, sensors[i].label, tempC);
}
appDataSize = sizeof(msg);
memcpy(&appData, (void*)&msg, appDataSize);
@ -129,7 +133,7 @@ static void prepareTxFrame( uint8_t port )
errorCode = ERR_OK;
} else {
appDataSize = 1;
appDataSize = 2;
appData[0] = errorCode;
}
}
@ -188,14 +192,16 @@ void productionSetup() {
uint8_t cnt = DS18B20.getDS18Count();
if (cnt != 4) {
display.drawString(1, 0, "invalid number of sensors");
Serial.println("invalid number of sensors");
errorCode = ERR_INVALID_NUM_OF_SENSORS;
} else {
for (uint8_t i = 0; i < NUM_OF_SENSORS; i++) {
sprintf(sensors[i].label, "Sens%d", i);
DS18B20.getAddress((uint8_t*)&(sensors[i].addr), i);
DS18B20.getAddress(((uint8_t*)(&(sensors[i].addr))), i);
char buf[128];
sprintf(buf, "%s: %08x", sensors[i].label, sensors[i].addr);
display.drawString(1, i*16, buf);
sprintf(buf, "%d: %s: %016llx", i, sensors[i].label, sensors[i].addr);
Serial.println(buf);
//display.drawString(1, i*16, buf);
sensors[i].index = 0;
}
}