Exemple #1
0
int main(void)
{
    hdc1000_t dev;
    int16_t temp, hum;
    size_t len;
    char tstr[8];
    char hstr[8];

    puts("HDC1000 Temperature and Humidity Sensor driver test application\n");
    printf("Initializing HDC1000 sensor at I2C_DEV(%i)... ",
            (int)hdc1000_params[0].i2c);
    if (hdc1000_init(&dev, &hdc1000_params[0]) == HDC1000_OK) {
        puts("[OK]\n");
    }
    else {
        puts("[Failed]");
        return 1;
    }

    while (1) {
        hdc1000_read(&dev, &temp, &hum);

        len = fmt_s16_dfp(tstr, temp, 2);
        tstr[len] = '\0';
        len = fmt_s16_dfp(hstr, hum, 2);
        hstr[len] = '\0';
        printf("Reading: T: %s °C  RH: %s %%\n", tstr, hstr);

        xtimer_usleep(SLEEP);
    }

    return 0;
}
Exemple #2
0
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));
    }
}
Exemple #3
0
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));
    }
}
Exemple #4
0
static void test_rmt_s16_dfp(void)
{
    char out[8] = "--------";
    int16_t val;
    unsigned fpp;
    size_t len;

    val = 0;
    fpp = 3;
    len = fmt_s16_dfp(out, val, fpp);
    out[len] = '\0';
    TEST_ASSERT_EQUAL_INT(5, len);
    TEST_ASSERT_EQUAL_STRING("0.000", (char *)out);

    val = 12345;
    fpp = 4;
    len = fmt_s16_dfp(out, val, fpp);
    out[len] = '\0';
    TEST_ASSERT_EQUAL_INT(6, len);
    TEST_ASSERT_EQUAL_STRING("1.2345", (char *)out);

    val = 12030;
    fpp = 3;
    len = fmt_s16_dfp(out, val, fpp);
    out[len] = '\0';
    TEST_ASSERT_EQUAL_INT(6, len);
    TEST_ASSERT_EQUAL_STRING("12.030", (char *)out);

    val = -3548;
    fpp = 2;
    len = fmt_s16_dfp(out, val, fpp);
    out[len] = '\0';
    TEST_ASSERT_EQUAL_INT(6, len);
    TEST_ASSERT_EQUAL_STRING("-35.48", (char *)out);

    val = -23;
    fpp = 4;
    len = fmt_s16_dfp(out, val, fpp);
    out[len] = '\0';
    TEST_ASSERT_EQUAL_INT(7, len);
    TEST_ASSERT_EQUAL_STRING("-0.0023", (char *)out);

    val = 50;
    fpp = 3;
    len = fmt_s16_dfp(out, val, fpp);
    out[len] = '\0';
    TEST_ASSERT_EQUAL_INT(5, len);
    TEST_ASSERT_EQUAL_STRING("0.050", (char *)out);

    val = -12345;
    fpp = 0;
    len = fmt_s16_dfp(out, val, fpp);
    out[len] = '\0';
    TEST_ASSERT_EQUAL_INT(6, len);
    TEST_ASSERT_EQUAL_STRING("-12345", (char *)out);

    val = 31987;
    fpp = 5;
    len = fmt_s16_dfp(out, val, fpp);
    out[len] = '\0';
    TEST_ASSERT_EQUAL_INT(0, len);
    TEST_ASSERT_EQUAL_STRING("", (char *)out);
}