void phydat_dump(phydat_t *data, uint8_t dim) { if (data == NULL || dim > PHYDAT_DIM) { puts("Unable to display data object"); return; } printf("Data:"); for (uint8_t i = 0; i < dim; i++) { char scale_str = phydat_scale_to_str(data->scale); printf("\t[%i] ", (int)i); if (scale_str) { printf("%i%c", (int)data->val[i], scale_str); } else if (data->scale == 0) { printf("%i", (int)data->val[i]); } else if ((data->scale > -5) && (data->scale < 0)) { char num[8]; size_t len = fmt_s16_dfp(num, data->val[i], data->scale * -1); num[len] = '\0'; printf("%s", num); } else { printf("%iE%i", (int)data->val[i], (int)data->scale); } printf("%s\n", phydat_unit_to_str(data->unit)); } }
void phydat_dump(phydat_t *data, uint8_t dim) { if (data == NULL || dim > PHYDAT_DIM) { puts("Unable to display data object"); return; } printf("Data:"); for (uint8_t i = 0; i < dim; i++) { char scale_prefix; switch (data->unit) { case UNIT_UNDEF: case UNIT_NONE: case UNIT_M2: case UNIT_M3: case UNIT_PERCENT: case UNIT_TEMP_C: case UNIT_TEMP_F: /* no string conversion */ scale_prefix = '\0'; break; default: scale_prefix = phydat_prefix_from_scale(data->scale); } printf("\t"); if (dim > 1) { printf("[%u] ", (unsigned int)i); } else { printf(" "); } if (scale_prefix) { printf("%6d %c", (int)data->val[i], scale_prefix); } else if (data->scale == 0) { printf("%6d", (int)data->val[i]); } else if ((data->scale > -5) && (data->scale < 0)) { char num[8]; size_t len = fmt_s16_dfp(num, data->val[i], data->scale); num[len] = '\0'; printf("%s", num); } else { printf("%iE%i", (int)data->val[i], (int)data->scale); } printf("%s\n", phydat_unit_to_str(data->unit)); } }