예제 #1
0
void auto_init_mpl3115a2(void)
{
    assert(MPL3115A2_NUM == MPL3115A2_INFO_NUM);

    for (unsigned i = 0; i < MPL3115A2_NUM; i++) {
        LOG_DEBUG("[auto_init_saul] initializing mpl3115a2 #%u\n", i);

        if ((mpl3115a2_init(&mpl3115a2_devs[i], &mpl3115a2_params[i]) |
             mpl3115a2_set_active(&mpl3115a2_devs[i])) != MPL3115A2_OK) {
            LOG_ERROR("[auto_init_saul] error initializing mpl3115a2 #%u\n", i);
            continue;
        }

        /* temperature */
        saul_entries[(i * 2)].dev = &(mpl3115a2_devs[i]);
        saul_entries[(i * 2)].name = mpl3115a2_saul_info[i].name;
        saul_entries[(i * 2)].driver = &mpl3115a2_temperature_saul_driver;

        /* atmospheric pressure */
        saul_entries[(i * 2) + 1].dev = &(mpl3115a2_devs[i]);
        saul_entries[(i * 2) + 1].name = mpl3115a2_saul_info[i].name;
        saul_entries[(i * 2) + 1].driver = &mpl3115a2_pressure_saul_driver;

        /* register to saul */
        saul_reg_add(&(saul_entries[(i * 2)]));
        saul_reg_add(&(saul_entries[(i * 2) + 1]));
    }
}
예제 #2
0
파일: main.c 프로젝트: A-Paul/RIOT
int main(void)
{
    puts("MPL3115A2 pressure sensor driver test application\n");
    printf("Initializing MPL3115A2 sensor at I2C_%i... ", mpl3115a2_params[0].i2c);

    if (mpl3115a2_init(&dev, &mpl3115a2_params[0]) != MPL3115A2_OK) {
        puts("[FAILED] init device!");
        return 1;
    }

    if (mpl3115a2_set_active(&dev) != MPL3115A2_OK) {
        puts("[FAILED] activate measurement!");
        return 2;
    }
    puts("[SUCCESS]");

    while (1) {
        uint32_t pressure;
        int16_t temp;
        uint8_t status;
        xtimer_usleep(SLEEP);
        if ((mpl3115a2_read_pressure(&dev, &pressure, &status) |
             mpl3115a2_read_temp(&dev, &temp)) != MPL3115A2_OK) {
            puts("[FAILED] read values!");
        }
        else {
            printf("Pressure: %u Pa, Temperature: %3d.%d C, State: %#02x\n",
                   (unsigned int)pressure, temp/10, abs(temp%10), status);
        }
    }

    return 0;
}
예제 #3
0
파일: main.c 프로젝트: PeterKietzmann/Demos
int main(void)
{
#ifdef WITH_SHELL
    /* initialize message queue */
    msg_init_queue(_main_msg_q, Q_SZ);
#endif

    eui64_t iid;
    // uint16_t chan = 15;
    netopt_enable_t acks = NETOPT_DISABLE;
    kernel_pid_t ifs[GNRC_NETIF_NUMOF];

    gnrc_netif_get(ifs);
    gnrc_netapi_set(ifs[0], NETOPT_AUTOACK, 0, &acks, sizeof(acks));
    // gnrc_netapi_set(ifs[0], NETOPT_CHANNEL, 0, &chan, sizeof(chan));
    ipv6_addr_from_str(&dst_addr, "2001:affe:1234::1");
    // ipv6_addr_from_str(&dst_addr, "fd38:3734:ad48:0:211d:50ce:a189:7cc4");

    /* initialize senml payload */
    gnrc_netapi_get(ifs[0], NETOPT_IPV6_IID, 0, &iid, sizeof(eui64_t));

    initial_pos  = sprintf(&p_buf[initial_pos], "[{\"bn\":\"urn:dev:mac:");
    initial_pos += sprintf(&p_buf[initial_pos], "%02x%02x%02x%02x%02x%02x%02x%02x",
                           iid.uint8[0], iid.uint8[1], iid.uint8[2], iid.uint8[3],
                           iid.uint8[4], iid.uint8[5], iid.uint8[6], iid.uint8[7]);
    initial_pos += sprintf(&p_buf[initial_pos], "\"},");

    /* initialize sensors */
    hdc1000_init(&th_dev, HDC1000_I2C, HDC1000_ADDR);
    hdc1000_startmeasure(&th_dev);
    mpl3115a2_init(&p_dev, MPL3115A2_I2C, MPL3115A2_ADDR, MPL3115A2_OS_RATIO_DEFAULT);
    mpl3115a2_set_active(&p_dev);
    tcs37727_init(&light_dev, TCS37727_I2C, TCS37727_ADDR, TCS37727_ATIME_DEFAULT);
    tcs37727_set_rgbc_active(&light_dev);

#ifdef WITH_SHELL
    thread_create(beac_stack, sizeof(beac_stack), PRIO, THREAD_CREATE_STACKTEST, beaconing,
                  NULL, "beaconing");
    char line_buf[SHELL_DEFAULT_BUFSIZE];
    shell_run(shell_commands, line_buf, SHELL_DEFAULT_BUFSIZE);
#else
    beaconing(NULL);
#endif

    return 0;
}