kopia lustrzana https://github.com/rs1729/RS
Meisei: Rearrange TU calculations
rodzic
32235bd7cc
commit
16193a3200
|
@ -841,6 +841,8 @@ int main(int argc, char **argv) {
|
|||
jmpIMS:
|
||||
if (reset_gpx) {
|
||||
memset(&gpx, sizeof(gpx), 0);
|
||||
gpx.RH = NAN;
|
||||
gpx.T = NAN;
|
||||
sn = -1;
|
||||
freq = -1;
|
||||
reset_gpx = 0;
|
||||
|
@ -880,6 +882,11 @@ int main(int argc, char **argv) {
|
|||
if (counter % 0x10 == 0) { sn = *fcfg; gpx.sn = sn; gpx._sn = w32; }
|
||||
// freq
|
||||
if (counter % 64 == 15) { freq = 400e3+(*fcfg)*100.0; gpx.fq = freq; }
|
||||
|
||||
//PTU: Save reference frequency
|
||||
if (counter % 4 == 0) {
|
||||
gpx.f_ref = bits2val(subframe_bits+HEADLEN+0*46+17, 16);
|
||||
}
|
||||
}
|
||||
|
||||
if (counter % 2 == 0) {
|
||||
|
@ -896,14 +903,13 @@ int main(int argc, char **argv) {
|
|||
printf("%02d:%02d:%06.3f ", gpx.std, gpx.min, gpx.sek);
|
||||
printf(" ");
|
||||
|
||||
//PTU: main sensor temperature, humidity
|
||||
if (counter % 4 == 0) {
|
||||
gpx.f_ref = bits2val(subframe_bits+HEADLEN+0*46+17, 16);
|
||||
}
|
||||
|
||||
if (option_ptu) {
|
||||
gpx.T = NAN;
|
||||
gpx.RH = NAN;
|
||||
if (gpx.f_ref != 0) { // must know the reference frequency
|
||||
if ((gpx.cfg_valid & 0x01E01FFE1FFE0000LL) == 0x01E01FFE1FFE0000LL) { // cfg[56:53,44:33,28:17]
|
||||
int T_cfg = ((gpx.cfg_valid & 0x01E01FFE1FFE0000LL) == 0x01E01FFE1FFE0000LL); // cfg[56:53,44:33,28:17]
|
||||
int U_cfg = ((gpx.cfg_valid & 0x001E000000000000LL) == 0x001E000000000000LL); // cfg[52:49]
|
||||
if (T_cfg) {
|
||||
ui16_t t_raw = bits2val(subframe_bits+HEADLEN+2*46+17, 16);
|
||||
float f = ((float)t_raw / (float)gpx.f_ref) * 4.0f;
|
||||
if (f > 1.0f) {
|
||||
|
@ -923,17 +929,19 @@ int main(int argc, char **argv) {
|
|||
}
|
||||
}
|
||||
}
|
||||
printf(" T=%.1fC", gpx.T);
|
||||
if (!isnan(gpx.T)) printf("T=%.1fC ", gpx.T);
|
||||
else T_cfg = 0;
|
||||
}
|
||||
if ((gpx.cfg_valid & 0x001E000000000000LL) == 0x001E000000000000LL) { // cfg[52:49]
|
||||
if (U_cfg) {
|
||||
ui16_t u_raw = bits2val(subframe_bits+HEADLEN+3*46, 16);
|
||||
float f = ((float)u_raw / (float)gpx.f_ref) * 4.0f;
|
||||
gpx.RH = gpx.cfg[49] + gpx.cfg[50]*f + gpx.cfg[51]*f*f + gpx.cfg[52]*f*f*f;
|
||||
// Limit to 0...100%
|
||||
gpx.RH = fmaxf(gpx.RH, 0.0f);
|
||||
gpx.RH = fminf(gpx.RH, 100.0f);
|
||||
printf(" RH=%.0f%% ", gpx.RH);
|
||||
printf("RH=%.0f%% ", gpx.RH);
|
||||
}
|
||||
if (T_cfg || U_cfg) printf(" ");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1052,11 +1060,9 @@ int main(int argc, char **argv) {
|
|||
if (option_ptu) {
|
||||
if (!isnan(gpx.T)) {
|
||||
fprintf(stdout, ", \"temp\": %.1f", gpx.T );
|
||||
gpx.T = NAN;
|
||||
}
|
||||
if (!isnan(gpx.RH)) {
|
||||
fprintf(stdout, ", \"humidity\": %.1f", gpx.RH );
|
||||
gpx.RH = NAN;
|
||||
}
|
||||
}
|
||||
printf(", \"subtype\": \"IMS100\"");
|
||||
|
@ -1077,6 +1083,8 @@ int main(int argc, char **argv) {
|
|||
if (ver_jsn && *ver_jsn != '\0') printf(", \"version\": \"%s\"", ver_jsn);
|
||||
printf(" }\n");
|
||||
printf("\n");
|
||||
|
||||
gpx.frm0_valid = 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Ładowanie…
Reference in New Issue