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;
}
}

35
snippets/decoding2.txt Normal file
View File

@ -0,0 +1,35 @@
0: Sens0: 000000006a4f8c28
1: Sens1: 000000000ac31928
2: Sens2: 000000006a863528
3: Sens3: 00000000f611c728
struct {
uint16_t status;
uint64_t addrs[NUM_OF_SENSORS];
} __attribute__((packed)) msg;
04 00 0000 3802 033C 288C 4F6A 0D00 0094 2819 C30A 0D00 00B4 2835 866A 0D00 00D4 28C7 11F6622001B8
0400 288C 4F6A 0D00 0094 2819 C30A 0D00 00B4 2835 866A 0D00 00D4 28C7 11F6 6220 01B8
struct {
uint16_t status;
struct {
uint64_t addr;
int32_t value;
} __attribute__((packed)) sensors[NUM_OF_SENSORS];
} __attribute__((packed)) msg;
0000
288C 4F6A 0D00 0094
9808 0000
2819 C30A 0D00 00B4
E008 0000
2835 866A 0D00 00D4
D008 0000
28C7 11F6 6220 01B8
9808 0000